diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..33d51780 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +MVS/3DGS-Unity/*.ply filter=lfs diff=lfs merge=lfs -text diff --git a/.trae/documents/RHI模块审查报告.md b/.trae/documents/RHI模块审查报告.md deleted file mode 100644 index ddb89918..00000000 --- a/.trae/documents/RHI模块审查报告.md +++ /dev/null @@ -1,466 +0,0 @@ -# RHI 模块审查报告 - -## 审查范围 - -基于设计文档 `RHI模块总览.md` 中定义的设计理念,对当前 RHI 模块的设计和实现进行全面审查。 - ---- - -## 一、设计问题 - -### 1. 接口一致性问题 - -#### 1.1 RHIResource 基类接口过于简单 - -**当前实现** ([RHIResource.h](file:///d:/Xuanchi/Main/XCEngine/engine/include/XCEngine/RHI/RHIResource.h)): -```cpp -class RHIResource { -public: - virtual ~RHIResource() = default; - virtual void* GetNativeHandle() = 0; - virtual ResourceStates GetState() const = 0; - virtual void SetState(ResourceStates state) = 0; -}; -``` - -**问题**: -- 缺少资源命名接口 (`SetName`/`GetName`) -- 缺少资源类型查询接口 -- 缺少资源大小查询接口 - -**影响**: RHITexture 自行添加了 `SetName`/`GetName`/`GetWidth` 等方法,导致接口不统一。 - -**建议**: 扩展 RHIResource 基类接口: -```cpp -class RHIResource { -public: - virtual ~RHIResource() = default; - - // 现有接口 - virtual void* GetNativeHandle() = 0; - virtual ResourceStates GetState() const = 0; - virtual void SetState(ResourceStates state) = 0; - - // 建议新增 - virtual void SetName(const char* name) = 0; - virtual const char* GetName() const = 0; - virtual ResourceType GetResourceType() const = 0; - virtual uint64_t GetGpuVirtualAddress() const = 0; // 对于 Buffer -}; -``` - ---- - -#### 1.2 资源生命周期管理不一致 - -**当前问题**: -- 所有资源使用 `Shutdown()` + `delete` 的手动管理方式 -- 容易导致资源泄漏或重复释放 -- 与引擎 Core 模块的智能指针体系 (`Ref`, `UniqueRef`) 不统一 - -**建议**: -1. 考虑使用引用计数管理 RHI 资源 -2. 或者提供 RAII 包装器类 -3. 至少应该提供统一的资源销毁接口(如 `RHIDevice::DestroyResource()`) - ---- - -### 2. 描述符系统设计问题 - -#### 2.1 描述符接口偏向 D3D12 - -**当前实现** ([RHIDescriptorPool.h](file:///d:/Xuanchi/Main/XCEngine/engine/include/XCEngine/RHI/RHIDescriptorPool.h)): -```cpp -struct DescriptorPoolDesc { - uint32_t maxDescriptorCount; // D3D12 风格 - // ... -}; -``` - -**问题**: -- OpenGL 没有原生的描述符池概念 -- OpenGL 后端需要完全模拟,可能效率低下 -- 缺少 DescriptorSetLayout 的概念 - -**建议**: 参考 Vulkan 的描述符系统设计: -```cpp -// 1. 先创建 DescriptorSetLayout -struct DescriptorSetLayoutDesc { - std::vector bindings; -}; -class RHIDescriptorSetLayout { ... }; - -// 2. 从 Layout 创建 Pool -struct DescriptorPoolDesc { - std::vector poolSizes; // 按类型指定数量 - uint32_t maxSets; -}; - -// 3. 从 Pool 分配 Set -class RHIDescriptorSet { - virtual void Update(uint32_t binding, RHIResource* resource) = 0; -}; -``` - ---- - -#### 2.2 缺少描述符集绑定机制 - -**当前问题**: -- RHICommandList 直接绑定资源 (`SetVertexBuffer`, `SetTexture`) -- 缺少批量绑定描述符集的能力 - -**建议**: 添加描述符集绑定接口: -```cpp -virtual void BindDescriptorSet( - uint32_t setIndex, - RHIDescriptorSet* descriptorSet, - RHIPipelineLayout* layout -) = 0; -``` - ---- - -### 3. 命令列表设计问题 - -#### 3.1 命令列表生命周期管理 - -**当前问题**: -- 缺少命令列表池化管理 -- 每帧可能需要重新创建命令列表 - -**建议**: 添加命令分配器概念: -```cpp -class RHICommandAllocator { -public: - virtual void Reset() = 0; // 重用命令列表内存 -}; - -// Device 接口 -virtual RHICommandAllocator* CreateCommandAllocator( - CommandListType type -) = 0; -``` - ---- - -#### 3.2 屏障接口不够清晰 - -**当前实现**: -```cpp -virtual void ResourceBarrier( - uint32_t numBarriers, - ResourceBarrierDesc* barriers -) = 0; - -virtual void ExecuteBarriers() = 0; // 这个方法名容易误解 -``` - -**问题**: `ExecuteBarriers` 方法名暗示有延迟执行,但实际行为不明确。 - -**建议**: -- 明确屏障是立即执行还是批量执行 -- 考虑添加 `FlushBarriers()` 方法名替代 `ExecuteBarriers()` - ---- - -### 4. 着色器系统问题 - -#### 4.1 编译接口职责混乱 - -**当前实现** ([RHIShader.h](file:///d:/Xuanchi/Main/XCEngine/engine/include/XCEngine/RHI/RHIShader.h)): -```cpp -class RHIShader { -public: - // RHIShader 自己有编译方法 - virtual bool CompileFromFile(...) = 0; - virtual bool Compile(...) = 0; -}; - -// RHIDevice 也有编译方法 -virtual RHIShader* CompileShader(const ShaderCompileDesc& desc) = 0; -``` - -**问题**: 编译职责分散,用户不知道该用哪个接口。 - -**建议**: 统一着色器创建流程: -```cpp -// 方案1: 只在 Device 中创建 -class RHIDevice { - virtual RHIShader* CreateShader(const ShaderDesc& desc) = 0; -}; - -// 方案2: 使用 ShaderCompiler 工具类 -class RHIShaderCompiler { - virtual RHIShader* CompileFromFile(...) = 0; - virtual RHIShader* CompileFromSource(...) = 0; -}; -``` - ---- - -#### 4.2 缺少着色器反射接口 - -**当前问题**: -- 只有 `GetUniformInfos()` 方法 -- 缺少完整的着色器反射(输入/输出语义、资源绑定等) - -**建议**: 添加完整的着色器反射接口: -```cpp -struct ShaderReflection { - std::vector vertexInputs; - std::vector fragmentOutputs; - std::vector resourceBindings; - std::vector pushConstantRanges; -}; - -virtual ShaderReflection GetReflection() const = 0; -``` - ---- - -### 5. 管线状态对象问题 - -#### 5.1 缺少管线缓存 - -**当前问题**: 每次创建 PSO 都需要完整编译,没有缓存机制。 - -**建议**: 添加管线缓存接口: -```cpp -class RHIPipelineCache { -public: - virtual void Save(const char* filePath) = 0; - virtual void Load(const char* filePath) = 0; - virtual size_t GetDataSize() const = 0; - virtual void* GetData() const = 0; -}; - -// Device 接口 -virtual RHIPipelineCache* CreatePipelineCache() = 0; -virtual RHIPipelineState* CreatePipelineState( - const PipelineStateDesc& desc, - RHIPipelineCache* cache = nullptr -) = 0; -``` - ---- - -### 6. 缺失的关键功能 - -#### 6.1 缺少资源别名 (Aliasing) 支持 - -**设计文档提到**: "求同存异" - -**问题**: D3D12 和 Vulkan 都支持资源别名(多个资源共享同一块内存),但当前 RHI 没有暴露。 - -**建议**: 添加资源别名支持: -```cpp -struct ResourceAliasingDesc { - RHIResource* overlappingResources; - uint32_t resourceCount; -}; - -virtual void AliasingResources( - const ResourceAliasingDesc& desc -) = 0; -``` - ---- - -#### 6.2 缺少多队列支持 - -**当前问题**: -- RHICommandQueue 只支持单一类型 -- 缺少多队列同步机制 - -**建议**: 添加跨队列同步支持: -```cpp -struct QueueSyncDesc { - RHICommandQueue* waitQueue; - RHIFence* fence; - uint64_t value; -}; - -virtual void QueueSubmit( - const QueueSubmitDesc& desc, - const QueueSyncDesc* waitSyncs = nullptr, - uint32_t waitSyncCount = 0, - const QueueSyncDesc* signalSyncs = nullptr, - uint32_t signalSyncCount = 0 -) = 0; -``` - ---- - -#### 6.3 缺少 RenderGraph 支持 - -**设计文档提到**: "渲染管线层(SRP/Render Graph)" - -**问题**: 当前 RHI 接口没有为 RenderGraph 提供必要的支持: -- 缺少资源传递机制 -- 缺少自动屏障生成 -- 缺少资源生命周期跟踪 - -**建议**: 添加 RenderGraph 友好的接口: -```cpp -struct ResourceTransition { - RHIResource* resource; - ResourceStates fromState; - ResourceStates toState; - uint32_t queueFamily; // 支持跨队列传递 -}; - -virtual void TransitionResources( - const ResourceTransition* transitions, - uint32_t count -) = 0; -``` - ---- - -## 二、实现问题 - -### 1. OpenGL 后端状态管理 - -**问题**: OpenGL 是状态机模型,需要仔细管理状态。 - -**建议检查点**: -- [ ] 是否正确跟踪当前绑定的 VAO/VBO/纹理 -- [ ] 是否正确跟踪当前激活的着色器程序 -- [ ] 是否正确跟踪混合/深度/模板状态 -- [ ] 是否有不必要的冗余状态切换 - -**建议**: 实现状态跟踪器: -```cpp -class OpenGLStateTracker { -public: - void BindTexture(uint32_t unit, uint32_t texture); - void BindVertexArray(uint32_t vao); - void UseProgram(uint32_t program); - // ... 避免重复绑定 -}; -``` - ---- - -### 2. 资源状态跟踪不一致 - -**问题**: -- D3D12 需要精确的资源状态跟踪 -- OpenGL 没有显式的资源状态概念 -- 当前实现在 OpenGL 后端如何处理状态? - -**建议**: -- OpenGL 后端可以忽略资源状态(或仅用于调试) -- 或者实现软件状态跟踪用于验证 - ---- - -### 3. 内存管理缺失 - -**问题**: -- 缺少显式的 GPU 内存分配接口 -- D3D12 有 Heap 概念,OpenGL 没有 - -**建议**: 添加内存分配抽象: -```cpp -struct HeapDesc { - HeapType type; // Default, Upload, Readback - uint64_t size; - HeapFlags flags; -}; - -class RHIHeap { -public: - virtual void* Map() = 0; - virtual void Unmap() = 0; -}; - -// 资源创建时指定堆 -struct BufferDesc { - // ... - RHIHeap* heap; // 可选 - uint64_t heapOffset; // 可选 -}; -``` - ---- - -### 4. 错误处理机制 - -**当前问题**: -- 大部分方法返回 `void` 或 `bool` -- 缺少详细的错误信息 - -**建议**: 添加结果类型: -```cpp -template -struct RHIResult { - T value; - RHIErrorCode error; - const char* errorMessage; -}; - -// 使用示例 -RHIResult result = device->CreateTexture(desc); -if (result.error != RHIErrorCode::Success) { - LogError(result.errorMessage); -} -``` - ---- - -## 三、与设计理念的对比 - -### 设计理念 vs 实际实现 - -| 设计理念 | 设计文档要求 | 当前实现状态 | 问题 | -|---------|------------|------------|------| -| **求同存异** | 提取 API 共性 | ✅ 部分实现 | 描述符系统偏向 D3D12 | -| **分层抽象** | 清晰的层级结构 | ✅ 已实现 | 层级清晰 | -| **特性降级** | 能力检测和替代方案 | ⚠️ 部分实现 | RHICapabilities 存在但使用不明确 | -| **底层逃逸** | 允许访问原生 API | ✅ 已实现 | GetNativeHandle() 接口存在 | - ---- - -## 四、优先级建议 - -### 高优先级(影响功能正确性) - -1. **统一资源生命周期管理** - 防止内存泄漏 -2. **完善错误处理机制** - 便于调试 -3. **OpenGL 状态跟踪** - 避免渲染错误 - -### 中优先级(影响性能和可维护性) - -4. **重构描述符系统** - 提高 OpenGL 效率 -5. **统一着色器编译接口** - 提高易用性 -6. **添加命令分配器** - 提高性能 - -### 低优先级(增强功能) - -7. **添加管线缓存** - 加速启动 -8. **添加资源别名支持** - 优化内存 -9. **RenderGraph 支持** - 高级功能 - ---- - -## 五、总结 - -### 优点 - -1. ✅ 分层架构清晰,符合设计文档 -2. ✅ 核心抽象接口基本完整 -3. ✅ D3D12 后端实现较为完善 -4. ✅ 测试覆盖较好 - -### 主要问题 - -1. ❌ 描述符系统设计偏向 D3D12,OpenGL 后端效率可能受影响 -2. ❌ 资源生命周期管理不一致,存在泄漏风险 -3. ❌ 着色器编译接口职责混乱 -4. ⚠️ 缺少部分高级功能(资源别名、多队列同步等) - -### 建议 - -建议按照优先级逐步改进,首先解决高优先级问题,确保引擎的稳定性和正确性。 diff --git a/.trae/documents/XCEngine项目熟悉计划.md b/.trae/documents/XCEngine项目熟悉计划.md deleted file mode 100644 index 2cd09cdf..00000000 --- a/.trae/documents/XCEngine项目熟悉计划.md +++ /dev/null @@ -1,335 +0,0 @@ -# XCEngine 项目熟悉计划 - -## 项目概述 - -XCEngine 是一个正在开发中的模块化 C++ 游戏引擎,采用 RHI(Render Hardware Interface)抽象层设计,支持 DirectX 12 和 OpenGL 4.6+ 多种渲染 API。 - -### 技术栈 -- **语言**: C++17 -- **渲染 API**: DirectX 12, OpenGL 4.6+ -- **构建系统**: CMake 3.15+ -- **测试框架**: Google Test -- **UI**: ImGui(用于编辑器) - ---- - -## 项目结构 - -``` -XCEngine/ -├── engine/ # 核心引擎库(静态库) -│ ├── include/XCEngine/ # 头文件 -│ │ ├── Audio/ # 音频系统 -│ │ ├── Components/ # 组件系统 -│ │ ├── Core/ # 核心基础模块 -│ │ ├── Debug/ # 调试与日志 -│ │ ├── Input/ # 输入模块 -│ │ ├── Memory/ # 内存管理 -│ │ ├── Platform/ # 平台抽象层 -│ │ ├── RHI/ # 渲染硬件接口 -│ │ ├── Resources/ # 资源管理 -│ │ ├── Scene/ # 场景管理 -│ │ └── Threading/ # 线程系统 -│ ├── src/ # 实现文件 -│ └── third_party/ # 第三方库 -│ -├── editor/ # 编辑器 UI 应用程序 -│ └── src/ # 编辑器源代码 -│ -├── tests/ # 单元测试 -│ ├── math/ # 数学库测试 -│ ├── containers/ # 容器测试 -│ ├── memory/ # 内存管理测试 -│ ├── threading/ # 线程模块测试 -│ ├── debug/ # 调试模块测试 -│ ├── core/ # 核心模块测试 -│ ├── Scene/ # 场景测试 -│ ├── Resources/ # 资源管理测试 -│ ├── Input/ # 输入模块测试 -│ └── RHI/ # RHI 抽象层测试 -│ -├── mvs/ # 示例程序 -│ ├── D3D12/ # DirectX 12 渲染示例 -│ ├── OpenGL/ # OpenGL 渲染示例 -│ ├── VolumeRenderer/ # 体积渲染器 -│ ├── RenderDoc/ # RenderDoc 集成示例 -│ └── ui/ # 编辑器 UI 示例 -│ -└── docs/ # 文档 - ├── api/ # API 文档 - └── plan/ # 开发计划与架构设计 -``` - ---- - -## 核心模块详解 - -### 1. Core(核心基础) - -位置: `engine/include/XCEngine/Core/` - -| 子模块 | 说明 | -|--------|------| -| Types.h | 基础类型别名(int8, uint32 等) | -| RefCounted.h | 引用计数基类 | -| SmartPtr.h | 智能指针(Ref, UniqueRef) | -| Event.h | 事件系统,支持订阅/发布模式 | -| FileWriter.h | 文件写入工具 | -| Layer.h/LayerStack.h | 层级与层级栈管理 | - -**Core/Math 数学库**: -- Vector2/3/4 - 向量运算 -- Matrix3/4 - 矩阵运算 -- Quaternion - 四元数 -- Transform - 变换 -- Color - 颜色 -- Rect - 矩形 -- Sphere/Box/Plane/Ray - 几何体 -- AABB/Bounds/Frustum - 包围体 - -**Core/Containers 容器**: -- Array.h - 动态数组 -- String.h - 字符串类 -- HashMap.h - 哈希表 - -**Core/Asset 资源系统核心**: -- IResource.h - 资源接口基类 -- ResourceTypes.h - 资源类型定义 -- ResourceHandle.h - 资源句柄 -- ResourceManager.h - 全局资源管理器 -- ResourceCache.h - 资源缓存 -- AsyncLoader.h - 异步资源加载器 - -**Core/IO 资源 IO 系统**: -- IResourceLoader.h - 资源加载器接口 -- ResourceFileSystem.h - 资源文件系统 -- FileArchive.h - 文件归档 - -### 2. RHI(渲染硬件接口) - -位置: `engine/include/XCEngine/RHI/` - -这是引擎的核心抽象层,借鉴 Unity SRP 架构设计。 - -**设计原则**: -- 求同存异:提取各 API 共同特性 -- 分层抽象:核心抽象层 → 后端实现层 → 平台适配层 -- 特性降级:后端不支持的特性优雅降级 - -**抽象接口**: -| 接口 | 说明 | -|------|------| -| RHIDevice | 渲染设备抽象 | -| RHICommandQueue | 命令队列抽象 | -| RHICommandList | 命令列表抽象 | -| RHISwapChain | 交换链抽象 | -| RHIPipelineState | 渲染管线状态抽象 | -| RHIBuffer/RHITexture | 资源抽象 | -| RHIShader | 着色器抽象 | -| RHISampler | 采样器抽象 | -| RHIFence | 同步栅栏抽象 | -| RHIDescriptorPool | 描述符池抽象 | -| RHIRenderPass | 渲染通道抽象 | -| RHIFramebuffer | 帧缓冲抽象 | - -**后端实现**: -- `RHI/D3D12/` - DirectX 12 后端 -- `RHI/OpenGL/` - OpenGL 4.6+ 后端 - -### 3. Components(组件系统) - -位置: `engine/include/XCEngine/Components/` - -采用类似 Unity 的组件架构: - -| 组件 | 说明 | -|------|------| -| Component.h | 组件基类,提供生命周期管理 | -| GameObject.h | 游戏对象,支持层级结构 | -| TransformComponent.h | 变换组件 | -| AudioSourceComponent.h | 音频源组件 | -| AudioListenerComponent.h | 音频监听器组件 | - -### 4. Scene(场景管理) - -位置: `engine/include/XCEngine/Scene/` - -- **Scene.h** - 场景类,管理场景内的所有游戏对象 -- **SceneManager.h** - 场景管理器,处理场景切换 - -### 5. Audio(音频系统) - -位置: `engine/include/XCEngine/Audio/` - -| 模块 | 说明 | -|------|------| -| AudioSystem.h | 音频系统主类 | -| AudioMixer.h | 音频混音器 | -| HRTF.h | 头部相关传输函数,空间音频 | -| FFTFilter.h | 快速傅里叶变换滤波器 | -| Reverbation.h | 混响效果 | -| Equalizer.h | 音频均衡器 | -| IAudioBackend.h | 音频后端接口 | -| WindowsAudioBackend.h | Windows WASAPI 后端 | - -### 6. Memory(内存管理) - -位置: `engine/include/XCEngine/Memory/` - -| 模块 | 说明 | -|------|------| -| Allocator.h | 内存分配器接口 | -| LinearAllocator.h | 线性分配器,适合帧分配 | -| PoolAllocator.h | 内存池分配器,适合固定大小对象 | -| ProxyAllocator.h | 代理分配器,跟踪内存使用统计 | -| MemoryManager.h | 全局内存管理器 | - -### 7. Threading(线程系统) - -位置: `engine/include/XCEngine/Threading/` - -| 模块 | 说明 | -|------|------| -| Thread.h | 线程封装类 | -| Mutex.h | 互斥锁 | -| SpinLock.h | 自旋锁 | -| ReadWriteLock.h | 读写锁 | -| TaskSystem.h | 多线程任务系统 | -| Task.h/TaskGroup.h | 任务和任务组管理 | - -### 8. Debug(调试与日志) - -位置: `engine/include/XCEngine/Debug/` - -| 模块 | 说明 | -|------|------| -| Logger.h | 分级日志系统 | -| ConsoleLogSink.h | 控制台日志输出 | -| FileLogSink.h | 文件日志输出 | -| Profiler.h | 性能分析工具 | -| RenderDocCapture.h | RenderDoc 帧捕获集成 | - -### 9. Resources(资源管理) - -位置: `engine/include/XCEngine/Resources/` - -按类型分目录管理: -- **Texture/** - 纹理资源 -- **Mesh/** - 网格资源 -- **Shader/** - 着色器资源 -- **Material/** - 材质资源 -- **AudioClip/** - 音频资源 - -### 10. Platform(平台抽象层) - -位置: `engine/include/XCEngine/Platform/` - -跨平台抽象接口: -- IPlatform - 平台接口 -- IWindow - 窗口接口 -- IFileSystem - 文件系统接口 -- IClock - 时钟接口 -- Windows/ - Windows 平台实现 - -### 11. Input(输入模块) - -位置: `engine/include/XCEngine/Input/` - -- InputManager - 输入管理器 -- InputModule - 输入模块基类 -- InputEvent - 输入事件定义 -- InputAxis - 输入轴配置 - ---- - -## 渲染架构 - -### 渲染流程 - -``` -Scene → CullingSystem → RenderQueue → Renderer → GPU - ↓ ↓ - CullingResults CommandList -``` - -### 关键概念(借鉴 Unity SRP) - -1. **CullingResults** - 剔除结果 -2. **RenderPipeline** - 渲染管线 -3. **RenderQueue** - 渲染队列 -4. **ScriptableRenderContext** - 渲染上下文 -5. **LightManager** - 光照管理 -6. **ShadowAtlas** - 阴影图集 - ---- - -## 构建与测试 - -### 构建项目 - -```bash -mkdir build && cd build -cmake .. -A x64 -cmake --build . --config Debug -``` - -### 运行测试 - -```bash -cd build/tests -ctest -C Debug --output-on-failure -``` - ---- - -## 学习路径建议 - -### 第一阶段:核心基础 -1. 阅读 `README.md` 了解项目概述 -2. 学习 Core 模块(Types, Event, SmartPtr) -3. 学习 Math 数学库 -4. 学习 Containers 容器 - -### 第二阶段:系统模块 -1. 学习 Memory 内存管理 -2. 学习 Threading 线程系统 -3. 学习 Debug 日志系统 -4. 学习 Platform 平台抽象 - -### 第三阶段:渲染系统 -1. 学习 RHI 抽象层设计 -2. 学习 D3D12 后端实现 -3. 学习 OpenGL 后端实现 -4. 学习渲染管线架构 - -### 第四阶段:高级功能 -1. 学习 Scene 场景管理 -2. 学习 Components 组件系统 -3. 学习 Resources 资源管理 -4. 学习 Audio 音频系统 - -### 第五阶段:实践 -1. 运行 mvs 中的示例程序 -2. 阅读测试用例理解 API 用法 -3. 尝试修改或扩展现有功能 - ---- - -## 关键文件索引 - -| 文件 | 说明 | -|------|------| -| README.md | 项目说明文档 | -| CMakeLists.txt | 根构建配置 | -| engine/CMakeLists.txt | 引擎库构建配置 | -| docs/plan/XCEngine渲染引擎架构设计.md | 渲染架构详细设计 | -| docs/api/main.md | API 文档入口 | - ---- - -## 注意事项 - -1. 项目目前仅支持 Windows 平台 -2. 需要 Visual Studio 2019 或更高版本 -3. D3D12 后端需要 Windows 10/11 -4. OpenGL 后端需要 OpenGL 4.6+ 支持 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..70e34ecb --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "C_Cpp.errorSquiggles": "disabled" +} \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 3a305405..ba9e3ce8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,8 +14,7 @@ set( "Path to the bundled Mono distribution used by the scripting runtime") add_subdirectory(engine) -add_subdirectory(editor) +add_subdirectory(Editor) add_subdirectory(managed) add_subdirectory(mvs/RenderDoc) add_subdirectory(tests) -add_subdirectory(tests/opengl) diff --git a/MVS/3DGS-Unity/Editor.meta b/MVS/3DGS-Unity/Editor.meta new file mode 100644 index 00000000..e3afa17d --- /dev/null +++ b/MVS/3DGS-Unity/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07d8a5410ba18f64e9efe04f3a023cfa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Editor/GaussianMoveTool.cs b/MVS/3DGS-Unity/Editor/GaussianMoveTool.cs new file mode 100644 index 00000000..4903dffe --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianMoveTool.cs @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT + +using GaussianSplatting.Runtime; +using UnityEditor; +using UnityEditor.EditorTools; +using UnityEngine; + +namespace GaussianSplatting.Editor +{ + [EditorTool("Gaussian Move Tool", typeof(GaussianSplatRenderer), typeof(GaussianToolContext))] + class GaussianMoveTool : GaussianTool + { + public override void OnToolGUI(EditorWindow window) + { + var gs = GetRenderer(); + if (!gs || !CanBeEdited() || !HasSelection()) + return; + var tr = gs.transform; + + EditorGUI.BeginChangeCheck(); + var selCenterLocal = GetSelectionCenterLocal(); + var selCenterWorld = tr.TransformPoint(selCenterLocal); + var newPosWorld = Handles.DoPositionHandle(selCenterWorld, Tools.handleRotation); + if (EditorGUI.EndChangeCheck()) + { + var newPosLocal = tr.InverseTransformPoint(newPosWorld); + var wasModified = gs.editModified; + gs.EditTranslateSelection(newPosLocal - selCenterLocal); + if (!wasModified) + GaussianSplatRendererEditor.RepaintAll(); + Event.current.Use(); + } + } + } +} diff --git a/MVS/3DGS-Unity/Editor/GaussianMoveTool.cs.meta b/MVS/3DGS-Unity/Editor/GaussianMoveTool.cs.meta new file mode 100644 index 00000000..095b59e0 --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianMoveTool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9c9f40b54eb504648b2a0beadabbcc8d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Editor/GaussianRotateTool.cs b/MVS/3DGS-Unity/Editor/GaussianRotateTool.cs new file mode 100644 index 00000000..fc8b7fac --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianRotateTool.cs @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: MIT + +using GaussianSplatting.Runtime; +using UnityEditor; +using UnityEditor.EditorTools; +using UnityEngine; + +namespace GaussianSplatting.Editor +{ + /* not working correctly yet + [EditorTool("Gaussian Rotate Tool", typeof(GaussianSplatRenderer), typeof(GaussianToolContext))] + class GaussianRotateTool : GaussianTool + { + Quaternion m_CurrentRotation = Quaternion.identity; + Vector3 m_FrozenSelCenterLocal = Vector3.zero; + bool m_FreezePivot = false; + + public override void OnActivated() + { + m_FreezePivot = false; + } + + public override void OnToolGUI(EditorWindow window) + { + var gs = GetRenderer(); + if (!gs || !CanBeEdited() || !HasSelection()) + return; + var tr = gs.transform; + var evt = Event.current; + + var selCenterLocal = GetSelectionCenterLocal(); + if (evt.type == EventType.MouseDown) + { + gs.EditStorePosMouseDown(); + gs.EditStoreOtherMouseDown(); + m_FrozenSelCenterLocal = selCenterLocal; + m_FreezePivot = true; + } + if (evt.type == EventType.MouseUp) + { + m_CurrentRotation = Quaternion.identity; + m_FreezePivot = false; + } + + if (m_FreezePivot) + selCenterLocal = m_FrozenSelCenterLocal; + + EditorGUI.BeginChangeCheck(); + var selCenterWorld = tr.TransformPoint(selCenterLocal); + var newRotation = Handles.DoRotationHandle(m_CurrentRotation, selCenterWorld); + if (EditorGUI.EndChangeCheck()) + { + Matrix4x4 localToWorld = gs.transform.localToWorldMatrix; + Matrix4x4 worldToLocal = gs.transform.worldToLocalMatrix; + var wasModified = gs.editModified; + var rotToApply = newRotation; + gs.EditRotateSelection(selCenterLocal, localToWorld, worldToLocal, rotToApply); + m_CurrentRotation = newRotation; + if (!wasModified) + GaussianSplatRendererEditor.RepaintAll(); + + if(GUIUtility.hotControl == 0) + { + m_CurrentRotation = Tools.handleRotation; + } + } + } + } + */ +} \ No newline at end of file diff --git a/MVS/3DGS-Unity/Editor/GaussianRotateTool.cs.meta b/MVS/3DGS-Unity/Editor/GaussianRotateTool.cs.meta new file mode 100644 index 00000000..5944009f --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianRotateTool.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5128238188a44c86914a22a862195242 +timeCreated: 1697805149 \ No newline at end of file diff --git a/MVS/3DGS-Unity/Editor/GaussianScaleTool.cs b/MVS/3DGS-Unity/Editor/GaussianScaleTool.cs new file mode 100644 index 00000000..8c3d452d --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianScaleTool.cs @@ -0,0 +1,68 @@ +// SPDX-License-Identifier: MIT + +using GaussianSplatting.Runtime; +using UnityEditor; +using UnityEditor.EditorTools; +using UnityEngine; + +namespace GaussianSplatting.Editor +{ + /* // not working correctly yet when the GS itself has scale + [EditorTool("Gaussian Scale Tool", typeof(GaussianSplatRenderer), typeof(GaussianToolContext))] + class GaussianScaleTool : GaussianTool + { + Vector3 m_CurrentScale = Vector3.one; + Vector3 m_FrozenSelCenterLocal = Vector3.zero; + bool m_FreezePivot = false; + + public override void OnActivated() + { + m_FreezePivot = false; + } + + public override void OnToolGUI(EditorWindow window) + { + var gs = GetRenderer(); + if (!gs || !CanBeEdited() || !HasSelection()) + return; + var tr = gs.transform; + var evt = Event.current; + + var selCenterLocal = GetSelectionCenterLocal(); + if (evt.type == EventType.MouseDown) + { + gs.EditStorePosMouseDown(); + m_FrozenSelCenterLocal = selCenterLocal; + m_FreezePivot = true; + } + if (evt.type == EventType.MouseUp) + { + m_CurrentScale = Vector3.one; + m_FreezePivot = false; + } + + if (m_FreezePivot) + selCenterLocal = m_FrozenSelCenterLocal; + + EditorGUI.BeginChangeCheck(); + var selCenterWorld = tr.TransformPoint(selCenterLocal); + m_CurrentScale = Handles.DoScaleHandle(m_CurrentScale, selCenterWorld, Tools.handleRotation, HandleUtility.GetHandleSize(selCenterWorld)); + if (EditorGUI.EndChangeCheck()) + { + Matrix4x4 localToWorld = Matrix4x4.identity; + Matrix4x4 worldToLocal = Matrix4x4.identity; + if (Tools.pivotRotation == PivotRotation.Global) + { + localToWorld = gs.transform.localToWorldMatrix; + worldToLocal = gs.transform.worldToLocalMatrix; + } + var wasModified = gs.editModified; + gs.EditScaleSelection(selCenterLocal, localToWorld, worldToLocal, m_CurrentScale); + if (!wasModified) + GaussianSplatRendererEditor.RepaintAll(); + evt.Use(); + } + } + } + */ +} \ No newline at end of file diff --git a/MVS/3DGS-Unity/Editor/GaussianScaleTool.cs.meta b/MVS/3DGS-Unity/Editor/GaussianScaleTool.cs.meta new file mode 100644 index 00000000..3cadf2f5 --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianScaleTool.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: dbf3d17a31b942b28f5d8c187adb8fdf +timeCreated: 1697732813 \ No newline at end of file diff --git a/MVS/3DGS-Unity/Editor/GaussianSplatAssetCreator.cs b/MVS/3DGS-Unity/Editor/GaussianSplatAssetCreator.cs new file mode 100644 index 00000000..4117a6cb --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianSplatAssetCreator.cs @@ -0,0 +1,1208 @@ +// SPDX-License-Identifier: MIT + +using System; +using System.Collections.Generic; +using System.IO; +using GaussianSplatting.Editor.Utils; +using GaussianSplatting.Runtime; +using Unity.Burst; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Jobs; +using Unity.Mathematics; +using UnityEditor; +using UnityEngine; +using UnityEngine.Experimental.Rendering; + +namespace GaussianSplatting.Editor +{ + [BurstCompile] + public class GaussianSplatAssetCreator : EditorWindow + { + const string kProgressTitle = "Creating Gaussian Splat Asset"; + const string kCamerasJson = "cameras.json"; + const string kPrefQuality = "nesnausk.GaussianSplatting.CreatorQuality"; + const string kPrefOutputFolder = "nesnausk.GaussianSplatting.CreatorOutputFolder"; + + enum DataQuality + { + VeryHigh, + High, + Medium, + Low, + VeryLow, + Custom, + } + + readonly FilePickerControl m_FilePicker = new(); + + [SerializeField] string m_InputFile; + [SerializeField] bool m_ImportCameras = true; + + [SerializeField] string m_OutputFolder = "Assets/GaussianAssets"; + [SerializeField] DataQuality m_Quality = DataQuality.Medium; + [SerializeField] GaussianSplatAsset.VectorFormat m_FormatPos; + [SerializeField] GaussianSplatAsset.VectorFormat m_FormatScale; + [SerializeField] GaussianSplatAsset.ColorFormat m_FormatColor; + [SerializeField] GaussianSplatAsset.SHFormat m_FormatSH; + + string m_ErrorMessage; + string m_PrevPlyPath; + int m_PrevVertexCount; + long m_PrevFileSize; + + bool isUsingChunks => + m_FormatPos != GaussianSplatAsset.VectorFormat.Float32 || + m_FormatScale != GaussianSplatAsset.VectorFormat.Float32 || + m_FormatColor != GaussianSplatAsset.ColorFormat.Float32x4 || + m_FormatSH != GaussianSplatAsset.SHFormat.Float32; + + [MenuItem("Tools/Gaussian Splats/Create GaussianSplatAsset")] + public static void Init() + { + var window = GetWindowWithRect(new Rect(50, 50, 360, 340), false, "Gaussian Splat Creator", true); + window.minSize = new Vector2(320, 320); + window.maxSize = new Vector2(1500, 1500); + window.Show(); + } + + void Awake() + { + m_Quality = (DataQuality)EditorPrefs.GetInt(kPrefQuality, (int)DataQuality.Medium); + m_OutputFolder = EditorPrefs.GetString(kPrefOutputFolder, "Assets/GaussianAssets"); + } + + void OnEnable() + { + ApplyQualityLevel(); + } + + void OnGUI() + { + EditorGUILayout.Space(); + GUILayout.Label("Input data", EditorStyles.boldLabel); + var rect = EditorGUILayout.GetControlRect(true); + m_InputFile = m_FilePicker.PathFieldGUI(rect, new GUIContent("Input PLY File"), m_InputFile, "ply", "PointCloudFile"); + m_ImportCameras = EditorGUILayout.Toggle("Import Cameras", m_ImportCameras); + + if (m_InputFile != m_PrevPlyPath && !string.IsNullOrWhiteSpace(m_InputFile)) + { + PLYFileReader.ReadFileHeader(m_InputFile, out m_PrevVertexCount, out var _, out var _); + m_PrevFileSize = File.Exists(m_InputFile) ? new FileInfo(m_InputFile).Length : 0; + m_PrevPlyPath = m_InputFile; + } + + if (m_PrevVertexCount > 0) + EditorGUILayout.LabelField("File Size", $"{EditorUtility.FormatBytes(m_PrevFileSize)} - {m_PrevVertexCount:N0} splats"); + else + GUILayout.Space(EditorGUIUtility.singleLineHeight); + + EditorGUILayout.Space(); + GUILayout.Label("Output", EditorStyles.boldLabel); + rect = EditorGUILayout.GetControlRect(true); + string newOutputFolder = m_FilePicker.PathFieldGUI(rect, new GUIContent("Output Folder"), m_OutputFolder, null, "GaussianAssetOutputFolder"); + if (newOutputFolder != m_OutputFolder) + { + m_OutputFolder = newOutputFolder; + EditorPrefs.SetString(kPrefOutputFolder, m_OutputFolder); + } + + var newQuality = (DataQuality) EditorGUILayout.EnumPopup("Quality", m_Quality); + if (newQuality != m_Quality) + { + m_Quality = newQuality; + EditorPrefs.SetInt(kPrefQuality, (int)m_Quality); + ApplyQualityLevel(); + } + + long sizePos = 0, sizeOther = 0, sizeCol = 0, sizeSHs = 0, totalSize = 0; + if (m_PrevVertexCount > 0) + { + sizePos = GaussianSplatAsset.CalcPosDataSize(m_PrevVertexCount, m_FormatPos); + sizeOther = GaussianSplatAsset.CalcOtherDataSize(m_PrevVertexCount, m_FormatScale); + sizeCol = GaussianSplatAsset.CalcColorDataSize(m_PrevVertexCount, m_FormatColor); + sizeSHs = GaussianSplatAsset.CalcSHDataSize(m_PrevVertexCount, m_FormatSH); + long sizeChunk = isUsingChunks ? GaussianSplatAsset.CalcChunkDataSize(m_PrevVertexCount) : 0; + totalSize = sizePos + sizeOther + sizeCol + sizeSHs + sizeChunk; + } + + const float kSizeColWidth = 70; + EditorGUI.BeginDisabledGroup(m_Quality != DataQuality.Custom); + EditorGUI.indentLevel++; + GUILayout.BeginHorizontal(); + m_FormatPos = (GaussianSplatAsset.VectorFormat)EditorGUILayout.EnumPopup("Position", m_FormatPos); + GUILayout.Label(sizePos > 0 ? EditorUtility.FormatBytes(sizePos) : string.Empty, GUILayout.Width(kSizeColWidth)); + GUILayout.EndHorizontal(); + GUILayout.BeginHorizontal(); + m_FormatScale = (GaussianSplatAsset.VectorFormat)EditorGUILayout.EnumPopup("Scale", m_FormatScale); + GUILayout.Label(sizeOther > 0 ? EditorUtility.FormatBytes(sizeOther) : string.Empty, GUILayout.Width(kSizeColWidth)); + GUILayout.EndHorizontal(); + GUILayout.BeginHorizontal(); + m_FormatColor = (GaussianSplatAsset.ColorFormat)EditorGUILayout.EnumPopup("Color", m_FormatColor); + GUILayout.Label(sizeCol > 0 ? EditorUtility.FormatBytes(sizeCol) : string.Empty, GUILayout.Width(kSizeColWidth)); + GUILayout.EndHorizontal(); + GUILayout.BeginHorizontal(); + m_FormatSH = (GaussianSplatAsset.SHFormat) EditorGUILayout.EnumPopup("SH", m_FormatSH); + GUIContent shGC = new GUIContent(); + shGC.text = sizeSHs > 0 ? EditorUtility.FormatBytes(sizeSHs) : string.Empty; + if (m_FormatSH >= GaussianSplatAsset.SHFormat.Cluster64k) + { + shGC.tooltip = "Note that SH clustering is not fast! (3-10 minutes for 6M splats)"; + shGC.image = EditorGUIUtility.IconContent("console.warnicon.sml").image; + } + GUILayout.Label(shGC, GUILayout.Width(kSizeColWidth)); + GUILayout.EndHorizontal(); + EditorGUI.indentLevel--; + EditorGUI.EndDisabledGroup(); + if (totalSize > 0) + EditorGUILayout.LabelField("Asset Size", $"{EditorUtility.FormatBytes(totalSize)} - {(double) m_PrevFileSize / totalSize:F2}x smaller"); + else + GUILayout.Space(EditorGUIUtility.singleLineHeight); + + + EditorGUILayout.Space(); + GUILayout.BeginHorizontal(); + GUILayout.Space(30); + if (GUILayout.Button("Create Asset")) + { + CreateAsset(); + } + GUILayout.Space(30); + GUILayout.EndHorizontal(); + + if (!string.IsNullOrWhiteSpace(m_ErrorMessage)) + { + EditorGUILayout.HelpBox(m_ErrorMessage, MessageType.Error); + } + } + + void ApplyQualityLevel() + { + switch (m_Quality) + { + case DataQuality.Custom: + break; + case DataQuality.VeryLow: // 18.62x smaller, 32.27 PSNR + m_FormatPos = GaussianSplatAsset.VectorFormat.Norm11; + m_FormatScale = GaussianSplatAsset.VectorFormat.Norm6; + m_FormatColor = GaussianSplatAsset.ColorFormat.BC7; + m_FormatSH = GaussianSplatAsset.SHFormat.Cluster4k; + break; + case DataQuality.Low: // 14.01x smaller, 35.17 PSNR + m_FormatPos = GaussianSplatAsset.VectorFormat.Norm11; + m_FormatScale = GaussianSplatAsset.VectorFormat.Norm6; + m_FormatColor = GaussianSplatAsset.ColorFormat.Norm8x4; + m_FormatSH = GaussianSplatAsset.SHFormat.Cluster16k; + break; + case DataQuality.Medium: // 5.14x smaller, 47.46 PSNR + m_FormatPos = GaussianSplatAsset.VectorFormat.Norm11; + m_FormatScale = GaussianSplatAsset.VectorFormat.Norm11; + m_FormatColor = GaussianSplatAsset.ColorFormat.Norm8x4; + m_FormatSH = GaussianSplatAsset.SHFormat.Norm6; + break; + case DataQuality.High: // 2.94x smaller, 57.77 PSNR + m_FormatPos = GaussianSplatAsset.VectorFormat.Norm16; + m_FormatScale = GaussianSplatAsset.VectorFormat.Norm16; + m_FormatColor = GaussianSplatAsset.ColorFormat.Float16x4; + m_FormatSH = GaussianSplatAsset.SHFormat.Norm11; + break; + case DataQuality.VeryHigh: // 1.05x smaller + m_FormatPos = GaussianSplatAsset.VectorFormat.Float32; + m_FormatScale = GaussianSplatAsset.VectorFormat.Float32; + m_FormatColor = GaussianSplatAsset.ColorFormat.Float32x4; + m_FormatSH = GaussianSplatAsset.SHFormat.Float32; + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + + // input file splat data is expected to be in this format + public struct InputSplatData + { + public Vector3 pos; + public Vector3 nor; + public Vector3 dc0; + public Vector3 sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8, sh9, shA, shB, shC, shD, shE, shF; + public float opacity; + public Vector3 scale; + public Quaternion rot; + } + + static T CreateOrReplaceAsset(T asset, string path) where T : UnityEngine.Object + { + T result = AssetDatabase.LoadAssetAtPath(path); + if (result == null) + { + AssetDatabase.CreateAsset(asset, path); + result = asset; + } + else + { + if (typeof(Mesh).IsAssignableFrom(typeof(T))) { (result as Mesh)?.Clear(); } + EditorUtility.CopySerialized(asset, result); + } + return result; + } + + unsafe void CreateAsset() + { + m_ErrorMessage = null; + if (string.IsNullOrWhiteSpace(m_InputFile)) + { + m_ErrorMessage = $"Select input PLY file"; + return; + } + + if (string.IsNullOrWhiteSpace(m_OutputFolder) || !m_OutputFolder.StartsWith("Assets/")) + { + m_ErrorMessage = $"Output folder must be within project, was '{m_OutputFolder}'"; + return; + } + Directory.CreateDirectory(m_OutputFolder); + + EditorUtility.DisplayProgressBar(kProgressTitle, "Reading data files", 0.0f); + GaussianSplatAsset.CameraInfo[] cameras = LoadJsonCamerasFile(m_InputFile, m_ImportCameras); + using NativeArray inputSplats = LoadPLYSplatFile(m_InputFile); + if (inputSplats.Length == 0) + { + EditorUtility.ClearProgressBar(); + return; + } + + float3 boundsMin, boundsMax; + var boundsJob = new CalcBoundsJob + { + m_BoundsMin = &boundsMin, + m_BoundsMax = &boundsMax, + m_SplatData = inputSplats + }; + boundsJob.Schedule().Complete(); + + EditorUtility.DisplayProgressBar(kProgressTitle, "Morton reordering", 0.05f); + ReorderMorton(inputSplats, boundsMin, boundsMax); + + // cluster SHs + NativeArray splatSHIndices = default; + NativeArray clusteredSHs = default; + if (m_FormatSH >= GaussianSplatAsset.SHFormat.Cluster64k) + { + EditorUtility.DisplayProgressBar(kProgressTitle, "Cluster SHs", 0.2f); + ClusterSHs(inputSplats, m_FormatSH, out clusteredSHs, out splatSHIndices); + } + + string baseName = Path.GetFileNameWithoutExtension(FilePickerControl.PathToDisplayString(m_InputFile)); + + EditorUtility.DisplayProgressBar(kProgressTitle, "Creating data objects", 0.7f); + GaussianSplatAsset asset = ScriptableObject.CreateInstance(); + asset.Initialize(inputSplats.Length, m_FormatPos, m_FormatScale, m_FormatColor, m_FormatSH, boundsMin, boundsMax, cameras); + asset.name = baseName; + + var dataHash = new Hash128((uint)asset.splatCount, (uint)asset.formatVersion, 0, 0); + string pathChunk = $"{m_OutputFolder}/{baseName}_chk.bytes"; + string pathPos = $"{m_OutputFolder}/{baseName}_pos.bytes"; + string pathOther = $"{m_OutputFolder}/{baseName}_oth.bytes"; + string pathCol = $"{m_OutputFolder}/{baseName}_col.bytes"; + string pathSh = $"{m_OutputFolder}/{baseName}_shs.bytes"; + LinearizeData(inputSplats); + + // if we are using full lossless (FP32) data, then do not use any chunking, and keep data as-is + bool useChunks = isUsingChunks; + if (useChunks) + CreateChunkData(inputSplats, pathChunk, ref dataHash); + CreatePositionsData(inputSplats, pathPos, ref dataHash); + CreateOtherData(inputSplats, pathOther, ref dataHash, splatSHIndices); + CreateColorData(inputSplats, pathCol, ref dataHash); + CreateSHData(inputSplats, pathSh, ref dataHash, clusteredSHs); + asset.SetDataHash(dataHash); + + splatSHIndices.Dispose(); + clusteredSHs.Dispose(); + + // files are created, import them so we can get to the imported objects, ugh + EditorUtility.DisplayProgressBar(kProgressTitle, "Initial texture import", 0.85f); + AssetDatabase.Refresh(ImportAssetOptions.ForceUncompressedImport); + + EditorUtility.DisplayProgressBar(kProgressTitle, "Setup data onto asset", 0.95f); + asset.SetAssetFiles( + useChunks ? AssetDatabase.LoadAssetAtPath(pathChunk) : null, + AssetDatabase.LoadAssetAtPath(pathPos), + AssetDatabase.LoadAssetAtPath(pathOther), + AssetDatabase.LoadAssetAtPath(pathCol), + AssetDatabase.LoadAssetAtPath(pathSh)); + + var assetPath = $"{m_OutputFolder}/{baseName}.asset"; + var savedAsset = CreateOrReplaceAsset(asset, assetPath); + + EditorUtility.DisplayProgressBar(kProgressTitle, "Saving assets", 0.99f); + AssetDatabase.SaveAssets(); + EditorUtility.ClearProgressBar(); + + Selection.activeObject = savedAsset; + } + + unsafe NativeArray LoadPLYSplatFile(string plyPath) + { + NativeArray data = default; + if (!File.Exists(plyPath)) + { + m_ErrorMessage = $"Did not find {plyPath} file"; + return data; + } + + int splatCount; + int vertexStride; + NativeArray verticesRawData; + try + { + PLYFileReader.ReadFile(plyPath, out splatCount, out vertexStride, out _, out verticesRawData); + } + catch (Exception ex) + { + m_ErrorMessage = ex.Message; + return data; + } + + if (UnsafeUtility.SizeOf() != vertexStride) + { + m_ErrorMessage = $"PLY vertex size mismatch, expected {UnsafeUtility.SizeOf()} but file has {vertexStride}"; + return data; + } + + // reorder SHs + NativeArray floatData = verticesRawData.Reinterpret(1); + ReorderSHs(splatCount, (float*)floatData.GetUnsafePtr()); + + return verticesRawData.Reinterpret(1); + } + + [BurstCompile] + static unsafe void ReorderSHs(int splatCount, float* data) + { + int splatStride = UnsafeUtility.SizeOf() / 4; + int shStartOffset = 9, shCount = 15; + float* tmp = stackalloc float[shCount * 3]; + int idx = shStartOffset; + for (int i = 0; i < splatCount; ++i) + { + for (int j = 0; j < shCount; ++j) + { + tmp[j * 3 + 0] = data[idx + j]; + tmp[j * 3 + 1] = data[idx + j + shCount]; + tmp[j * 3 + 2] = data[idx + j + shCount * 2]; + } + + for (int j = 0; j < shCount * 3; ++j) + { + data[idx + j] = tmp[j]; + } + + idx += splatStride; + } + } + + [BurstCompile] + struct CalcBoundsJob : IJob + { + [NativeDisableUnsafePtrRestriction] public unsafe float3* m_BoundsMin; + [NativeDisableUnsafePtrRestriction] public unsafe float3* m_BoundsMax; + [ReadOnly] public NativeArray m_SplatData; + + public unsafe void Execute() + { + float3 boundsMin = float.PositiveInfinity; + float3 boundsMax = float.NegativeInfinity; + + for (int i = 0; i < m_SplatData.Length; ++i) + { + float3 pos = m_SplatData[i].pos; + boundsMin = math.min(boundsMin, pos); + boundsMax = math.max(boundsMax, pos); + } + *m_BoundsMin = boundsMin; + *m_BoundsMax = boundsMax; + } + } + + [BurstCompile] + struct ReorderMortonJob : IJobParallelFor + { + const float kScaler = (float) ((1 << 21) - 1); + public float3 m_BoundsMin; + public float3 m_InvBoundsSize; + [ReadOnly] public NativeArray m_SplatData; + public NativeArray<(ulong,int)> m_Order; + + public void Execute(int index) + { + float3 pos = ((float3)m_SplatData[index].pos - m_BoundsMin) * m_InvBoundsSize * kScaler; + uint3 ipos = (uint3) pos; + ulong code = GaussianUtils.MortonEncode3(ipos); + m_Order[index] = (code, index); + } + } + + struct OrderComparer : IComparer<(ulong, int)> { + public int Compare((ulong, int) a, (ulong, int) b) + { + if (a.Item1 < b.Item1) return -1; + if (a.Item1 > b.Item1) return +1; + return a.Item2 - b.Item2; + } + } + + static void ReorderMorton(NativeArray splatData, float3 boundsMin, float3 boundsMax) + { + ReorderMortonJob order = new ReorderMortonJob + { + m_SplatData = splatData, + m_BoundsMin = boundsMin, + m_InvBoundsSize = 1.0f / (boundsMax - boundsMin), + m_Order = new NativeArray<(ulong, int)>(splatData.Length, Allocator.TempJob) + }; + order.Schedule(splatData.Length, 4096).Complete(); + order.m_Order.Sort(new OrderComparer()); + + NativeArray copy = new(order.m_SplatData, Allocator.TempJob); + for (int i = 0; i < copy.Length; ++i) + order.m_SplatData[i] = copy[order.m_Order[i].Item2]; + copy.Dispose(); + + order.m_Order.Dispose(); + } + + [BurstCompile] + static unsafe void GatherSHs(int splatCount, InputSplatData* splatData, float* shData) + { + for (int i = 0; i < splatCount; ++i) + { + UnsafeUtility.MemCpy(shData, ((float*)splatData) + 9, 15 * 3 * sizeof(float)); + splatData++; + shData += 15 * 3; + } + } + + [BurstCompile] + struct ConvertSHClustersJob : IJobParallelFor + { + [ReadOnly] public NativeArray m_Input; + public NativeArray m_Output; + public void Execute(int index) + { + var addr = index * 15; + GaussianSplatAsset.SHTableItemFloat16 res; + res.sh1 = new half3(m_Input[addr+0]); + res.sh2 = new half3(m_Input[addr+1]); + res.sh3 = new half3(m_Input[addr+2]); + res.sh4 = new half3(m_Input[addr+3]); + res.sh5 = new half3(m_Input[addr+4]); + res.sh6 = new half3(m_Input[addr+5]); + res.sh7 = new half3(m_Input[addr+6]); + res.sh8 = new half3(m_Input[addr+7]); + res.sh9 = new half3(m_Input[addr+8]); + res.shA = new half3(m_Input[addr+9]); + res.shB = new half3(m_Input[addr+10]); + res.shC = new half3(m_Input[addr+11]); + res.shD = new half3(m_Input[addr+12]); + res.shE = new half3(m_Input[addr+13]); + res.shF = new half3(m_Input[addr+14]); + res.shPadding = default; + m_Output[index] = res; + } + } + static bool ClusterSHProgress(float val) + { + EditorUtility.DisplayProgressBar(kProgressTitle, $"Cluster SHs ({val:P0})", 0.2f + val * 0.5f); + return true; + } + + static unsafe void ClusterSHs(NativeArray splatData, GaussianSplatAsset.SHFormat format, out NativeArray shs, out NativeArray shIndices) + { + shs = default; + shIndices = default; + + int shCount = GaussianSplatAsset.GetSHCount(format, splatData.Length); + if (shCount >= splatData.Length) // no need to cluster, just use raw data + return; + + const int kShDim = 15 * 3; + const int kBatchSize = 2048; + float passesOverData = format switch + { + GaussianSplatAsset.SHFormat.Cluster64k => 0.3f, + GaussianSplatAsset.SHFormat.Cluster32k => 0.4f, + GaussianSplatAsset.SHFormat.Cluster16k => 0.5f, + GaussianSplatAsset.SHFormat.Cluster8k => 0.8f, + GaussianSplatAsset.SHFormat.Cluster4k => 1.2f, + _ => throw new ArgumentOutOfRangeException(nameof(format), format, null) + }; + + float t0 = Time.realtimeSinceStartup; + NativeArray shData = new(splatData.Length * kShDim, Allocator.Persistent); + GatherSHs(splatData.Length, (InputSplatData*) splatData.GetUnsafeReadOnlyPtr(), (float*) shData.GetUnsafePtr()); + + NativeArray shMeans = new(shCount * kShDim, Allocator.Persistent); + shIndices = new(splatData.Length, Allocator.Persistent); + + KMeansClustering.Calculate(kShDim, shData, kBatchSize, passesOverData, ClusterSHProgress, shMeans, shIndices); + shData.Dispose(); + + shs = new NativeArray(shCount, Allocator.Persistent); + + ConvertSHClustersJob job = new ConvertSHClustersJob + { + m_Input = shMeans.Reinterpret(4), + m_Output = shs + }; + job.Schedule(shCount, 256).Complete(); + shMeans.Dispose(); + float t1 = Time.realtimeSinceStartup; + Debug.Log($"GS: clustered {splatData.Length/1000000.0:F2}M SHs into {shCount/1024}K ({passesOverData:F1}pass/{kBatchSize}batch) in {t1-t0:F0}s"); + } + + [BurstCompile] + struct LinearizeDataJob : IJobParallelFor + { + public NativeArray splatData; + public void Execute(int index) + { + var splat = splatData[index]; + + // rot + var q = splat.rot; + var qq = GaussianUtils.NormalizeSwizzleRotation(new float4(q.x, q.y, q.z, q.w)); + qq = GaussianUtils.PackSmallest3Rotation(qq); + splat.rot = new Quaternion(qq.x, qq.y, qq.z, qq.w); + + // scale + splat.scale = GaussianUtils.LinearScale(splat.scale); + + // color + splat.dc0 = GaussianUtils.SH0ToColor(splat.dc0); + splat.opacity = GaussianUtils.Sigmoid(splat.opacity); + + splatData[index] = splat; + } + } + + static void LinearizeData(NativeArray splatData) + { + LinearizeDataJob job = new LinearizeDataJob(); + job.splatData = splatData; + job.Schedule(splatData.Length, 4096).Complete(); + } + + [BurstCompile] + struct CalcChunkDataJob : IJobParallelFor + { + [NativeDisableParallelForRestriction] public NativeArray splatData; + public NativeArray chunks; + + public void Execute(int chunkIdx) + { + float3 chunkMinpos = float.PositiveInfinity; + float3 chunkMinscl = float.PositiveInfinity; + float4 chunkMincol = float.PositiveInfinity; + float3 chunkMinshs = float.PositiveInfinity; + float3 chunkMaxpos = float.NegativeInfinity; + float3 chunkMaxscl = float.NegativeInfinity; + float4 chunkMaxcol = float.NegativeInfinity; + float3 chunkMaxshs = float.NegativeInfinity; + + int splatBegin = math.min(chunkIdx * GaussianSplatAsset.kChunkSize, splatData.Length); + int splatEnd = math.min((chunkIdx + 1) * GaussianSplatAsset.kChunkSize, splatData.Length); + + // calculate data bounds inside the chunk + for (int i = splatBegin; i < splatEnd; ++i) + { + InputSplatData s = splatData[i]; + + // transform scale to be more uniformly distributed + s.scale = math.pow(s.scale, 1.0f / 8.0f); + // transform opacity to be more unformly distributed + s.opacity = GaussianUtils.SquareCentered01(s.opacity); + splatData[i] = s; + + chunkMinpos = math.min(chunkMinpos, s.pos); + chunkMinscl = math.min(chunkMinscl, s.scale); + chunkMincol = math.min(chunkMincol, new float4(s.dc0, s.opacity)); + chunkMinshs = math.min(chunkMinshs, s.sh1); + chunkMinshs = math.min(chunkMinshs, s.sh2); + chunkMinshs = math.min(chunkMinshs, s.sh3); + chunkMinshs = math.min(chunkMinshs, s.sh4); + chunkMinshs = math.min(chunkMinshs, s.sh5); + chunkMinshs = math.min(chunkMinshs, s.sh6); + chunkMinshs = math.min(chunkMinshs, s.sh7); + chunkMinshs = math.min(chunkMinshs, s.sh8); + chunkMinshs = math.min(chunkMinshs, s.sh9); + chunkMinshs = math.min(chunkMinshs, s.shA); + chunkMinshs = math.min(chunkMinshs, s.shB); + chunkMinshs = math.min(chunkMinshs, s.shC); + chunkMinshs = math.min(chunkMinshs, s.shD); + chunkMinshs = math.min(chunkMinshs, s.shE); + chunkMinshs = math.min(chunkMinshs, s.shF); + + chunkMaxpos = math.max(chunkMaxpos, s.pos); + chunkMaxscl = math.max(chunkMaxscl, s.scale); + chunkMaxcol = math.max(chunkMaxcol, new float4(s.dc0, s.opacity)); + chunkMaxshs = math.max(chunkMaxshs, s.sh1); + chunkMaxshs = math.max(chunkMaxshs, s.sh2); + chunkMaxshs = math.max(chunkMaxshs, s.sh3); + chunkMaxshs = math.max(chunkMaxshs, s.sh4); + chunkMaxshs = math.max(chunkMaxshs, s.sh5); + chunkMaxshs = math.max(chunkMaxshs, s.sh6); + chunkMaxshs = math.max(chunkMaxshs, s.sh7); + chunkMaxshs = math.max(chunkMaxshs, s.sh8); + chunkMaxshs = math.max(chunkMaxshs, s.sh9); + chunkMaxshs = math.max(chunkMaxshs, s.shA); + chunkMaxshs = math.max(chunkMaxshs, s.shB); + chunkMaxshs = math.max(chunkMaxshs, s.shC); + chunkMaxshs = math.max(chunkMaxshs, s.shD); + chunkMaxshs = math.max(chunkMaxshs, s.shE); + chunkMaxshs = math.max(chunkMaxshs, s.shF); + } + + // make sure bounds are not zero + chunkMaxpos = math.max(chunkMaxpos, chunkMinpos + 1.0e-5f); + chunkMaxscl = math.max(chunkMaxscl, chunkMinscl + 1.0e-5f); + chunkMaxcol = math.max(chunkMaxcol, chunkMincol + 1.0e-5f); + chunkMaxshs = math.max(chunkMaxshs, chunkMinshs + 1.0e-5f); + + // store chunk info + GaussianSplatAsset.ChunkInfo info = default; + info.posX = new float2(chunkMinpos.x, chunkMaxpos.x); + info.posY = new float2(chunkMinpos.y, chunkMaxpos.y); + info.posZ = new float2(chunkMinpos.z, chunkMaxpos.z); + info.sclX = math.f32tof16(chunkMinscl.x) | (math.f32tof16(chunkMaxscl.x) << 16); + info.sclY = math.f32tof16(chunkMinscl.y) | (math.f32tof16(chunkMaxscl.y) << 16); + info.sclZ = math.f32tof16(chunkMinscl.z) | (math.f32tof16(chunkMaxscl.z) << 16); + info.colR = math.f32tof16(chunkMincol.x) | (math.f32tof16(chunkMaxcol.x) << 16); + info.colG = math.f32tof16(chunkMincol.y) | (math.f32tof16(chunkMaxcol.y) << 16); + info.colB = math.f32tof16(chunkMincol.z) | (math.f32tof16(chunkMaxcol.z) << 16); + info.colA = math.f32tof16(chunkMincol.w) | (math.f32tof16(chunkMaxcol.w) << 16); + info.shR = math.f32tof16(chunkMinshs.x) | (math.f32tof16(chunkMaxshs.x) << 16); + info.shG = math.f32tof16(chunkMinshs.y) | (math.f32tof16(chunkMaxshs.y) << 16); + info.shB = math.f32tof16(chunkMinshs.z) | (math.f32tof16(chunkMaxshs.z) << 16); + chunks[chunkIdx] = info; + + // adjust data to be 0..1 within chunk bounds + for (int i = splatBegin; i < splatEnd; ++i) + { + InputSplatData s = splatData[i]; + s.pos = ((float3)s.pos - chunkMinpos) / (chunkMaxpos - chunkMinpos); + s.scale = ((float3)s.scale - chunkMinscl) / (chunkMaxscl - chunkMinscl); + s.dc0 = ((float3)s.dc0 - chunkMincol.xyz) / (chunkMaxcol.xyz - chunkMincol.xyz); + s.opacity = (s.opacity - chunkMincol.w) / (chunkMaxcol.w - chunkMincol.w); + s.sh1 = ((float3) s.sh1 - chunkMinshs) / (chunkMaxshs - chunkMinshs); + s.sh2 = ((float3) s.sh2 - chunkMinshs) / (chunkMaxshs - chunkMinshs); + s.sh3 = ((float3) s.sh3 - chunkMinshs) / (chunkMaxshs - chunkMinshs); + s.sh4 = ((float3) s.sh4 - chunkMinshs) / (chunkMaxshs - chunkMinshs); + s.sh5 = ((float3) s.sh5 - chunkMinshs) / (chunkMaxshs - chunkMinshs); + s.sh6 = ((float3) s.sh6 - chunkMinshs) / (chunkMaxshs - chunkMinshs); + s.sh7 = ((float3) s.sh7 - chunkMinshs) / (chunkMaxshs - chunkMinshs); + s.sh8 = ((float3) s.sh8 - chunkMinshs) / (chunkMaxshs - chunkMinshs); + s.sh9 = ((float3) s.sh9 - chunkMinshs) / (chunkMaxshs - chunkMinshs); + s.shA = ((float3) s.shA - chunkMinshs) / (chunkMaxshs - chunkMinshs); + s.shB = ((float3) s.shB - chunkMinshs) / (chunkMaxshs - chunkMinshs); + s.shC = ((float3) s.shC - chunkMinshs) / (chunkMaxshs - chunkMinshs); + s.shD = ((float3) s.shD - chunkMinshs) / (chunkMaxshs - chunkMinshs); + s.shE = ((float3) s.shE - chunkMinshs) / (chunkMaxshs - chunkMinshs); + s.shF = ((float3) s.shF - chunkMinshs) / (chunkMaxshs - chunkMinshs); + splatData[i] = s; + } + } + } + + static void CreateChunkData(NativeArray splatData, string filePath, ref Hash128 dataHash) + { + int chunkCount = (splatData.Length + GaussianSplatAsset.kChunkSize - 1) / GaussianSplatAsset.kChunkSize; + CalcChunkDataJob job = new CalcChunkDataJob + { + splatData = splatData, + chunks = new(chunkCount, Allocator.TempJob), + }; + + job.Schedule(chunkCount, 8).Complete(); + + dataHash.Append(ref job.chunks); + + using var fs = new FileStream(filePath, FileMode.Create, FileAccess.Write); + fs.Write(job.chunks.Reinterpret(UnsafeUtility.SizeOf())); + + job.chunks.Dispose(); + } + + [BurstCompile] + struct ConvertColorJob : IJobParallelFor + { + public int width, height; + [ReadOnly] public NativeArray inputData; + [NativeDisableParallelForRestriction] public NativeArray outputData; + public GaussianSplatAsset.ColorFormat format; + public int formatBytesPerPixel; + + public unsafe void Execute(int y) + { + int srcIdx = y * width; + byte* dstPtr = (byte*) outputData.GetUnsafePtr() + y * width * formatBytesPerPixel; + for (int x = 0; x < width; ++x) + { + float4 pix = inputData[srcIdx]; + + switch (format) + { + case GaussianSplatAsset.ColorFormat.Float32x4: + { + *(float4*) dstPtr = pix; + } + break; + case GaussianSplatAsset.ColorFormat.Float16x4: + { + half4 enc = new half4(pix); + *(half4*) dstPtr = enc; + } + break; + case GaussianSplatAsset.ColorFormat.Norm8x4: + { + pix = math.saturate(pix); + uint enc = (uint)(pix.x * 255.5f) | ((uint)(pix.y * 255.5f) << 8) | ((uint)(pix.z * 255.5f) << 16) | ((uint)(pix.w * 255.5f) << 24); + *(uint*) dstPtr = enc; + } + break; + } + + srcIdx++; + dstPtr += formatBytesPerPixel; + } + } + } + + static ulong EncodeFloat3ToNorm16(float3 v) // 48 bits: 16.16.16 + { + return (ulong) (v.x * 65535.5f) | ((ulong) (v.y * 65535.5f) << 16) | ((ulong) (v.z * 65535.5f) << 32); + } + static uint EncodeFloat3ToNorm11(float3 v) // 32 bits: 11.10.11 + { + return (uint) (v.x * 2047.5f) | ((uint) (v.y * 1023.5f) << 11) | ((uint) (v.z * 2047.5f) << 21); + } + static ushort EncodeFloat3ToNorm655(float3 v) // 16 bits: 6.5.5 + { + return (ushort) ((uint) (v.x * 63.5f) | ((uint) (v.y * 31.5f) << 6) | ((uint) (v.z * 31.5f) << 11)); + } + static ushort EncodeFloat3ToNorm565(float3 v) // 16 bits: 5.6.5 + { + return (ushort) ((uint) (v.x * 31.5f) | ((uint) (v.y * 63.5f) << 5) | ((uint) (v.z * 31.5f) << 11)); + } + + static uint EncodeQuatToNorm10(float4 v) // 32 bits: 10.10.10.2 + { + return (uint) (v.x * 1023.5f) | ((uint) (v.y * 1023.5f) << 10) | ((uint) (v.z * 1023.5f) << 20) | ((uint) (v.w * 3.5f) << 30); + } + + static unsafe void EmitEncodedVector(float3 v, byte* outputPtr, GaussianSplatAsset.VectorFormat format) + { + switch (format) + { + case GaussianSplatAsset.VectorFormat.Float32: + { + *(float*) outputPtr = v.x; + *(float*) (outputPtr + 4) = v.y; + *(float*) (outputPtr + 8) = v.z; + } + break; + case GaussianSplatAsset.VectorFormat.Norm16: + { + ulong enc = EncodeFloat3ToNorm16(math.saturate(v)); + *(uint*) outputPtr = (uint) enc; + *(ushort*) (outputPtr + 4) = (ushort) (enc >> 32); + } + break; + case GaussianSplatAsset.VectorFormat.Norm11: + { + uint enc = EncodeFloat3ToNorm11(math.saturate(v)); + *(uint*) outputPtr = enc; + } + break; + case GaussianSplatAsset.VectorFormat.Norm6: + { + ushort enc = EncodeFloat3ToNorm655(math.saturate(v)); + *(ushort*) outputPtr = enc; + } + break; + } + } + + [BurstCompile] + struct CreatePositionsDataJob : IJobParallelFor + { + [ReadOnly] public NativeArray m_Input; + public GaussianSplatAsset.VectorFormat m_Format; + public int m_FormatSize; + [NativeDisableParallelForRestriction] public NativeArray m_Output; + + public unsafe void Execute(int index) + { + byte* outputPtr = (byte*) m_Output.GetUnsafePtr() + index * m_FormatSize; + EmitEncodedVector(m_Input[index].pos, outputPtr, m_Format); + } + } + + [BurstCompile] + struct CreateOtherDataJob : IJobParallelFor + { + [ReadOnly] public NativeArray m_Input; + [NativeDisableContainerSafetyRestriction] [ReadOnly] public NativeArray m_SplatSHIndices; + public GaussianSplatAsset.VectorFormat m_ScaleFormat; + public int m_FormatSize; + [NativeDisableParallelForRestriction] public NativeArray m_Output; + + public unsafe void Execute(int index) + { + byte* outputPtr = (byte*) m_Output.GetUnsafePtr() + index * m_FormatSize; + + // rotation: 4 bytes + { + Quaternion rotQ = m_Input[index].rot; + float4 rot = new float4(rotQ.x, rotQ.y, rotQ.z, rotQ.w); + uint enc = EncodeQuatToNorm10(rot); + *(uint*) outputPtr = enc; + outputPtr += 4; + } + + // scale: 6, 4 or 2 bytes + EmitEncodedVector(m_Input[index].scale, outputPtr, m_ScaleFormat); + outputPtr += GaussianSplatAsset.GetVectorSize(m_ScaleFormat); + + // SH index + if (m_SplatSHIndices.IsCreated) + *(ushort*) outputPtr = (ushort)m_SplatSHIndices[index]; + } + } + + static int NextMultipleOf(int size, int multipleOf) + { + return (size + multipleOf - 1) / multipleOf * multipleOf; + } + + void CreatePositionsData(NativeArray inputSplats, string filePath, ref Hash128 dataHash) + { + int dataLen = inputSplats.Length * GaussianSplatAsset.GetVectorSize(m_FormatPos); + dataLen = NextMultipleOf(dataLen, 8); // serialized as ulong + NativeArray data = new(dataLen, Allocator.TempJob); + + CreatePositionsDataJob job = new CreatePositionsDataJob + { + m_Input = inputSplats, + m_Format = m_FormatPos, + m_FormatSize = GaussianSplatAsset.GetVectorSize(m_FormatPos), + m_Output = data + }; + job.Schedule(inputSplats.Length, 8192).Complete(); + + dataHash.Append(data); + + using var fs = new FileStream(filePath, FileMode.Create, FileAccess.Write); + fs.Write(data); + + data.Dispose(); + } + + void CreateOtherData(NativeArray inputSplats, string filePath, ref Hash128 dataHash, NativeArray splatSHIndices) + { + int formatSize = GaussianSplatAsset.GetOtherSizeNoSHIndex(m_FormatScale); + if (splatSHIndices.IsCreated) + formatSize += 2; + int dataLen = inputSplats.Length * formatSize; + + dataLen = NextMultipleOf(dataLen, 8); // serialized as ulong + NativeArray data = new(dataLen, Allocator.TempJob); + + CreateOtherDataJob job = new CreateOtherDataJob + { + m_Input = inputSplats, + m_SplatSHIndices = splatSHIndices, + m_ScaleFormat = m_FormatScale, + m_FormatSize = formatSize, + m_Output = data + }; + job.Schedule(inputSplats.Length, 8192).Complete(); + + dataHash.Append(data); + + using var fs = new FileStream(filePath, FileMode.Create, FileAccess.Write); + fs.Write(data); + + data.Dispose(); + } + + static int SplatIndexToTextureIndex(uint idx) + { + uint2 xy = GaussianUtils.DecodeMorton2D_16x16(idx); + uint width = GaussianSplatAsset.kTextureWidth / 16; + idx >>= 8; + uint x = (idx % width) * 16 + xy.x; + uint y = (idx / width) * 16 + xy.y; + return (int)(y * GaussianSplatAsset.kTextureWidth + x); + } + + [BurstCompile] + struct CreateColorDataJob : IJobParallelFor + { + [ReadOnly] public NativeArray m_Input; + [NativeDisableParallelForRestriction] public NativeArray m_Output; + + public void Execute(int index) + { + var splat = m_Input[index]; + int i = SplatIndexToTextureIndex((uint)index); + m_Output[i] = new float4(splat.dc0.x, splat.dc0.y, splat.dc0.z, splat.opacity); + } + } + + void CreateColorData(NativeArray inputSplats, string filePath, ref Hash128 dataHash) + { + var (width, height) = GaussianSplatAsset.CalcTextureSize(inputSplats.Length); + NativeArray data = new(width * height, Allocator.TempJob); + + CreateColorDataJob job = new CreateColorDataJob(); + job.m_Input = inputSplats; + job.m_Output = data; + job.Schedule(inputSplats.Length, 8192).Complete(); + + dataHash.Append(data); + dataHash.Append((int)m_FormatColor); + + GraphicsFormat gfxFormat = GaussianSplatAsset.ColorFormatToGraphics(m_FormatColor); + int dstSize = (int)GraphicsFormatUtility.ComputeMipmapSize(width, height, gfxFormat); + + if (GraphicsFormatUtility.IsCompressedFormat(gfxFormat)) + { + Texture2D tex = new Texture2D(width, height, GraphicsFormat.R32G32B32A32_SFloat, TextureCreationFlags.DontInitializePixels | TextureCreationFlags.DontUploadUponCreate); + tex.SetPixelData(data, 0); + EditorUtility.CompressTexture(tex, GraphicsFormatUtility.GetTextureFormat(gfxFormat), 100); + NativeArray cmpData = tex.GetPixelData(0); + using var fs = new FileStream(filePath, FileMode.Create, FileAccess.Write); + fs.Write(cmpData); + + DestroyImmediate(tex); + } + else + { + ConvertColorJob jobConvert = new ConvertColorJob + { + width = width, + height = height, + inputData = data, + format = m_FormatColor, + outputData = new NativeArray(dstSize, Allocator.TempJob), + formatBytesPerPixel = dstSize / width / height + }; + jobConvert.Schedule(height, 1).Complete(); + using var fs = new FileStream(filePath, FileMode.Create, FileAccess.Write); + fs.Write(jobConvert.outputData); + jobConvert.outputData.Dispose(); + } + + data.Dispose(); + } + + [BurstCompile] + struct CreateSHDataJob : IJobParallelFor + { + [ReadOnly] public NativeArray m_Input; + public GaussianSplatAsset.SHFormat m_Format; + public NativeArray m_Output; + public unsafe void Execute(int index) + { + var splat = m_Input[index]; + + switch (m_Format) + { + case GaussianSplatAsset.SHFormat.Float32: + { + GaussianSplatAsset.SHTableItemFloat32 res; + res.sh1 = splat.sh1; + res.sh2 = splat.sh2; + res.sh3 = splat.sh3; + res.sh4 = splat.sh4; + res.sh5 = splat.sh5; + res.sh6 = splat.sh6; + res.sh7 = splat.sh7; + res.sh8 = splat.sh8; + res.sh9 = splat.sh9; + res.shA = splat.shA; + res.shB = splat.shB; + res.shC = splat.shC; + res.shD = splat.shD; + res.shE = splat.shE; + res.shF = splat.shF; + res.shPadding = default; + ((GaussianSplatAsset.SHTableItemFloat32*) m_Output.GetUnsafePtr())[index] = res; + } + break; + case GaussianSplatAsset.SHFormat.Float16: + { + GaussianSplatAsset.SHTableItemFloat16 res; + res.sh1 = new half3(splat.sh1); + res.sh2 = new half3(splat.sh2); + res.sh3 = new half3(splat.sh3); + res.sh4 = new half3(splat.sh4); + res.sh5 = new half3(splat.sh5); + res.sh6 = new half3(splat.sh6); + res.sh7 = new half3(splat.sh7); + res.sh8 = new half3(splat.sh8); + res.sh9 = new half3(splat.sh9); + res.shA = new half3(splat.shA); + res.shB = new half3(splat.shB); + res.shC = new half3(splat.shC); + res.shD = new half3(splat.shD); + res.shE = new half3(splat.shE); + res.shF = new half3(splat.shF); + res.shPadding = default; + ((GaussianSplatAsset.SHTableItemFloat16*) m_Output.GetUnsafePtr())[index] = res; + } + break; + case GaussianSplatAsset.SHFormat.Norm11: + { + GaussianSplatAsset.SHTableItemNorm11 res; + res.sh1 = EncodeFloat3ToNorm11(splat.sh1); + res.sh2 = EncodeFloat3ToNorm11(splat.sh2); + res.sh3 = EncodeFloat3ToNorm11(splat.sh3); + res.sh4 = EncodeFloat3ToNorm11(splat.sh4); + res.sh5 = EncodeFloat3ToNorm11(splat.sh5); + res.sh6 = EncodeFloat3ToNorm11(splat.sh6); + res.sh7 = EncodeFloat3ToNorm11(splat.sh7); + res.sh8 = EncodeFloat3ToNorm11(splat.sh8); + res.sh9 = EncodeFloat3ToNorm11(splat.sh9); + res.shA = EncodeFloat3ToNorm11(splat.shA); + res.shB = EncodeFloat3ToNorm11(splat.shB); + res.shC = EncodeFloat3ToNorm11(splat.shC); + res.shD = EncodeFloat3ToNorm11(splat.shD); + res.shE = EncodeFloat3ToNorm11(splat.shE); + res.shF = EncodeFloat3ToNorm11(splat.shF); + ((GaussianSplatAsset.SHTableItemNorm11*) m_Output.GetUnsafePtr())[index] = res; + } + break; + case GaussianSplatAsset.SHFormat.Norm6: + { + GaussianSplatAsset.SHTableItemNorm6 res; + res.sh1 = EncodeFloat3ToNorm565(splat.sh1); + res.sh2 = EncodeFloat3ToNorm565(splat.sh2); + res.sh3 = EncodeFloat3ToNorm565(splat.sh3); + res.sh4 = EncodeFloat3ToNorm565(splat.sh4); + res.sh5 = EncodeFloat3ToNorm565(splat.sh5); + res.sh6 = EncodeFloat3ToNorm565(splat.sh6); + res.sh7 = EncodeFloat3ToNorm565(splat.sh7); + res.sh8 = EncodeFloat3ToNorm565(splat.sh8); + res.sh9 = EncodeFloat3ToNorm565(splat.sh9); + res.shA = EncodeFloat3ToNorm565(splat.shA); + res.shB = EncodeFloat3ToNorm565(splat.shB); + res.shC = EncodeFloat3ToNorm565(splat.shC); + res.shD = EncodeFloat3ToNorm565(splat.shD); + res.shE = EncodeFloat3ToNorm565(splat.shE); + res.shF = EncodeFloat3ToNorm565(splat.shF); + res.shPadding = default; + ((GaussianSplatAsset.SHTableItemNorm6*) m_Output.GetUnsafePtr())[index] = res; + } + break; + default: + break; + } + } + } + + static void EmitSimpleDataFile(NativeArray data, string filePath, ref Hash128 dataHash) where T : unmanaged + { + dataHash.Append(data); + using var fs = new FileStream(filePath, FileMode.Create, FileAccess.Write); + fs.Write(data.Reinterpret(UnsafeUtility.SizeOf())); + } + + void CreateSHData(NativeArray inputSplats, string filePath, ref Hash128 dataHash, NativeArray clusteredSHs) + { + if (clusteredSHs.IsCreated) + { + EmitSimpleDataFile(clusteredSHs, filePath, ref dataHash); + } + else + { + int dataLen = (int)GaussianSplatAsset.CalcSHDataSize(inputSplats.Length, m_FormatSH); + NativeArray data = new(dataLen, Allocator.TempJob); + CreateSHDataJob job = new CreateSHDataJob + { + m_Input = inputSplats, + m_Format = m_FormatSH, + m_Output = data + }; + job.Schedule(inputSplats.Length, 8192).Complete(); + EmitSimpleDataFile(data, filePath, ref dataHash); + data.Dispose(); + } + } + + static GaussianSplatAsset.CameraInfo[] LoadJsonCamerasFile(string curPath, bool doImport) + { + if (!doImport) + return null; + + string camerasPath; + while (true) + { + var dir = Path.GetDirectoryName(curPath); + if (!Directory.Exists(dir)) + return null; + camerasPath = $"{dir}/{kCamerasJson}"; + if (File.Exists(camerasPath)) + break; + curPath = dir; + } + + if (!File.Exists(camerasPath)) + return null; + + string json = File.ReadAllText(camerasPath); + var jsonCameras = JSONParser.FromJson>(json); + if (jsonCameras == null || jsonCameras.Count == 0) + return null; + + var result = new GaussianSplatAsset.CameraInfo[jsonCameras.Count]; + for (var camIndex = 0; camIndex < jsonCameras.Count; camIndex++) + { + var jsonCam = jsonCameras[camIndex]; + var pos = new Vector3(jsonCam.position[0], jsonCam.position[1], jsonCam.position[2]); + // the matrix is a "view matrix", not "camera matrix" lol + var axisx = new Vector3(jsonCam.rotation[0][0], jsonCam.rotation[1][0], jsonCam.rotation[2][0]); + var axisy = new Vector3(jsonCam.rotation[0][1], jsonCam.rotation[1][1], jsonCam.rotation[2][1]); + var axisz = new Vector3(jsonCam.rotation[0][2], jsonCam.rotation[1][2], jsonCam.rotation[2][2]); + + axisy *= -1; + axisz *= -1; + + var cam = new GaussianSplatAsset.CameraInfo + { + pos = pos, + axisX = axisx, + axisY = axisy, + axisZ = axisz, + fov = 25 //@TODO + }; + result[camIndex] = cam; + } + + return result; + } + + [Serializable] + public class JsonCamera + { + public int id; + public string img_name; + public int width; + public int height; + public float[] position; + public float[][] rotation; + public float fx; + public float fy; + } + } +} diff --git a/MVS/3DGS-Unity/Editor/GaussianSplatAssetCreator.cs.meta b/MVS/3DGS-Unity/Editor/GaussianSplatAssetCreator.cs.meta new file mode 100644 index 00000000..15540d2f --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianSplatAssetCreator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 635bd950b8a74c84f870d5c8f02c3974 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Editor/GaussianSplatAssetEditor.cs b/MVS/3DGS-Unity/Editor/GaussianSplatAssetEditor.cs new file mode 100644 index 00000000..6dd0e147 --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianSplatAssetEditor.cs @@ -0,0 +1,71 @@ +// SPDX-License-Identifier: MIT + +using GaussianSplatting.Runtime; +using Unity.Collections.LowLevel.Unsafe; +using UnityEditor; +using UnityEngine; + +namespace GaussianSplatting.Editor +{ + [CustomEditor(typeof(GaussianSplatAsset))] + [CanEditMultipleObjects] + public class GaussianSplatAssetEditor : UnityEditor.Editor + { + public override void OnInspectorGUI() + { + var gs = target as GaussianSplatAsset; + if (!gs) + return; + + using var _ = new EditorGUI.DisabledScope(true); + + if (targets.Length == 1) + SingleAssetGUI(gs); + else + { + int totalCount = 0; + foreach (var tgt in targets) + { + var gss = tgt as GaussianSplatAsset; + if (gss) + { + totalCount += gss.splatCount; + } + } + EditorGUILayout.TextField("Total Splats", $"{totalCount:N0}"); + } + } + + static void SingleAssetGUI(GaussianSplatAsset gs) + { + var splatCount = gs.splatCount; + EditorGUILayout.TextField("Splats", $"{splatCount:N0}"); + var prevBackColor = GUI.backgroundColor; + if (gs.formatVersion != GaussianSplatAsset.kCurrentVersion) + GUI.backgroundColor *= Color.red; + EditorGUILayout.IntField("Version", gs.formatVersion); + GUI.backgroundColor = prevBackColor; + + long sizePos = gs.posData != null ? gs.posData.dataSize : 0; + long sizeOther = gs.otherData != null ? gs.otherData.dataSize : 0; + long sizeCol = gs.colorData != null ? gs.colorData.dataSize : 0; + long sizeSH = GaussianSplatAsset.CalcSHDataSize(gs.splatCount, gs.shFormat); + long sizeChunk = gs.chunkData != null ? gs.chunkData.dataSize : 0; + + EditorGUILayout.TextField("Memory", EditorUtility.FormatBytes(sizePos + sizeOther + sizeSH + sizeCol + sizeChunk)); + EditorGUI.indentLevel++; + EditorGUILayout.TextField("Positions", $"{EditorUtility.FormatBytes(sizePos)} ({gs.posFormat})"); + EditorGUILayout.TextField("Other", $"{EditorUtility.FormatBytes(sizeOther)} ({gs.scaleFormat})"); + EditorGUILayout.TextField("Base color", $"{EditorUtility.FormatBytes(sizeCol)} ({gs.colorFormat})"); + EditorGUILayout.TextField("SHs", $"{EditorUtility.FormatBytes(sizeSH)} ({gs.shFormat})"); + EditorGUILayout.TextField("Chunks", + $"{EditorUtility.FormatBytes(sizeChunk)} ({UnsafeUtility.SizeOf()} B/chunk)"); + EditorGUI.indentLevel--; + + EditorGUILayout.Vector3Field("Bounds Min", gs.boundsMin); + EditorGUILayout.Vector3Field("Bounds Max", gs.boundsMax); + + EditorGUILayout.TextField("Data Hash", gs.dataHash.ToString()); + } + } +} diff --git a/MVS/3DGS-Unity/Editor/GaussianSplatAssetEditor.cs.meta b/MVS/3DGS-Unity/Editor/GaussianSplatAssetEditor.cs.meta new file mode 100644 index 00000000..fded438f --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianSplatAssetEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 75971a29a6deda14c9b1ff5f4ab2f2a0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Editor/GaussianSplatRendererEditor.cs b/MVS/3DGS-Unity/Editor/GaussianSplatRendererEditor.cs new file mode 100644 index 00000000..06f8511d --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianSplatRendererEditor.cs @@ -0,0 +1,444 @@ +// SPDX-License-Identifier: MIT + +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using GaussianSplatting.Runtime; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using UnityEditor; +using UnityEditor.EditorTools; +using UnityEngine; +using GaussianSplatRenderer = GaussianSplatting.Runtime.GaussianSplatRenderer; + +namespace GaussianSplatting.Editor +{ + [CustomEditor(typeof(GaussianSplatRenderer))] + [CanEditMultipleObjects] + public class GaussianSplatRendererEditor : UnityEditor.Editor + { + const string kPrefExportBake = "nesnausk.GaussianSplatting.ExportBakeTransform"; + + SerializedProperty m_PropAsset; + SerializedProperty m_PropSplatScale; + SerializedProperty m_PropOpacityScale; + SerializedProperty m_PropSHOrder; + SerializedProperty m_PropSHOnly; + SerializedProperty m_PropSortNthFrame; + SerializedProperty m_PropRenderMode; + SerializedProperty m_PropPointDisplaySize; + SerializedProperty m_PropCutouts; + SerializedProperty m_PropShaderSplats; + SerializedProperty m_PropShaderComposite; + SerializedProperty m_PropShaderDebugPoints; + SerializedProperty m_PropShaderDebugBoxes; + SerializedProperty m_PropCSSplatUtilities; + + bool m_ResourcesExpanded = false; + int m_CameraIndex = 0; + + bool m_ExportBakeTransform; + + static int s_EditStatsUpdateCounter = 0; + + static HashSet s_AllEditors = new(); + + public static void BumpGUICounter() + { + ++s_EditStatsUpdateCounter; + } + + public static void RepaintAll() + { + foreach (var e in s_AllEditors) + e.Repaint(); + } + + public void OnEnable() + { + m_ExportBakeTransform = EditorPrefs.GetBool(kPrefExportBake, false); + + m_PropAsset = serializedObject.FindProperty("m_Asset"); + m_PropSplatScale = serializedObject.FindProperty("m_SplatScale"); + m_PropOpacityScale = serializedObject.FindProperty("m_OpacityScale"); + m_PropSHOrder = serializedObject.FindProperty("m_SHOrder"); + m_PropSHOnly = serializedObject.FindProperty("m_SHOnly"); + m_PropSortNthFrame = serializedObject.FindProperty("m_SortNthFrame"); + m_PropRenderMode = serializedObject.FindProperty("m_RenderMode"); + m_PropPointDisplaySize = serializedObject.FindProperty("m_PointDisplaySize"); + m_PropCutouts = serializedObject.FindProperty("m_Cutouts"); + m_PropShaderSplats = serializedObject.FindProperty("m_ShaderSplats"); + m_PropShaderComposite = serializedObject.FindProperty("m_ShaderComposite"); + m_PropShaderDebugPoints = serializedObject.FindProperty("m_ShaderDebugPoints"); + m_PropShaderDebugBoxes = serializedObject.FindProperty("m_ShaderDebugBoxes"); + m_PropCSSplatUtilities = serializedObject.FindProperty("m_CSSplatUtilities"); + + s_AllEditors.Add(this); + } + + public void OnDisable() + { + s_AllEditors.Remove(this); + } + + public override void OnInspectorGUI() + { + var gs = target as GaussianSplatRenderer; + if (!gs) + return; + + serializedObject.Update(); + + GUILayout.Label("Data Asset", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(m_PropAsset); + + if (!gs.HasValidAsset) + { + var msg = gs.asset != null && gs.asset.formatVersion != GaussianSplatAsset.kCurrentVersion + ? "Gaussian Splat asset version is not compatible, please recreate the asset" + : "Gaussian Splat asset is not assigned or is empty"; + EditorGUILayout.HelpBox(msg, MessageType.Error); + } + + EditorGUILayout.Space(); + GUILayout.Label("Render Options", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(m_PropSplatScale); + EditorGUILayout.PropertyField(m_PropOpacityScale); + EditorGUILayout.PropertyField(m_PropSHOrder); + EditorGUILayout.PropertyField(m_PropSHOnly); + EditorGUILayout.PropertyField(m_PropSortNthFrame); + + EditorGUILayout.Space(); + GUILayout.Label("Debugging Tweaks", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(m_PropRenderMode); + if (m_PropRenderMode.intValue is (int)GaussianSplatRenderer.RenderMode.DebugPoints or (int)GaussianSplatRenderer.RenderMode.DebugPointIndices) + EditorGUILayout.PropertyField(m_PropPointDisplaySize); + + EditorGUILayout.Space(); + m_ResourcesExpanded = EditorGUILayout.Foldout(m_ResourcesExpanded, "Resources", true, EditorStyles.foldoutHeader); + if (m_ResourcesExpanded) + { + EditorGUILayout.PropertyField(m_PropShaderSplats); + EditorGUILayout.PropertyField(m_PropShaderComposite); + EditorGUILayout.PropertyField(m_PropShaderDebugPoints); + EditorGUILayout.PropertyField(m_PropShaderDebugBoxes); + EditorGUILayout.PropertyField(m_PropCSSplatUtilities); + } + bool validAndEnabled = gs && gs.enabled && gs.gameObject.activeInHierarchy && gs.HasValidAsset; + if (validAndEnabled && !gs.HasValidRenderSetup) + { + EditorGUILayout.HelpBox("Shader resources are not set up", MessageType.Error); + validAndEnabled = false; + } + + if (validAndEnabled && targets.Length == 1) + { + EditCameras(gs); + EditGUI(gs); + } + if (validAndEnabled && targets.Length > 1) + { + MultiEditGUI(); + } + + serializedObject.ApplyModifiedProperties(); + } + + void EditCameras(GaussianSplatRenderer gs) + { + var asset = gs.asset; + var cameras = asset.cameras; + if (cameras != null && cameras.Length != 0) + { + EditorGUILayout.Space(); + GUILayout.Label("Cameras", EditorStyles.boldLabel); + var camIndex = EditorGUILayout.IntSlider("Camera", m_CameraIndex, 0, cameras.Length - 1); + camIndex = math.clamp(camIndex, 0, cameras.Length - 1); + if (camIndex != m_CameraIndex) + { + m_CameraIndex = camIndex; + gs.ActivateCamera(camIndex); + } + } + } + + void MultiEditGUI() + { + DrawSeparator(); + CountTargetSplats(out var totalSplats, out var totalObjects); + EditorGUILayout.LabelField("Total Objects", $"{totalObjects}"); + EditorGUILayout.LabelField("Total Splats", $"{totalSplats:N0}"); + if (totalSplats > GaussianSplatAsset.kMaxSplats) + { + EditorGUILayout.HelpBox($"Can't merge, too many splats (max. supported {GaussianSplatAsset.kMaxSplats:N0})", MessageType.Warning); + return; + } + + var targetGs = (GaussianSplatRenderer) target; + if (!targetGs || !targetGs.HasValidAsset || !targetGs.isActiveAndEnabled) + { + EditorGUILayout.HelpBox($"Can't merge into {target.name} (no asset or disable)", MessageType.Warning); + return; + } + + if (targetGs.asset.chunkData != null) + { + EditorGUILayout.HelpBox($"Can't merge into {target.name} (needs to use Very High quality preset)", MessageType.Warning); + return; + } + if (GUILayout.Button($"Merge into {target.name}")) + { + MergeSplatObjects(); + } + } + + void CountTargetSplats(out int totalSplats, out int totalObjects) + { + totalObjects = 0; + totalSplats = 0; + foreach (var obj in targets) + { + var gs = obj as GaussianSplatRenderer; + if (!gs || !gs.HasValidAsset || !gs.isActiveAndEnabled) + continue; + ++totalObjects; + totalSplats += gs.splatCount; + } + } + + void MergeSplatObjects() + { + CountTargetSplats(out var totalSplats, out _); + if (totalSplats > GaussianSplatAsset.kMaxSplats) + return; + var targetGs = (GaussianSplatRenderer) target; + + int copyDstOffset = targetGs.splatCount; + targetGs.EditSetSplatCount(totalSplats); + foreach (var obj in targets) + { + var gs = obj as GaussianSplatRenderer; + if (!gs || !gs.HasValidAsset || !gs.isActiveAndEnabled) + continue; + if (gs == targetGs) + continue; + gs.EditCopySplatsInto(targetGs, 0, copyDstOffset, gs.splatCount); + copyDstOffset += gs.splatCount; + gs.gameObject.SetActive(false); + } + Debug.Assert(copyDstOffset == totalSplats, $"Merge count mismatch, {copyDstOffset} vs {totalSplats}"); + Selection.activeObject = targetGs; + } + + void EditGUI(GaussianSplatRenderer gs) + { + ++s_EditStatsUpdateCounter; + + DrawSeparator(); + bool wasToolActive = ToolManager.activeContextType == typeof(GaussianToolContext); + GUILayout.BeginHorizontal(); + bool isToolActive = GUILayout.Toggle(wasToolActive, "Edit", EditorStyles.miniButton); + using (new EditorGUI.DisabledScope(!gs.editModified)) + { + if (GUILayout.Button("Reset", GUILayout.ExpandWidth(false))) + { + if (EditorUtility.DisplayDialog("Reset Splat Modifications?", + $"This will reset edits of {gs.name} to match the {gs.asset.name} asset. Continue?", + "Yes, reset", "Cancel")) + { + gs.enabled = false; + gs.enabled = true; + } + } + } + + GUILayout.EndHorizontal(); + if (!wasToolActive && isToolActive) + { + ToolManager.SetActiveContext(); + if (Tools.current == Tool.View) + Tools.current = Tool.Move; + } + + if (wasToolActive && !isToolActive) + { + ToolManager.SetActiveContext(); + } + + if (isToolActive && gs.asset.chunkData != null) + { + EditorGUILayout.HelpBox("Splat move/rotate/scale tools need Very High splat quality preset", MessageType.Warning); + } + + EditorGUILayout.Space(); + GUILayout.BeginHorizontal(); + if (GUILayout.Button("Add Cutout")) + { + GaussianCutout cutout = ObjectFactory.CreateGameObject("GSCutout", typeof(GaussianCutout)).GetComponent(); + Transform cutoutTr = cutout.transform; + cutoutTr.SetParent(gs.transform, false); + cutoutTr.localScale = (gs.asset.boundsMax - gs.asset.boundsMin) * 0.25f; + gs.m_Cutouts ??= Array.Empty(); + ArrayUtility.Add(ref gs.m_Cutouts, cutout); + gs.UpdateEditCountsAndBounds(); + EditorUtility.SetDirty(gs); + Selection.activeGameObject = cutout.gameObject; + } + if (GUILayout.Button("Use All Cutouts")) + { + gs.m_Cutouts = FindObjectsByType(FindObjectsSortMode.InstanceID); + gs.UpdateEditCountsAndBounds(); + EditorUtility.SetDirty(gs); + } + + if (GUILayout.Button("No Cutouts")) + { + gs.m_Cutouts = Array.Empty(); + gs.UpdateEditCountsAndBounds(); + EditorUtility.SetDirty(gs); + } + GUILayout.EndHorizontal(); + EditorGUILayout.PropertyField(m_PropCutouts); + + bool hasCutouts = gs.m_Cutouts != null && gs.m_Cutouts.Length != 0; + bool modifiedOrHasCutouts = gs.editModified || hasCutouts; + + var asset = gs.asset; + EditorGUILayout.Space(); + EditorGUI.BeginChangeCheck(); + m_ExportBakeTransform = EditorGUILayout.Toggle("Export in world space", m_ExportBakeTransform); + if (EditorGUI.EndChangeCheck()) + { + EditorPrefs.SetBool(kPrefExportBake, m_ExportBakeTransform); + } + + if (GUILayout.Button("Export PLY")) + ExportPlyFile(gs, m_ExportBakeTransform); + if (asset.posFormat > GaussianSplatAsset.VectorFormat.Norm16 || + asset.scaleFormat > GaussianSplatAsset.VectorFormat.Norm16 || + asset.colorFormat > GaussianSplatAsset.ColorFormat.Float16x4 || + asset.shFormat > GaussianSplatAsset.SHFormat.Float16) + { + EditorGUILayout.HelpBox( + "It is recommended to use High or VeryHigh quality preset for editing splats, lower levels are lossy", + MessageType.Warning); + } + + bool displayEditStats = isToolActive || modifiedOrHasCutouts; + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Splats", $"{gs.splatCount:N0}"); + if (displayEditStats) + { + EditorGUILayout.LabelField("Cut", $"{gs.editCutSplats:N0}"); + EditorGUILayout.LabelField("Deleted", $"{gs.editDeletedSplats:N0}"); + EditorGUILayout.LabelField("Selected", $"{gs.editSelectedSplats:N0}"); + if (hasCutouts) + { + if (s_EditStatsUpdateCounter > 10) + { + gs.UpdateEditCountsAndBounds(); + s_EditStatsUpdateCounter = 0; + } + } + } + } + + static void DrawSeparator() + { + EditorGUILayout.Space(12f, true); + GUILayout.Box(GUIContent.none, "sv_iconselector_sep", GUILayout.Height(2), GUILayout.ExpandWidth(true)); + EditorGUILayout.Space(); + } + + bool HasFrameBounds() + { + return true; + } + + Bounds OnGetFrameBounds() + { + var gs = target as GaussianSplatRenderer; + if (!gs || !gs.HasValidRenderSetup) + return new Bounds(Vector3.zero, Vector3.one); + Bounds bounds = default; + bounds.SetMinMax(gs.asset.boundsMin, gs.asset.boundsMax); + if (gs.editSelectedSplats > 0) + { + bounds = gs.editSelectedBounds; + } + bounds.extents *= 0.7f; + return TransformBounds(gs.transform, bounds); + } + + public static Bounds TransformBounds(Transform tr, Bounds bounds ) + { + var center = tr.TransformPoint(bounds.center); + + var ext = bounds.extents; + var axisX = tr.TransformVector(ext.x, 0, 0); + var axisY = tr.TransformVector(0, ext.y, 0); + var axisZ = tr.TransformVector(0, 0, ext.z); + + // sum their absolute value to get the world extents + ext.x = Mathf.Abs(axisX.x) + Mathf.Abs(axisY.x) + Mathf.Abs(axisZ.x); + ext.y = Mathf.Abs(axisX.y) + Mathf.Abs(axisY.y) + Mathf.Abs(axisZ.y); + ext.z = Mathf.Abs(axisX.z) + Mathf.Abs(axisY.z) + Mathf.Abs(axisZ.z); + + return new Bounds { center = center, extents = ext }; + } + + static unsafe void ExportPlyFile(GaussianSplatRenderer gs, bool bakeTransform) + { + var path = EditorUtility.SaveFilePanel( + "Export Gaussian Splat PLY file", "", $"{gs.asset.name}-edit.ply", "ply"); + if (string.IsNullOrWhiteSpace(path)) + return; + + int kSplatSize = UnsafeUtility.SizeOf(); + using var gpuData = new GraphicsBuffer(GraphicsBuffer.Target.Structured, gs.splatCount, kSplatSize); + + if (!gs.EditExportData(gpuData, bakeTransform)) + return; + + GaussianSplatAssetCreator.InputSplatData[] data = new GaussianSplatAssetCreator.InputSplatData[gpuData.count]; + gpuData.GetData(data); + + var gpuDeleted = gs.GpuEditDeleted; + uint[] deleted = new uint[gpuDeleted.count]; + gpuDeleted.GetData(deleted); + + // count non-deleted splats + int aliveCount = 0; + for (int i = 0; i < data.Length; ++i) + { + int wordIdx = i >> 5; + int bitIdx = i & 31; + bool isDeleted = (deleted[wordIdx] & (1u << bitIdx)) != 0; + bool isCutout = data[i].nor.sqrMagnitude > 0; + if (!isDeleted && !isCutout) + ++aliveCount; + } + + using FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write); + // note: this is a long string! but we don't use multiline literal because we want guaranteed LF line ending + var header = $"ply\nformat binary_little_endian 1.0\nelement vertex {aliveCount}\nproperty float x\nproperty float y\nproperty float z\nproperty float nx\nproperty float ny\nproperty float nz\nproperty float f_dc_0\nproperty float f_dc_1\nproperty float f_dc_2\nproperty float f_rest_0\nproperty float f_rest_1\nproperty float f_rest_2\nproperty float f_rest_3\nproperty float f_rest_4\nproperty float f_rest_5\nproperty float f_rest_6\nproperty float f_rest_7\nproperty float f_rest_8\nproperty float f_rest_9\nproperty float f_rest_10\nproperty float f_rest_11\nproperty float f_rest_12\nproperty float f_rest_13\nproperty float f_rest_14\nproperty float f_rest_15\nproperty float f_rest_16\nproperty float f_rest_17\nproperty float f_rest_18\nproperty float f_rest_19\nproperty float f_rest_20\nproperty float f_rest_21\nproperty float f_rest_22\nproperty float f_rest_23\nproperty float f_rest_24\nproperty float f_rest_25\nproperty float f_rest_26\nproperty float f_rest_27\nproperty float f_rest_28\nproperty float f_rest_29\nproperty float f_rest_30\nproperty float f_rest_31\nproperty float f_rest_32\nproperty float f_rest_33\nproperty float f_rest_34\nproperty float f_rest_35\nproperty float f_rest_36\nproperty float f_rest_37\nproperty float f_rest_38\nproperty float f_rest_39\nproperty float f_rest_40\nproperty float f_rest_41\nproperty float f_rest_42\nproperty float f_rest_43\nproperty float f_rest_44\nproperty float opacity\nproperty float scale_0\nproperty float scale_1\nproperty float scale_2\nproperty float rot_0\nproperty float rot_1\nproperty float rot_2\nproperty float rot_3\nend_header\n"; + fs.Write(Encoding.UTF8.GetBytes(header)); + for (int i = 0; i < data.Length; ++i) + { + int wordIdx = i >> 5; + int bitIdx = i & 31; + bool isDeleted = (deleted[wordIdx] & (1u << bitIdx)) != 0; + bool isCutout = data[i].nor.sqrMagnitude > 0; + if (!isDeleted && !isCutout) + { + var splat = data[i]; + byte* ptr = (byte*)&splat; + fs.Write(new ReadOnlySpan(ptr, kSplatSize)); + } + } + + Debug.Log($"Exported PLY {path} with {aliveCount:N0} splats"); + } + } +} \ No newline at end of file diff --git a/MVS/3DGS-Unity/Editor/GaussianSplatRendererEditor.cs.meta b/MVS/3DGS-Unity/Editor/GaussianSplatRendererEditor.cs.meta new file mode 100644 index 00000000..2813e1fd --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianSplatRendererEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b0ce434aee9ae4ee6b1f5cd10ae7c8cb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Editor/GaussianSplatValidator.cs b/MVS/3DGS-Unity/Editor/GaussianSplatValidator.cs new file mode 100644 index 00000000..a1a1c4ea --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianSplatValidator.cs @@ -0,0 +1,210 @@ +// SPDX-License-Identifier: MIT + +using System.IO; +using GaussianSplatting.Runtime; +using Unity.Burst; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Jobs; +using Unity.Mathematics; +using UnityEditor; +using UnityEngine; +using UnityEngine.Experimental.Rendering; + +namespace GaussianSplatting.Editor +{ + [BurstCompile] + public static class GaussianSplatValidator + { + struct RefItem + { + public string assetPath; + public int cameraIndex; + public float fov; + } + + // currently on RTX 3080Ti: 43.76, 39.36, 43.50 PSNR + [MenuItem("Tools/Gaussian Splats/Debug/Validate Render against SBIR")] + public static void ValidateSBIR() + { + ValidateImpl("SBIR"); + } + // currently on RTX 3080Ti: matches + [MenuItem("Tools/Gaussian Splats/Debug/Validate Render against D3D12")] + public static void ValidateD3D12() + { + ValidateImpl("D3D12"); + } + + static unsafe void ValidateImpl(string refPrefix) + { + var gaussians = Object.FindObjectOfType(typeof(GaussianSplatRenderer)) as GaussianSplatRenderer; + { + if (gaussians == null) + { + Debug.LogError("No GaussianSplatRenderer object found"); + return; + } + } + var items = new RefItem[] + { + new() {assetPath = "bicycle", cameraIndex = 0, fov = 39.09651f}, + new() {assetPath = "truck", cameraIndex = 30, fov = 50}, + new() {assetPath = "garden", cameraIndex = 30, fov = 47}, + }; + + var cam = Camera.main; + var oldAsset = gaussians.asset; + var oldCamPos = cam.transform.localPosition; + var oldCamRot = cam.transform.localRotation; + var oldCamFov = cam.fieldOfView; + + for (var index = 0; index < items.Length; index++) + { + var item = items[index]; + EditorUtility.DisplayProgressBar("Validating Gaussian splat rendering", item.assetPath, (float)index / items.Length); + var path = $"Assets/GaussianAssets/{item.assetPath}-point_cloud-iteration_30000-point_cloud.asset"; + var gs = AssetDatabase.LoadAssetAtPath(path); + if (gs == null) + { + Debug.LogError($"Did not find asset for validation item {item.assetPath} at {path}"); + continue; + } + var refImageFile = $"../../docs/RefImages/{refPrefix}_{item.assetPath}{item.cameraIndex}.png"; // use our snapshot by default + if (!File.Exists(refImageFile)) + { + Debug.LogError($"Did not find reference image for validation item {item.assetPath} at {refImageFile}"); + continue; + } + + var compareTexture = new Texture2D(4, 4, GraphicsFormat.R8G8B8A8_SRGB, TextureCreationFlags.None); + byte[] refImageBytes = File.ReadAllBytes(refImageFile); + ImageConversion.LoadImage(compareTexture, refImageBytes, false); + + int width = compareTexture.width; + int height = compareTexture.height; + + var renderTarget = RenderTexture.GetTemporary(width, height, 24, GraphicsFormat.R8G8B8A8_SRGB); + cam.targetTexture = renderTarget; + cam.fieldOfView = item.fov; + + var captureTexture = new Texture2D(width, height, GraphicsFormat.R8G8B8A8_SRGB, TextureCreationFlags.None); + NativeArray diffPixels = new(width * height, Allocator.Persistent); + + gaussians.m_Asset = gs; + gaussians.Update(); + gaussians.ActivateCamera(item.cameraIndex); + cam.Render(); + Graphics.SetRenderTarget(renderTarget); + captureTexture.ReadPixels(new Rect(0, 0, width, height), 0, 0); + + NativeArray refPixels = compareTexture.GetPixelData(0); + NativeArray gotPixels = captureTexture.GetPixelData(0); + float psnr = 0, rmse = 0; + int errorsCount = 0; + DiffImagesJob difJob = new DiffImagesJob(); + difJob.difPixels = diffPixels; + difJob.refPixels = refPixels; + difJob.gotPixels = gotPixels; + difJob.psnrPtr = &psnr; + difJob.rmsePtr = &rmse; + difJob.difPixCount = &errorsCount; + difJob.Schedule().Complete(); + + string pathDif = $"../../Shot-{refPrefix}-{item.assetPath}{item.cameraIndex}-diff.png"; + string pathRef = $"../../Shot-{refPrefix}-{item.assetPath}{item.cameraIndex}-ref.png"; + string pathGot = $"../../Shot-{refPrefix}-{item.assetPath}{item.cameraIndex}-got.png"; + + if (errorsCount > 50 || psnr < 90.0f) + { + Debug.LogWarning( + $"{refPrefix} {item.assetPath} cam {item.cameraIndex}: RMSE {rmse:F2} PSNR {psnr:F2} diff pixels {errorsCount:N0}"); + + NativeArray pngBytes = ImageConversion.EncodeNativeArrayToPNG(diffPixels, + GraphicsFormat.R8G8B8A8_SRGB, (uint) width, (uint) height); + File.WriteAllBytes(pathDif, pngBytes.ToArray()); + pngBytes.Dispose(); + pngBytes = ImageConversion.EncodeNativeArrayToPNG(refPixels, GraphicsFormat.R8G8B8A8_SRGB, + (uint) width, (uint) height); + File.WriteAllBytes(pathRef, pngBytes.ToArray()); + pngBytes.Dispose(); + pngBytes = ImageConversion.EncodeNativeArrayToPNG(gotPixels, GraphicsFormat.R8G8B8A8_SRGB, + (uint) width, (uint) height); + File.WriteAllBytes(pathGot, pngBytes.ToArray()); + pngBytes.Dispose(); + } + else + { + File.Delete(pathDif); + File.Delete(pathRef); + File.Delete(pathGot); + } + + diffPixels.Dispose(); + RenderTexture.ReleaseTemporary(renderTarget); + Object.DestroyImmediate(captureTexture); + Object.DestroyImmediate(compareTexture); + } + + cam.targetTexture = null; + gaussians.m_Asset = oldAsset; + gaussians.Update(); + cam.transform.localPosition = oldCamPos; + cam.transform.localRotation = oldCamRot; + cam.fieldOfView = oldCamFov; + + EditorUtility.ClearProgressBar(); + } + + [BurstCompile] + struct DiffImagesJob : IJob + { + public NativeArray refPixels; + public NativeArray gotPixels; + public NativeArray difPixels; + [NativeDisableUnsafePtrRestriction] public unsafe float* rmsePtr; + [NativeDisableUnsafePtrRestriction] public unsafe float* psnrPtr; + [NativeDisableUnsafePtrRestriction] public unsafe int* difPixCount; + + public unsafe void Execute() + { + const int kDiffScale = 5; + const int kDiffThreshold = 3 * kDiffScale; + *difPixCount = 0; + double sumSqDif = 0; + for (int i = 0; i < refPixels.Length; ++i) + { + Color32 cref = refPixels[i]; + // note: LoadImage always loads PNGs into ARGB order, so swizzle to normal RGBA + cref = new Color32(cref.g, cref.b, cref.a, 255); + refPixels[i] = cref; + + Color32 cgot = gotPixels[i]; + cgot.a = 255; + gotPixels[i] = cgot; + + Color32 cdif = new Color32(0, 0, 0, 255); + cdif.r = (byte)math.abs(cref.r - cgot.r); + cdif.g = (byte)math.abs(cref.g - cgot.g); + cdif.b = (byte)math.abs(cref.b - cgot.b); + sumSqDif += cdif.r * cdif.r + cdif.g * cdif.g + cdif.b * cdif.b; + + cdif.r = (byte)math.min(255, cdif.r * kDiffScale); + cdif.g = (byte)math.min(255, cdif.g * kDiffScale); + cdif.b = (byte)math.min(255, cdif.b * kDiffScale); + difPixels[i] = cdif; + if (cdif.r >= kDiffThreshold || cdif.g >= kDiffThreshold || cdif.b >= kDiffThreshold) + { + (*difPixCount)++; + } + } + + double meanSqDif = sumSqDif / (refPixels.Length * 3); + double rmse = math.sqrt(meanSqDif); + double psnr = 20.0 * math.log10(255.0) - 10.0 * math.log10(rmse * rmse); + *rmsePtr = (float) rmse; + *psnrPtr = (float) psnr; + } + } + } +} diff --git a/MVS/3DGS-Unity/Editor/GaussianSplatValidator.cs.meta b/MVS/3DGS-Unity/Editor/GaussianSplatValidator.cs.meta new file mode 100644 index 00000000..aee48a8a --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianSplatValidator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2f8e75b80eb181a4698f733ba59b694b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Editor/GaussianSplattingEditor.asmdef b/MVS/3DGS-Unity/Editor/GaussianSplattingEditor.asmdef new file mode 100644 index 00000000..f61f8578 --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianSplattingEditor.asmdef @@ -0,0 +1,21 @@ +{ + "name": "GaussianSplattingEditor", + "rootNamespace": "GaussianSplatting.Editor", + "references": [ + "GUID:4b653174f8fcdcd49b4c9a6f1ca8c7c3", + "GUID:2665a8d13d1b3f18800f46e256720795", + "GUID:d8b63aba1907145bea998dd612889d6b", + "GUID:e0cd26848372d4e5c891c569017e11f1" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": true, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/MVS/3DGS-Unity/Editor/GaussianSplattingEditor.asmdef.meta b/MVS/3DGS-Unity/Editor/GaussianSplattingEditor.asmdef.meta new file mode 100644 index 00000000..6cffb5d9 --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianSplattingEditor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 14414175af4b366469db63f2efee475f +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Editor/GaussianTool.cs b/MVS/3DGS-Unity/Editor/GaussianTool.cs new file mode 100644 index 00000000..c841ab6f --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianTool.cs @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: MIT + +using GaussianSplatting.Runtime; +using UnityEditor.EditorTools; +using UnityEngine; + +namespace GaussianSplatting.Editor +{ + abstract class GaussianTool : EditorTool + { + protected GaussianSplatRenderer GetRenderer() + { + var gs = target as GaussianSplatRenderer; + if (!gs || !gs.HasValidAsset || !gs.HasValidRenderSetup) + return null; + return gs; + } + + protected bool CanBeEdited() + { + var gs = GetRenderer(); + if (!gs) + return false; + return gs.asset.chunkData == null; // need to be lossless / non-chunked for editing + } + + protected bool HasSelection() + { + var gs = GetRenderer(); + if (!gs) + return false; + return gs.editSelectedSplats > 0; + } + + protected Vector3 GetSelectionCenterLocal() + { + var gs = GetRenderer(); + if (!gs || gs.editSelectedSplats == 0) + return Vector3.zero; + return gs.editSelectedBounds.center; + } + } +} diff --git a/MVS/3DGS-Unity/Editor/GaussianTool.cs.meta b/MVS/3DGS-Unity/Editor/GaussianTool.cs.meta new file mode 100644 index 00000000..0993d11f --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianTool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6203c808ab9e64a4a8ff0277c5aa7669 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Editor/GaussianToolContext.cs b/MVS/3DGS-Unity/Editor/GaussianToolContext.cs new file mode 100644 index 00000000..fe0bbde1 --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianToolContext.cs @@ -0,0 +1,192 @@ +// SPDX-License-Identifier: MIT + +using System; +using GaussianSplatting.Runtime; +using UnityEditor; +using UnityEditor.EditorTools; +using UnityEngine; + +namespace GaussianSplatting.Editor +{ + [EditorToolContext("GaussianSplats", typeof(GaussianSplatRenderer)), Icon(k_IconPath)] + class GaussianToolContext : EditorToolContext + { + const string k_IconPath = "Packages/org.nesnausk.gaussian-splatting/Editor/Icons/GaussianContext.png"; + + Vector2 m_MouseStartDragPos; + + protected override Type GetEditorToolType(Tool tool) + { + if (tool == Tool.Move) + return typeof(GaussianMoveTool); + //if (tool == Tool.Rotate) + // return typeof(GaussianRotateTool); // not correctly working yet + //if (tool == Tool.Scale) + // return typeof(GaussianScaleTool); // not working correctly yet when the GS itself has scale + return null; + } + + public override void OnWillBeDeactivated() + { + var gs = target as GaussianSplatRenderer; + if (!gs) + return; + gs.EditDeselectAll(); + } + + static void HandleKeyboardCommands(Event evt, GaussianSplatRenderer gs) + { + if (evt.type != EventType.ValidateCommand && evt.type != EventType.ExecuteCommand) + return; + bool execute = evt.type == EventType.ExecuteCommand; + switch (evt.commandName) + { + // ugh, EventCommandNames string constants is internal :( + case "SoftDelete": + case "Delete": + if (execute) + { + gs.EditDeleteSelected(); + GaussianSplatRendererEditor.RepaintAll(); + } + evt.Use(); + break; + case "SelectAll": + if (execute) + { + gs.EditSelectAll(); + GaussianSplatRendererEditor.RepaintAll(); + } + evt.Use(); + break; + case "DeselectAll": + if (execute) + { + gs.EditDeselectAll(); + GaussianSplatRendererEditor.RepaintAll(); + } + evt.Use(); + break; + case "InvertSelection": + if (execute) + { + gs.EditInvertSelection(); + GaussianSplatRendererEditor.RepaintAll(); + } + evt.Use(); + break; + } + } + + static bool IsViewToolActive() + { + return Tools.viewToolActive || Tools.current == Tool.View || (Event.current != null && Event.current.alt); + } + + public override void OnToolGUI(EditorWindow window) + { + if (!(window is SceneView sceneView)) + return; + var gs = target as GaussianSplatRenderer; + if (!gs) + return; + + GaussianSplatRendererEditor.BumpGUICounter(); + + int id = GUIUtility.GetControlID(FocusType.Passive); + Event evt = Event.current; + HandleKeyboardCommands(evt, gs); + var evtType = evt.GetTypeForControl(id); + switch (evtType) + { + case EventType.Layout: + // make this be the default tool, so that we get focus when user clicks on nothing else + HandleUtility.AddDefaultControl(id); + break; + case EventType.MouseDown: + if (IsViewToolActive()) + break; + if (HandleUtility.nearestControl == id && evt.button == 0) + { + // shift/command adds to selection, ctrl removes from selection: if none of these + // are present, start a new selection + if (!evt.shift && !EditorGUI.actionKey && !evt.control) + gs.EditDeselectAll(); + + // record selection state at start + gs.EditStoreSelectionMouseDown(); + GaussianSplatRendererEditor.RepaintAll(); + + GUIUtility.hotControl = id; + m_MouseStartDragPos = evt.mousePosition; + evt.Use(); + } + break; + case EventType.MouseDrag: + if (GUIUtility.hotControl == id && evt.button == 0) + { + Rect rect = FromToRect(m_MouseStartDragPos, evt.mousePosition); + Vector2 rectMin = HandleUtility.GUIPointToScreenPixelCoordinate(rect.min); + Vector2 rectMax = HandleUtility.GUIPointToScreenPixelCoordinate(rect.max); + gs.EditUpdateSelection(rectMin, rectMax, sceneView.camera, evt.control); + GaussianSplatRendererEditor.RepaintAll(); + evt.Use(); + } + break; + case EventType.MouseUp: + if (GUIUtility.hotControl == id && evt.button == 0) + { + m_MouseStartDragPos = Vector2.zero; + GUIUtility.hotControl = 0; + evt.Use(); + } + break; + case EventType.Repaint: + // draw cutout gizmos + Handles.color = new Color(1,0,1,0.7f); + var prevMatrix = Handles.matrix; + foreach (var cutout in gs.m_Cutouts) + { + if (!cutout) + continue; + Handles.matrix = cutout.transform.localToWorldMatrix; + if (cutout.m_Type == GaussianCutout.Type.Ellipsoid) + { + Handles.DrawWireDisc(Vector3.zero, Vector3.up, 1.0f); + Handles.DrawWireDisc(Vector3.zero, Vector3.right, 1.0f); + Handles.DrawWireDisc(Vector3.zero, Vector3.forward, 1.0f); + } + if (cutout.m_Type == GaussianCutout.Type.Box) + Handles.DrawWireCube(Vector3.zero, Vector3.one * 2); + } + + Handles.matrix = prevMatrix; + // draw selection bounding box + if (gs.editSelectedSplats > 0) + { + var selBounds = GaussianSplatRendererEditor.TransformBounds(gs.transform, gs.editSelectedBounds); + Handles.DrawWireCube(selBounds.center, selBounds.size); + } + // draw drag rectangle + if (GUIUtility.hotControl == id && evt.mousePosition != m_MouseStartDragPos) + { + GUIStyle style = "SelectionRect"; + Handles.BeginGUI(); + style.Draw(FromToRect(m_MouseStartDragPos, evt.mousePosition), false, false, false, false); + Handles.EndGUI(); + } + break; + } + } + + // build a rect that always has a positive size + static Rect FromToRect(Vector2 from, Vector2 to) + { + if (from.x > to.x) + (from.x, to.x) = (to.x, from.x); + if (from.y > to.y) + (from.y, to.y) = (to.y, from.y); + return new Rect(from.x, from.y, to.x - from.x, to.y - from.y); + } + } +} \ No newline at end of file diff --git a/MVS/3DGS-Unity/Editor/GaussianToolContext.cs.meta b/MVS/3DGS-Unity/Editor/GaussianToolContext.cs.meta new file mode 100644 index 00000000..7823b09b --- /dev/null +++ b/MVS/3DGS-Unity/Editor/GaussianToolContext.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 80d7ecbaa1b24e6399ee95f6fc0b9c90 +timeCreated: 1697718362 \ No newline at end of file diff --git a/MVS/3DGS-Unity/Editor/Icons.meta b/MVS/3DGS-Unity/Editor/Icons.meta new file mode 100644 index 00000000..0c7b1d59 --- /dev/null +++ b/MVS/3DGS-Unity/Editor/Icons.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 770e497b696b99641aa1bf295d0b3552 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Editor/Icons/GaussianContext.png b/MVS/3DGS-Unity/Editor/Icons/GaussianContext.png new file mode 100644 index 00000000..817b6f2c Binary files /dev/null and b/MVS/3DGS-Unity/Editor/Icons/GaussianContext.png differ diff --git a/MVS/3DGS-Unity/Editor/Icons/GaussianContext.png.meta b/MVS/3DGS-Unity/Editor/Icons/GaussianContext.png.meta new file mode 100644 index 00000000..7b6a521c --- /dev/null +++ b/MVS/3DGS-Unity/Editor/Icons/GaussianContext.png.meta @@ -0,0 +1,153 @@ +fileFormatVersion: 2 +guid: c61202bc8cc557546afa505174da220e +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: LinuxHeadlessSimulation + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Editor/Icons/GaussianContext@2x.png b/MVS/3DGS-Unity/Editor/Icons/GaussianContext@2x.png new file mode 100644 index 00000000..db945ea1 Binary files /dev/null and b/MVS/3DGS-Unity/Editor/Icons/GaussianContext@2x.png differ diff --git a/MVS/3DGS-Unity/Editor/Icons/GaussianContext@2x.png.meta b/MVS/3DGS-Unity/Editor/Icons/GaussianContext@2x.png.meta new file mode 100644 index 00000000..3bce49de --- /dev/null +++ b/MVS/3DGS-Unity/Editor/Icons/GaussianContext@2x.png.meta @@ -0,0 +1,153 @@ +fileFormatVersion: 2 +guid: 15d0de03329e14440b034e884fe10379 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: LinuxHeadlessSimulation + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Editor/Icons/d_GaussianContext.png b/MVS/3DGS-Unity/Editor/Icons/d_GaussianContext.png new file mode 100644 index 00000000..bf13024c Binary files /dev/null and b/MVS/3DGS-Unity/Editor/Icons/d_GaussianContext.png differ diff --git a/MVS/3DGS-Unity/Editor/Icons/d_GaussianContext.png.meta b/MVS/3DGS-Unity/Editor/Icons/d_GaussianContext.png.meta new file mode 100644 index 00000000..f8152a4b --- /dev/null +++ b/MVS/3DGS-Unity/Editor/Icons/d_GaussianContext.png.meta @@ -0,0 +1,231 @@ +fileFormatVersion: 2 +guid: 81df9c0903abfa345a9022d090982f5d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: tvOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Lumin + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: CloudRendering + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: LinuxHeadlessSimulation + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Editor/Icons/d_GaussianContext@2x.png b/MVS/3DGS-Unity/Editor/Icons/d_GaussianContext@2x.png new file mode 100644 index 00000000..df10fe81 Binary files /dev/null and b/MVS/3DGS-Unity/Editor/Icons/d_GaussianContext@2x.png differ diff --git a/MVS/3DGS-Unity/Editor/Icons/d_GaussianContext@2x.png.meta b/MVS/3DGS-Unity/Editor/Icons/d_GaussianContext@2x.png.meta new file mode 100644 index 00000000..804244bd --- /dev/null +++ b/MVS/3DGS-Unity/Editor/Icons/d_GaussianContext@2x.png.meta @@ -0,0 +1,153 @@ +fileFormatVersion: 2 +guid: e37880566baf3964e9b75e45adb36f3f +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Nintendo Switch + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: LinuxHeadlessSimulation + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 64 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Editor/Utils.meta b/MVS/3DGS-Unity/Editor/Utils.meta new file mode 100644 index 00000000..e5ef9841 --- /dev/null +++ b/MVS/3DGS-Unity/Editor/Utils.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f812890ad0ea4c747bdc67b6d2c1c627 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Editor/Utils/CaptureScreenshot.cs b/MVS/3DGS-Unity/Editor/Utils/CaptureScreenshot.cs new file mode 100644 index 00000000..01e7747a --- /dev/null +++ b/MVS/3DGS-Unity/Editor/Utils/CaptureScreenshot.cs @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: MIT + +using UnityEditor; +using UnityEngine; + +namespace GaussianSplatting.Editor.Utils +{ + public class CaptureScreenshot : MonoBehaviour + { + [MenuItem("Tools/Gaussian Splats/Debug/Capture Screenshot %g")] + public static void CaptureShot() + { + int counter = 0; + string path; + while(true) + { + path = $"Shot-{counter:0000}.png"; + if (!System.IO.File.Exists(path)) + break; + ++counter; + } + ScreenCapture.CaptureScreenshot(path); + Debug.Log($"Captured {path}"); + } + } +} diff --git a/MVS/3DGS-Unity/Editor/Utils/CaptureScreenshot.cs.meta b/MVS/3DGS-Unity/Editor/Utils/CaptureScreenshot.cs.meta new file mode 100644 index 00000000..7645c8bd --- /dev/null +++ b/MVS/3DGS-Unity/Editor/Utils/CaptureScreenshot.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6c80a2b8daebbc1449b79e5ec436f39d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Editor/Utils/FilePickerControl.cs b/MVS/3DGS-Unity/Editor/Utils/FilePickerControl.cs new file mode 100644 index 00000000..b07e97e0 --- /dev/null +++ b/MVS/3DGS-Unity/Editor/Utils/FilePickerControl.cs @@ -0,0 +1,274 @@ +// SPDX-License-Identifier: MIT + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using UnityEditor; +using UnityEditor.Experimental; +using UnityEngine; + +namespace GaussianSplatting.Editor.Utils +{ + public class FilePickerControl + { + const string kLastPathPref = "nesnausk.utils.FilePickerLastPath"; + static Texture2D s_FolderIcon => EditorGUIUtility.FindTexture(EditorResources.emptyFolderIconName); + static Texture2D s_FileIcon => EditorGUIUtility.FindTexture(EditorResources.folderIconName); + static GUIStyle s_StyleTextFieldText; + static GUIStyle s_StyleTextFieldDropdown; + static readonly int kPathFieldControlID = "FilePickerPathField".GetHashCode(); + const int kIconSize = 15; + const int kRecentPathsCount = 20; + + public static string PathToDisplayString(string path) + { + if (string.IsNullOrWhiteSpace(path)) + return ""; + path = path.Replace('\\', '/'); + string[] parts = path.Split('/'); + + // check if filename is not some super generic one + var baseName = Path.GetFileNameWithoutExtension(parts[^1]).ToLowerInvariant(); + if (baseName != "point_cloud" && baseName != "splat" && baseName != "input") + return parts[^1]; + + // otherwise if filename is just some generic "point cloud" type, then take some folder names above it into account + if (parts.Length >= 4) + path = string.Join('/', parts.TakeLast(4)); + + path = path.Replace('/', '-'); + return path; + } + + class PreviousPaths + { + public PreviousPaths(List paths) + { + this.paths = paths; + UpdateContent(); + } + public void UpdateContent() + { + this.content = paths.Select(p => new GUIContent(PathToDisplayString(p))).ToArray(); + } + public List paths; + public GUIContent[] content; + } + Dictionary m_PreviousPaths = new(); + + void PopulatePreviousPaths(string nameKey) + { + if (m_PreviousPaths.ContainsKey(nameKey)) + return; + + List prevPaths = new(); + for (int i = 0; i < kRecentPathsCount; ++i) + { + string path = EditorPrefs.GetString($"{kLastPathPref}-{nameKey}-{i}"); + if (!string.IsNullOrWhiteSpace(path)) + prevPaths.Add(path); + } + m_PreviousPaths.Add(nameKey, new PreviousPaths(prevPaths)); + } + + void UpdatePreviousPaths(string nameKey, string path) + { + if (!m_PreviousPaths.ContainsKey(nameKey)) + { + m_PreviousPaths.Add(nameKey, new PreviousPaths(new List())); + } + var prevPaths = m_PreviousPaths[nameKey]; + prevPaths.paths.Remove(path); + prevPaths.paths.Insert(0, path); + while (prevPaths.paths.Count > kRecentPathsCount) + prevPaths.paths.RemoveAt(prevPaths.paths.Count - 1); + prevPaths.UpdateContent(); + + for (int i = 0; i < prevPaths.paths.Count; ++i) + { + EditorPrefs.SetString($"{kLastPathPref}-{nameKey}-{i}", prevPaths.paths[i]); + } + } + + static bool CheckPath(string path, bool isFolder) + { + if (string.IsNullOrWhiteSpace(path)) + return false; + if (isFolder) + { + if (!Directory.Exists(path)) + return false; + } + else + { + if (!File.Exists(path)) + return false; + } + return true; + } + + static string PathAbsToStorage(string path) + { + path = path.Replace('\\', '/'); + var dataPath = Application.dataPath; + if (path.StartsWith(dataPath, StringComparison.Ordinal)) + { + path = Path.GetRelativePath($"{dataPath}/..", path); + path = path.Replace('\\', '/'); + } + return path; + } + + bool CheckAndSetNewPath(ref string path, string nameKey, bool isFolder) + { + path = PathAbsToStorage(path); + if (CheckPath(path, isFolder)) + { + EditorPrefs.SetString($"{kLastPathPref}-{nameKey}", path); + UpdatePreviousPaths(nameKey, path); + GUI.changed = true; + Event.current.Use(); + return true; + } + return false; + } + + string PreviousPathsDropdown(Rect position, string value, string nameKey, bool isFolder) + { + PopulatePreviousPaths(nameKey); + + if (string.IsNullOrWhiteSpace(value)) + value = EditorPrefs.GetString($"{kLastPathPref}-{nameKey}"); + + m_PreviousPaths.TryGetValue(nameKey, out var prevPaths); + + EditorGUI.BeginDisabledGroup(prevPaths == null || prevPaths.paths.Count == 0); + EditorGUI.BeginChangeCheck(); + int oldIndent = EditorGUI.indentLevel; + EditorGUI.indentLevel = 0; + int parameterIndex = EditorGUI.Popup(position, GUIContent.none, -1, prevPaths.content, s_StyleTextFieldDropdown); + if (EditorGUI.EndChangeCheck() && parameterIndex < prevPaths.paths.Count) + { + string newValue = prevPaths.paths[parameterIndex]; + if (CheckAndSetNewPath(ref newValue, nameKey, isFolder)) + value = newValue; + } + EditorGUI.indentLevel = oldIndent; + EditorGUI.EndDisabledGroup(); + return value; + } + + // null extension picks folders + public string PathFieldGUI(Rect position, GUIContent label, string value, string extension, string nameKey) + { + s_StyleTextFieldText ??= new GUIStyle("TextFieldDropDownText"); + s_StyleTextFieldDropdown ??= new GUIStyle("TextFieldDropdown"); + bool isFolder = extension == null; + + int controlId = GUIUtility.GetControlID(kPathFieldControlID, FocusType.Keyboard, position); + Rect fullRect = EditorGUI.PrefixLabel(position, controlId, label); + Rect textRect = new Rect(fullRect.x, fullRect.y, fullRect.width - s_StyleTextFieldDropdown.fixedWidth, fullRect.height); + Rect dropdownRect = new Rect(textRect.xMax, fullRect.y, s_StyleTextFieldDropdown.fixedWidth, fullRect.height); + Rect iconRect = new Rect(textRect.xMax - kIconSize, textRect.y, kIconSize, textRect.height); + + value = PreviousPathsDropdown(dropdownRect, value, nameKey, isFolder); + + string displayText = PathToDisplayString(value); + + Event evt = Event.current; + switch (evt.type) + { + case EventType.KeyDown: + if (GUIUtility.keyboardControl == controlId) + { + if (evt.keyCode is KeyCode.Backspace or KeyCode.Delete) + { + value = null; + EditorPrefs.SetString($"{kLastPathPref}-{nameKey}", ""); + GUI.changed = true; + evt.Use(); + } + } + break; + case EventType.Repaint: + s_StyleTextFieldText.Draw(textRect, new GUIContent(displayText), controlId, DragAndDrop.activeControlID == controlId); + GUI.DrawTexture(iconRect, isFolder ? s_FolderIcon : s_FileIcon, ScaleMode.ScaleToFit); + break; + case EventType.MouseDown: + if (evt.button != 0 || !GUI.enabled) + break; + + if (textRect.Contains(evt.mousePosition)) + { + if (iconRect.Contains(evt.mousePosition)) + { + if (string.IsNullOrWhiteSpace(value)) + value = EditorPrefs.GetString($"{kLastPathPref}-{nameKey}"); + string newPath; + string openToPath = string.Empty; + if (isFolder) + { + if (Directory.Exists(value)) + openToPath = value; + newPath = EditorUtility.OpenFolderPanel("Select folder", openToPath, ""); + } + else + { + if (File.Exists(value)) + openToPath = Path.GetDirectoryName(value); + newPath = EditorUtility.OpenFilePanel("Select file", openToPath, extension); + } + if (CheckAndSetNewPath(ref newPath, nameKey, isFolder)) + { + value = newPath; + GUI.changed = true; + evt.Use(); + } + } + else if (File.Exists(value) || Directory.Exists(value)) + { + EditorUtility.RevealInFinder(value); + } + GUIUtility.keyboardControl = controlId; + } + break; + case EventType.DragUpdated: + case EventType.DragPerform: + if (textRect.Contains(evt.mousePosition) && GUI.enabled) + { + if (DragAndDrop.paths.Length > 0) + { + DragAndDrop.visualMode = DragAndDropVisualMode.Generic; + string path = DragAndDrop.paths[0]; + path = PathAbsToStorage(path); + if (CheckPath(path, isFolder)) + { + if (evt.type == EventType.DragPerform) + { + UpdatePreviousPaths(nameKey, path); + value = path; + GUI.changed = true; + DragAndDrop.AcceptDrag(); + DragAndDrop.activeControlID = 0; + } + else + DragAndDrop.activeControlID = controlId; + } + else + DragAndDrop.visualMode = DragAndDropVisualMode.Rejected; + evt.Use(); + } + } + break; + case EventType.DragExited: + if (GUI.enabled) + { + HandleUtility.Repaint(); + } + break; + } + return value; + } + } +} diff --git a/MVS/3DGS-Unity/Editor/Utils/FilePickerControl.cs.meta b/MVS/3DGS-Unity/Editor/Utils/FilePickerControl.cs.meta new file mode 100644 index 00000000..0e005960 --- /dev/null +++ b/MVS/3DGS-Unity/Editor/Utils/FilePickerControl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 69e6c946494a9b2479ce96542339029c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Editor/Utils/KMeansClustering.cs b/MVS/3DGS-Unity/Editor/Utils/KMeansClustering.cs new file mode 100644 index 00000000..1b528879 --- /dev/null +++ b/MVS/3DGS-Unity/Editor/Utils/KMeansClustering.cs @@ -0,0 +1,595 @@ +// SPDX-License-Identifier: MIT + +using System; +using Unity.Burst; +using Unity.Burst.Intrinsics; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Jobs; +using Unity.Mathematics; +using Unity.Profiling; +using Unity.Profiling.LowLevel; + +namespace GaussianSplatting.Editor.Utils +{ + // Implementation of "Mini Batch" k-means clustering ("Web-Scale K-Means Clustering", Sculley 2010) + // using k-means++ for cluster initialization. + [BurstCompile] + public struct KMeansClustering + { + static ProfilerMarker s_ProfCalculate = new(ProfilerCategory.Render, "KMeans.Calculate", MarkerFlags.SampleGPU); + static ProfilerMarker s_ProfPlusPlus = new(ProfilerCategory.Render, "KMeans.InitialPlusPlus", MarkerFlags.SampleGPU); + static ProfilerMarker s_ProfInitialDistanceSum = new(ProfilerCategory.Render, "KMeans.Initialize.DistanceSum", MarkerFlags.SampleGPU); + static ProfilerMarker s_ProfInitialPickPoint = new(ProfilerCategory.Render, "KMeans.Initialize.PickPoint", MarkerFlags.SampleGPU); + static ProfilerMarker s_ProfInitialDistanceUpdate = new(ProfilerCategory.Render, "KMeans.Initialize.DistanceUpdate", MarkerFlags.SampleGPU); + static ProfilerMarker s_ProfAssignClusters = new(ProfilerCategory.Render, "KMeans.AssignClusters", MarkerFlags.SampleGPU); + static ProfilerMarker s_ProfUpdateMeans = new(ProfilerCategory.Render, "KMeans.UpdateMeans", MarkerFlags.SampleGPU); + + public static bool Calculate(int dim, NativeArray inputData, int batchSize, float passesOverData, Func progress, NativeArray outClusterMeans, NativeArray outDataLabels) + { + // Parameter checks + if (dim < 1) + throw new InvalidOperationException($"KMeans: dimensionality has to be >= 1, was {dim}"); + if (batchSize < 1) + throw new InvalidOperationException($"KMeans: batch size has to be >= 1, was {batchSize}"); + if (passesOverData < 0.0001f) + throw new InvalidOperationException($"KMeans: passes over data must be positive, was {passesOverData}"); + if (inputData.Length % dim != 0) + throw new InvalidOperationException($"KMeans: input length must be multiple of dim={dim}, was {inputData.Length}"); + if (outClusterMeans.Length % dim != 0) + throw new InvalidOperationException($"KMeans: output means length must be multiple of dim={dim}, was {outClusterMeans.Length}"); + int dataSize = inputData.Length / dim; + int k = outClusterMeans.Length / dim; + if (k < 1) + throw new InvalidOperationException($"KMeans: cluster count length must be at least 1, was {k}"); + if (dataSize < k) + throw new InvalidOperationException($"KMeans: input length ({inputData.Length}) must at least as long as clusters ({outClusterMeans.Length})"); + if (dataSize != outDataLabels.Length) + throw new InvalidOperationException($"KMeans: output labels length must be {dataSize}, was {outDataLabels.Length}"); + + using var prof = s_ProfCalculate.Auto(); + batchSize = math.min(dataSize, batchSize); + uint rngState = 1; + + // Do initial cluster placement + int initBatchSize = 10 * k; + const int kInitAttempts = 3; + if (!InitializeCentroids(dim, inputData, initBatchSize, ref rngState, kInitAttempts, outClusterMeans, progress)) + return false; + + NativeArray counts = new(k, Allocator.TempJob); + + NativeArray batchPoints = new(batchSize * dim, Allocator.TempJob); + NativeArray batchClusters = new(batchSize, Allocator.TempJob); + + bool cancelled = false; + for (float calcDone = 0.0f, calcLimit = dataSize * passesOverData; calcDone < calcLimit; calcDone += batchSize) + { + if (progress != null && !progress(0.3f + calcDone / calcLimit * 0.4f)) + { + cancelled = true; + break; + } + + // generate a batch of random input points + MakeRandomBatch(dim, inputData, ref rngState, batchPoints); + + // find which of the current centroids each batch point is closest to + { + using var profPart = s_ProfAssignClusters.Auto(); + AssignClustersJob job = new AssignClustersJob + { + dim = dim, + data = batchPoints, + means = outClusterMeans, + indexOffset = 0, + clusters = batchClusters, + }; + job.Schedule(batchSize, 1).Complete(); + } + + // update the centroids + { + using var profPart = s_ProfUpdateMeans.Auto(); + UpdateCentroidsJob job = new UpdateCentroidsJob + { + m_Clusters = outClusterMeans, + m_Dim = dim, + m_Counts = counts, + m_BatchSize = batchSize, + m_BatchClusters = batchClusters, + m_BatchPoints = batchPoints + }; + job.Schedule().Complete(); + } + } + + // finally find out closest clusters for all input points + { + using var profPart = s_ProfAssignClusters.Auto(); + const int kAssignBatchCount = 256 * 1024; + AssignClustersJob job = new AssignClustersJob + { + dim = dim, + data = inputData, + means = outClusterMeans, + indexOffset = 0, + clusters = outDataLabels, + }; + for (int i = 0; i < dataSize; i += kAssignBatchCount) + { + if (progress != null && !progress(0.7f + (float) i / dataSize * 0.3f)) + { + cancelled = true; + break; + } + job.indexOffset = i; + job.Schedule(math.min(kAssignBatchCount, dataSize - i), 512).Complete(); + } + } + + counts.Dispose(); + batchPoints.Dispose(); + batchClusters.Dispose(); + return !cancelled; + } + + static unsafe float DistanceSquared(int dim, NativeArray a, int aIndex, NativeArray b, int bIndex) + { + aIndex *= dim; + bIndex *= dim; + float d = 0; + if (X86.Avx.IsAvxSupported) + { + // 8x wide with AVX + int i = 0; + float* aptr = (float*) a.GetUnsafeReadOnlyPtr() + aIndex; + float* bptr = (float*) b.GetUnsafeReadOnlyPtr() + bIndex; + for (; i + 7 < dim; i += 8) + { + v256 va = X86.Avx.mm256_loadu_ps(aptr); + v256 vb = X86.Avx.mm256_loadu_ps(bptr); + v256 vd = X86.Avx.mm256_sub_ps(va, vb); + vd = X86.Avx.mm256_mul_ps(vd, vd); + + vd = X86.Avx.mm256_hadd_ps(vd, vd); + d += vd.Float0 + vd.Float1 + vd.Float4 + vd.Float5; + + aptr += 8; + bptr += 8; + } + // remainder + for (; i < dim; ++i) + { + float delta = *aptr - *bptr; + d += delta * delta; + aptr++; + bptr++; + } + } + else if (Arm.Neon.IsNeonSupported) + { + // 4x wide with NEON + int i = 0; + float* aptr = (float*) a.GetUnsafeReadOnlyPtr() + aIndex; + float* bptr = (float*) b.GetUnsafeReadOnlyPtr() + bIndex; + for (; i + 3 < dim; i += 4) + { + v128 va = Arm.Neon.vld1q_f32(aptr); + v128 vb = Arm.Neon.vld1q_f32(bptr); + v128 vd = Arm.Neon.vsubq_f32(va, vb); + vd = Arm.Neon.vmulq_f32(vd, vd); + + d += Arm.Neon.vaddvq_f32(vd); + + aptr += 4; + bptr += 4; + } + // remainder + for (; i < dim; ++i) + { + float delta = *aptr - *bptr; + d += delta * delta; + aptr++; + bptr++; + } + + } + else + { + for (var i = 0; i < dim; ++i) + { + float delta = a[aIndex + i] - b[bIndex + i]; + d += delta * delta; + } + } + + return d; + } + + static unsafe void CopyElem(int dim, NativeArray src, int srcIndex, NativeArray dst, int dstIndex) + { + UnsafeUtility.MemCpy((float*) dst.GetUnsafePtr() + dstIndex * dim, + (float*) src.GetUnsafeReadOnlyPtr() + srcIndex * dim, dim * 4); + } + + [BurstCompile] + struct ClosestDistanceInitialJob : IJobParallelFor + { + public int dim; + [ReadOnly] public NativeArray data; + [ReadOnly] public NativeArray means; + public NativeArray minDistSq; + public int pointIndex; + public void Execute(int index) + { + if (index == pointIndex) + return; + minDistSq[index] = DistanceSquared(dim, data, index, means, 0); + } + } + + [BurstCompile] + struct ClosestDistanceUpdateJob : IJobParallelFor + { + public int dim; + [ReadOnly] public NativeArray data; + [ReadOnly] public NativeArray means; + [ReadOnly] public NativeBitArray taken; + public NativeArray minDistSq; + public int meanIndex; + public void Execute(int index) + { + if (taken.IsSet(index)) + return; + float distSq = DistanceSquared(dim, data, index, means, meanIndex); + minDistSq[index] = math.min(minDistSq[index], distSq); + } + } + + [BurstCompile] + struct CalcDistSqJob : IJobParallelFor + { + public const int kBatchSize = 1024; + public int dataSize; + [ReadOnly] public NativeBitArray taken; + [ReadOnly] public NativeArray minDistSq; + public NativeArray partialSums; + + public void Execute(int batchIndex) + { + int iStart = math.min(batchIndex * kBatchSize, dataSize); + int iEnd = math.min((batchIndex + 1) * kBatchSize, dataSize); + float sum = 0; + for (int i = iStart; i < iEnd; ++i) + { + if (taken.IsSet(i)) + continue; + sum += minDistSq[i]; + } + + partialSums[batchIndex] = sum; + } + } + + [BurstCompile] + static int PickPointIndex(int dataSize, ref NativeArray partialSums, ref NativeBitArray taken, ref NativeArray minDistSq, float rval) + { + // Skip batches until we hit the ones that might have value to pick from: binary search for the batch + int indexL = 0; + int indexR = partialSums.Length; + while (indexL < indexR) + { + int indexM = (indexL + indexR) / 2; + if (partialSums[indexM] < rval) + indexL = indexM + 1; + else + indexR = indexM; + } + float acc = 0.0f; + if (indexL > 0) + { + acc = partialSums[indexL-1]; + } + + // Now search for the needed point + int pointIndex = -1; + for (int i = indexL * CalcDistSqJob.kBatchSize; i < dataSize; ++i) + { + if (taken.IsSet(i)) + continue; + acc += minDistSq[i]; + if (acc >= rval) + { + pointIndex = i; + break; + } + } + + // If we have not found a point, pick the last available one + if (pointIndex < 0) + { + for (int i = dataSize - 1; i >= 0; --i) + { + if (taken.IsSet(i)) + continue; + pointIndex = i; + break; + } + } + + if (pointIndex < 0) + pointIndex = 0; + + return pointIndex; + } + + static void KMeansPlusPlus(int dim, int k, NativeArray data, NativeArray means, NativeArray minDistSq, ref uint rngState) + { + using var prof = s_ProfPlusPlus.Auto(); + + int dataSize = data.Length / dim; + + NativeBitArray taken = new NativeBitArray(dataSize, Allocator.TempJob); + + // Select first mean randomly + int pointIndex = (int)(pcg_random(ref rngState) % dataSize); + taken.Set(pointIndex, true); + CopyElem(dim, data, pointIndex, means, 0); + + // For each point: closest squared distance to the picked point + { + ClosestDistanceInitialJob job = new ClosestDistanceInitialJob + { + dim = dim, + data = data, + means = means, + minDistSq = minDistSq, + pointIndex = pointIndex + }; + job.Schedule(dataSize, 1024).Complete(); + } + + int sumBatches = (dataSize + CalcDistSqJob.kBatchSize - 1) / CalcDistSqJob.kBatchSize; + NativeArray partialSums = new(sumBatches, Allocator.TempJob); + int resultCount = 1; + while (resultCount < k) + { + // Find total sum of distances of not yet taken points + float distSqTotal = 0; + { + using var profPart = s_ProfInitialDistanceSum.Auto(); + CalcDistSqJob job = new CalcDistSqJob + { + dataSize = dataSize, + taken = taken, + minDistSq = minDistSq, + partialSums = partialSums + }; + job.Schedule(sumBatches, 1).Complete(); + for (int i = 0; i < sumBatches; ++i) + { + distSqTotal += partialSums[i]; + partialSums[i] = distSqTotal; + } + } + + // Pick a non-taken point, with a probability proportional + // to distance: points furthest from any cluster are picked more. + { + using var profPart = s_ProfInitialPickPoint.Auto(); + float rval = pcg_hash_float(rngState + (uint)resultCount, distSqTotal); + pointIndex = PickPointIndex(dataSize, ref partialSums, ref taken, ref minDistSq, rval); + } + + // Take this point as a new cluster mean + taken.Set(pointIndex, true); + CopyElem(dim, data, pointIndex, means, resultCount); + ++resultCount; + + if (resultCount < k) + { + // Update distances of the points: since it tracks closest one, + // calculate distance to the new cluster and update if smaller. + using var profPart = s_ProfInitialDistanceUpdate.Auto(); + ClosestDistanceUpdateJob job = new ClosestDistanceUpdateJob + { + dim = dim, + data = data, + means = means, + minDistSq = minDistSq, + taken = taken, + meanIndex = resultCount - 1 + }; + job.Schedule(dataSize, 256).Complete(); + } + } + + taken.Dispose(); + partialSums.Dispose(); + } + + // For each data point, find cluster index that is closest to it + [BurstCompile] + struct AssignClustersJob : IJobParallelFor + { + public int indexOffset; + public int dim; + [ReadOnly] public NativeArray data; + [ReadOnly] public NativeArray means; + [NativeDisableParallelForRestriction] public NativeArray clusters; + [NativeDisableContainerSafetyRestriction] [NativeDisableParallelForRestriction] public NativeArray distances; + + public void Execute(int index) + { + index += indexOffset; + int meansCount = means.Length / dim; + float minDist = float.MaxValue; + int minIndex = 0; + for (int i = 0; i < meansCount; ++i) + { + float dist = DistanceSquared(dim, data, index, means, i); + if (dist < minDist) + { + minIndex = i; + minDist = dist; + } + } + clusters[index] = minIndex; + if (distances.IsCreated) + distances[index] = minDist; + } + } + + static void MakeRandomBatch(int dim, NativeArray inputData, ref uint rngState, NativeArray outBatch) + { + var job = new MakeBatchJob + { + m_Dim = dim, + m_InputData = inputData, + m_Seed = pcg_random(ref rngState), + m_OutBatch = outBatch + }; + job.Schedule().Complete(); + } + + [BurstCompile] + struct MakeBatchJob : IJob + { + public int m_Dim; + public NativeArray m_InputData; + public NativeArray m_OutBatch; + public uint m_Seed; + public void Execute() + { + uint dataSize = (uint)(m_InputData.Length / m_Dim); + int batchSize = m_OutBatch.Length / m_Dim; + NativeHashSet picked = new(batchSize, Allocator.Temp); + while (picked.Count < batchSize) + { + int index = (int)(pcg_hash(m_Seed++) % dataSize); + if (!picked.Contains(index)) + { + CopyElem(m_Dim, m_InputData, index, m_OutBatch, picked.Count); + picked.Add(index); + } + } + picked.Dispose(); + } + } + + [BurstCompile] + struct UpdateCentroidsJob : IJob + { + public int m_Dim; + public int m_BatchSize; + [ReadOnly] public NativeArray m_BatchClusters; + public NativeArray m_Counts; + [ReadOnly] public NativeArray m_BatchPoints; + public NativeArray m_Clusters; + + public void Execute() + { + for (int i = 0; i < m_BatchSize; ++i) + { + int clusterIndex = m_BatchClusters[i]; + m_Counts[clusterIndex]++; + float alpha = 1.0f / m_Counts[clusterIndex]; + + for (int j = 0; j < m_Dim; ++j) + { + m_Clusters[clusterIndex * m_Dim + j] = math.lerp(m_Clusters[clusterIndex * m_Dim + j], + m_BatchPoints[i * m_Dim + j], alpha); + } + } + } + } + + static bool InitializeCentroids(int dim, NativeArray inputData, int initBatchSize, ref uint rngState, int initAttempts, NativeArray outClusters, Func progress) + { + using var prof = s_ProfPlusPlus.Auto(); + + int k = outClusters.Length / dim; + int dataSize = inputData.Length / dim; + initBatchSize = math.min(initBatchSize, dataSize); + + NativeArray centroidBatch = new(initBatchSize * dim, Allocator.TempJob); + NativeArray validationBatch = new(initBatchSize * dim, Allocator.TempJob); + MakeRandomBatch(dim, inputData, ref rngState, centroidBatch); + MakeRandomBatch(dim, inputData, ref rngState, validationBatch); + + NativeArray tmpIndices = new(initBatchSize, Allocator.TempJob); + NativeArray tmpDistances = new(initBatchSize, Allocator.TempJob); + NativeArray curCentroids = new(k * dim, Allocator.TempJob); + + float minDistSum = float.MaxValue; + + bool cancelled = false; + for (int ia = 0; ia < initAttempts; ++ia) + { + if (progress != null && !progress((float) ia / initAttempts * 0.3f)) + { + cancelled = true; + break; + } + + KMeansPlusPlus(dim, k, centroidBatch, curCentroids, tmpDistances, ref rngState); + + { + using var profPart = s_ProfAssignClusters.Auto(); + AssignClustersJob job = new AssignClustersJob + { + dim = dim, + data = validationBatch, + means = curCentroids, + indexOffset = 0, + clusters = tmpIndices, + distances = tmpDistances + }; + job.Schedule(initBatchSize, 1).Complete(); + } + + float distSum = 0; + foreach (var d in tmpDistances) + distSum += d; + + // is this centroid better? + if (distSum < minDistSum) + { + minDistSum = distSum; + outClusters.CopyFrom(curCentroids); + } + } + + centroidBatch.Dispose(); + validationBatch.Dispose(); + tmpDistances.Dispose(); + tmpIndices.Dispose(); + curCentroids.Dispose(); + return !cancelled; + } + + // https://www.reedbeta.com/blog/hash-functions-for-gpu-rendering/ + static uint pcg_hash(uint input) + { + uint state = input * 747796405u + 2891336453u; + uint word = ((state >> (int)((state >> 28) + 4u)) ^ state) * 277803737u; + return (word >> 22) ^ word; + } + + static float pcg_hash_float(uint input, float upTo) + { + uint val = pcg_hash(input); + float f = math.asfloat(0x3f800000 | (val >> 9)) - 1.0f; + return f * upTo; + } + + static uint pcg_random(ref uint rng_state) + { + uint state = rng_state; + rng_state = rng_state * 747796405u + 2891336453u; + uint word = ((state >> (int)((state >> 28) + 4u)) ^ state) * 277803737u; + return (word >> 22) ^ word; + } + } +} diff --git a/MVS/3DGS-Unity/Editor/Utils/KMeansClustering.cs.meta b/MVS/3DGS-Unity/Editor/Utils/KMeansClustering.cs.meta new file mode 100644 index 00000000..edbf7385 --- /dev/null +++ b/MVS/3DGS-Unity/Editor/Utils/KMeansClustering.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9cecadf9c980a4ad9a30d0e1ae09d16a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Editor/Utils/PLYFileReader.cs b/MVS/3DGS-Unity/Editor/Utils/PLYFileReader.cs new file mode 100644 index 00000000..0bd4b1a9 --- /dev/null +++ b/MVS/3DGS-Unity/Editor/Utils/PLYFileReader.cs @@ -0,0 +1,107 @@ +// SPDX-License-Identifier: MIT + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using Unity.Collections; + +namespace GaussianSplatting.Editor.Utils +{ + public static class PLYFileReader + { + public static void ReadFileHeader(string filePath, out int vertexCount, out int vertexStride, out List attrNames) + { + vertexCount = 0; + vertexStride = 0; + attrNames = new List(); + if (!File.Exists(filePath)) + return; + using var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); + ReadHeaderImpl(filePath, out vertexCount, out vertexStride, out attrNames, fs); + } + + static void ReadHeaderImpl(string filePath, out int vertexCount, out int vertexStride, out List attrNames, FileStream fs) + { + // C# arrays and NativeArrays make it hard to have a "byte" array larger than 2GB :/ + if (fs.Length >= 2 * 1024 * 1024 * 1024L) + throw new IOException($"PLY {filePath} read error: currently files larger than 2GB are not supported"); + + // read header + vertexCount = 0; + vertexStride = 0; + attrNames = new List(); + const int kMaxHeaderLines = 9000; + for (int lineIdx = 0; lineIdx < kMaxHeaderLines; ++lineIdx) + { + var line = ReadLine(fs); + if (line == "end_header" || line.Length == 0) + break; + var tokens = line.Split(' '); + if (tokens.Length == 3 && tokens[0] == "element" && tokens[1] == "vertex") + vertexCount = int.Parse(tokens[2]); + if (tokens.Length == 3 && tokens[0] == "property") + { + ElementType type = tokens[1] switch + { + "float" => ElementType.Float, + "double" => ElementType.Double, + "uchar" => ElementType.UChar, + _ => ElementType.None + }; + vertexStride += TypeToSize(type); + attrNames.Add(tokens[2]); + } + } + //Debug.Log($"PLY {filePath} vtx {vertexCount} stride {vertexStride} attrs #{attrNames.Count} {string.Join(',', attrNames)}"); + } + + public static void ReadFile(string filePath, out int vertexCount, out int vertexStride, out List attrNames, out NativeArray vertices) + { + using var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); + ReadHeaderImpl(filePath, out vertexCount, out vertexStride, out attrNames, fs); + + vertices = new NativeArray(vertexCount * vertexStride, Allocator.Persistent); + var readBytes = fs.Read(vertices); + if (readBytes != vertices.Length) + throw new IOException($"PLY {filePath} read error, expected {vertices.Length} data bytes got {readBytes}"); + } + + enum ElementType + { + None, + Float, + Double, + UChar + } + + static int TypeToSize(ElementType t) + { + return t switch + { + ElementType.None => 0, + ElementType.Float => 4, + ElementType.Double => 8, + ElementType.UChar => 1, + _ => throw new ArgumentOutOfRangeException(nameof(t), t, null) + }; + } + + static string ReadLine(FileStream fs) + { + var byteBuffer = new List(); + while (true) + { + int b = fs.ReadByte(); + if (b == -1 || b == '\n') + break; + byteBuffer.Add((byte)b); + } + // if line had CRLF line endings, remove the CR part + if (byteBuffer.Count > 0 && byteBuffer.Last() == '\r') + byteBuffer.RemoveAt(byteBuffer.Count-1); + return Encoding.UTF8.GetString(byteBuffer.ToArray()); + } + } +} diff --git a/MVS/3DGS-Unity/Editor/Utils/PLYFileReader.cs.meta b/MVS/3DGS-Unity/Editor/Utils/PLYFileReader.cs.meta new file mode 100644 index 00000000..22fd8654 --- /dev/null +++ b/MVS/3DGS-Unity/Editor/Utils/PLYFileReader.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27964c85711004ddca73909489af2e2e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Editor/Utils/TinyJsonParser.cs b/MVS/3DGS-Unity/Editor/Utils/TinyJsonParser.cs new file mode 100644 index 00000000..b81c4835 --- /dev/null +++ b/MVS/3DGS-Unity/Editor/Utils/TinyJsonParser.cs @@ -0,0 +1,403 @@ +/* +Embedded TinyJSON from https://github.com/pbhogan/TinyJSON (version 71fed96, 2019 May 10) directly here, with +custom namespace wrapped around it so it does not clash with any other embedded TinyJSON. Original license: + +The MIT License (MIT) + +Copyright (c) 2018 Alex Parker + +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. +*/ + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using System.Runtime.Serialization; +using System.Text; + +namespace GaussianSplatting.Editor.Utils +{ + // Really simple JSON parser in ~300 lines + // - Attempts to parse JSON files with minimal GC allocation + // - Nice and simple "[1,2,3]".FromJson>() API + // - Classes and structs can be parsed too! + // class Foo { public int Value; } + // "{\"Value\":10}".FromJson() + // - Can parse JSON without type information into Dictionary and List e.g. + // "[1,2,3]".FromJson().GetType() == typeof(List) + // "{\"Value\":10}".FromJson().GetType() == typeof(Dictionary) + // - No JIT Emit support to support AOT compilation on iOS + // - Attempts are made to NOT throw an exception if the JSON is corrupted or invalid: returns null instead. + // - Only public fields and property setters on classes/structs will be written to + // + // Limitations: + // - No JIT Emit support to parse structures quickly + // - Limited to parsing <2GB JSON files (due to int.MaxValue) + // - Parsing of abstract classes or interfaces is NOT supported and will throw an exception. + public static class JSONParser + { + [ThreadStatic] static Stack> splitArrayPool; + [ThreadStatic] static StringBuilder stringBuilder; + [ThreadStatic] static Dictionary> fieldInfoCache; + [ThreadStatic] static Dictionary> propertyInfoCache; + + public static T FromJson(this string json) + { + // Initialize, if needed, the ThreadStatic variables + if (propertyInfoCache == null) propertyInfoCache = new Dictionary>(); + if (fieldInfoCache == null) fieldInfoCache = new Dictionary>(); + if (stringBuilder == null) stringBuilder = new StringBuilder(); + if (splitArrayPool == null) splitArrayPool = new Stack>(); + + //Remove all whitespace not within strings to make parsing simpler + stringBuilder.Length = 0; + for (int i = 0; i < json.Length; i++) + { + char c = json[i]; + if (c == '"') + { + i = AppendUntilStringEnd(true, i, json); + continue; + } + if (char.IsWhiteSpace(c)) + continue; + + stringBuilder.Append(c); + } + + //Parse the thing! + return (T)ParseValue(typeof(T), stringBuilder.ToString()); + } + + static int AppendUntilStringEnd(bool appendEscapeCharacter, int startIdx, string json) + { + stringBuilder.Append(json[startIdx]); + for (int i = startIdx + 1; i < json.Length; i++) + { + if (json[i] == '\\') + { + if (appendEscapeCharacter) + stringBuilder.Append(json[i]); + stringBuilder.Append(json[i + 1]); + i++;//Skip next character as it is escaped + } + else if (json[i] == '"') + { + stringBuilder.Append(json[i]); + return i; + } + else + stringBuilder.Append(json[i]); + } + return json.Length - 1; + } + + //Splits { :, : } and [ , ] into a list of strings + static List Split(string json) + { + List splitArray = splitArrayPool.Count > 0 ? splitArrayPool.Pop() : new List(); + splitArray.Clear(); + if (json.Length == 2) + return splitArray; + int parseDepth = 0; + stringBuilder.Length = 0; + for (int i = 1; i < json.Length - 1; i++) + { + switch (json[i]) + { + case '[': + case '{': + parseDepth++; + break; + case ']': + case '}': + parseDepth--; + break; + case '"': + i = AppendUntilStringEnd(true, i, json); + continue; + case ',': + case ':': + if (parseDepth == 0) + { + splitArray.Add(stringBuilder.ToString()); + stringBuilder.Length = 0; + continue; + } + break; + } + + stringBuilder.Append(json[i]); + } + + splitArray.Add(stringBuilder.ToString()); + + return splitArray; + } + + internal static object ParseValue(Type type, string json) + { + if (type == typeof(string)) + { + if (json.Length <= 2) + return string.Empty; + StringBuilder parseStringBuilder = new StringBuilder(json.Length); + for (int i = 1; i < json.Length - 1; ++i) + { + if (json[i] == '\\' && i + 1 < json.Length - 1) + { + int j = "\"\\nrtbf/".IndexOf(json[i + 1]); + if (j >= 0) + { + parseStringBuilder.Append("\"\\\n\r\t\b\f/"[j]); + ++i; + continue; + } + if (json[i + 1] == 'u' && i + 5 < json.Length - 1) + { + UInt32 c = 0; + if (UInt32.TryParse(json.Substring(i + 2, 4), System.Globalization.NumberStyles.AllowHexSpecifier, null, out c)) + { + parseStringBuilder.Append((char)c); + i += 5; + continue; + } + } + } + parseStringBuilder.Append(json[i]); + } + return parseStringBuilder.ToString(); + } + if (type.IsPrimitive) + { + var result = Convert.ChangeType(json, type, System.Globalization.CultureInfo.InvariantCulture); + return result; + } + if (type == typeof(decimal)) + { + decimal result; + decimal.TryParse(json, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out result); + return result; + } + if (type == typeof(DateTime)) + { + DateTime result; + DateTime.TryParse(json.Replace("\"",""), System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out result); + return result; + } + if (json == "null") + { + return null; + } + if (type.IsEnum) + { + if (json[0] == '"') + json = json.Substring(1, json.Length - 2); + try + { + return Enum.Parse(type, json, false); + } + catch + { + return 0; + } + } + if (type.IsArray) + { + Type arrayType = type.GetElementType(); + if (json[0] != '[' || json[json.Length - 1] != ']') + return null; + + List elems = Split(json); + Array newArray = Array.CreateInstance(arrayType, elems.Count); + for (int i = 0; i < elems.Count; i++) + newArray.SetValue(ParseValue(arrayType, elems[i]), i); + splitArrayPool.Push(elems); + return newArray; + } + if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>)) + { + Type listType = type.GetGenericArguments()[0]; + if (json[0] != '[' || json[json.Length - 1] != ']') + return null; + + List elems = Split(json); + var list = (IList)type.GetConstructor(new Type[] { typeof(int) }).Invoke(new object[] { elems.Count }); + for (int i = 0; i < elems.Count; i++) + list.Add(ParseValue(listType, elems[i])); + splitArrayPool.Push(elems); + return list; + } + if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Dictionary<,>)) + { + Type keyType, valueType; + { + Type[] args = type.GetGenericArguments(); + keyType = args[0]; + valueType = args[1]; + } + + //Refuse to parse dictionary keys that aren't of type string + if (keyType != typeof(string)) + return null; + //Must be a valid dictionary element + if (json[0] != '{' || json[json.Length - 1] != '}') + return null; + //The list is split into key/value pairs only, this means the split must be divisible by 2 to be valid JSON + List elems = Split(json); + if (elems.Count % 2 != 0) + return null; + + var dictionary = (IDictionary)type.GetConstructor(new Type[] { typeof(int) }).Invoke(new object[] { elems.Count / 2 }); + for (int i = 0; i < elems.Count; i += 2) + { + if (elems[i].Length <= 2) + continue; + string keyValue = elems[i].Substring(1, elems[i].Length - 2); + object val = ParseValue(valueType, elems[i + 1]); + dictionary[keyValue] = val; + } + return dictionary; + } + if (type == typeof(object)) + { + return ParseAnonymousValue(json); + } + if (json[0] == '{' && json[json.Length - 1] == '}') + { + return ParseObject(type, json); + } + + return null; + } + + static object ParseAnonymousValue(string json) + { + if (json.Length == 0) + return null; + if (json[0] == '{' && json[json.Length - 1] == '}') + { + List elems = Split(json); + if (elems.Count % 2 != 0) + return null; + var dict = new Dictionary(elems.Count / 2); + for (int i = 0; i < elems.Count; i += 2) + dict[elems[i].Substring(1, elems[i].Length - 2)] = ParseAnonymousValue(elems[i + 1]); + return dict; + } + if (json[0] == '[' && json[json.Length - 1] == ']') + { + List items = Split(json); + var finalList = new List(items.Count); + for (int i = 0; i < items.Count; i++) + finalList.Add(ParseAnonymousValue(items[i])); + return finalList; + } + if (json[0] == '"' && json[json.Length - 1] == '"') + { + string str = json.Substring(1, json.Length - 2); + return str.Replace("\\", string.Empty); + } + if (char.IsDigit(json[0]) || json[0] == '-') + { + if (json.Contains(".")) + { + double result; + double.TryParse(json, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out result); + return result; + } + else + { + int result; + int.TryParse(json, out result); + return result; + } + } + if (json == "true") + return true; + if (json == "false") + return false; + // handles json == "null" as well as invalid JSON + return null; + } + + static Dictionary CreateMemberNameDictionary(T[] members) where T : MemberInfo + { + Dictionary nameToMember = new Dictionary(StringComparer.OrdinalIgnoreCase); + for (int i = 0; i < members.Length; i++) + { + T member = members[i]; + if (member.IsDefined(typeof(IgnoreDataMemberAttribute), true)) + continue; + + string name = member.Name; + if (member.IsDefined(typeof(DataMemberAttribute), true)) + { + DataMemberAttribute dataMemberAttribute = (DataMemberAttribute)Attribute.GetCustomAttribute(member, typeof(DataMemberAttribute), true); + if (!string.IsNullOrEmpty(dataMemberAttribute.Name)) + name = dataMemberAttribute.Name; + } + + nameToMember.Add(name, member); + } + + return nameToMember; + } + + static object ParseObject(Type type, string json) + { + object instance = FormatterServices.GetUninitializedObject(type); + + //The list is split into key/value pairs only, this means the split must be divisible by 2 to be valid JSON + List elems = Split(json); + if (elems.Count % 2 != 0) + return instance; + + Dictionary nameToField; + Dictionary nameToProperty; + if (!fieldInfoCache.TryGetValue(type, out nameToField)) + { + nameToField = CreateMemberNameDictionary(type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy)); + fieldInfoCache.Add(type, nameToField); + } + if (!propertyInfoCache.TryGetValue(type, out nameToProperty)) + { + nameToProperty = CreateMemberNameDictionary(type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy)); + propertyInfoCache.Add(type, nameToProperty); + } + + for (int i = 0; i < elems.Count; i += 2) + { + if (elems[i].Length <= 2) + continue; + string key = elems[i].Substring(1, elems[i].Length - 2); + string value = elems[i + 1]; + + FieldInfo fieldInfo; + PropertyInfo propertyInfo; + if (nameToField.TryGetValue(key, out fieldInfo)) + fieldInfo.SetValue(instance, ParseValue(fieldInfo.FieldType, value)); + else if (nameToProperty.TryGetValue(key, out propertyInfo)) + propertyInfo.SetValue(instance, ParseValue(propertyInfo.PropertyType, value), null); + } + + return instance; + } + } +} diff --git a/MVS/3DGS-Unity/Editor/Utils/TinyJsonParser.cs.meta b/MVS/3DGS-Unity/Editor/Utils/TinyJsonParser.cs.meta new file mode 100644 index 00000000..f35e3930 --- /dev/null +++ b/MVS/3DGS-Unity/Editor/Utils/TinyJsonParser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e9ea5041388393f459c378c31e4d7b1f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/LICENSE.md b/MVS/3DGS-Unity/LICENSE.md new file mode 100644 index 00000000..f39d6892 --- /dev/null +++ b/MVS/3DGS-Unity/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Aras Pranckevičius + +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. \ No newline at end of file diff --git a/MVS/3DGS-Unity/LICENSE.md.meta b/MVS/3DGS-Unity/LICENSE.md.meta new file mode 100644 index 00000000..5045372f --- /dev/null +++ b/MVS/3DGS-Unity/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: da286c32b8dba1744aecca8cb1ab4ad6 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Materials.meta b/MVS/3DGS-Unity/Materials.meta new file mode 100644 index 00000000..9e35b8d0 --- /dev/null +++ b/MVS/3DGS-Unity/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 78bfe028c2744c741bd4f94574de884a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Materials/BlackSkybox.mat b/MVS/3DGS-Unity/Materials/BlackSkybox.mat new file mode 100644 index 00000000..e0e13007 --- /dev/null +++ b/MVS/3DGS-Unity/Materials/BlackSkybox.mat @@ -0,0 +1,30 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BlackSkybox + m_Shader: {fileID: 4800000, guid: a4867e5be68354ccda78062a92c74391, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: [] + m_Ints: [] + m_Floats: [] + m_Colors: + - _Color: {r: 0, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] diff --git a/MVS/3DGS-Unity/Materials/BlackSkybox.mat.meta b/MVS/3DGS-Unity/Materials/BlackSkybox.mat.meta new file mode 100644 index 00000000..b2a40699 --- /dev/null +++ b/MVS/3DGS-Unity/Materials/BlackSkybox.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e9c9951d4a35e4a54812fa0280fa548c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Runtime.meta b/MVS/3DGS-Unity/Runtime.meta new file mode 100644 index 00000000..1c5ac9b8 --- /dev/null +++ b/MVS/3DGS-Unity/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 71627bcf67390da439d82a2a05a57bb4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Runtime/GaussianCutout.cs b/MVS/3DGS-Unity/Runtime/GaussianCutout.cs new file mode 100644 index 00000000..31bb4eef --- /dev/null +++ b/MVS/3DGS-Unity/Runtime/GaussianCutout.cs @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: MIT + +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace GaussianSplatting.Runtime +{ + public class GaussianCutout : MonoBehaviour + { + public enum Type + { + Ellipsoid, + Box + } + + public Type m_Type = Type.Ellipsoid; + public bool m_Invert = false; + + public struct ShaderData // match GaussianCutoutShaderData in CS + { + public Matrix4x4 matrix; + public uint typeAndFlags; + } + + public static ShaderData GetShaderData(GaussianCutout self, Matrix4x4 rendererMatrix) + { + ShaderData sd = default; + if (self && self.isActiveAndEnabled) + { + var tr = self.transform; + sd.matrix = tr.worldToLocalMatrix * rendererMatrix; + sd.typeAndFlags = ((uint)self.m_Type) | (self.m_Invert ? 0x100u : 0u); + } + else + { + sd.typeAndFlags = ~0u; + } + return sd; + } + +#if UNITY_EDITOR + public void OnDrawGizmos() + { + Gizmos.matrix = transform.localToWorldMatrix; + var color = Color.magenta; + color.a = 0.2f; + if (Selection.Contains(gameObject)) + color.a = 0.9f; + else + { + // mid amount of alpha if a GS object that contains us as a cutout is selected + var activeGo = Selection.activeGameObject; + if (activeGo != null) + { + var activeSplat = activeGo.GetComponent(); + if (activeSplat != null) + { + if (activeSplat.m_Cutouts != null && activeSplat.m_Cutouts.Contains(this)) + color.a = 0.5f; + } + } + } + + Gizmos.color = color; + if (m_Type == Type.Ellipsoid) + { + Gizmos.DrawWireSphere(Vector3.zero, 1.0f); + } + if (m_Type == Type.Box) + { + Gizmos.DrawWireCube(Vector3.zero, Vector3.one * 2); + } + } +#endif // #if UNITY_EDITOR + } +} diff --git a/MVS/3DGS-Unity/Runtime/GaussianCutout.cs.meta b/MVS/3DGS-Unity/Runtime/GaussianCutout.cs.meta new file mode 100644 index 00000000..15ddef22 --- /dev/null +++ b/MVS/3DGS-Unity/Runtime/GaussianCutout.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2c57a1c501bd05549ae157cc474bd4c4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Runtime/GaussianSplatAsset.cs b/MVS/3DGS-Unity/Runtime/GaussianSplatAsset.cs new file mode 100644 index 00000000..7523222e --- /dev/null +++ b/MVS/3DGS-Unity/Runtime/GaussianSplatAsset.cs @@ -0,0 +1,247 @@ +// SPDX-License-Identifier: MIT + +using System; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using UnityEngine; +using UnityEngine.Experimental.Rendering; + +namespace GaussianSplatting.Runtime +{ + public class GaussianSplatAsset : ScriptableObject + { + public const int kCurrentVersion = 2023_10_20; + public const int kChunkSize = 256; + public const int kTextureWidth = 2048; // allows up to 32M splats on desktop GPU (2k width x 16k height) + public const int kMaxSplats = 8_600_000; // mostly due to 2GB GPU buffer size limit when exporting a splat (2GB / 248B is just over 8.6M) + + [SerializeField] int m_FormatVersion; + [SerializeField] int m_SplatCount; + [SerializeField] Vector3 m_BoundsMin; + [SerializeField] Vector3 m_BoundsMax; + [SerializeField] Hash128 m_DataHash; + + public int formatVersion => m_FormatVersion; + public int splatCount => m_SplatCount; + public Vector3 boundsMin => m_BoundsMin; + public Vector3 boundsMax => m_BoundsMax; + public Hash128 dataHash => m_DataHash; + + // Match VECTOR_FMT_* in HLSL + public enum VectorFormat + { + Float32, // 12 bytes: 32F.32F.32F + Norm16, // 6 bytes: 16.16.16 + Norm11, // 4 bytes: 11.10.11 + Norm6 // 2 bytes: 6.5.5 + } + + public static int GetVectorSize(VectorFormat fmt) + { + return fmt switch + { + VectorFormat.Float32 => 12, + VectorFormat.Norm16 => 6, + VectorFormat.Norm11 => 4, + VectorFormat.Norm6 => 2, + _ => throw new ArgumentOutOfRangeException(nameof(fmt), fmt, null) + }; + } + + public enum ColorFormat + { + Float32x4, + Float16x4, + Norm8x4, + BC7, + } + public static int GetColorSize(ColorFormat fmt) + { + return fmt switch + { + ColorFormat.Float32x4 => 16, + ColorFormat.Float16x4 => 8, + ColorFormat.Norm8x4 => 4, + ColorFormat.BC7 => 1, + _ => throw new ArgumentOutOfRangeException(nameof(fmt), fmt, null) + }; + } + + public enum SHFormat + { + Float32, + Float16, + Norm11, + Norm6, + Cluster64k, + Cluster32k, + Cluster16k, + Cluster8k, + Cluster4k, + } + + public struct SHTableItemFloat32 + { + public float3 sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8, sh9, shA, shB, shC, shD, shE, shF; + public float3 shPadding; // pad to multiple of 16 bytes + } + public struct SHTableItemFloat16 + { + public half3 sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8, sh9, shA, shB, shC, shD, shE, shF; + public half3 shPadding; // pad to multiple of 16 bytes + } + public struct SHTableItemNorm11 + { + public uint sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8, sh9, shA, shB, shC, shD, shE, shF; + } + public struct SHTableItemNorm6 + { + public ushort sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8, sh9, shA, shB, shC, shD, shE, shF; + public ushort shPadding; // pad to multiple of 4 bytes + } + + public void Initialize(int splats, VectorFormat formatPos, VectorFormat formatScale, ColorFormat formatColor, SHFormat formatSh, Vector3 bMin, Vector3 bMax, CameraInfo[] cameraInfos) + { + m_SplatCount = splats; + m_FormatVersion = kCurrentVersion; + m_PosFormat = formatPos; + m_ScaleFormat = formatScale; + m_ColorFormat = formatColor; + m_SHFormat = formatSh; + m_Cameras = cameraInfos; + m_BoundsMin = bMin; + m_BoundsMax = bMax; + } + + public void SetDataHash(Hash128 hash) + { + m_DataHash = hash; + } + + public void SetAssetFiles(TextAsset dataChunk, TextAsset dataPos, TextAsset dataOther, TextAsset dataColor, TextAsset dataSh) + { + m_ChunkData = dataChunk; + m_PosData = dataPos; + m_OtherData = dataOther; + m_ColorData = dataColor; + m_SHData = dataSh; + } + + public static int GetOtherSizeNoSHIndex(VectorFormat scaleFormat) + { + return 4 + GetVectorSize(scaleFormat); + } + + public static int GetSHCount(SHFormat fmt, int splatCount) + { + return fmt switch + { + SHFormat.Float32 => splatCount, + SHFormat.Float16 => splatCount, + SHFormat.Norm11 => splatCount, + SHFormat.Norm6 => splatCount, + SHFormat.Cluster64k => 64 * 1024, + SHFormat.Cluster32k => 32 * 1024, + SHFormat.Cluster16k => 16 * 1024, + SHFormat.Cluster8k => 8 * 1024, + SHFormat.Cluster4k => 4 * 1024, + _ => throw new ArgumentOutOfRangeException(nameof(fmt), fmt, null) + }; + } + + public static (int,int) CalcTextureSize(int splatCount) + { + int width = kTextureWidth; + int height = math.max(1, (splatCount + width - 1) / width); + // our swizzle tiles are 16x16, so make texture multiple of that height + int blockHeight = 16; + height = (height + blockHeight - 1) / blockHeight * blockHeight; + return (width, height); + } + + public static GraphicsFormat ColorFormatToGraphics(ColorFormat format) + { + return format switch + { + ColorFormat.Float32x4 => GraphicsFormat.R32G32B32A32_SFloat, + ColorFormat.Float16x4 => GraphicsFormat.R16G16B16A16_SFloat, + ColorFormat.Norm8x4 => GraphicsFormat.R8G8B8A8_UNorm, + ColorFormat.BC7 => GraphicsFormat.RGBA_BC7_UNorm, + _ => throw new ArgumentOutOfRangeException(nameof(format), format, null) + }; + } + + public static long CalcPosDataSize(int splatCount, VectorFormat formatPos) + { + return splatCount * GetVectorSize(formatPos); + } + public static long CalcOtherDataSize(int splatCount, VectorFormat formatScale) + { + return splatCount * GetOtherSizeNoSHIndex(formatScale); + } + public static long CalcColorDataSize(int splatCount, ColorFormat formatColor) + { + var (width, height) = CalcTextureSize(splatCount); + return width * height * GetColorSize(formatColor); + } + public static long CalcSHDataSize(int splatCount, SHFormat formatSh) + { + int shCount = GetSHCount(formatSh, splatCount); + return formatSh switch + { + SHFormat.Float32 => shCount * UnsafeUtility.SizeOf(), + SHFormat.Float16 => shCount * UnsafeUtility.SizeOf(), + SHFormat.Norm11 => shCount * UnsafeUtility.SizeOf(), + SHFormat.Norm6 => shCount * UnsafeUtility.SizeOf(), + _ => shCount * UnsafeUtility.SizeOf() + splatCount * 2 + }; + } + public static long CalcChunkDataSize(int splatCount) + { + int chunkCount = (splatCount + kChunkSize - 1) / kChunkSize; + return chunkCount * UnsafeUtility.SizeOf(); + } + + [SerializeField] VectorFormat m_PosFormat = VectorFormat.Norm11; + [SerializeField] VectorFormat m_ScaleFormat = VectorFormat.Norm11; + [SerializeField] SHFormat m_SHFormat = SHFormat.Norm11; + [SerializeField] ColorFormat m_ColorFormat; + + [SerializeField] TextAsset m_PosData; + [SerializeField] TextAsset m_ColorData; + [SerializeField] TextAsset m_OtherData; + [SerializeField] TextAsset m_SHData; + // Chunk data is optional (if data formats are fully lossless then there's no chunking) + [SerializeField] TextAsset m_ChunkData; + + [SerializeField] CameraInfo[] m_Cameras; + + public VectorFormat posFormat => m_PosFormat; + public VectorFormat scaleFormat => m_ScaleFormat; + public SHFormat shFormat => m_SHFormat; + public ColorFormat colorFormat => m_ColorFormat; + + public TextAsset posData => m_PosData; + public TextAsset colorData => m_ColorData; + public TextAsset otherData => m_OtherData; + public TextAsset shData => m_SHData; + public TextAsset chunkData => m_ChunkData; + public CameraInfo[] cameras => m_Cameras; + + public struct ChunkInfo + { + public uint colR, colG, colB, colA; + public float2 posX, posY, posZ; + public uint sclX, sclY, sclZ; + public uint shR, shG, shB; + } + + [Serializable] + public struct CameraInfo + { + public Vector3 pos; + public Vector3 axisX, axisY, axisZ; + public float fov; + } + } +} diff --git a/MVS/3DGS-Unity/Runtime/GaussianSplatAsset.cs.meta b/MVS/3DGS-Unity/Runtime/GaussianSplatAsset.cs.meta new file mode 100644 index 00000000..fe225df1 --- /dev/null +++ b/MVS/3DGS-Unity/Runtime/GaussianSplatAsset.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 33b71fae31e6c7d438e8566dc713e666 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Runtime/GaussianSplatHDRPPass.cs b/MVS/3DGS-Unity/Runtime/GaussianSplatHDRPPass.cs new file mode 100644 index 00000000..c0d7d0f5 --- /dev/null +++ b/MVS/3DGS-Unity/Runtime/GaussianSplatHDRPPass.cs @@ -0,0 +1,59 @@ +// SPDX-License-Identifier: MIT +#if GS_ENABLE_HDRP + +using UnityEngine; +using UnityEngine.Rendering.HighDefinition; +using UnityEngine.Rendering; +using UnityEngine.Experimental.Rendering; + +namespace GaussianSplatting.Runtime +{ + // Note: I have no idea what is the proper usage of CustomPass. + // Code below "seems to work" but I'm just fumbling along, without understanding any of it. + class GaussianSplatHDRPPass : CustomPass + { + RTHandle m_RenderTarget; + + // It can be used to configure render targets and their clear state. Also to create temporary render target textures. + // When empty this render pass will render to the active camera render target. + // You should never call CommandBuffer.SetRenderTarget. Instead call ConfigureTarget and ConfigureClear. + // The render pipeline will ensure target setup and clearing happens in an performance manner. + protected override void Setup(ScriptableRenderContext renderContext, CommandBuffer cmd) + { + m_RenderTarget = RTHandles.Alloc(Vector2.one, + colorFormat: GraphicsFormat.R16G16B16A16_SFloat, useDynamicScale: true, + depthBufferBits: DepthBits.None, msaaSamples: MSAASamples.None, + filterMode: FilterMode.Point, wrapMode: TextureWrapMode.Clamp, name: "_GaussianSplatRT"); + } + + protected override void Execute(CustomPassContext ctx) + { + var cam = ctx.hdCamera.camera; + + var system = GaussianSplatRenderSystem.instance; + if (!system.GatherSplatsForCamera(cam)) + return; + + ctx.cmd.SetGlobalTexture(m_RenderTarget.name, m_RenderTarget.nameID); + CoreUtils.SetRenderTarget(ctx.cmd, m_RenderTarget, ctx.cameraDepthBuffer, ClearFlag.Color, + new Color(0, 0, 0, 0)); + + // add sorting, view calc and drawing commands for each splat object + Material matComposite = + GaussianSplatRenderSystem.instance.SortAndRenderSplats(ctx.hdCamera.camera, ctx.cmd); + + // compose + ctx.cmd.BeginSample(GaussianSplatRenderSystem.s_ProfCompose); + CoreUtils.SetRenderTarget(ctx.cmd, ctx.cameraColorBuffer, ClearFlag.None); + CoreUtils.DrawFullScreen(ctx.cmd, matComposite, ctx.propertyBlock, shaderPassId: 0); + ctx.cmd.EndSample(GaussianSplatRenderSystem.s_ProfCompose); + } + + protected override void Cleanup() + { + m_RenderTarget.Release(); + } + } +} + +#endif diff --git a/MVS/3DGS-Unity/Runtime/GaussianSplatHDRPPass.cs.meta b/MVS/3DGS-Unity/Runtime/GaussianSplatHDRPPass.cs.meta new file mode 100644 index 00000000..3c749288 --- /dev/null +++ b/MVS/3DGS-Unity/Runtime/GaussianSplatHDRPPass.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f40f16e78da87c646826cc5335ccb1f8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Runtime/GaussianSplatRenderer.cs b/MVS/3DGS-Unity/Runtime/GaussianSplatRenderer.cs new file mode 100644 index 00000000..f6f44a8f --- /dev/null +++ b/MVS/3DGS-Unity/Runtime/GaussianSplatRenderer.cs @@ -0,0 +1,1070 @@ +// SPDX-License-Identifier: MIT + +using System; +using System.Collections.Generic; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; +using Unity.Mathematics; +using Unity.Profiling; +using Unity.Profiling.LowLevel; +using UnityEngine; +using UnityEngine.Experimental.Rendering; +using UnityEngine.Rendering; +using UnityEngine.XR; + +namespace GaussianSplatting.Runtime +{ + class GaussianSplatRenderSystem + { + // ReSharper disable MemberCanBePrivate.Global - used by HDRP/URP features that are not always compiled + internal static readonly ProfilerMarker s_ProfDraw = new(ProfilerCategory.Render, "GaussianSplat.Draw", MarkerFlags.SampleGPU); + internal static readonly ProfilerMarker s_ProfCompose = new(ProfilerCategory.Render, "GaussianSplat.Compose", MarkerFlags.SampleGPU); + internal static readonly ProfilerMarker s_ProfCalcView = new(ProfilerCategory.Render, "GaussianSplat.CalcView", MarkerFlags.SampleGPU); + // ReSharper restore MemberCanBePrivate.Global + + public static GaussianSplatRenderSystem instance => ms_Instance ??= new GaussianSplatRenderSystem(); + static GaussianSplatRenderSystem ms_Instance; + + readonly Dictionary m_Splats = new(); + readonly HashSet m_CameraCommandBuffersDone = new(); + readonly List<(GaussianSplatRenderer, MaterialPropertyBlock)> m_ActiveSplats = new(); + + CommandBuffer m_CommandBuffer; + + public void RegisterSplat(GaussianSplatRenderer r) + { + if (m_Splats.Count == 0) + { + if (GraphicsSettings.currentRenderPipeline == null) + Camera.onPreCull += OnPreCullCamera; + } + + m_Splats.Add(r, new MaterialPropertyBlock()); + } + + public void UnregisterSplat(GaussianSplatRenderer r) + { + if (!m_Splats.ContainsKey(r)) + return; + m_Splats.Remove(r); + if (m_Splats.Count == 0) + { + if (m_CameraCommandBuffersDone != null) + { + if (m_CommandBuffer != null) + { + foreach (var cam in m_CameraCommandBuffersDone) + { + if (cam) + cam.RemoveCommandBuffer(CameraEvent.BeforeForwardAlpha, m_CommandBuffer); + } + } + m_CameraCommandBuffersDone.Clear(); + } + + m_ActiveSplats.Clear(); + m_CommandBuffer?.Dispose(); + m_CommandBuffer = null; + Camera.onPreCull -= OnPreCullCamera; + } + } + + // ReSharper disable once MemberCanBePrivate.Global - used by HDRP/URP features that are not always compiled + public bool GatherSplatsForCamera(Camera cam) + { + if (cam.cameraType == CameraType.Preview) + return false; + // gather all active & valid splat objects + m_ActiveSplats.Clear(); + foreach (var kvp in m_Splats) + { + var gs = kvp.Key; + if (gs == null || !gs.isActiveAndEnabled || !gs.HasValidAsset || !gs.HasValidRenderSetup) + continue; + m_ActiveSplats.Add((kvp.Key, kvp.Value)); + } + if (m_ActiveSplats.Count == 0) + return false; + + // sort them by depth from camera + var camTr = cam.transform; + m_ActiveSplats.Sort((a, b) => + { + var trA = a.Item1.transform; + var trB = b.Item1.transform; + var posA = camTr.InverseTransformPoint(trA.position); + var posB = camTr.InverseTransformPoint(trB.position); + return posA.z.CompareTo(posB.z); + }); + + return true; + } + + // ReSharper disable once MemberCanBePrivate.Global - used by HDRP/URP features that are not always compiled + public Material SortAndRenderSplats(Camera cam, CommandBuffer cmb) + { + Material matComposite = null; + foreach (var kvp in m_ActiveSplats) + { + var gs = kvp.Item1; + gs.EnsureMaterials(); + matComposite = gs.m_MatComposite; + var mpb = kvp.Item2; + + // sort + var matrix = gs.transform.localToWorldMatrix; + if (gs.m_FrameCounter % gs.m_SortNthFrame == 0) + gs.SortPoints(cmb, cam, matrix); + ++gs.m_FrameCounter; + + // cache view + kvp.Item2.Clear(); + Material displayMat = gs.m_RenderMode switch + { + GaussianSplatRenderer.RenderMode.DebugPoints => gs.m_MatDebugPoints, + GaussianSplatRenderer.RenderMode.DebugPointIndices => gs.m_MatDebugPoints, + GaussianSplatRenderer.RenderMode.DebugBoxes => gs.m_MatDebugBoxes, + GaussianSplatRenderer.RenderMode.DebugChunkBounds => gs.m_MatDebugBoxes, + _ => gs.m_MatSplats + }; + if (displayMat == null) + continue; + + gs.SetAssetDataOnMaterial(mpb); + mpb.SetBuffer(GaussianSplatRenderer.Props.SplatChunks, gs.m_GpuChunks); + + mpb.SetBuffer(GaussianSplatRenderer.Props.SplatViewData, gs.m_GpuView); + + mpb.SetBuffer(GaussianSplatRenderer.Props.OrderBuffer, gs.m_GpuSortKeys); + mpb.SetFloat(GaussianSplatRenderer.Props.SplatScale, gs.m_SplatScale); + mpb.SetFloat(GaussianSplatRenderer.Props.SplatOpacityScale, gs.m_OpacityScale); + mpb.SetFloat(GaussianSplatRenderer.Props.SplatSize, gs.m_PointDisplaySize); + mpb.SetInteger(GaussianSplatRenderer.Props.SHOrder, gs.m_SHOrder); + mpb.SetInteger(GaussianSplatRenderer.Props.SHOnly, gs.m_SHOnly ? 1 : 0); + mpb.SetInteger(GaussianSplatRenderer.Props.DisplayIndex, gs.m_RenderMode == GaussianSplatRenderer.RenderMode.DebugPointIndices ? 1 : 0); + mpb.SetInteger(GaussianSplatRenderer.Props.DisplayChunks, gs.m_RenderMode == GaussianSplatRenderer.RenderMode.DebugChunkBounds ? 1 : 0); + + cmb.BeginSample(s_ProfCalcView); + gs.CalcViewData(cmb, cam, matrix); + cmb.EndSample(s_ProfCalcView); + + // draw + int indexCount = 6; + int instanceCount = gs.splatCount; + MeshTopology topology = MeshTopology.Triangles; + if (gs.m_RenderMode is GaussianSplatRenderer.RenderMode.DebugBoxes or GaussianSplatRenderer.RenderMode.DebugChunkBounds) + indexCount = 36; + if (gs.m_RenderMode == GaussianSplatRenderer.RenderMode.DebugChunkBounds) + instanceCount = gs.m_GpuChunksValid ? gs.m_GpuChunks.count : 0; + + cmb.BeginSample(s_ProfDraw); + cmb.DrawProcedural(gs.m_GpuIndexBuffer, matrix, displayMat, 0, topology, indexCount, instanceCount, mpb); + cmb.EndSample(s_ProfDraw); + } + return matComposite; + } + + // ReSharper disable once MemberCanBePrivate.Global - used by HDRP/URP features that are not always compiled + // ReSharper disable once UnusedMethodReturnValue.Global - used by HDRP/URP features that are not always compiled + public CommandBuffer InitialClearCmdBuffer(Camera cam) + { + m_CommandBuffer ??= new CommandBuffer {name = "RenderGaussianSplats"}; + if (GraphicsSettings.currentRenderPipeline == null && cam != null && !m_CameraCommandBuffersDone.Contains(cam)) + { + cam.AddCommandBuffer(CameraEvent.BeforeForwardAlpha, m_CommandBuffer); + m_CameraCommandBuffersDone.Add(cam); + } + + // get render target for all splats + m_CommandBuffer.Clear(); + return m_CommandBuffer; + } + + void OnPreCullCamera(Camera cam) + { + if (!GatherSplatsForCamera(cam)) + return; + + InitialClearCmdBuffer(cam); + + m_CommandBuffer.GetTemporaryRT(GaussianSplatRenderer.Props.GaussianSplatRT, -1, -1, 0, FilterMode.Point, GraphicsFormat.R16G16B16A16_SFloat); + m_CommandBuffer.SetRenderTarget(GaussianSplatRenderer.Props.GaussianSplatRT, BuiltinRenderTextureType.CurrentActive); + m_CommandBuffer.ClearRenderTarget(RTClearFlags.Color, new Color(0, 0, 0, 0), 0, 0); + + // add sorting, view calc and drawing commands for each splat object + Material matComposite = SortAndRenderSplats(cam, m_CommandBuffer); + + // compose + m_CommandBuffer.BeginSample(s_ProfCompose); + m_CommandBuffer.SetRenderTarget(BuiltinRenderTextureType.CameraTarget); + m_CommandBuffer.DrawProcedural(Matrix4x4.identity, matComposite, 0, MeshTopology.Triangles, 3, 1); + m_CommandBuffer.EndSample(s_ProfCompose); + m_CommandBuffer.ReleaseTemporaryRT(GaussianSplatRenderer.Props.GaussianSplatRT); + } + } + + //[ExecuteInEditMode] + public class GaussianSplatRenderer : MonoBehaviour + { + public enum RenderMode + { + Splats, + DebugPoints, + DebugPointIndices, + DebugBoxes, + DebugChunkBounds, + } + public GaussianSplatAsset m_Asset; + + [Range(0.1f, 2.0f)] [Tooltip("Additional scaling factor for the splats")] + public float m_SplatScale = 1.0f; + [Range(0.05f, 20.0f)] + [Tooltip("Additional scaling factor for opacity")] + public float m_OpacityScale = 1.0f; + [Range(0, 3)] [Tooltip("Spherical Harmonics order to use")] + public int m_SHOrder = 3; + [Tooltip("Show only Spherical Harmonics contribution, using gray color")] + public bool m_SHOnly; + [Range(1,30)] [Tooltip("Sort splats only every N frames")] + public int m_SortNthFrame = 1; + + public RenderMode m_RenderMode = RenderMode.Splats; + [Range(1.0f,15.0f)] public float m_PointDisplaySize = 3.0f; + + public GaussianCutout[] m_Cutouts; + + public Shader m_ShaderSplats; + public Shader m_ShaderComposite; + public Shader m_ShaderDebugPoints; + public Shader m_ShaderDebugBoxes; + [Tooltip("Gaussian splatting compute shader")] + public ComputeShader m_CSSplatUtilities; + + int m_SplatCount; // initially same as asset splat count, but editing can change this + GraphicsBuffer m_GpuSortDistances; + internal GraphicsBuffer m_GpuSortKeys; + GraphicsBuffer m_GpuPosData; + GraphicsBuffer m_GpuOtherData; + GraphicsBuffer m_GpuSHData; + Texture m_GpuColorData; + internal GraphicsBuffer m_GpuChunks; + internal bool m_GpuChunksValid; + internal GraphicsBuffer m_GpuView; + internal GraphicsBuffer m_GpuIndexBuffer; + + // these buffers are only for splat editing, and are lazily created + GraphicsBuffer m_GpuEditCutouts; + GraphicsBuffer m_GpuEditCountsBounds; + GraphicsBuffer m_GpuEditSelected; + GraphicsBuffer m_GpuEditDeleted; + GraphicsBuffer m_GpuEditSelectedMouseDown; // selection state at start of operation + GraphicsBuffer m_GpuEditPosMouseDown; // position state at start of operation + GraphicsBuffer m_GpuEditOtherMouseDown; // rotation/scale state at start of operation + + GpuSorting m_Sorter; + GpuSorting.Args m_SorterArgs; + + internal Material m_MatSplats; + internal Material m_MatComposite; + internal Material m_MatDebugPoints; + internal Material m_MatDebugBoxes; + + internal int m_FrameCounter; + GaussianSplatAsset m_PrevAsset; + Hash128 m_PrevHash; + + static readonly ProfilerMarker s_ProfSort = new(ProfilerCategory.Render, "GaussianSplat.Sort", MarkerFlags.SampleGPU); + + internal static class Props + { + public static readonly int SplatPos = Shader.PropertyToID("_SplatPos"); + public static readonly int SplatOther = Shader.PropertyToID("_SplatOther"); + public static readonly int SplatSH = Shader.PropertyToID("_SplatSH"); + public static readonly int SplatColor = Shader.PropertyToID("_SplatColor"); + public static readonly int SplatSelectedBits = Shader.PropertyToID("_SplatSelectedBits"); + public static readonly int SplatDeletedBits = Shader.PropertyToID("_SplatDeletedBits"); + public static readonly int SplatBitsValid = Shader.PropertyToID("_SplatBitsValid"); + public static readonly int SplatFormat = Shader.PropertyToID("_SplatFormat"); + public static readonly int SplatChunks = Shader.PropertyToID("_SplatChunks"); + public static readonly int SplatChunkCount = Shader.PropertyToID("_SplatChunkCount"); + public static readonly int SplatViewData = Shader.PropertyToID("_SplatViewData"); + public static readonly int OrderBuffer = Shader.PropertyToID("_OrderBuffer"); + public static readonly int SplatScale = Shader.PropertyToID("_SplatScale"); + public static readonly int SplatOpacityScale = Shader.PropertyToID("_SplatOpacityScale"); + public static readonly int SplatSize = Shader.PropertyToID("_SplatSize"); + public static readonly int SplatCount = Shader.PropertyToID("_SplatCount"); + public static readonly int SHOrder = Shader.PropertyToID("_SHOrder"); + public static readonly int SHOnly = Shader.PropertyToID("_SHOnly"); + public static readonly int DisplayIndex = Shader.PropertyToID("_DisplayIndex"); + public static readonly int DisplayChunks = Shader.PropertyToID("_DisplayChunks"); + public static readonly int GaussianSplatRT = Shader.PropertyToID("_GaussianSplatRT"); + public static readonly int SplatSortKeys = Shader.PropertyToID("_SplatSortKeys"); + public static readonly int SplatSortDistances = Shader.PropertyToID("_SplatSortDistances"); + public static readonly int SrcBuffer = Shader.PropertyToID("_SrcBuffer"); + public static readonly int DstBuffer = Shader.PropertyToID("_DstBuffer"); + public static readonly int BufferSize = Shader.PropertyToID("_BufferSize"); + public static readonly int MatrixMV = Shader.PropertyToID("_MatrixMV"); + public static readonly int MatrixObjectToWorld = Shader.PropertyToID("_MatrixObjectToWorld"); + public static readonly int MatrixWorldToObject = Shader.PropertyToID("_MatrixWorldToObject"); + public static readonly int VecScreenParams = Shader.PropertyToID("_VecScreenParams"); + public static readonly int VecWorldSpaceCameraPos = Shader.PropertyToID("_VecWorldSpaceCameraPos"); + public static readonly int SelectionCenter = Shader.PropertyToID("_SelectionCenter"); + public static readonly int SelectionDelta = Shader.PropertyToID("_SelectionDelta"); + public static readonly int SelectionDeltaRot = Shader.PropertyToID("_SelectionDeltaRot"); + public static readonly int SplatCutoutsCount = Shader.PropertyToID("_SplatCutoutsCount"); + public static readonly int SplatCutouts = Shader.PropertyToID("_SplatCutouts"); + public static readonly int SelectionMode = Shader.PropertyToID("_SelectionMode"); + public static readonly int SplatPosMouseDown = Shader.PropertyToID("_SplatPosMouseDown"); + public static readonly int SplatOtherMouseDown = Shader.PropertyToID("_SplatOtherMouseDown"); + } + + [field: NonSerialized] public bool editModified { get; private set; } + [field: NonSerialized] public uint editSelectedSplats { get; private set; } + [field: NonSerialized] public uint editDeletedSplats { get; private set; } + [field: NonSerialized] public uint editCutSplats { get; private set; } + [field: NonSerialized] public Bounds editSelectedBounds { get; private set; } + + public GaussianSplatAsset asset => m_Asset; + public int splatCount => m_SplatCount; + + enum KernelIndices + { + SetIndices, + CalcDistances, + CalcViewData, + UpdateEditData, + InitEditData, + ClearBuffer, + InvertSelection, + SelectAll, + OrBuffers, + SelectionUpdate, + TranslateSelection, + RotateSelection, + ScaleSelection, + ExportData, + CopySplats, + } + + public bool HasValidAsset => + m_Asset != null && + m_Asset.splatCount > 0 && + m_Asset.formatVersion == GaussianSplatAsset.kCurrentVersion && + m_Asset.posData != null && + m_Asset.otherData != null && + m_Asset.shData != null && + m_Asset.colorData != null; + public bool HasValidRenderSetup => m_GpuPosData != null && m_GpuOtherData != null && m_GpuChunks != null; + + const int kGpuViewDataSize = 40; + + void CreateResourcesForAsset() + { + if (!HasValidAsset) + return; + + m_SplatCount = asset.splatCount; + m_GpuPosData = new GraphicsBuffer(GraphicsBuffer.Target.Raw | GraphicsBuffer.Target.CopySource, (int) (asset.posData.dataSize / 4), 4) { name = "GaussianPosData" }; + m_GpuPosData.SetData(asset.posData.GetData()); + m_GpuOtherData = new GraphicsBuffer(GraphicsBuffer.Target.Raw | GraphicsBuffer.Target.CopySource, (int) (asset.otherData.dataSize / 4), 4) { name = "GaussianOtherData" }; + m_GpuOtherData.SetData(asset.otherData.GetData()); + m_GpuSHData = new GraphicsBuffer(GraphicsBuffer.Target.Raw, (int) (asset.shData.dataSize / 4), 4) { name = "GaussianSHData" }; + m_GpuSHData.SetData(asset.shData.GetData()); + var (texWidth, texHeight) = GaussianSplatAsset.CalcTextureSize(asset.splatCount); + var texFormat = GaussianSplatAsset.ColorFormatToGraphics(asset.colorFormat); + var tex = new Texture2D(texWidth, texHeight, texFormat, TextureCreationFlags.DontInitializePixels | TextureCreationFlags.IgnoreMipmapLimit | TextureCreationFlags.DontUploadUponCreate) { name = "GaussianColorData" }; + tex.SetPixelData(asset.colorData.GetData(), 0); + tex.Apply(false, true); + m_GpuColorData = tex; + if (asset.chunkData != null && asset.chunkData.dataSize != 0) + { + m_GpuChunks = new GraphicsBuffer(GraphicsBuffer.Target.Structured, + (int) (asset.chunkData.dataSize / UnsafeUtility.SizeOf()), + UnsafeUtility.SizeOf()) {name = "GaussianChunkData"}; + m_GpuChunks.SetData(asset.chunkData.GetData()); + m_GpuChunksValid = true; + } + else + { + // just a dummy chunk buffer + m_GpuChunks = new GraphicsBuffer(GraphicsBuffer.Target.Structured, 1, + UnsafeUtility.SizeOf()) {name = "GaussianChunkData"}; + m_GpuChunksValid = false; + } + + m_GpuView = new GraphicsBuffer(GraphicsBuffer.Target.Structured, m_Asset.splatCount, kGpuViewDataSize); + m_GpuIndexBuffer = new GraphicsBuffer(GraphicsBuffer.Target.Index, 36, 2); + // cube indices, most often we use only the first quad + m_GpuIndexBuffer.SetData(new ushort[] + { + 0, 1, 2, 1, 3, 2, + 4, 6, 5, 5, 6, 7, + 0, 2, 4, 4, 2, 6, + 1, 5, 3, 5, 7, 3, + 0, 4, 1, 4, 5, 1, + 2, 3, 6, 3, 7, 6 + }); + + InitSortBuffers(splatCount); + } + + void InitSortBuffers(int count) + { + m_GpuSortDistances?.Dispose(); + m_GpuSortKeys?.Dispose(); + m_SorterArgs.resources.Dispose(); + + EnsureSorterAndRegister(); + + m_GpuSortDistances = new GraphicsBuffer(GraphicsBuffer.Target.Structured, count, 4) { name = "GaussianSplatSortDistances" }; + m_GpuSortKeys = new GraphicsBuffer(GraphicsBuffer.Target.Structured, count, 4) { name = "GaussianSplatSortIndices" }; + + // init keys buffer to splat indices + m_CSSplatUtilities.SetBuffer((int)KernelIndices.SetIndices, Props.SplatSortKeys, m_GpuSortKeys); + m_CSSplatUtilities.SetInt(Props.SplatCount, m_GpuSortDistances.count); + m_CSSplatUtilities.GetKernelThreadGroupSizes((int)KernelIndices.SetIndices, out uint gsX, out _, out _); + m_CSSplatUtilities.Dispatch((int)KernelIndices.SetIndices, (m_GpuSortDistances.count + (int)gsX - 1)/(int)gsX, 1, 1); + + m_SorterArgs.inputKeys = m_GpuSortDistances; + m_SorterArgs.inputValues = m_GpuSortKeys; + m_SorterArgs.count = (uint)count; + if (m_Sorter.Valid) + m_SorterArgs.resources = GpuSorting.SupportResources.Load((uint)count); + } + + bool resourcesAreSetUp => m_ShaderSplats != null && m_ShaderComposite != null && m_ShaderDebugPoints != null && + m_ShaderDebugBoxes != null && m_CSSplatUtilities != null && SystemInfo.supportsComputeShaders; + + public void EnsureMaterials() + { + if (m_MatSplats == null && resourcesAreSetUp) + { + m_MatSplats = new Material(m_ShaderSplats) {name = "GaussianSplats"}; + m_MatComposite = new Material(m_ShaderComposite) {name = "GaussianClearDstAlpha"}; + m_MatDebugPoints = new Material(m_ShaderDebugPoints) {name = "GaussianDebugPoints"}; + m_MatDebugBoxes = new Material(m_ShaderDebugBoxes) {name = "GaussianDebugBoxes"}; + } + } + + public void EnsureSorterAndRegister() + { + if (m_Sorter == null && resourcesAreSetUp) + { + m_Sorter = new GpuSorting(m_CSSplatUtilities); + GaussianSplatRenderSystem.instance.RegisterSplat(this); + } + } + + public void OnEnable() + { + m_FrameCounter = 0; + if (!resourcesAreSetUp) + return; + + EnsureMaterials(); + EnsureSorterAndRegister(); + + CreateResourcesForAsset(); + } + + void SetAssetDataOnCS(CommandBuffer cmb, KernelIndices kernel) + { + ComputeShader cs = m_CSSplatUtilities; + int kernelIndex = (int) kernel; + cmb.SetComputeBufferParam(cs, kernelIndex, Props.SplatPos, m_GpuPosData); + cmb.SetComputeBufferParam(cs, kernelIndex, Props.SplatChunks, m_GpuChunks); + cmb.SetComputeBufferParam(cs, kernelIndex, Props.SplatOther, m_GpuOtherData); + cmb.SetComputeBufferParam(cs, kernelIndex, Props.SplatSH, m_GpuSHData); + cmb.SetComputeTextureParam(cs, kernelIndex, Props.SplatColor, m_GpuColorData); + cmb.SetComputeBufferParam(cs, kernelIndex, Props.SplatSelectedBits, m_GpuEditSelected ?? m_GpuPosData); + cmb.SetComputeBufferParam(cs, kernelIndex, Props.SplatDeletedBits, m_GpuEditDeleted ?? m_GpuPosData); + cmb.SetComputeBufferParam(cs, kernelIndex, Props.SplatViewData, m_GpuView); + cmb.SetComputeBufferParam(cs, kernelIndex, Props.OrderBuffer, m_GpuSortKeys); + + cmb.SetComputeIntParam(cs, Props.SplatBitsValid, m_GpuEditSelected != null && m_GpuEditDeleted != null ? 1 : 0); + uint format = (uint)m_Asset.posFormat | ((uint)m_Asset.scaleFormat << 8) | ((uint)m_Asset.shFormat << 16); + cmb.SetComputeIntParam(cs, Props.SplatFormat, (int)format); + cmb.SetComputeIntParam(cs, Props.SplatCount, m_SplatCount); + cmb.SetComputeIntParam(cs, Props.SplatChunkCount, m_GpuChunksValid ? m_GpuChunks.count : 0); + + UpdateCutoutsBuffer(); + cmb.SetComputeIntParam(cs, Props.SplatCutoutsCount, m_Cutouts?.Length ?? 0); + cmb.SetComputeBufferParam(cs, kernelIndex, Props.SplatCutouts, m_GpuEditCutouts); + } + + internal void SetAssetDataOnMaterial(MaterialPropertyBlock mat) + { + mat.SetBuffer(Props.SplatPos, m_GpuPosData); + mat.SetBuffer(Props.SplatOther, m_GpuOtherData); + mat.SetBuffer(Props.SplatSH, m_GpuSHData); + mat.SetTexture(Props.SplatColor, m_GpuColorData); + mat.SetBuffer(Props.SplatSelectedBits, m_GpuEditSelected ?? m_GpuPosData); + mat.SetBuffer(Props.SplatDeletedBits, m_GpuEditDeleted ?? m_GpuPosData); + mat.SetInt(Props.SplatBitsValid, m_GpuEditSelected != null && m_GpuEditDeleted != null ? 1 : 0); + uint format = (uint)m_Asset.posFormat | ((uint)m_Asset.scaleFormat << 8) | ((uint)m_Asset.shFormat << 16); + mat.SetInteger(Props.SplatFormat, (int)format); + mat.SetInteger(Props.SplatCount, m_SplatCount); + mat.SetInteger(Props.SplatChunkCount, m_GpuChunksValid ? m_GpuChunks.count : 0); + } + + static void DisposeBuffer(ref GraphicsBuffer buf) + { + buf?.Dispose(); + buf = null; + } + + void DisposeResourcesForAsset() + { + DestroyImmediate(m_GpuColorData); + + DisposeBuffer(ref m_GpuPosData); + DisposeBuffer(ref m_GpuOtherData); + DisposeBuffer(ref m_GpuSHData); + DisposeBuffer(ref m_GpuChunks); + + DisposeBuffer(ref m_GpuView); + DisposeBuffer(ref m_GpuIndexBuffer); + DisposeBuffer(ref m_GpuSortDistances); + DisposeBuffer(ref m_GpuSortKeys); + + DisposeBuffer(ref m_GpuEditSelectedMouseDown); + DisposeBuffer(ref m_GpuEditPosMouseDown); + DisposeBuffer(ref m_GpuEditOtherMouseDown); + DisposeBuffer(ref m_GpuEditSelected); + DisposeBuffer(ref m_GpuEditDeleted); + DisposeBuffer(ref m_GpuEditCountsBounds); + DisposeBuffer(ref m_GpuEditCutouts); + + m_SorterArgs.resources.Dispose(); + + m_SplatCount = 0; + m_GpuChunksValid = false; + + editSelectedSplats = 0; + editDeletedSplats = 0; + editCutSplats = 0; + editModified = false; + editSelectedBounds = default; + } + + public void OnDisable() + { + DisposeResourcesForAsset(); + GaussianSplatRenderSystem.instance.UnregisterSplat(this); + + DestroyImmediate(m_MatSplats); + DestroyImmediate(m_MatComposite); + DestroyImmediate(m_MatDebugPoints); + DestroyImmediate(m_MatDebugBoxes); + } + + internal void CalcViewData(CommandBuffer cmb, Camera cam, Matrix4x4 matrix) + { + if (cam.cameraType == CameraType.Preview) + return; + + var tr = transform; + + Matrix4x4 matView = cam.worldToCameraMatrix; + Matrix4x4 matProj = GL.GetGPUProjectionMatrix(cam.projectionMatrix, true); + Matrix4x4 matO2W = tr.localToWorldMatrix; + Matrix4x4 matW2O = tr.worldToLocalMatrix; + int screenW = cam.pixelWidth, screenH = cam.pixelHeight; + int eyeW = XRSettings.eyeTextureWidth, eyeH = XRSettings.eyeTextureHeight; + Vector4 screenPar = new Vector4(eyeW != 0 ? eyeW : screenW, eyeH != 0 ? eyeH : screenH, 0, 0); + Vector4 camPos = cam.transform.position; + + // calculate view dependent data for each splat + SetAssetDataOnCS(cmb, KernelIndices.CalcViewData); + + cmb.SetComputeMatrixParam(m_CSSplatUtilities, Props.MatrixMV, matView * matO2W); + cmb.SetComputeMatrixParam(m_CSSplatUtilities, Props.MatrixObjectToWorld, matO2W); + cmb.SetComputeMatrixParam(m_CSSplatUtilities, Props.MatrixWorldToObject, matW2O); + + cmb.SetComputeVectorParam(m_CSSplatUtilities, Props.VecScreenParams, screenPar); + cmb.SetComputeVectorParam(m_CSSplatUtilities, Props.VecWorldSpaceCameraPos, camPos); + cmb.SetComputeFloatParam(m_CSSplatUtilities, Props.SplatScale, m_SplatScale); + cmb.SetComputeFloatParam(m_CSSplatUtilities, Props.SplatOpacityScale, m_OpacityScale); + cmb.SetComputeIntParam(m_CSSplatUtilities, Props.SHOrder, m_SHOrder); + cmb.SetComputeIntParam(m_CSSplatUtilities, Props.SHOnly, m_SHOnly ? 1 : 0); + + m_CSSplatUtilities.GetKernelThreadGroupSizes((int)KernelIndices.CalcViewData, out uint gsX, out _, out _); + cmb.DispatchCompute(m_CSSplatUtilities, (int)KernelIndices.CalcViewData, (m_GpuView.count + (int)gsX - 1)/(int)gsX, 1, 1); + } + + internal void SortPoints(CommandBuffer cmd, Camera cam, Matrix4x4 matrix) + { + if (cam.cameraType == CameraType.Preview) + return; + + Matrix4x4 worldToCamMatrix = cam.worldToCameraMatrix; + worldToCamMatrix.m20 *= -1; + worldToCamMatrix.m21 *= -1; + worldToCamMatrix.m22 *= -1; + + // calculate distance to the camera for each splat + cmd.BeginSample(s_ProfSort); + cmd.SetComputeBufferParam(m_CSSplatUtilities, (int)KernelIndices.CalcDistances, Props.SplatSortDistances, m_GpuSortDistances); + cmd.SetComputeBufferParam(m_CSSplatUtilities, (int)KernelIndices.CalcDistances, Props.SplatSortKeys, m_GpuSortKeys); + cmd.SetComputeBufferParam(m_CSSplatUtilities, (int)KernelIndices.CalcDistances, Props.SplatChunks, m_GpuChunks); + cmd.SetComputeBufferParam(m_CSSplatUtilities, (int)KernelIndices.CalcDistances, Props.SplatPos, m_GpuPosData); + cmd.SetComputeIntParam(m_CSSplatUtilities, Props.SplatFormat, (int)m_Asset.posFormat); + cmd.SetComputeMatrixParam(m_CSSplatUtilities, Props.MatrixMV, worldToCamMatrix * matrix); + cmd.SetComputeIntParam(m_CSSplatUtilities, Props.SplatCount, m_SplatCount); + cmd.SetComputeIntParam(m_CSSplatUtilities, Props.SplatChunkCount, m_GpuChunksValid ? m_GpuChunks.count : 0); + m_CSSplatUtilities.GetKernelThreadGroupSizes((int)KernelIndices.CalcDistances, out uint gsX, out _, out _); + cmd.DispatchCompute(m_CSSplatUtilities, (int)KernelIndices.CalcDistances, (m_GpuSortDistances.count + (int)gsX - 1)/(int)gsX, 1, 1); + + // sort the splats + EnsureSorterAndRegister(); + m_Sorter.Dispatch(cmd, m_SorterArgs); + cmd.EndSample(s_ProfSort); + } + + public void Update() + { + var curHash = m_Asset ? m_Asset.dataHash : new Hash128(); + if (m_PrevAsset != m_Asset || m_PrevHash != curHash) + { + m_PrevAsset = m_Asset; + m_PrevHash = curHash; + if (resourcesAreSetUp) + { + DisposeResourcesForAsset(); + CreateResourcesForAsset(); + } + else + { + Debug.LogError($"{nameof(GaussianSplatRenderer)} component is not set up correctly (Resource references are missing), or platform does not support compute shaders"); + } + } + } + + public void ActivateCamera(int index) + { + Camera mainCam = Camera.main; + if (!mainCam) + return; + if (!m_Asset || m_Asset.cameras == null) + return; + + var selfTr = transform; + var camTr = mainCam.transform; + var prevParent = camTr.parent; + var cam = m_Asset.cameras[index]; + camTr.parent = selfTr; + camTr.localPosition = cam.pos; + camTr.localRotation = Quaternion.LookRotation(cam.axisZ, cam.axisY); + camTr.parent = prevParent; + camTr.localScale = Vector3.one; +#if UNITY_EDITOR + UnityEditor.EditorUtility.SetDirty(camTr); +#endif + } + + void ClearGraphicsBuffer(GraphicsBuffer buf) + { + m_CSSplatUtilities.SetBuffer((int)KernelIndices.ClearBuffer, Props.DstBuffer, buf); + m_CSSplatUtilities.SetInt(Props.BufferSize, buf.count); + m_CSSplatUtilities.GetKernelThreadGroupSizes((int)KernelIndices.ClearBuffer, out uint gsX, out _, out _); + m_CSSplatUtilities.Dispatch((int)KernelIndices.ClearBuffer, (int)((buf.count+gsX-1)/gsX), 1, 1); + } + + void UnionGraphicsBuffers(GraphicsBuffer dst, GraphicsBuffer src) + { + m_CSSplatUtilities.SetBuffer((int)KernelIndices.OrBuffers, Props.SrcBuffer, src); + m_CSSplatUtilities.SetBuffer((int)KernelIndices.OrBuffers, Props.DstBuffer, dst); + m_CSSplatUtilities.SetInt(Props.BufferSize, dst.count); + m_CSSplatUtilities.GetKernelThreadGroupSizes((int)KernelIndices.OrBuffers, out uint gsX, out _, out _); + m_CSSplatUtilities.Dispatch((int)KernelIndices.OrBuffers, (int)((dst.count+gsX-1)/gsX), 1, 1); + } + + static float SortableUintToFloat(uint v) + { + uint mask = ((v >> 31) - 1) | 0x80000000u; + return math.asfloat(v ^ mask); + } + + public void UpdateEditCountsAndBounds() + { + if (m_GpuEditSelected == null) + { + editSelectedSplats = 0; + editDeletedSplats = 0; + editCutSplats = 0; + editModified = false; + editSelectedBounds = default; + return; + } + + m_CSSplatUtilities.SetBuffer((int)KernelIndices.InitEditData, Props.DstBuffer, m_GpuEditCountsBounds); + m_CSSplatUtilities.Dispatch((int)KernelIndices.InitEditData, 1, 1, 1); + + using CommandBuffer cmb = new CommandBuffer(); + SetAssetDataOnCS(cmb, KernelIndices.UpdateEditData); + cmb.SetComputeBufferParam(m_CSSplatUtilities, (int)KernelIndices.UpdateEditData, Props.DstBuffer, m_GpuEditCountsBounds); + cmb.SetComputeIntParam(m_CSSplatUtilities, Props.BufferSize, m_GpuEditSelected.count); + m_CSSplatUtilities.GetKernelThreadGroupSizes((int)KernelIndices.UpdateEditData, out uint gsX, out _, out _); + cmb.DispatchCompute(m_CSSplatUtilities, (int)KernelIndices.UpdateEditData, (int)((m_GpuEditSelected.count+gsX-1)/gsX), 1, 1); + Graphics.ExecuteCommandBuffer(cmb); + + uint[] res = new uint[m_GpuEditCountsBounds.count]; + m_GpuEditCountsBounds.GetData(res); + editSelectedSplats = res[0]; + editDeletedSplats = res[1]; + editCutSplats = res[2]; + Vector3 min = new Vector3(SortableUintToFloat(res[3]), SortableUintToFloat(res[4]), SortableUintToFloat(res[5])); + Vector3 max = new Vector3(SortableUintToFloat(res[6]), SortableUintToFloat(res[7]), SortableUintToFloat(res[8])); + Bounds bounds = default; + bounds.SetMinMax(min, max); + if (bounds.extents.sqrMagnitude < 0.01) + bounds.extents = new Vector3(0.1f,0.1f,0.1f); + editSelectedBounds = bounds; + } + + void UpdateCutoutsBuffer() + { + int bufferSize = m_Cutouts?.Length ?? 0; + if (bufferSize == 0) + bufferSize = 1; + if (m_GpuEditCutouts == null || m_GpuEditCutouts.count != bufferSize) + { + m_GpuEditCutouts?.Dispose(); + m_GpuEditCutouts = new GraphicsBuffer(GraphicsBuffer.Target.Structured, bufferSize, UnsafeUtility.SizeOf()) { name = "GaussianCutouts" }; + } + + NativeArray data = new(bufferSize, Allocator.Temp); + if (m_Cutouts != null) + { + var matrix = transform.localToWorldMatrix; + for (var i = 0; i < m_Cutouts.Length; ++i) + { + data[i] = GaussianCutout.GetShaderData(m_Cutouts[i], matrix); + } + } + + m_GpuEditCutouts.SetData(data); + data.Dispose(); + } + + bool EnsureEditingBuffers() + { + if (!HasValidAsset || !HasValidRenderSetup) + return false; + + if (m_GpuEditSelected == null) + { + var target = GraphicsBuffer.Target.Raw | GraphicsBuffer.Target.CopySource | + GraphicsBuffer.Target.CopyDestination; + var size = (m_SplatCount + 31) / 32; + m_GpuEditSelected = new GraphicsBuffer(target, size, 4) {name = "GaussianSplatSelected"}; + m_GpuEditSelectedMouseDown = new GraphicsBuffer(target, size, 4) {name = "GaussianSplatSelectedInit"}; + m_GpuEditDeleted = new GraphicsBuffer(target, size, 4) {name = "GaussianSplatDeleted"}; + m_GpuEditCountsBounds = new GraphicsBuffer(target, 3 + 6, 4) {name = "GaussianSplatEditData"}; // selected count, deleted bound, cut count, float3 min, float3 max + ClearGraphicsBuffer(m_GpuEditSelected); + ClearGraphicsBuffer(m_GpuEditSelectedMouseDown); + ClearGraphicsBuffer(m_GpuEditDeleted); + } + return m_GpuEditSelected != null; + } + + public void EditStoreSelectionMouseDown() + { + if (!EnsureEditingBuffers()) return; + Graphics.CopyBuffer(m_GpuEditSelected, m_GpuEditSelectedMouseDown); + } + + public void EditStorePosMouseDown() + { + if (m_GpuEditPosMouseDown == null) + { + m_GpuEditPosMouseDown = new GraphicsBuffer(m_GpuPosData.target | GraphicsBuffer.Target.CopyDestination, m_GpuPosData.count, m_GpuPosData.stride) {name = "GaussianSplatEditPosMouseDown"}; + } + Graphics.CopyBuffer(m_GpuPosData, m_GpuEditPosMouseDown); + } + public void EditStoreOtherMouseDown() + { + if (m_GpuEditOtherMouseDown == null) + { + m_GpuEditOtherMouseDown = new GraphicsBuffer(m_GpuOtherData.target | GraphicsBuffer.Target.CopyDestination, m_GpuOtherData.count, m_GpuOtherData.stride) {name = "GaussianSplatEditOtherMouseDown"}; + } + Graphics.CopyBuffer(m_GpuOtherData, m_GpuEditOtherMouseDown); + } + + public void EditUpdateSelection(Vector2 rectMin, Vector2 rectMax, Camera cam, bool subtract) + { + if (!EnsureEditingBuffers()) return; + + Graphics.CopyBuffer(m_GpuEditSelectedMouseDown, m_GpuEditSelected); + + var tr = transform; + Matrix4x4 matView = cam.worldToCameraMatrix; + Matrix4x4 matProj = GL.GetGPUProjectionMatrix(cam.projectionMatrix, true); + Matrix4x4 matO2W = tr.localToWorldMatrix; + Matrix4x4 matW2O = tr.worldToLocalMatrix; + int screenW = cam.pixelWidth, screenH = cam.pixelHeight; + Vector4 screenPar = new Vector4(screenW, screenH, 0, 0); + Vector4 camPos = cam.transform.position; + + using var cmb = new CommandBuffer { name = "SplatSelectionUpdate" }; + SetAssetDataOnCS(cmb, KernelIndices.SelectionUpdate); + + cmb.SetComputeMatrixParam(m_CSSplatUtilities, Props.MatrixMV, matView * matO2W); + cmb.SetComputeMatrixParam(m_CSSplatUtilities, Props.MatrixObjectToWorld, matO2W); + cmb.SetComputeMatrixParam(m_CSSplatUtilities, Props.MatrixWorldToObject, matW2O); + + cmb.SetComputeVectorParam(m_CSSplatUtilities, Props.VecScreenParams, screenPar); + cmb.SetComputeVectorParam(m_CSSplatUtilities, Props.VecWorldSpaceCameraPos, camPos); + + cmb.SetComputeVectorParam(m_CSSplatUtilities, "_SelectionRect", new Vector4(rectMin.x, rectMax.y, rectMax.x, rectMin.y)); + cmb.SetComputeIntParam(m_CSSplatUtilities, Props.SelectionMode, subtract ? 0 : 1); + + DispatchUtilsAndExecute(cmb, KernelIndices.SelectionUpdate, m_SplatCount); + UpdateEditCountsAndBounds(); + } + + public void EditTranslateSelection(Vector3 localSpacePosDelta) + { + if (!EnsureEditingBuffers()) return; + + using var cmb = new CommandBuffer { name = "SplatTranslateSelection" }; + SetAssetDataOnCS(cmb, KernelIndices.TranslateSelection); + + cmb.SetComputeVectorParam(m_CSSplatUtilities, Props.SelectionDelta, localSpacePosDelta); + + DispatchUtilsAndExecute(cmb, KernelIndices.TranslateSelection, m_SplatCount); + UpdateEditCountsAndBounds(); + editModified = true; + } + + public void EditRotateSelection(Vector3 localSpaceCenter, Matrix4x4 localToWorld, Matrix4x4 worldToLocal, Quaternion rotation) + { + if (!EnsureEditingBuffers()) return; + if (m_GpuEditPosMouseDown == null || m_GpuEditOtherMouseDown == null) return; // should have captured initial state + + using var cmb = new CommandBuffer { name = "SplatRotateSelection" }; + SetAssetDataOnCS(cmb, KernelIndices.RotateSelection); + + cmb.SetComputeBufferParam(m_CSSplatUtilities, (int)KernelIndices.RotateSelection, Props.SplatPosMouseDown, m_GpuEditPosMouseDown); + cmb.SetComputeBufferParam(m_CSSplatUtilities, (int)KernelIndices.RotateSelection, Props.SplatOtherMouseDown, m_GpuEditOtherMouseDown); + cmb.SetComputeVectorParam(m_CSSplatUtilities, Props.SelectionCenter, localSpaceCenter); + cmb.SetComputeMatrixParam(m_CSSplatUtilities, Props.MatrixObjectToWorld, localToWorld); + cmb.SetComputeMatrixParam(m_CSSplatUtilities, Props.MatrixWorldToObject, worldToLocal); + cmb.SetComputeVectorParam(m_CSSplatUtilities, Props.SelectionDeltaRot, new Vector4(rotation.x, rotation.y, rotation.z, rotation.w)); + + DispatchUtilsAndExecute(cmb, KernelIndices.RotateSelection, m_SplatCount); + UpdateEditCountsAndBounds(); + editModified = true; + } + + + public void EditScaleSelection(Vector3 localSpaceCenter, Matrix4x4 localToWorld, Matrix4x4 worldToLocal, Vector3 scale) + { + if (!EnsureEditingBuffers()) return; + if (m_GpuEditPosMouseDown == null) return; // should have captured initial state + + using var cmb = new CommandBuffer { name = "SplatScaleSelection" }; + SetAssetDataOnCS(cmb, KernelIndices.ScaleSelection); + + cmb.SetComputeBufferParam(m_CSSplatUtilities, (int)KernelIndices.ScaleSelection, Props.SplatPosMouseDown, m_GpuEditPosMouseDown); + cmb.SetComputeVectorParam(m_CSSplatUtilities, Props.SelectionCenter, localSpaceCenter); + cmb.SetComputeMatrixParam(m_CSSplatUtilities, Props.MatrixObjectToWorld, localToWorld); + cmb.SetComputeMatrixParam(m_CSSplatUtilities, Props.MatrixWorldToObject, worldToLocal); + cmb.SetComputeVectorParam(m_CSSplatUtilities, Props.SelectionDelta, scale); + + DispatchUtilsAndExecute(cmb, KernelIndices.ScaleSelection, m_SplatCount); + UpdateEditCountsAndBounds(); + editModified = true; + } + + public void EditDeleteSelected() + { + if (!EnsureEditingBuffers()) return; + UnionGraphicsBuffers(m_GpuEditDeleted, m_GpuEditSelected); + EditDeselectAll(); + UpdateEditCountsAndBounds(); + if (editDeletedSplats != 0) + editModified = true; + } + + public void EditSelectAll() + { + if (!EnsureEditingBuffers()) return; + using var cmb = new CommandBuffer { name = "SplatSelectAll" }; + SetAssetDataOnCS(cmb, KernelIndices.SelectAll); + cmb.SetComputeBufferParam(m_CSSplatUtilities, (int)KernelIndices.SelectAll, Props.DstBuffer, m_GpuEditSelected); + cmb.SetComputeIntParam(m_CSSplatUtilities, Props.BufferSize, m_GpuEditSelected.count); + DispatchUtilsAndExecute(cmb, KernelIndices.SelectAll, m_GpuEditSelected.count); + UpdateEditCountsAndBounds(); + } + + public void EditDeselectAll() + { + if (!EnsureEditingBuffers()) return; + ClearGraphicsBuffer(m_GpuEditSelected); + UpdateEditCountsAndBounds(); + } + + public void EditInvertSelection() + { + if (!EnsureEditingBuffers()) return; + + using var cmb = new CommandBuffer { name = "SplatInvertSelection" }; + SetAssetDataOnCS(cmb, KernelIndices.InvertSelection); + cmb.SetComputeBufferParam(m_CSSplatUtilities, (int)KernelIndices.InvertSelection, Props.DstBuffer, m_GpuEditSelected); + cmb.SetComputeIntParam(m_CSSplatUtilities, Props.BufferSize, m_GpuEditSelected.count); + DispatchUtilsAndExecute(cmb, KernelIndices.InvertSelection, m_GpuEditSelected.count); + UpdateEditCountsAndBounds(); + } + + public bool EditExportData(GraphicsBuffer dstData, bool bakeTransform) + { + if (!EnsureEditingBuffers()) return false; + + int flags = 0; + var tr = transform; + Quaternion bakeRot = tr.localRotation; + Vector3 bakeScale = tr.localScale; + + if (bakeTransform) + flags = 1; + + using var cmb = new CommandBuffer { name = "SplatExportData" }; + SetAssetDataOnCS(cmb, KernelIndices.ExportData); + cmb.SetComputeIntParam(m_CSSplatUtilities, "_ExportTransformFlags", flags); + cmb.SetComputeVectorParam(m_CSSplatUtilities, "_ExportTransformRotation", new Vector4(bakeRot.x, bakeRot.y, bakeRot.z, bakeRot.w)); + cmb.SetComputeVectorParam(m_CSSplatUtilities, "_ExportTransformScale", bakeScale); + cmb.SetComputeMatrixParam(m_CSSplatUtilities, Props.MatrixObjectToWorld, tr.localToWorldMatrix); + cmb.SetComputeBufferParam(m_CSSplatUtilities, (int)KernelIndices.ExportData, "_ExportBuffer", dstData); + + DispatchUtilsAndExecute(cmb, KernelIndices.ExportData, m_SplatCount); + return true; + } + + public void EditSetSplatCount(int newSplatCount) + { + if (newSplatCount <= 0 || newSplatCount > GaussianSplatAsset.kMaxSplats) + { + Debug.LogError($"Invalid new splat count: {newSplatCount}"); + return; + } + if (asset.chunkData != null) + { + Debug.LogError("Only splats with VeryHigh quality can be resized"); + return; + } + if (newSplatCount == splatCount) + return; + + int posStride = (int)(asset.posData.dataSize / asset.splatCount); + int otherStride = (int)(asset.otherData.dataSize / asset.splatCount); + int shStride = (int) (asset.shData.dataSize / asset.splatCount); + + // create new GPU buffers + var newPosData = new GraphicsBuffer(GraphicsBuffer.Target.Raw | GraphicsBuffer.Target.CopySource, newSplatCount * posStride / 4, 4) { name = "GaussianPosData" }; + var newOtherData = new GraphicsBuffer(GraphicsBuffer.Target.Raw | GraphicsBuffer.Target.CopySource, newSplatCount * otherStride / 4, 4) { name = "GaussianOtherData" }; + var newSHData = new GraphicsBuffer(GraphicsBuffer.Target.Raw, newSplatCount * shStride / 4, 4) { name = "GaussianSHData" }; + + // new texture is a RenderTexture so we can write to it from a compute shader + var (texWidth, texHeight) = GaussianSplatAsset.CalcTextureSize(newSplatCount); + var texFormat = GaussianSplatAsset.ColorFormatToGraphics(asset.colorFormat); + var newColorData = new RenderTexture(texWidth, texHeight, texFormat, GraphicsFormat.None) { name = "GaussianColorData", enableRandomWrite = true }; + newColorData.Create(); + + // selected/deleted buffers + var selTarget = GraphicsBuffer.Target.Raw | GraphicsBuffer.Target.CopySource | GraphicsBuffer.Target.CopyDestination; + var selSize = (newSplatCount + 31) / 32; + var newEditSelected = new GraphicsBuffer(selTarget, selSize, 4) {name = "GaussianSplatSelected"}; + var newEditSelectedMouseDown = new GraphicsBuffer(selTarget, selSize, 4) {name = "GaussianSplatSelectedInit"}; + var newEditDeleted = new GraphicsBuffer(selTarget, selSize, 4) {name = "GaussianSplatDeleted"}; + ClearGraphicsBuffer(newEditSelected); + ClearGraphicsBuffer(newEditSelectedMouseDown); + ClearGraphicsBuffer(newEditDeleted); + + var newGpuView = new GraphicsBuffer(GraphicsBuffer.Target.Structured, newSplatCount, kGpuViewDataSize); + InitSortBuffers(newSplatCount); + + // copy existing data over into new buffers + EditCopySplats(transform, newPosData, newOtherData, newSHData, newColorData, newEditDeleted, newSplatCount, 0, 0, m_SplatCount); + + // use the new buffers and the new splat count + m_GpuPosData.Dispose(); + m_GpuOtherData.Dispose(); + m_GpuSHData.Dispose(); + DestroyImmediate(m_GpuColorData); + m_GpuView.Dispose(); + + m_GpuEditSelected?.Dispose(); + m_GpuEditSelectedMouseDown?.Dispose(); + m_GpuEditDeleted?.Dispose(); + + m_GpuPosData = newPosData; + m_GpuOtherData = newOtherData; + m_GpuSHData = newSHData; + m_GpuColorData = newColorData; + m_GpuView = newGpuView; + m_GpuEditSelected = newEditSelected; + m_GpuEditSelectedMouseDown = newEditSelectedMouseDown; + m_GpuEditDeleted = newEditDeleted; + + DisposeBuffer(ref m_GpuEditPosMouseDown); + DisposeBuffer(ref m_GpuEditOtherMouseDown); + + m_SplatCount = newSplatCount; + editModified = true; + } + + public void EditCopySplatsInto(GaussianSplatRenderer dst, int copySrcStartIndex, int copyDstStartIndex, int copyCount) + { + EditCopySplats( + dst.transform, + dst.m_GpuPosData, dst.m_GpuOtherData, dst.m_GpuSHData, dst.m_GpuColorData, dst.m_GpuEditDeleted, + dst.splatCount, + copySrcStartIndex, copyDstStartIndex, copyCount); + dst.editModified = true; + } + + public void EditCopySplats( + Transform dstTransform, + GraphicsBuffer dstPos, GraphicsBuffer dstOther, GraphicsBuffer dstSH, Texture dstColor, + GraphicsBuffer dstEditDeleted, + int dstSize, + int copySrcStartIndex, int copyDstStartIndex, int copyCount) + { + if (!EnsureEditingBuffers()) return; + + Matrix4x4 copyMatrix = dstTransform.worldToLocalMatrix * transform.localToWorldMatrix; + Quaternion copyRot = copyMatrix.rotation; + Vector3 copyScale = copyMatrix.lossyScale; + + using var cmb = new CommandBuffer { name = "SplatCopy" }; + SetAssetDataOnCS(cmb, KernelIndices.CopySplats); + + cmb.SetComputeBufferParam(m_CSSplatUtilities, (int)KernelIndices.CopySplats, "_CopyDstPos", dstPos); + cmb.SetComputeBufferParam(m_CSSplatUtilities, (int)KernelIndices.CopySplats, "_CopyDstOther", dstOther); + cmb.SetComputeBufferParam(m_CSSplatUtilities, (int)KernelIndices.CopySplats, "_CopyDstSH", dstSH); + cmb.SetComputeTextureParam(m_CSSplatUtilities, (int)KernelIndices.CopySplats, "_CopyDstColor", dstColor); + cmb.SetComputeBufferParam(m_CSSplatUtilities, (int)KernelIndices.CopySplats, "_CopyDstEditDeleted", dstEditDeleted); + + cmb.SetComputeIntParam(m_CSSplatUtilities, "_CopyDstSize", dstSize); + cmb.SetComputeIntParam(m_CSSplatUtilities, "_CopySrcStartIndex", copySrcStartIndex); + cmb.SetComputeIntParam(m_CSSplatUtilities, "_CopyDstStartIndex", copyDstStartIndex); + cmb.SetComputeIntParam(m_CSSplatUtilities, "_CopyCount", copyCount); + + cmb.SetComputeVectorParam(m_CSSplatUtilities, "_CopyTransformRotation", new Vector4(copyRot.x, copyRot.y, copyRot.z, copyRot.w)); + cmb.SetComputeVectorParam(m_CSSplatUtilities, "_CopyTransformScale", copyScale); + cmb.SetComputeMatrixParam(m_CSSplatUtilities, "_CopyTransformMatrix", copyMatrix); + + DispatchUtilsAndExecute(cmb, KernelIndices.CopySplats, copyCount); + } + + void DispatchUtilsAndExecute(CommandBuffer cmb, KernelIndices kernel, int count) + { + m_CSSplatUtilities.GetKernelThreadGroupSizes((int)kernel, out uint gsX, out _, out _); + cmb.DispatchCompute(m_CSSplatUtilities, (int)kernel, (int)((count + gsX - 1)/gsX), 1, 1); + Graphics.ExecuteCommandBuffer(cmb); + } + + public GraphicsBuffer GpuEditDeleted => m_GpuEditDeleted; + } +} \ No newline at end of file diff --git a/MVS/3DGS-Unity/Runtime/GaussianSplatRenderer.cs.meta b/MVS/3DGS-Unity/Runtime/GaussianSplatRenderer.cs.meta new file mode 100644 index 00000000..5c089e16 --- /dev/null +++ b/MVS/3DGS-Unity/Runtime/GaussianSplatRenderer.cs.meta @@ -0,0 +1,17 @@ +fileFormatVersion: 2 +guid: c12d929a7f62c48adbe9ff45c9a33ff0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: + - m_ShaderSplats: {fileID: 4800000, guid: ed800126ae8844a67aad1974ddddd59c, type: 3} + - m_ShaderComposite: {fileID: 4800000, guid: 7e184af7d01193a408eb916d8acafff9, type: 3} + - m_ShaderDebugPoints: {fileID: 4800000, guid: b44409fc67214394f8f47e4e2648425e, type: 3} + - m_ShaderDebugBoxes: {fileID: 4800000, guid: 4006f2680fd7c8b4cbcb881454c782be, type: 3} + - m_CSSplatUtilities: {fileID: 7200000, guid: ec84f78b836bd4f96a105d6b804f08bd, type: 3} + - m_CSFfxSort: {fileID: 7200000, guid: dec36776b6c843544a1f6f9b436a4474, type: 3} + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Runtime/GaussianSplatURPFeature.cs b/MVS/3DGS-Unity/Runtime/GaussianSplatURPFeature.cs new file mode 100644 index 00000000..bc1bb966 --- /dev/null +++ b/MVS/3DGS-Unity/Runtime/GaussianSplatURPFeature.cs @@ -0,0 +1,158 @@ +// SPDX-License-Identifier: MIT +#if GS_ENABLE_URP + +using UnityEngine; +using UnityEngine.Experimental.Rendering; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; +#if UNITY_6000_0_OR_NEWER +using UnityEngine.Rendering.RenderGraphModule; +#endif + +namespace GaussianSplatting.Runtime +{ + // Note: I have no idea what is the purpose of ScriptableRendererFeature vs ScriptableRenderPass, which one of those + // is supposed to do resource management vs logic, etc. etc. Code below "seems to work" but I'm just fumbling along, + // without understanding any of it. + // + // ReSharper disable once InconsistentNaming + class GaussianSplatURPFeature : ScriptableRendererFeature + { + class GSRenderPass : ScriptableRenderPass + { + const string GaussianSplatRTName = "_GaussianSplatRT"; +#if !UNITY_6000_0_OR_NEWER + RTHandle m_RenderTarget; + internal ScriptableRenderer m_Renderer; + internal CommandBuffer m_Cmb; +#endif + + public void Dispose() + { +#if !UNITY_6000_0_OR_NEWER + m_RenderTarget?.Release(); +#endif + } + +#if UNITY_6000_0_OR_NEWER + const string ProfilerTag = "GaussianSplatRenderGraph"; + static readonly ProfilingSampler s_profilingSampler = new(ProfilerTag); + static readonly int s_gaussianSplatRT = Shader.PropertyToID(GaussianSplatRTName); + + class PassData + { + internal UniversalCameraData CameraData; + internal TextureHandle SourceTexture; + internal TextureHandle SourceDepth; + internal TextureHandle GaussianSplatRT; + } + + public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) + { + using var builder = renderGraph.AddUnsafePass(ProfilerTag, out PassData passData); + + var cameraData = frameData.Get(); + var resourceData = frameData.Get(); + + RenderTextureDescriptor rtDesc = cameraData.cameraTargetDescriptor; + rtDesc.depthBufferBits = 0; + rtDesc.msaaSamples = 1; + rtDesc.graphicsFormat = GraphicsFormat.R16G16B16A16_SFloat; + var textureHandle = UniversalRenderer.CreateRenderGraphTexture(renderGraph, rtDesc, GaussianSplatRTName, true); + + passData.CameraData = cameraData; + passData.SourceTexture = resourceData.activeColorTexture; + passData.SourceDepth = resourceData.activeDepthTexture; + passData.GaussianSplatRT = textureHandle; + + builder.UseTexture(resourceData.activeColorTexture, AccessFlags.ReadWrite); + builder.UseTexture(resourceData.activeDepthTexture); + builder.UseTexture(textureHandle, AccessFlags.Write); + builder.AllowPassCulling(false); + builder.SetRenderFunc(static (PassData data, UnsafeGraphContext context) => + { + var commandBuffer = CommandBufferHelpers.GetNativeCommandBuffer(context.cmd); + using var _ = new ProfilingScope(commandBuffer, s_profilingSampler); + commandBuffer.SetGlobalTexture(s_gaussianSplatRT, data.GaussianSplatRT); + CoreUtils.SetRenderTarget(commandBuffer, data.GaussianSplatRT, data.SourceDepth, ClearFlag.Color, Color.clear); + Material matComposite = GaussianSplatRenderSystem.instance.SortAndRenderSplats(data.CameraData.camera, commandBuffer); + commandBuffer.BeginSample(GaussianSplatRenderSystem.s_ProfCompose); + Blitter.BlitCameraTexture(commandBuffer, data.GaussianSplatRT, data.SourceTexture, matComposite, 0); + commandBuffer.EndSample(GaussianSplatRenderSystem.s_ProfCompose); + }); + } +#else + public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData) + { + RenderTextureDescriptor rtDesc = renderingData.cameraData.cameraTargetDescriptor; + rtDesc.depthBufferBits = 0; + rtDesc.msaaSamples = 1; + rtDesc.graphicsFormat = GraphicsFormat.R16G16B16A16_SFloat; + RenderingUtils.ReAllocateIfNeeded(ref m_RenderTarget, rtDesc, FilterMode.Point, TextureWrapMode.Clamp, name: GaussianSplatRTName); + cmd.SetGlobalTexture(m_RenderTarget.name, m_RenderTarget.nameID); + + ConfigureTarget(m_RenderTarget, m_Renderer.cameraDepthTargetHandle); + ConfigureClear(ClearFlag.Color, new Color(0,0,0,0)); + } + + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) + { + if (m_Cmb == null) + return; + + // add sorting, view calc and drawing commands for each splat object + Material matComposite = GaussianSplatRenderSystem.instance.SortAndRenderSplats(renderingData.cameraData.camera, m_Cmb); + + // compose + m_Cmb.BeginSample(GaussianSplatRenderSystem.s_ProfCompose); + Blitter.BlitCameraTexture(m_Cmb, m_RenderTarget, m_Renderer.cameraColorTargetHandle, RenderBufferLoadAction.Load, RenderBufferStoreAction.Store, matComposite, 0); + m_Cmb.EndSample(GaussianSplatRenderSystem.s_ProfCompose); + context.ExecuteCommandBuffer(m_Cmb); + } +#endif + } + + GSRenderPass m_Pass; + bool m_HasCamera; + + public override void Create() + { + m_Pass = new GSRenderPass + { + renderPassEvent = RenderPassEvent.BeforeRenderingTransparents + }; + } + + public override void OnCameraPreCull(ScriptableRenderer renderer, in CameraData cameraData) + { + m_HasCamera = false; + var system = GaussianSplatRenderSystem.instance; + if (!system.GatherSplatsForCamera(cameraData.camera)) + return; + +#if !UNITY_6000_0_OR_NEWER + CommandBuffer cmb = system.InitialClearCmdBuffer(cameraData.camera); + m_Pass.m_Cmb = cmb; +#endif + m_HasCamera = true; + } + + public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) + { + if (!m_HasCamera) + return; +#if !UNITY_6000_0_OR_NEWER + m_Pass.m_Renderer = renderer; +#endif + renderer.EnqueuePass(m_Pass); + } + + protected override void Dispose(bool disposing) + { + m_Pass?.Dispose(); + m_Pass = null; + } + } +} + +#endif // #if GS_ENABLE_URP diff --git a/MVS/3DGS-Unity/Runtime/GaussianSplatURPFeature.cs.meta b/MVS/3DGS-Unity/Runtime/GaussianSplatURPFeature.cs.meta new file mode 100644 index 00000000..11d13da9 --- /dev/null +++ b/MVS/3DGS-Unity/Runtime/GaussianSplatURPFeature.cs.meta @@ -0,0 +1,17 @@ +fileFormatVersion: 2 +guid: 01052c1a4da12064d8681d7c1800f94a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: + - m_ShaderSplats: {fileID: 4800000, guid: ed800126ae8844a67aad1974ddddd59c, type: 3} + - m_ShaderComposite: {fileID: 4800000, guid: 7e184af7d01193a408eb916d8acafff9, type: 3} + - m_ShaderDebugPoints: {fileID: 4800000, guid: b44409fc67214394f8f47e4e2648425e, type: 3} + - m_ShaderDebugBoxes: {fileID: 4800000, guid: 4006f2680fd7c8b4cbcb881454c782be, type: 3} + - m_CSSplatUtilities: {fileID: 7200000, guid: ec84f78b836bd4f96a105d6b804f08bd, type: 3} + - m_CSFfxSort: {fileID: 7200000, guid: dec36776b6c843544a1f6f9b436a4474, type: 3} + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Runtime/GaussianSplatting.asmdef b/MVS/3DGS-Unity/Runtime/GaussianSplatting.asmdef new file mode 100644 index 00000000..55c03bc7 --- /dev/null +++ b/MVS/3DGS-Unity/Runtime/GaussianSplatting.asmdef @@ -0,0 +1,31 @@ +{ + "name": "GaussianSplatting", + "rootNamespace": "GaussianSplatting.Runtime", + "references": [ + "GUID:d8b63aba1907145bea998dd612889d6b", + "GUID:8992d429105beaf428dfc91fb5b9f531", + "GUID:15fc0a57446b3144c949da3e2b9737a9", + "GUID:df380645f10b7bc4b97d4f5eb6303d95", + "GUID:457756d89b35d2941b3e7b37b4ece6f1" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": true, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [ + { + "name": "com.unity.render-pipelines.universal", + "expression": "", + "define": "GS_ENABLE_URP" + }, + { + "name": "com.unity.render-pipelines.high-definition", + "expression": "", + "define": "GS_ENABLE_HDRP" + } + ], + "noEngineReferences": false +} \ No newline at end of file diff --git a/MVS/3DGS-Unity/Runtime/GaussianSplatting.asmdef.meta b/MVS/3DGS-Unity/Runtime/GaussianSplatting.asmdef.meta new file mode 100644 index 00000000..3647535f --- /dev/null +++ b/MVS/3DGS-Unity/Runtime/GaussianSplatting.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4b653174f8fcdcd49b4c9a6f1ca8c7c3 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Runtime/GaussianUtils.cs b/MVS/3DGS-Unity/Runtime/GaussianUtils.cs new file mode 100644 index 00000000..32d18610 --- /dev/null +++ b/MVS/3DGS-Unity/Runtime/GaussianUtils.cs @@ -0,0 +1,107 @@ +// SPDX-License-Identifier: MIT + +using Unity.Mathematics; + +namespace GaussianSplatting.Runtime +{ + public static class GaussianUtils + { + public static float Sigmoid(float v) + { + return math.rcp(1.0f + math.exp(-v)); + } + + public static float3 SH0ToColor(float3 dc0) + { + const float kSH_C0 = 0.2820948f; + return dc0 * kSH_C0 + 0.5f; + } + + public static float3 LinearScale(float3 logScale) + { + return math.abs(math.exp(logScale)); + } + + public static float SquareCentered01(float x) + { + x -= 0.5f; + x *= x * math.sign(x); + return x * 2.0f + 0.5f; + } + + public static float InvSquareCentered01(float x) + { + x -= 0.5f; + x *= 0.5f; + x = math.sqrt(math.abs(x)) * math.sign(x); + return x + 0.5f; + } + + public static float4 NormalizeSwizzleRotation(float4 wxyz) + { + return math.normalize(wxyz).yzwx; + } + + // Returns three smallest quaternion components in xyz (normalized to 0..1 range), and index/3 of the largest one in w + public static float4 PackSmallest3Rotation(float4 q) + { + // find biggest component + float4 absQ = math.abs(q); + int index = 0; + float maxV = absQ.x; + if (absQ.y > maxV) + { + index = 1; + maxV = absQ.y; + } + if (absQ.z > maxV) + { + index = 2; + maxV = absQ.z; + } + if (absQ.w > maxV) + { + index = 3; + maxV = absQ.w; + } + + if (index == 0) q = q.yzwx; + if (index == 1) q = q.xzwy; + if (index == 2) q = q.xywz; + + float3 three = q.xyz * (q.w >= 0 ? 1 : -1); // -1/sqrt2..+1/sqrt2 range + three = (three * math.SQRT2) * 0.5f + 0.5f; // 0..1 range + + return new float4(three, index / 3.0f); + } + + + // Based on https://fgiesen.wordpress.com/2009/12/13/decoding-morton-codes/ + // Insert two 0 bits after each of the 21 low bits of x + static ulong MortonPart1By2(ulong x) + { + x &= 0x1fffff; + x = (x ^ (x << 32)) & 0x1f00000000ffffUL; + x = (x ^ (x << 16)) & 0x1f0000ff0000ffUL; + x = (x ^ (x << 8)) & 0x100f00f00f00f00fUL; + x = (x ^ (x << 4)) & 0x10c30c30c30c30c3UL; + x = (x ^ (x << 2)) & 0x1249249249249249UL; + return x; + } + // Encode three 21-bit integers into 3D Morton order + public static ulong MortonEncode3(uint3 v) + { + return (MortonPart1By2(v.z) << 2) | (MortonPart1By2(v.y) << 1) | MortonPart1By2(v.x); + } + + // See GaussianSplatting.hlsl + public static uint2 DecodeMorton2D_16x16(uint t) + { + t = (t & 0xFF) | ((t & 0xFE) << 7); // -EAFBGCHEAFBGCHD + t &= 0x5555; // -E-F-G-H-A-B-C-D + t = (t ^ (t >> 1)) & 0x3333; // --EF--GH--AB--CD + t = (t ^ (t >> 2)) & 0x0f0f; // ----EFGH----ABCD + return new uint2(t & 0xF, t >> 8); // --------EFGHABCD + } + } +} diff --git a/MVS/3DGS-Unity/Runtime/GaussianUtils.cs.meta b/MVS/3DGS-Unity/Runtime/GaussianUtils.cs.meta new file mode 100644 index 00000000..cd29fa7a --- /dev/null +++ b/MVS/3DGS-Unity/Runtime/GaussianUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ff862528cafe3e243aa42978a6d284d8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Runtime/GpuSorting.cs b/MVS/3DGS-Unity/Runtime/GpuSorting.cs new file mode 100644 index 00000000..2d868326 --- /dev/null +++ b/MVS/3DGS-Unity/Runtime/GpuSorting.cs @@ -0,0 +1,200 @@ +using UnityEngine; +using UnityEngine.Assertions; +using UnityEngine.Rendering; + +namespace GaussianSplatting.Runtime +{ + // GPU (uint key, uint payload) 8 bit-LSD radix sort, using reduce-then-scan + // Copyright Thomas Smith 2024, MIT license + // https://github.com/b0nes164/GPUSorting + + public class GpuSorting + { + //The size of a threadblock partition in the sort + const uint DEVICE_RADIX_SORT_PARTITION_SIZE = 3840; + + //The size of our radix in bits + const uint DEVICE_RADIX_SORT_BITS = 8; + + //Number of digits in our radix, 1 << DEVICE_RADIX_SORT_BITS + const uint DEVICE_RADIX_SORT_RADIX = 256; + + //Number of sorting passes required to sort a 32bit key, KEY_BITS / DEVICE_RADIX_SORT_BITS + const uint DEVICE_RADIX_SORT_PASSES = 4; + + //Keywords to enable for the shader + private LocalKeyword m_keyUintKeyword; + private LocalKeyword m_payloadUintKeyword; + private LocalKeyword m_ascendKeyword; + private LocalKeyword m_sortPairKeyword; + private LocalKeyword m_vulkanKeyword; + + public struct Args + { + public uint count; + public GraphicsBuffer inputKeys; + public GraphicsBuffer inputValues; + public SupportResources resources; + internal int workGroupCount; + } + + public struct SupportResources + { + public GraphicsBuffer altBuffer; + public GraphicsBuffer altPayloadBuffer; + public GraphicsBuffer passHistBuffer; + public GraphicsBuffer globalHistBuffer; + + public static SupportResources Load(uint count) + { + //This is threadBlocks * DEVICE_RADIX_SORT_RADIX + uint scratchBufferSize = DivRoundUp(count, DEVICE_RADIX_SORT_PARTITION_SIZE) * DEVICE_RADIX_SORT_RADIX; + uint reducedScratchBufferSize = DEVICE_RADIX_SORT_RADIX * DEVICE_RADIX_SORT_PASSES; + + var target = GraphicsBuffer.Target.Structured; + var resources = new SupportResources + { + altBuffer = new GraphicsBuffer(target, (int)count, 4) { name = "DeviceRadixAlt" }, + altPayloadBuffer = new GraphicsBuffer(target, (int)count, 4) { name = "DeviceRadixAltPayload" }, + passHistBuffer = new GraphicsBuffer(target, (int)scratchBufferSize, 4) { name = "DeviceRadixPassHistogram" }, + globalHistBuffer = new GraphicsBuffer(target, (int)reducedScratchBufferSize, 4) { name = "DeviceRadixGlobalHistogram" }, + }; + return resources; + } + + public void Dispose() + { + altBuffer?.Dispose(); + altPayloadBuffer?.Dispose(); + passHistBuffer?.Dispose(); + globalHistBuffer?.Dispose(); + + altBuffer = null; + altPayloadBuffer = null; + passHistBuffer = null; + globalHistBuffer = null; + } + } + + readonly ComputeShader m_CS; + readonly int m_kernelInitDeviceRadixSort = -1; + readonly int m_kernelUpsweep = -1; + readonly int m_kernelScan = -1; + readonly int m_kernelDownsweep = -1; + + readonly bool m_Valid; + + public bool Valid => m_Valid; + + public GpuSorting(ComputeShader cs) + { + m_CS = cs; + if (cs) + { + m_kernelInitDeviceRadixSort = cs.FindKernel("InitDeviceRadixSort"); + m_kernelUpsweep = cs.FindKernel("Upsweep"); + m_kernelScan = cs.FindKernel("Scan"); + m_kernelDownsweep = cs.FindKernel("Downsweep"); + } + + m_Valid = m_kernelInitDeviceRadixSort >= 0 && + m_kernelUpsweep >= 0 && + m_kernelScan >= 0 && + m_kernelDownsweep >= 0; + if (m_Valid) + { + if (!cs.IsSupported(m_kernelInitDeviceRadixSort) || + !cs.IsSupported(m_kernelUpsweep) || + !cs.IsSupported(m_kernelScan) || + !cs.IsSupported(m_kernelDownsweep)) + { + m_Valid = false; + } + } + + m_keyUintKeyword = new LocalKeyword(cs, "KEY_UINT"); + m_payloadUintKeyword = new LocalKeyword(cs, "PAYLOAD_UINT"); + m_ascendKeyword = new LocalKeyword(cs, "SHOULD_ASCEND"); + m_sortPairKeyword = new LocalKeyword(cs, "SORT_PAIRS"); + m_vulkanKeyword = new LocalKeyword(cs, "VULKAN"); + + cs.EnableKeyword(m_keyUintKeyword); + cs.EnableKeyword(m_payloadUintKeyword); + cs.EnableKeyword(m_ascendKeyword); + cs.EnableKeyword(m_sortPairKeyword); + if (SystemInfo.graphicsDeviceType == UnityEngine.Rendering.GraphicsDeviceType.Vulkan) + cs.EnableKeyword(m_vulkanKeyword); + else + cs.DisableKeyword(m_vulkanKeyword); + } + + static uint DivRoundUp(uint x, uint y) => (x + y - 1) / y; + + //Can we remove the last 4 padding without breaking? + struct SortConstants + { + public uint numKeys; // The number of keys to sort + public uint radixShift; // The radix shift value for the current pass + public uint threadBlocks; // threadBlocks + public uint padding0; // Padding - unused + } + + public void Dispatch(CommandBuffer cmd, Args args) + { + Assert.IsTrue(Valid); + + GraphicsBuffer srcKeyBuffer = args.inputKeys; + GraphicsBuffer srcPayloadBuffer = args.inputValues; + GraphicsBuffer dstKeyBuffer = args.resources.altBuffer; + GraphicsBuffer dstPayloadBuffer = args.resources.altPayloadBuffer; + + SortConstants constants = default; + constants.numKeys = args.count; + constants.threadBlocks = DivRoundUp(args.count, DEVICE_RADIX_SORT_PARTITION_SIZE); + + // Setup overall constants + cmd.SetComputeIntParam(m_CS, "e_numKeys", (int)constants.numKeys); + cmd.SetComputeIntParam(m_CS, "e_threadBlocks", (int)constants.threadBlocks); + + //Set statically located buffers + //Upsweep + cmd.SetComputeBufferParam(m_CS, m_kernelUpsweep, "b_passHist", args.resources.passHistBuffer); + cmd.SetComputeBufferParam(m_CS, m_kernelUpsweep, "b_globalHist", args.resources.globalHistBuffer); + + //Scan + cmd.SetComputeBufferParam(m_CS, m_kernelScan, "b_passHist", args.resources.passHistBuffer); + + //Downsweep + cmd.SetComputeBufferParam(m_CS, m_kernelDownsweep, "b_passHist", args.resources.passHistBuffer); + cmd.SetComputeBufferParam(m_CS, m_kernelDownsweep, "b_globalHist", args.resources.globalHistBuffer); + + //Clear the global histogram + cmd.SetComputeBufferParam(m_CS, m_kernelInitDeviceRadixSort, "b_globalHist", args.resources.globalHistBuffer); + cmd.DispatchCompute(m_CS, m_kernelInitDeviceRadixSort, 1, 1, 1); + + // Execute the sort algorithm in 8-bit increments + for (constants.radixShift = 0; constants.radixShift < 32; constants.radixShift += DEVICE_RADIX_SORT_BITS) + { + cmd.SetComputeIntParam(m_CS, "e_radixShift", (int)constants.radixShift); + + //Upsweep + cmd.SetComputeBufferParam(m_CS, m_kernelUpsweep, "b_sort", srcKeyBuffer); + cmd.DispatchCompute(m_CS, m_kernelUpsweep, (int)constants.threadBlocks, 1, 1); + + // Scan + cmd.DispatchCompute(m_CS, m_kernelScan, (int)DEVICE_RADIX_SORT_RADIX, 1, 1); + + // Downsweep + cmd.SetComputeBufferParam(m_CS, m_kernelDownsweep, "b_sort", srcKeyBuffer); + cmd.SetComputeBufferParam(m_CS, m_kernelDownsweep, "b_sortPayload", srcPayloadBuffer); + cmd.SetComputeBufferParam(m_CS, m_kernelDownsweep, "b_alt", dstKeyBuffer); + cmd.SetComputeBufferParam(m_CS, m_kernelDownsweep, "b_altPayload", dstPayloadBuffer); + cmd.DispatchCompute(m_CS, m_kernelDownsweep, (int)constants.threadBlocks, 1, 1); + + // Swap + (srcKeyBuffer, dstKeyBuffer) = (dstKeyBuffer, srcKeyBuffer); + (srcPayloadBuffer, dstPayloadBuffer) = (dstPayloadBuffer, srcPayloadBuffer); + } + } + } +} diff --git a/MVS/3DGS-Unity/Runtime/GpuSorting.cs.meta b/MVS/3DGS-Unity/Runtime/GpuSorting.cs.meta new file mode 100644 index 00000000..d35c62e1 --- /dev/null +++ b/MVS/3DGS-Unity/Runtime/GpuSorting.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 65a55f12dc9f42e4196260841dd87c15 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Shaders.meta b/MVS/3DGS-Unity/Shaders.meta new file mode 100644 index 00000000..06328354 --- /dev/null +++ b/MVS/3DGS-Unity/Shaders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2cbb533de67b91d45afad2ab53f7f03c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Shaders/BlackSkybox.shader b/MVS/3DGS-Unity/Shaders/BlackSkybox.shader new file mode 100644 index 00000000..4c1cec69 --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/BlackSkybox.shader @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: MIT +Shader "Unlit/BlackSkybox" +{ + Properties + { + _Color ("Color", Color) = (0,0,0,0) + } + SubShader + { + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata + { + float4 vertex : POSITION; + }; + + struct v2f + { + float4 vertex : SV_POSITION; + }; + + v2f vert (appdata v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + return o; + } + + half4 _Color; + + half4 frag (v2f i) : SV_Target + { + return _Color; + } + ENDCG + } + } +} diff --git a/MVS/3DGS-Unity/Shaders/BlackSkybox.shader.meta b/MVS/3DGS-Unity/Shaders/BlackSkybox.shader.meta new file mode 100644 index 00000000..6b712dbf --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/BlackSkybox.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a4867e5be68354ccda78062a92c74391 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Shaders/DeviceRadixSort.hlsl b/MVS/3DGS-Unity/Shaders/DeviceRadixSort.hlsl new file mode 100644 index 00000000..b055fb69 --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/DeviceRadixSort.hlsl @@ -0,0 +1,531 @@ +/****************************************************************************** + * DeviceRadixSort + * Device Level 8-bit LSD Radix Sort using reduce then scan + * + * SPDX-License-Identifier: MIT + * Copyright Thomas Smith 5/17/2024 + * https://github.com/b0nes164/GPUSorting + * + * 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. + ******************************************************************************/ +#include "SortCommon.hlsl" + +#define US_DIM 128U //The number of threads in a Upsweep threadblock +#define SCAN_DIM 128U //The number of threads in a Scan threadblock + +RWStructuredBuffer b_globalHist; //buffer holding device level offsets for each binning pass +RWStructuredBuffer b_passHist; //buffer used to store reduced sums of partition tiles + +groupshared uint g_us[RADIX * 2]; //Shared memory for upsweep +groupshared uint g_scan[SCAN_DIM]; //Shared memory for the scan + +//***************************************************************************** +//INIT KERNEL +//***************************************************************************** +//Clear the global histogram, as we will be adding to it atomically +[numthreads(1024, 1, 1)] +void InitDeviceRadixSort(int3 id : SV_DispatchThreadID) +{ + b_globalHist[id.x] = 0; +} + +//***************************************************************************** +//UPSWEEP KERNEL +//***************************************************************************** +//histogram, 64 threads to a histogram +inline void HistogramDigitCounts(uint gtid, uint gid) +{ + const uint histOffset = gtid / 64 * RADIX; + const uint partitionEnd = gid == e_threadBlocks - 1 ? + e_numKeys : (gid + 1) * PART_SIZE; + for (uint i = gtid + gid * PART_SIZE; i < partitionEnd; i += US_DIM) + { +#if defined(KEY_UINT) + InterlockedAdd(g_us[ExtractDigit(b_sort[i]) + histOffset], 1); +#elif defined(KEY_INT) + InterlockedAdd(g_us[ExtractDigit(IntToUint(b_sort[i])) + histOffset], 1); +#elif defined(KEY_FLOAT) + InterlockedAdd(g_us[ExtractDigit(FloatToUint(b_sort[i])) + histOffset], 1); +#endif + } +} + +//reduce and pass to tile histogram +inline void ReduceWriteDigitCounts(uint gtid, uint gid) +{ + for (uint i = gtid; i < RADIX; i += US_DIM) + { + g_us[i] += g_us[i + RADIX]; + b_passHist[i * e_threadBlocks + gid] = g_us[i]; + g_us[i] += WavePrefixSum(g_us[i]); + } +} + +//Exclusive scan over digit counts, then atomically add to global hist +inline void GlobalHistExclusiveScanWGE16(uint gtid, uint waveSize) +{ + GroupMemoryBarrierWithGroupSync(); + + if (gtid < (RADIX / waveSize)) + { + g_us[(gtid + 1) * waveSize - 1] += + WavePrefixSum(g_us[(gtid + 1) * waveSize - 1]); + } + GroupMemoryBarrierWithGroupSync(); + + //atomically add to global histogram + const uint globalHistOffset = GlobalHistOffset(); + const uint laneMask = waveSize - 1; + const uint circularLaneShift = WaveGetLaneIndex() + 1 & laneMask; + for (uint i = gtid; i < RADIX; i += US_DIM) + { + const uint index = circularLaneShift + (i & ~laneMask); + uint t = WaveGetLaneIndex() != laneMask ? g_us[i] : 0; + if (i >= waveSize) + t += WaveReadLaneAt(g_us[i - 1], 0); + InterlockedAdd(b_globalHist[index + globalHistOffset], t); + } +} + +inline void GlobalHistExclusiveScanWLT16(uint gtid, uint waveSize) +{ + const uint globalHistOffset = GlobalHistOffset(); + if (gtid < waveSize) + { + const uint circularLaneShift = WaveGetLaneIndex() + 1 & + waveSize - 1; + InterlockedAdd(b_globalHist[circularLaneShift + globalHistOffset], + circularLaneShift ? g_us[gtid] : 0); + } + GroupMemoryBarrierWithGroupSync(); + + const uint laneLog = countbits(waveSize - 1); + uint offset = laneLog; + uint j = waveSize; + for (; j < (RADIX >> 1); j <<= laneLog) + { + if (gtid < (RADIX >> offset)) + { + g_us[((gtid + 1) << offset) - 1] += + WavePrefixSum(g_us[((gtid + 1) << offset) - 1]); + } + GroupMemoryBarrierWithGroupSync(); + + for (uint i = gtid + j; i < RADIX; i += US_DIM) + { + if ((i & ((j << laneLog) - 1)) >= j) + { + if (i < (j << laneLog)) + { + InterlockedAdd(b_globalHist[i + globalHistOffset], + WaveReadLaneAt(g_us[((i >> offset) << offset) - 1], 0) + + ((i & (j - 1)) ? g_us[i - 1] : 0)); + } + else + { + if ((i + 1) & (j - 1)) + { + g_us[i] += + WaveReadLaneAt(g_us[((i >> offset) << offset) - 1], 0); + } + } + } + } + offset += laneLog; + } + GroupMemoryBarrierWithGroupSync(); + + //If RADIX is not a power of lanecount + for (uint i = gtid + j; i < RADIX; i += US_DIM) + { + InterlockedAdd(b_globalHist[i + globalHistOffset], + WaveReadLaneAt(g_us[((i >> offset) << offset) - 1], 0) + + ((i & (j - 1)) ? g_us[i - 1] : 0)); + } +} + +[numthreads(US_DIM, 1, 1)] +void Upsweep(uint3 gtid : SV_GroupThreadID, uint3 gid : SV_GroupID) +{ + //get the wave size + const uint waveSize = getWaveSize(); + + //clear shared memory + const uint histsEnd = RADIX * 2; + for (uint i = gtid.x; i < histsEnd; i += US_DIM) + g_us[i] = 0; + GroupMemoryBarrierWithGroupSync(); + + HistogramDigitCounts(gtid.x, gid.x); + GroupMemoryBarrierWithGroupSync(); + + ReduceWriteDigitCounts(gtid.x, gid.x); + + if (waveSize >= 16) + GlobalHistExclusiveScanWGE16(gtid.x, waveSize); + + if (waveSize < 16) + GlobalHistExclusiveScanWLT16(gtid.x, waveSize); +} + +//***************************************************************************** +//SCAN KERNEL +//***************************************************************************** +inline void ExclusiveThreadBlockScanFullWGE16( + uint gtid, + uint laneMask, + uint circularLaneShift, + uint partEnd, + uint deviceOffset, + uint waveSize, + inout uint reduction) +{ + for (uint i = gtid; i < partEnd; i += SCAN_DIM) + { + g_scan[gtid] = b_passHist[i + deviceOffset]; + g_scan[gtid] += WavePrefixSum(g_scan[gtid]); + GroupMemoryBarrierWithGroupSync(); + + if (gtid < SCAN_DIM / waveSize) + { + g_scan[(gtid + 1) * waveSize - 1] += + WavePrefixSum(g_scan[(gtid + 1) * waveSize - 1]); + } + GroupMemoryBarrierWithGroupSync(); + + uint t = (WaveGetLaneIndex() != laneMask ? g_scan[gtid] : 0) + reduction; + if (gtid >= waveSize) + t += WaveReadLaneAt(g_scan[gtid - 1], 0); + b_passHist[circularLaneShift + (i & ~laneMask) + deviceOffset] = t; + + reduction += g_scan[SCAN_DIM - 1]; + GroupMemoryBarrierWithGroupSync(); + } +} + +inline void ExclusiveThreadBlockScanPartialWGE16( + uint gtid, + uint laneMask, + uint circularLaneShift, + uint partEnd, + uint deviceOffset, + uint waveSize, + uint reduction) +{ + uint i = gtid + partEnd; + if (i < e_threadBlocks) + g_scan[gtid] = b_passHist[deviceOffset + i]; + g_scan[gtid] += WavePrefixSum(g_scan[gtid]); + GroupMemoryBarrierWithGroupSync(); + + if (gtid < SCAN_DIM / waveSize) + { + g_scan[(gtid + 1) * waveSize - 1] += + WavePrefixSum(g_scan[(gtid + 1) * waveSize - 1]); + } + GroupMemoryBarrierWithGroupSync(); + + const uint index = circularLaneShift + (i & ~laneMask); + if (index < e_threadBlocks) + { + uint t = (WaveGetLaneIndex() != laneMask ? g_scan[gtid] : 0) + reduction; + if (gtid >= waveSize) + t += g_scan[(gtid & ~laneMask) - 1]; + b_passHist[index + deviceOffset] = t; + } +} + +inline void ExclusiveThreadBlockScanWGE16(uint gtid, uint gid, uint waveSize) +{ + uint reduction = 0; + const uint laneMask = waveSize - 1; + const uint circularLaneShift = WaveGetLaneIndex() + 1 & laneMask; + const uint partionsEnd = e_threadBlocks / SCAN_DIM * SCAN_DIM; + const uint deviceOffset = gid * e_threadBlocks; + + ExclusiveThreadBlockScanFullWGE16( + gtid, + laneMask, + circularLaneShift, + partionsEnd, + deviceOffset, + waveSize, + reduction); + + ExclusiveThreadBlockScanPartialWGE16( + gtid, + laneMask, + circularLaneShift, + partionsEnd, + deviceOffset, + waveSize, + reduction); +} + +inline void ExclusiveThreadBlockScanFullWLT16( + uint gtid, + uint partitions, + uint deviceOffset, + uint laneLog, + uint circularLaneShift, + uint waveSize, + inout uint reduction) +{ + for (uint k = 0; k < partitions; ++k) + { + g_scan[gtid] = b_passHist[gtid + k * SCAN_DIM + deviceOffset]; + g_scan[gtid] += WavePrefixSum(g_scan[gtid]); + GroupMemoryBarrierWithGroupSync(); + if (gtid < waveSize) + { + b_passHist[circularLaneShift + k * SCAN_DIM + deviceOffset] = + (circularLaneShift ? g_scan[gtid] : 0) + reduction; + } + + uint offset = laneLog; + uint j = waveSize; + for (; j < (SCAN_DIM >> 1); j <<= laneLog) + { + if (gtid < (SCAN_DIM >> offset)) + { + g_scan[((gtid + 1) << offset) - 1] += + WavePrefixSum(g_scan[((gtid + 1) << offset) - 1]); + } + GroupMemoryBarrierWithGroupSync(); + + if ((gtid & ((j << laneLog) - 1)) >= j) + { + if (gtid < (j << laneLog)) + { + b_passHist[gtid + k * SCAN_DIM + deviceOffset] = + WaveReadLaneAt(g_scan[((gtid >> offset) << offset) - 1], 0) + + ((gtid & (j - 1)) ? g_scan[gtid - 1] : 0) + reduction; + } + else + { + if ((gtid + 1) & (j - 1)) + { + g_scan[gtid] += + WaveReadLaneAt(g_scan[((gtid >> offset) << offset) - 1], 0); + } + } + } + offset += laneLog; + } + GroupMemoryBarrierWithGroupSync(); + + //If SCAN_DIM is not a power of lanecount + for (uint i = gtid + j; i < SCAN_DIM; i += SCAN_DIM) + { + b_passHist[i + k * SCAN_DIM + deviceOffset] = + WaveReadLaneAt(g_scan[((i >> offset) << offset) - 1], 0) + + ((i & (j - 1)) ? g_scan[i - 1] : 0) + reduction; + } + + reduction += WaveReadLaneAt(g_scan[SCAN_DIM - 1], 0) + + WaveReadLaneAt(g_scan[(((SCAN_DIM - 1) >> offset) << offset) - 1], 0); + GroupMemoryBarrierWithGroupSync(); + } +} + +inline void ExclusiveThreadBlockScanParitalWLT16( + uint gtid, + uint partitions, + uint deviceOffset, + uint laneLog, + uint circularLaneShift, + uint waveSize, + uint reduction) +{ + const uint finalPartSize = e_threadBlocks - partitions * SCAN_DIM; + if (gtid < finalPartSize) + { + g_scan[gtid] = b_passHist[gtid + partitions * SCAN_DIM + deviceOffset]; + g_scan[gtid] += WavePrefixSum(g_scan[gtid]); + } + GroupMemoryBarrierWithGroupSync(); + if (gtid < waveSize && circularLaneShift < finalPartSize) + { + b_passHist[circularLaneShift + partitions * SCAN_DIM + deviceOffset] = + (circularLaneShift ? g_scan[gtid] : 0) + reduction; + } + + uint offset = laneLog; + for (uint j = waveSize; j < finalPartSize; j <<= laneLog) + { + if (gtid < (finalPartSize >> offset)) + { + g_scan[((gtid + 1) << offset) - 1] += + WavePrefixSum(g_scan[((gtid + 1) << offset) - 1]); + } + GroupMemoryBarrierWithGroupSync(); + + if ((gtid & ((j << laneLog) - 1)) >= j && gtid < finalPartSize) + { + if (gtid < (j << laneLog)) + { + b_passHist[gtid + partitions * SCAN_DIM + deviceOffset] = + WaveReadLaneAt(g_scan[((gtid >> offset) << offset) - 1], 0) + + ((gtid & (j - 1)) ? g_scan[gtid - 1] : 0) + reduction; + } + else + { + if ((gtid + 1) & (j - 1)) + { + g_scan[gtid] += + WaveReadLaneAt(g_scan[((gtid >> offset) << offset) - 1], 0); + } + } + } + offset += laneLog; + } +} + +inline void ExclusiveThreadBlockScanWLT16(uint gtid, uint gid, uint waveSize) +{ + uint reduction = 0; + const uint partitions = e_threadBlocks / SCAN_DIM; + const uint deviceOffset = gid * e_threadBlocks; + const uint laneLog = countbits(waveSize - 1); + const uint circularLaneShift = WaveGetLaneIndex() + 1 & waveSize - 1; + + ExclusiveThreadBlockScanFullWLT16( + gtid, + partitions, + deviceOffset, + laneLog, + circularLaneShift, + waveSize, + reduction); + + ExclusiveThreadBlockScanParitalWLT16( + gtid, + partitions, + deviceOffset, + laneLog, + circularLaneShift, + waveSize, + reduction); +} + +//Scan does not need flattening of gids +[numthreads(SCAN_DIM, 1, 1)] +void Scan(uint3 gtid : SV_GroupThreadID, uint3 gid : SV_GroupID) +{ + const uint waveSize = getWaveSize(); + if (waveSize >= 16) + ExclusiveThreadBlockScanWGE16(gtid.x, gid.x, waveSize); + + if (waveSize < 16) + ExclusiveThreadBlockScanWLT16(gtid.x, gid.x, waveSize); +} + +//***************************************************************************** +//DOWNSWEEP KERNEL +//***************************************************************************** +inline void LoadThreadBlockReductions(uint gtid, uint gid, uint exclusiveHistReduction) +{ + if (gtid < RADIX) + { + g_d[gtid + PART_SIZE] = b_globalHist[gtid + GlobalHistOffset()] + + b_passHist[gtid * e_threadBlocks + gid] - exclusiveHistReduction; + } +} + +[numthreads(D_DIM, 1, 1)] +void Downsweep(uint3 gtid : SV_GroupThreadID, uint3 gid : SV_GroupID) +{ + KeyStruct keys; + OffsetStruct offsets; + const uint waveSize = getWaveSize(); + + ClearWaveHists(gtid.x, waveSize); + GroupMemoryBarrierWithGroupSync(); + + if (gid.x < e_threadBlocks - 1) + { + if (waveSize >= 16) + keys = LoadKeysWGE16(gtid.x, waveSize, gid.x); + + if (waveSize < 16) + keys = LoadKeysWLT16(gtid.x, waveSize, gid.x, SerialIterations(waveSize)); + } + + if (gid.x == e_threadBlocks - 1) + { + if (waveSize >= 16) + keys = LoadKeysPartialWGE16(gtid.x, waveSize, gid.x); + + if (waveSize < 16) + keys = LoadKeysPartialWLT16(gtid.x, waveSize, gid.x, SerialIterations(waveSize)); + } + + uint exclusiveHistReduction; + + if (waveSize >= 16) + { + offsets = RankKeysWGE16(waveSize, getWaveIndex(gtid.x, waveSize) * RADIX, keys); + GroupMemoryBarrierWithGroupSync(); + + uint histReduction; + if (gtid.x < RADIX) + { + histReduction = WaveHistInclusiveScanCircularShiftWGE16(gtid.x, waveSize); + histReduction += WavePrefixSum(histReduction); //take advantage of barrier to begin scan + } + GroupMemoryBarrierWithGroupSync(); + + WaveHistReductionExclusiveScanWGE16(gtid.x, waveSize, histReduction); + GroupMemoryBarrierWithGroupSync(); + + UpdateOffsetsWGE16(gtid.x, waveSize, offsets, keys); + if (gtid.x < RADIX) + exclusiveHistReduction = g_d[gtid.x]; //take advantage of barrier to grab value + GroupMemoryBarrierWithGroupSync(); + } + + if (waveSize < 16) + { + offsets = RankKeysWLT16(waveSize, getWaveIndex(gtid.x, waveSize), keys, SerialIterations(waveSize)); + + if (gtid.x < HALF_RADIX) + { + uint histReduction = WaveHistInclusiveScanCircularShiftWLT16(gtid.x); + g_d[gtid.x] = histReduction + (histReduction << 16); //take advantage of barrier to begin scan + } + + WaveHistReductionExclusiveScanWLT16(gtid.x); + GroupMemoryBarrierWithGroupSync(); + + UpdateOffsetsWLT16(gtid.x, waveSize, SerialIterations(waveSize), offsets, keys); + if (gtid.x < RADIX) //take advantage of barrier to grab value + exclusiveHistReduction = g_d[gtid.x >> 1] >> ((gtid.x & 1) ? 16 : 0) & 0xffff; + GroupMemoryBarrierWithGroupSync(); + } + + ScatterKeysShared(offsets, keys); + LoadThreadBlockReductions(gtid.x, gid.x, exclusiveHistReduction); + GroupMemoryBarrierWithGroupSync(); + + if (gid.x < e_threadBlocks - 1) + ScatterDevice(gtid.x, waveSize, gid.x, offsets); + + if (gid.x == e_threadBlocks - 1) + ScatterDevicePartial(gtid.x, waveSize, gid.x, offsets); +} \ No newline at end of file diff --git a/MVS/3DGS-Unity/Shaders/DeviceRadixSort.hlsl.meta b/MVS/3DGS-Unity/Shaders/DeviceRadixSort.hlsl.meta new file mode 100644 index 00000000..26854231 --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/DeviceRadixSort.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 02209b8d952e7fc418492b88139826fd +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Shaders/GaussianComposite.shader b/MVS/3DGS-Unity/Shaders/GaussianComposite.shader new file mode 100644 index 00000000..be1702c7 --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/GaussianComposite.shader @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: MIT +Shader "Hidden/Gaussian Splatting/Composite" +{ + SubShader + { + Pass + { + ZWrite Off + ZTest Always + Cull Off + Blend SrcAlpha OneMinusSrcAlpha + +CGPROGRAM +#pragma vertex vert +#pragma fragment frag +#pragma require compute +#pragma use_dxc +#include "UnityCG.cginc" + +struct v2f +{ + float4 vertex : SV_POSITION; +}; + +v2f vert (uint vtxID : SV_VertexID) +{ + v2f o; + float2 quadPos = float2(vtxID&1, (vtxID>>1)&1) * 4.0 - 1.0; + o.vertex = float4(quadPos, 1, 1); + return o; +} + +Texture2D _GaussianSplatRT; + +half4 frag (v2f i) : SV_Target +{ + half4 col = _GaussianSplatRT.Load(int3(i.vertex.xy, 0)); + col.rgb = GammaToLinearSpace(col.rgb); + col.a = saturate(col.a * 1.5); + return col; +} +ENDCG + } + } +} diff --git a/MVS/3DGS-Unity/Shaders/GaussianComposite.shader.meta b/MVS/3DGS-Unity/Shaders/GaussianComposite.shader.meta new file mode 100644 index 00000000..b8c67e1e --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/GaussianComposite.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7e184af7d01193a408eb916d8acafff9 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Shaders/GaussianDebugRenderBoxes.shader b/MVS/3DGS-Unity/Shaders/GaussianDebugRenderBoxes.shader new file mode 100644 index 00000000..a8fa604f --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/GaussianDebugRenderBoxes.shader @@ -0,0 +1,102 @@ +// SPDX-License-Identifier: MIT +Shader "Gaussian Splatting/Debug/Render Boxes" +{ + SubShader + { + Tags { "RenderType"="Transparent" "Queue"="Transparent" } + + Pass + { + ZWrite Off + Blend OneMinusDstAlpha One + Cull Front + +CGPROGRAM +#pragma vertex vert +#pragma fragment frag +#pragma require compute +#pragma use_dxc + +#include "UnityCG.cginc" +#include "GaussianSplatting.hlsl" + +StructuredBuffer _OrderBuffer; + +bool _DisplayChunks; + +struct v2f +{ + half4 col : COLOR0; + float4 vertex : SV_POSITION; +}; + +float _SplatScale; +float _SplatOpacityScale; + +// based on https://iquilezles.org/articles/palettes/ +// cosine based palette, 4 vec3 params +half3 palette(float t, half3 a, half3 b, half3 c, half3 d) +{ + return a + b*cos(6.28318*(c*t+d)); +} + +v2f vert (uint vtxID : SV_VertexID, uint instID : SV_InstanceID) +{ + v2f o; + bool chunks = _DisplayChunks; + uint idx = vtxID; + float3 localPos = float3(idx&1, (idx>>1)&1, (idx>>2)&1) * 2.0 - 1.0; + + float3 centerWorldPos = 0; + + if (!chunks) + { + // display splat boxes + instID = _OrderBuffer[instID]; + SplatData splat = LoadSplatData(instID); + + float4 boxRot = splat.rot; + float3 boxSize = splat.scale; + boxSize *= _SplatScale; + + float3x3 splatRotScaleMat = CalcMatrixFromRotationScale(boxRot, boxSize); + splatRotScaleMat = mul((float3x3)unity_ObjectToWorld, splatRotScaleMat); + + centerWorldPos = splat.pos; + centerWorldPos = mul(unity_ObjectToWorld, float4(centerWorldPos,1)).xyz; + + o.col.rgb = saturate(splat.sh.col); + o.col.a = saturate(splat.opacity * _SplatOpacityScale); + + localPos = mul(splatRotScaleMat, localPos) * 2; + } + else + { + // display chunk boxes + localPos = localPos * 0.5 + 0.5; + SplatChunkInfo chunk = _SplatChunks[instID]; + float3 posMin = float3(chunk.posX.x, chunk.posY.x, chunk.posZ.x); + float3 posMax = float3(chunk.posX.y, chunk.posY.y, chunk.posZ.y); + + localPos = lerp(posMin, posMax, localPos); + localPos = mul(unity_ObjectToWorld, float4(localPos,1)).xyz; + + o.col.rgb = palette((float)instID / (float)_SplatChunkCount, half3(0.5,0.5,0.5), half3(0.5,0.5,0.5), half3(1,1,1), half3(0.0, 0.33, 0.67)); + o.col.a = 0.1; + } + + float3 worldPos = centerWorldPos + localPos; + o.vertex = UnityWorldToClipPos(worldPos); + + return o; +} + +half4 frag (v2f i) : SV_Target +{ + half4 res = half4(i.col.rgb * i.col.a, i.col.a); + return res; +} +ENDCG + } + } +} diff --git a/MVS/3DGS-Unity/Shaders/GaussianDebugRenderBoxes.shader.meta b/MVS/3DGS-Unity/Shaders/GaussianDebugRenderBoxes.shader.meta new file mode 100644 index 00000000..fda5775d --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/GaussianDebugRenderBoxes.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4006f2680fd7c8b4cbcb881454c782be +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Shaders/GaussianDebugRenderPoints.shader b/MVS/3DGS-Unity/Shaders/GaussianDebugRenderPoints.shader new file mode 100644 index 00000000..2121ae1d --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/GaussianDebugRenderPoints.shader @@ -0,0 +1,65 @@ +// SPDX-License-Identifier: MIT +Shader "Gaussian Splatting/Debug/Render Points" +{ + SubShader + { + Tags { "RenderType"="Transparent" "Queue"="Transparent" } + + Pass + { + ZWrite On + Cull Off + +CGPROGRAM +#pragma vertex vert +#pragma fragment frag +#pragma require compute +#pragma use_dxc + +#include "GaussianSplatting.hlsl" + +struct v2f +{ + half3 color : TEXCOORD0; + float4 vertex : SV_POSITION; +}; + +float _SplatSize; +bool _DisplayIndex; +int _SplatCount; + +v2f vert (uint vtxID : SV_VertexID, uint instID : SV_InstanceID) +{ + v2f o; + uint splatIndex = instID; + + SplatData splat = LoadSplatData(splatIndex); + + float3 centerWorldPos = splat.pos; + centerWorldPos = mul(unity_ObjectToWorld, float4(centerWorldPos,1)).xyz; + + float4 centerClipPos = mul(UNITY_MATRIX_VP, float4(centerWorldPos, 1)); + + o.vertex = centerClipPos; + uint idx = vtxID; + float2 quadPos = float2(idx&1, (idx>>1)&1) * 2.0 - 1.0; + o.vertex.xy += (quadPos * _SplatSize / _ScreenParams.xy) * o.vertex.w; + + o.color.rgb = saturate(splat.sh.col); + if (_DisplayIndex) + { + o.color.r = frac((float)splatIndex / (float)_SplatCount * 100); + o.color.g = frac((float)splatIndex / (float)_SplatCount * 10); + o.color.b = (float)splatIndex / (float)_SplatCount; + } + return o; +} + +half4 frag (v2f i) : SV_Target +{ + return half4(i.color.rgb, 1); +} +ENDCG + } + } +} diff --git a/MVS/3DGS-Unity/Shaders/GaussianDebugRenderPoints.shader.meta b/MVS/3DGS-Unity/Shaders/GaussianDebugRenderPoints.shader.meta new file mode 100644 index 00000000..14d0e209 --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/GaussianDebugRenderPoints.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b44409fc67214394f8f47e4e2648425e +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Shaders/GaussianSplatting.hlsl b/MVS/3DGS-Unity/Shaders/GaussianSplatting.hlsl new file mode 100644 index 00000000..aed68855 --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/GaussianSplatting.hlsl @@ -0,0 +1,617 @@ +// SPDX-License-Identifier: MIT +#ifndef GAUSSIAN_SPLATTING_HLSL +#define GAUSSIAN_SPLATTING_HLSL + +float InvSquareCentered01(float x) +{ + x -= 0.5; + x *= 0.5; + x = sqrt(abs(x)) * sign(x); + return x + 0.5; +} + +float3 QuatRotateVector(float3 v, float4 r) +{ + float3 t = 2 * cross(r.xyz, v); + return v + r.w * t + cross(r.xyz, t); +} + +float4 QuatMul(float4 a, float4 b) +{ + return float4(a.wwww * b + (a.xyzx * b.wwwx + a.yzxy * b.zxyy) * float4(1,1,1,-1) - a.zxyz * b.yzxz); +} + +float4 QuatInverse(float4 q) +{ + return rcp(dot(q, q)) * q * float4(-1,-1,-1,1); +} + +float3x3 CalcMatrixFromRotationScale(float4 rot, float3 scale) +{ + float3x3 ms = float3x3( + scale.x, 0, 0, + 0, scale.y, 0, + 0, 0, scale.z + ); + float x = rot.x; + float y = rot.y; + float z = rot.z; + float w = rot.w; + float3x3 mr = float3x3( + 1-2*(y*y + z*z), 2*(x*y - w*z), 2*(x*z + w*y), + 2*(x*y + w*z), 1-2*(x*x + z*z), 2*(y*z - w*x), + 2*(x*z - w*y), 2*(y*z + w*x), 1-2*(x*x + y*y) + ); + return mul(mr, ms); +} + +void CalcCovariance3D(float3x3 rotMat, out float3 sigma0, out float3 sigma1) +{ + float3x3 sig = mul(rotMat, transpose(rotMat)); + sigma0 = float3(sig._m00, sig._m01, sig._m02); + sigma1 = float3(sig._m11, sig._m12, sig._m22); +} + +// from "EWA Splatting" (Zwicker et al 2002) eq. 31 +float3 CalcCovariance2D(float3 worldPos, float3 cov3d0, float3 cov3d1, float4x4 matrixV, float4x4 matrixP, float4 screenParams) +{ + float4x4 viewMatrix = matrixV; + float3 viewPos = mul(viewMatrix, float4(worldPos, 1)).xyz; + + // this is needed in order for splats that are visible in view but clipped "quite a lot" to work + float aspect = matrixP._m00 / matrixP._m11; + float tanFovX = rcp(matrixP._m00); + float tanFovY = rcp(matrixP._m11 * aspect); + float limX = 1.3 * tanFovX; + float limY = 1.3 * tanFovY; + viewPos.x = clamp(viewPos.x / viewPos.z, -limX, limX) * viewPos.z; + viewPos.y = clamp(viewPos.y / viewPos.z, -limY, limY) * viewPos.z; + + float focal = screenParams.x * matrixP._m00 / 2; + + float3x3 J = float3x3( + focal / viewPos.z, 0, -(focal * viewPos.x) / (viewPos.z * viewPos.z), + 0, focal / viewPos.z, -(focal * viewPos.y) / (viewPos.z * viewPos.z), + 0, 0, 0 + ); + float3x3 W = (float3x3)viewMatrix; + float3x3 T = mul(J, W); + float3x3 V = float3x3( + cov3d0.x, cov3d0.y, cov3d0.z, + cov3d0.y, cov3d1.x, cov3d1.y, + cov3d0.z, cov3d1.y, cov3d1.z + ); + float3x3 cov = mul(T, mul(V, transpose(T))); + + // Low pass filter to make each splat at least 1px size. + cov._m00 += 0.3; + cov._m11 += 0.3; + return float3(cov._m00, cov._m01, cov._m11); +} + +float3 CalcConic(float3 cov2d) +{ + float det = cov2d.x * cov2d.z - cov2d.y * cov2d.y; + return float3(cov2d.z, -cov2d.y, cov2d.x) * rcp(det); +} + +float2 CalcScreenSpaceDelta(float2 svPositionXY, float2 centerXY, float4 projectionParams) +{ + float2 d = svPositionXY - centerXY; + d.y *= projectionParams.x; + return d; +} + +float CalcPowerFromConic(float3 conic, float2 d) +{ + return -0.5 * (conic.x * d.x*d.x + conic.z * d.y*d.y) + conic.y * d.x*d.y; +} + +// Morton interleaving 16x16 group i.e. by 4 bits of coordinates, based on this thread: +// https://twitter.com/rygorous/status/986715358852608000 +// which is simplified version of https://fgiesen.wordpress.com/2009/12/13/decoding-morton-codes/ +uint EncodeMorton2D_16x16(uint2 c) +{ + uint t = ((c.y & 0xF) << 8) | (c.x & 0xF); // ----EFGH----ABCD + t = (t ^ (t << 2)) & 0x3333; // --EF--GH--AB--CD + t = (t ^ (t << 1)) & 0x5555; // -E-F-G-H-A-B-C-D + return (t | (t >> 7)) & 0xFF; // --------EAFBGCHD +} +uint2 DecodeMorton2D_16x16(uint t) // --------EAFBGCHD +{ + t = (t & 0xFF) | ((t & 0xFE) << 7); // -EAFBGCHEAFBGCHD + t &= 0x5555; // -E-F-G-H-A-B-C-D + t = (t ^ (t >> 1)) & 0x3333; // --EF--GH--AB--CD + t = (t ^ (t >> 2)) & 0x0f0f; // ----EFGH----ABCD + return uint2(t & 0xF, t >> 8); // --------EFGHABCD +} + + +static const float SH_C1 = 0.4886025; +static const float SH_C2[] = { 1.0925484, -1.0925484, 0.3153916, -1.0925484, 0.5462742 }; +static const float SH_C3[] = { -0.5900436, 2.8906114, -0.4570458, 0.3731763, -0.4570458, 1.4453057, -0.5900436 }; + +struct SplatSHData +{ + half3 col, sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8, sh9, sh10, sh11, sh12, sh13, sh14, sh15; +}; + +half3 ShadeSH(SplatSHData splat, half3 dir, int shOrder, bool onlySH) +{ + dir *= -1; + + half x = dir.x, y = dir.y, z = dir.z; + + // ambient band + half3 res = splat.col; // col = sh0 * SH_C0 + 0.5 is already precomputed + if (onlySH) + res = 0.5; + // 1st degree + if (shOrder >= 1) + { + res += SH_C1 * (-splat.sh1 * y + splat.sh2 * z - splat.sh3 * x); + // 2nd degree + if (shOrder >= 2) + { + half xx = x * x, yy = y * y, zz = z * z; + half xy = x * y, yz = y * z, xz = x * z; + res += + (SH_C2[0] * xy) * splat.sh4 + + (SH_C2[1] * yz) * splat.sh5 + + (SH_C2[2] * (2 * zz - xx - yy)) * splat.sh6 + + (SH_C2[3] * xz) * splat.sh7 + + (SH_C2[4] * (xx - yy)) * splat.sh8; + // 3rd degree + if (shOrder >= 3) + { + res += + (SH_C3[0] * y * (3 * xx - yy)) * splat.sh9 + + (SH_C3[1] * xy * z) * splat.sh10 + + (SH_C3[2] * y * (4 * zz - xx - yy)) * splat.sh11 + + (SH_C3[3] * z * (2 * zz - 3 * xx - 3 * yy)) * splat.sh12 + + (SH_C3[4] * x * (4 * zz - xx - yy)) * splat.sh13 + + (SH_C3[5] * z * (xx - yy)) * splat.sh14 + + (SH_C3[6] * x * (xx - 3 * yy)) * splat.sh15; + } + } + } + return max(res, 0); +} + +static const uint kTexWidth = 2048; + +uint3 SplatIndexToPixelIndex(uint idx) +{ + uint3 res; + + uint2 xy = DecodeMorton2D_16x16(idx); + uint width = kTexWidth / 16; + idx >>= 8; + res.x = (idx % width) * 16 + xy.x; + res.y = (idx / width) * 16 + xy.y; + res.z = 0; + return res; +} + +struct SplatChunkInfo +{ + uint colR, colG, colB, colA; + float2 posX, posY, posZ; + uint sclX, sclY, sclZ; + uint shR, shG, shB; +}; + +StructuredBuffer _SplatChunks; +uint _SplatChunkCount; + +static const uint kChunkSize = 256; + +struct SplatData +{ + float3 pos; + float4 rot; + float3 scale; + half opacity; + SplatSHData sh; +}; + +// Decode quaternion from a "smallest 3" e.g. 10.10.10.2 format +float4 DecodeRotation(float4 pq) +{ + uint idx = (uint)round(pq.w * 3.0); // note: need to round or index might come out wrong in some formats (e.g. fp16.fp16.fp16.fp16) + float4 q; + q.xyz = pq.xyz * sqrt(2.0) - (1.0 / sqrt(2.0)); + q.w = sqrt(1.0 - saturate(dot(q.xyz, q.xyz))); + if (idx == 0) q = q.wxyz; + if (idx == 1) q = q.xwyz; + if (idx == 2) q = q.xywz; + return q; +} +float4 PackSmallest3Rotation(float4 q) +{ + // find biggest component + float4 absQ = abs(q); + int index = 0; + float maxV = absQ.x; + if (absQ.y > maxV) + { + index = 1; + maxV = absQ.y; + } + if (absQ.z > maxV) + { + index = 2; + maxV = absQ.z; + } + if (absQ.w > maxV) + { + index = 3; + maxV = absQ.w; + } + + if (index == 0) q = q.yzwx; + if (index == 1) q = q.xzwy; + if (index == 2) q = q.xywz; + + float3 three = q.xyz * (q.w >= 0 ? 1 : -1); // -1/sqrt2..+1/sqrt2 range + three = (three * sqrt(2.0)) * 0.5 + 0.5; // 0..1 range + return float4(three, index / 3.0); +} + +half3 DecodePacked_6_5_5(uint enc) +{ + return half3( + (enc & 63) / 63.0, + ((enc >> 6) & 31) / 31.0, + ((enc >> 11) & 31) / 31.0); +} + +half3 DecodePacked_5_6_5(uint enc) +{ + return half3( + (enc & 31) / 31.0, + ((enc >> 5) & 63) / 63.0, + ((enc >> 11) & 31) / 31.0); +} + +half3 DecodePacked_11_10_11(uint enc) +{ + return half3( + (enc & 2047) / 2047.0, + ((enc >> 11) & 1023) / 1023.0, + ((enc >> 21) & 2047) / 2047.0); +} + +float3 DecodePacked_16_16_16(uint2 enc) +{ + return float3( + (enc.x & 65535) / 65535.0, + ((enc.x >> 16) & 65535) / 65535.0, + (enc.y & 65535) / 65535.0); +} + +float4 DecodePacked_10_10_10_2(uint enc) +{ + return float4( + (enc & 1023) / 1023.0, + ((enc >> 10) & 1023) / 1023.0, + ((enc >> 20) & 1023) / 1023.0, + ((enc >> 30) & 3) / 3.0); +} +uint EncodeQuatToNorm10(float4 v) // 32 bits: 10.10.10.2 +{ + return (uint) (v.x * 1023.5f) | ((uint) (v.y * 1023.5f) << 10) | ((uint) (v.z * 1023.5f) << 20) | ((uint) (v.w * 3.5f) << 30); +} + + +#ifdef SHADER_STAGE_COMPUTE +#define SplatBufferDataType RWByteAddressBuffer +#else +#define SplatBufferDataType ByteAddressBuffer +#endif + +SplatBufferDataType _SplatPos; +SplatBufferDataType _SplatOther; +SplatBufferDataType _SplatSH; +Texture2D _SplatColor; +uint _SplatFormat; + +// Match GaussianSplatAsset.VectorFormat +#define VECTOR_FMT_32F 0 +#define VECTOR_FMT_16 1 +#define VECTOR_FMT_11 2 +#define VECTOR_FMT_6 3 + +uint LoadUShort(SplatBufferDataType dataBuffer, uint addrU) +{ + uint addrA = addrU & ~0x3; + uint val = dataBuffer.Load(addrA); + if (addrU != addrA) + val >>= 16; + return val & 0xFFFF; +} + +uint LoadUInt(SplatBufferDataType dataBuffer, uint addrU) +{ + uint addrA = addrU & ~0x3; + uint val = dataBuffer.Load(addrA); + if (addrU != addrA) + { + uint val1 = dataBuffer.Load(addrA + 4); + val = (val >> 16) | ((val1 & 0xFFFF) << 16); + } + return val; +} + +float3 LoadAndDecodeVector(SplatBufferDataType dataBuffer, uint addrU, uint fmt) +{ + uint addrA = addrU & ~0x3; + + uint val0 = dataBuffer.Load(addrA); + + float3 res = 0; + if (fmt == VECTOR_FMT_32F) + { + uint val1 = dataBuffer.Load(addrA + 4); + uint val2 = dataBuffer.Load(addrA + 8); + if (addrU != addrA) + { + uint val3 = dataBuffer.Load(addrA + 12); + val0 = (val0 >> 16) | ((val1 & 0xFFFF) << 16); + val1 = (val1 >> 16) | ((val2 & 0xFFFF) << 16); + val2 = (val2 >> 16) | ((val3 & 0xFFFF) << 16); + } + res = float3(asfloat(val0), asfloat(val1), asfloat(val2)); + } + else if (fmt == VECTOR_FMT_16) + { + uint val1 = dataBuffer.Load(addrA + 4); + if (addrU != addrA) + { + val0 = (val0 >> 16) | ((val1 & 0xFFFF) << 16); + val1 >>= 16; + } + res = DecodePacked_16_16_16(uint2(val0, val1)); + } + else if (fmt == VECTOR_FMT_11) + { + uint val1 = dataBuffer.Load(addrA + 4); + if (addrU != addrA) + { + val0 = (val0 >> 16) | ((val1 & 0xFFFF) << 16); + } + res = DecodePacked_11_10_11(val0); + } + else if (fmt == VECTOR_FMT_6) + { + if (addrU != addrA) + val0 >>= 16; + res = DecodePacked_6_5_5(val0); + } + return res; +} + +float3 LoadSplatPosValue(uint index) +{ + uint fmt = _SplatFormat & 0xFF; + uint stride = 0; + if (fmt == VECTOR_FMT_32F) + stride = 12; + else if (fmt == VECTOR_FMT_16) + stride = 6; + else if (fmt == VECTOR_FMT_11) + stride = 4; + else if (fmt == VECTOR_FMT_6) + stride = 2; + return LoadAndDecodeVector(_SplatPos, index * stride, fmt); +} + +float3 LoadSplatPos(uint idx) +{ + float3 pos = LoadSplatPosValue(idx); + uint chunkIdx = idx / kChunkSize; + if (chunkIdx < _SplatChunkCount) + { + SplatChunkInfo chunk = _SplatChunks[chunkIdx]; + float3 posMin = float3(chunk.posX.x, chunk.posY.x, chunk.posZ.x); + float3 posMax = float3(chunk.posX.y, chunk.posY.y, chunk.posZ.y); + pos = lerp(posMin, posMax, pos); + } + return pos; +} + +half4 LoadSplatColTex(uint3 coord) +{ + return _SplatColor.Load(coord); +} + +SplatData LoadSplatData(uint idx) +{ + SplatData s = (SplatData)0; + + // figure out raw data offsets / locations + uint3 coord = SplatIndexToPixelIndex(idx); + + uint scaleFmt = (_SplatFormat >> 8) & 0xFF; + uint shFormat = (_SplatFormat >> 16) & 0xFF; + + uint otherStride = 4; // rotation is 10.10.10.2 + if (scaleFmt == VECTOR_FMT_32F) + otherStride += 12; + else if (scaleFmt == VECTOR_FMT_16) + otherStride += 6; + else if (scaleFmt == VECTOR_FMT_11) + otherStride += 4; + else if (scaleFmt == VECTOR_FMT_6) + otherStride += 2; + if (shFormat > VECTOR_FMT_6) + otherStride += 2; + uint otherAddr = idx * otherStride; + + uint shStride = 0; + if (shFormat == VECTOR_FMT_32F) + shStride = 192; // 15*3 fp32, rounded up to multiple of 16 + else if (shFormat == VECTOR_FMT_16 || shFormat > VECTOR_FMT_6) + shStride = 96; // 15*3 fp16, rounded up to multiple of 16 + else if (shFormat == VECTOR_FMT_11) + shStride = 60; // 15x uint + else if (shFormat == VECTOR_FMT_6) + shStride = 32; // 15x ushort, rounded up to multiple of 4 + + + // load raw splat data, which might be chunk-relative + s.pos = LoadSplatPosValue(idx); + s.rot = DecodeRotation(DecodePacked_10_10_10_2(LoadUInt(_SplatOther, otherAddr))); + s.scale = LoadAndDecodeVector(_SplatOther, otherAddr + 4, scaleFmt); + half4 col = LoadSplatColTex(coord); + + uint shIndex = idx; + if (shFormat > VECTOR_FMT_6) + shIndex = LoadUShort(_SplatOther, otherAddr + otherStride - 2); + + uint shOffset = shIndex * shStride; + uint4 shRaw0 = _SplatSH.Load4(shOffset); + uint4 shRaw1 = _SplatSH.Load4(shOffset + 16); + if (shFormat == VECTOR_FMT_32F) + { + uint4 shRaw2 = _SplatSH.Load4(shOffset + 32); + uint4 shRaw3 = _SplatSH.Load4(shOffset + 48); + uint4 shRaw4 = _SplatSH.Load4(shOffset + 64); + uint4 shRaw5 = _SplatSH.Load4(shOffset + 80); + uint4 shRaw6 = _SplatSH.Load4(shOffset + 96); + uint4 shRaw7 = _SplatSH.Load4(shOffset + 112); + uint4 shRaw8 = _SplatSH.Load4(shOffset + 128); + uint4 shRaw9 = _SplatSH.Load4(shOffset + 144); + uint4 shRawA = _SplatSH.Load4(shOffset + 160); + uint shRawB = _SplatSH.Load(shOffset + 176); + s.sh.sh1.r = asfloat(shRaw0.x); s.sh.sh1.g = asfloat(shRaw0.y); s.sh.sh1.b = asfloat(shRaw0.z); + s.sh.sh2.r = asfloat(shRaw0.w); s.sh.sh2.g = asfloat(shRaw1.x); s.sh.sh2.b = asfloat(shRaw1.y); + s.sh.sh3.r = asfloat(shRaw1.z); s.sh.sh3.g = asfloat(shRaw1.w); s.sh.sh3.b = asfloat(shRaw2.x); + s.sh.sh4.r = asfloat(shRaw2.y); s.sh.sh4.g = asfloat(shRaw2.z); s.sh.sh4.b = asfloat(shRaw2.w); + s.sh.sh5.r = asfloat(shRaw3.x); s.sh.sh5.g = asfloat(shRaw3.y); s.sh.sh5.b = asfloat(shRaw3.z); + s.sh.sh6.r = asfloat(shRaw3.w); s.sh.sh6.g = asfloat(shRaw4.x); s.sh.sh6.b = asfloat(shRaw4.y); + s.sh.sh7.r = asfloat(shRaw4.z); s.sh.sh7.g = asfloat(shRaw4.w); s.sh.sh7.b = asfloat(shRaw5.x); + s.sh.sh8.r = asfloat(shRaw5.y); s.sh.sh8.g = asfloat(shRaw5.z); s.sh.sh8.b = asfloat(shRaw5.w); + s.sh.sh9.r = asfloat(shRaw6.x); s.sh.sh9.g = asfloat(shRaw6.y); s.sh.sh9.b = asfloat(shRaw6.z); + s.sh.sh10.r = asfloat(shRaw6.w); s.sh.sh10.g = asfloat(shRaw7.x); s.sh.sh10.b = asfloat(shRaw7.y); + s.sh.sh11.r = asfloat(shRaw7.z); s.sh.sh11.g = asfloat(shRaw7.w); s.sh.sh11.b = asfloat(shRaw8.x); + s.sh.sh12.r = asfloat(shRaw8.y); s.sh.sh12.g = asfloat(shRaw8.z); s.sh.sh12.b = asfloat(shRaw8.w); + s.sh.sh13.r = asfloat(shRaw9.x); s.sh.sh13.g = asfloat(shRaw9.y); s.sh.sh13.b = asfloat(shRaw9.z); + s.sh.sh14.r = asfloat(shRaw9.w); s.sh.sh14.g = asfloat(shRawA.x); s.sh.sh14.b = asfloat(shRawA.y); + s.sh.sh15.r = asfloat(shRawA.z); s.sh.sh15.g = asfloat(shRawA.w); s.sh.sh15.b = asfloat(shRawB); + } + else if (shFormat == VECTOR_FMT_16 || shFormat > VECTOR_FMT_6) + { + uint4 shRaw2 = _SplatSH.Load4(shOffset + 32); + uint4 shRaw3 = _SplatSH.Load4(shOffset + 48); + uint4 shRaw4 = _SplatSH.Load4(shOffset + 64); + uint3 shRaw5 = _SplatSH.Load3(shOffset + 80); + s.sh.sh1.r = f16tof32(shRaw0.x ); s.sh.sh1.g = f16tof32(shRaw0.x >> 16); s.sh.sh1.b = f16tof32(shRaw0.y ); + s.sh.sh2.r = f16tof32(shRaw0.y >> 16); s.sh.sh2.g = f16tof32(shRaw0.z ); s.sh.sh2.b = f16tof32(shRaw0.z >> 16); + s.sh.sh3.r = f16tof32(shRaw0.w ); s.sh.sh3.g = f16tof32(shRaw0.w >> 16); s.sh.sh3.b = f16tof32(shRaw1.x ); + s.sh.sh4.r = f16tof32(shRaw1.x >> 16); s.sh.sh4.g = f16tof32(shRaw1.y ); s.sh.sh4.b = f16tof32(shRaw1.y >> 16); + s.sh.sh5.r = f16tof32(shRaw1.z ); s.sh.sh5.g = f16tof32(shRaw1.z >> 16); s.sh.sh5.b = f16tof32(shRaw1.w ); + s.sh.sh6.r = f16tof32(shRaw1.w >> 16); s.sh.sh6.g = f16tof32(shRaw2.x ); s.sh.sh6.b = f16tof32(shRaw2.x >> 16); + s.sh.sh7.r = f16tof32(shRaw2.y ); s.sh.sh7.g = f16tof32(shRaw2.y >> 16); s.sh.sh7.b = f16tof32(shRaw2.z ); + s.sh.sh8.r = f16tof32(shRaw2.z >> 16); s.sh.sh8.g = f16tof32(shRaw2.w ); s.sh.sh8.b = f16tof32(shRaw2.w >> 16); + s.sh.sh9.r = f16tof32(shRaw3.x ); s.sh.sh9.g = f16tof32(shRaw3.x >> 16); s.sh.sh9.b = f16tof32(shRaw3.y ); + s.sh.sh10.r = f16tof32(shRaw3.y >> 16); s.sh.sh10.g = f16tof32(shRaw3.z ); s.sh.sh10.b = f16tof32(shRaw3.z >> 16); + s.sh.sh11.r = f16tof32(shRaw3.w ); s.sh.sh11.g = f16tof32(shRaw3.w >> 16); s.sh.sh11.b = f16tof32(shRaw4.x ); + s.sh.sh12.r = f16tof32(shRaw4.x >> 16); s.sh.sh12.g = f16tof32(shRaw4.y ); s.sh.sh12.b = f16tof32(shRaw4.y >> 16); + s.sh.sh13.r = f16tof32(shRaw4.z ); s.sh.sh13.g = f16tof32(shRaw4.z >> 16); s.sh.sh13.b = f16tof32(shRaw4.w ); + s.sh.sh14.r = f16tof32(shRaw4.w >> 16); s.sh.sh14.g = f16tof32(shRaw5.x ); s.sh.sh14.b = f16tof32(shRaw5.x >> 16); + s.sh.sh15.r = f16tof32(shRaw5.y ); s.sh.sh15.g = f16tof32(shRaw5.y >> 16); s.sh.sh15.b = f16tof32(shRaw5.z ); + } + else if (shFormat == VECTOR_FMT_11) + { + uint4 shRaw2 = _SplatSH.Load4(shOffset + 32); + uint3 shRaw3 = _SplatSH.Load3(shOffset + 48); + s.sh.sh1 = DecodePacked_11_10_11(shRaw0.x); + s.sh.sh2 = DecodePacked_11_10_11(shRaw0.y); + s.sh.sh3 = DecodePacked_11_10_11(shRaw0.z); + s.sh.sh4 = DecodePacked_11_10_11(shRaw0.w); + s.sh.sh5 = DecodePacked_11_10_11(shRaw1.x); + s.sh.sh6 = DecodePacked_11_10_11(shRaw1.y); + s.sh.sh7 = DecodePacked_11_10_11(shRaw1.z); + s.sh.sh8 = DecodePacked_11_10_11(shRaw1.w); + s.sh.sh9 = DecodePacked_11_10_11(shRaw2.x); + s.sh.sh10 = DecodePacked_11_10_11(shRaw2.y); + s.sh.sh11 = DecodePacked_11_10_11(shRaw2.z); + s.sh.sh12 = DecodePacked_11_10_11(shRaw2.w); + s.sh.sh13 = DecodePacked_11_10_11(shRaw3.x); + s.sh.sh14 = DecodePacked_11_10_11(shRaw3.y); + s.sh.sh15 = DecodePacked_11_10_11(shRaw3.z); + } + else if (shFormat == VECTOR_FMT_6) + { + s.sh.sh1 = DecodePacked_5_6_5(shRaw0.x); + s.sh.sh2 = DecodePacked_5_6_5(shRaw0.x >> 16); + s.sh.sh3 = DecodePacked_5_6_5(shRaw0.y); + s.sh.sh4 = DecodePacked_5_6_5(shRaw0.y >> 16); + s.sh.sh5 = DecodePacked_5_6_5(shRaw0.z); + s.sh.sh6 = DecodePacked_5_6_5(shRaw0.z >> 16); + s.sh.sh7 = DecodePacked_5_6_5(shRaw0.w); + s.sh.sh8 = DecodePacked_5_6_5(shRaw0.w >> 16); + s.sh.sh9 = DecodePacked_5_6_5(shRaw1.x); + s.sh.sh10 = DecodePacked_5_6_5(shRaw1.x >> 16); + s.sh.sh11 = DecodePacked_5_6_5(shRaw1.y); + s.sh.sh12 = DecodePacked_5_6_5(shRaw1.y >> 16); + s.sh.sh13 = DecodePacked_5_6_5(shRaw1.z); + s.sh.sh14 = DecodePacked_5_6_5(shRaw1.z >> 16); + s.sh.sh15 = DecodePacked_5_6_5(shRaw1.w); + } + + // if raw data is chunk-relative, convert to final values by interpolating between chunk min/max + uint chunkIdx = idx / kChunkSize; + if (chunkIdx < _SplatChunkCount) + { + SplatChunkInfo chunk = _SplatChunks[chunkIdx]; + float3 posMin = float3(chunk.posX.x, chunk.posY.x, chunk.posZ.x); + float3 posMax = float3(chunk.posX.y, chunk.posY.y, chunk.posZ.y); + half3 sclMin = half3(f16tof32(chunk.sclX ), f16tof32(chunk.sclY ), f16tof32(chunk.sclZ )); + half3 sclMax = half3(f16tof32(chunk.sclX>>16), f16tof32(chunk.sclY>>16), f16tof32(chunk.sclZ>>16)); + half4 colMin = half4(f16tof32(chunk.colR ), f16tof32(chunk.colG ), f16tof32(chunk.colB ), f16tof32(chunk.colA )); + half4 colMax = half4(f16tof32(chunk.colR>>16), f16tof32(chunk.colG>>16), f16tof32(chunk.colB>>16), f16tof32(chunk.colA>>16)); + half3 shMin = half3(f16tof32(chunk.shR ), f16tof32(chunk.shG ), f16tof32(chunk.shB )); + half3 shMax = half3(f16tof32(chunk.shR>>16), f16tof32(chunk.shG>>16), f16tof32(chunk.shB>>16)); + s.pos = lerp(posMin, posMax, s.pos); + s.scale = lerp(sclMin, sclMax, s.scale); + s.scale *= s.scale; + s.scale *= s.scale; + s.scale *= s.scale; + col = lerp(colMin, colMax, col); + col.a = InvSquareCentered01(col.a); + + if (shFormat > VECTOR_FMT_32F && shFormat <= VECTOR_FMT_6) + { + s.sh.sh1 = lerp(shMin, shMax, s.sh.sh1 ); + s.sh.sh2 = lerp(shMin, shMax, s.sh.sh2 ); + s.sh.sh3 = lerp(shMin, shMax, s.sh.sh3 ); + s.sh.sh4 = lerp(shMin, shMax, s.sh.sh4 ); + s.sh.sh5 = lerp(shMin, shMax, s.sh.sh5 ); + s.sh.sh6 = lerp(shMin, shMax, s.sh.sh6 ); + s.sh.sh7 = lerp(shMin, shMax, s.sh.sh7 ); + s.sh.sh8 = lerp(shMin, shMax, s.sh.sh8 ); + s.sh.sh9 = lerp(shMin, shMax, s.sh.sh9 ); + s.sh.sh10 = lerp(shMin, shMax, s.sh.sh10); + s.sh.sh11 = lerp(shMin, shMax, s.sh.sh11); + s.sh.sh12 = lerp(shMin, shMax, s.sh.sh12); + s.sh.sh13 = lerp(shMin, shMax, s.sh.sh13); + s.sh.sh14 = lerp(shMin, shMax, s.sh.sh14); + s.sh.sh15 = lerp(shMin, shMax, s.sh.sh15); + } + } + s.opacity = col.a; + s.sh.col = col.rgb; + + return s; +} + +struct SplatViewData +{ + float4 pos; + float2 axis1, axis2; + uint2 color; // 4xFP16 +}; + +#endif // GAUSSIAN_SPLATTING_HLSL diff --git a/MVS/3DGS-Unity/Shaders/GaussianSplatting.hlsl.meta b/MVS/3DGS-Unity/Shaders/GaussianSplatting.hlsl.meta new file mode 100644 index 00000000..74dba65d --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/GaussianSplatting.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d4087e54957693c48a7be32de91c99e2 +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Shaders/RenderGaussianSplats.shader b/MVS/3DGS-Unity/Shaders/RenderGaussianSplats.shader new file mode 100644 index 00000000..42dd5229 --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/RenderGaussianSplats.shader @@ -0,0 +1,111 @@ +// SPDX-License-Identifier: MIT +Shader "Gaussian Splatting/Render Splats" +{ + SubShader + { + Tags { "RenderType"="Transparent" "Queue"="Transparent" } + + Pass + { + ZWrite Off + Blend OneMinusDstAlpha One + Cull Off + +CGPROGRAM +#pragma vertex vert +#pragma fragment frag +#pragma require compute +#pragma use_dxc + +#include "GaussianSplatting.hlsl" + +StructuredBuffer _OrderBuffer; + +struct v2f +{ + half4 col : COLOR0; + float2 pos : TEXCOORD0; + float4 vertex : SV_POSITION; +}; + +StructuredBuffer _SplatViewData; +ByteAddressBuffer _SplatSelectedBits; +uint _SplatBitsValid; + +v2f vert (uint vtxID : SV_VertexID, uint instID : SV_InstanceID) +{ + v2f o = (v2f)0; + instID = _OrderBuffer[instID]; + SplatViewData view = _SplatViewData[instID]; + float4 centerClipPos = view.pos; + bool behindCam = centerClipPos.w <= 0; + if (behindCam) + { + o.vertex = asfloat(0x7fc00000); // NaN discards the primitive + } + else + { + o.col.r = f16tof32(view.color.x >> 16); + o.col.g = f16tof32(view.color.x); + o.col.b = f16tof32(view.color.y >> 16); + o.col.a = f16tof32(view.color.y); + + uint idx = vtxID; + float2 quadPos = float2(idx&1, (idx>>1)&1) * 2.0 - 1.0; + quadPos *= 2; + + o.pos = quadPos; + + float2 deltaScreenPos = (quadPos.x * view.axis1 + quadPos.y * view.axis2) * 2 / _ScreenParams.xy; + o.vertex = centerClipPos; + o.vertex.xy += deltaScreenPos * centerClipPos.w; + + // is this splat selected? + if (_SplatBitsValid) + { + uint wordIdx = instID / 32; + uint bitIdx = instID & 31; + uint selVal = _SplatSelectedBits.Load(wordIdx * 4); + if (selVal & (1 << bitIdx)) + { + o.col.a = -1; + } + } + } + return o; +} + +half4 frag (v2f i) : SV_Target +{ + float power = -dot(i.pos, i.pos); + half alpha = exp(power); + if (i.col.a >= 0) + { + alpha = saturate(alpha * i.col.a); + } + else + { + // "selected" splat: magenta outline, increase opacity, magenta tint + half3 selectedColor = half3(1,0,1); + if (alpha > 7.0/255.0) + { + if (alpha < 10.0/255.0) + { + alpha = 1; + i.col.rgb = selectedColor; + } + alpha = saturate(alpha + 0.3); + } + i.col.rgb = lerp(i.col.rgb, selectedColor, 0.5); + } + + if (alpha < 1.0/255.0) + discard; + + half4 res = half4(i.col.rgb * alpha, alpha); + return res; +} +ENDCG + } + } +} diff --git a/MVS/3DGS-Unity/Shaders/RenderGaussianSplats.shader.meta b/MVS/3DGS-Unity/Shaders/RenderGaussianSplats.shader.meta new file mode 100644 index 00000000..044aa0f2 --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/RenderGaussianSplats.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ed800126ae8844a67aad1974ddddd59c +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Shaders/SortCommon.hlsl b/MVS/3DGS-Unity/Shaders/SortCommon.hlsl new file mode 100644 index 00000000..bdc18b9c --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/SortCommon.hlsl @@ -0,0 +1,959 @@ +/****************************************************************************** + * SortCommon + * Common functions for GPUSorting + * + * SPDX-License-Identifier: MIT + * Copyright Thomas Smith 5/17/2024 + * https://github.com/b0nes164/GPUSorting + * + * 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. + ******************************************************************************/ +#define KEYS_PER_THREAD 15U +#define D_DIM 256U +#define PART_SIZE 3840U +#define D_TOTAL_SMEM 4096U + +#define RADIX 256U //Number of digit bins +#define RADIX_MASK 255U //Mask of digit bins +#define HALF_RADIX 128U //For smaller waves where bit packing is necessary +#define HALF_MASK 127U // '' +#define RADIX_LOG 8U //log2(RADIX) +#define RADIX_PASSES 4U //(Key width) / RADIX_LOG + +cbuffer cbGpuSorting : register(b0) +{ + uint e_numKeys; + uint e_radixShift; + uint e_threadBlocks; + uint padding; +}; + +#if defined(KEY_UINT) +RWStructuredBuffer b_sort; +RWStructuredBuffer b_alt; +#elif defined(KEY_INT) +RWStructuredBuffer b_sort; +RWStructuredBuffer b_alt; +#elif defined(KEY_FLOAT) +RWStructuredBuffer b_sort; +RWStructuredBuffer b_alt; +#endif + +#if defined(PAYLOAD_UINT) +RWStructuredBuffer b_sortPayload; +RWStructuredBuffer b_altPayload; +#elif defined(PAYLOAD_INT) +RWStructuredBuffer b_sortPayload; +RWStructuredBuffer b_altPayload; +#elif defined(PAYLOAD_FLOAT) +RWStructuredBuffer b_sortPayload; +RWStructuredBuffer b_altPayload; +#endif + +groupshared uint g_d[D_TOTAL_SMEM]; //Shared memory for DigitBinningPass and DownSweep kernels + +struct KeyStruct +{ + uint k[KEYS_PER_THREAD]; +}; + +struct OffsetStruct +{ +#if defined(ENABLE_16_BIT) + uint16_t o[KEYS_PER_THREAD]; +#else + uint o[KEYS_PER_THREAD]; +#endif +}; + +struct DigitStruct +{ +#if defined(ENABLE_16_BIT) + uint16_t d[KEYS_PER_THREAD]; +#else + uint d[KEYS_PER_THREAD]; +#endif +}; + +//***************************************************************************** +//HELPER FUNCTIONS +//***************************************************************************** +//Due to a bug with SPIRV pre 1.6, we cannot use WaveGetLaneCount() to get the currently active wavesize +inline uint getWaveSize() +{ +#if defined(VULKAN) + GroupMemoryBarrierWithGroupSync(); //Make absolutely sure the wave is not diverged here + return dot(countbits(WaveActiveBallot(true)), uint4(1, 1, 1, 1)); +#else + return WaveGetLaneCount(); +#endif +} + +inline uint getWaveIndex(uint gtid, uint waveSize) +{ + return gtid / waveSize; +} + +//Radix Tricks by Michael Herf +//http://stereopsis.com/radix.html +inline uint FloatToUint(float f) +{ + uint mask = -((int) (asuint(f) >> 31)) | 0x80000000; + return asuint(f) ^ mask; +} + +inline float UintToFloat(uint u) +{ + uint mask = ((u >> 31) - 1) | 0x80000000; + return asfloat(u ^ mask); +} + +inline uint IntToUint(int i) +{ + return asuint(i ^ 0x80000000); +} + +inline int UintToInt(uint u) +{ + return asint(u ^ 0x80000000); +} + +inline uint getWaveCountPass(uint waveSize) +{ + return D_DIM / waveSize; +} + +inline uint ExtractDigit(uint key) +{ + return key >> e_radixShift & RADIX_MASK; +} + +inline uint ExtractDigit(uint key, uint shift) +{ + return key >> shift & RADIX_MASK; +} + +inline uint ExtractPackedIndex(uint key) +{ + return key >> (e_radixShift + 1) & HALF_MASK; +} + +inline uint ExtractPackedShift(uint key) +{ + return (key >> e_radixShift & 1) ? 16 : 0; +} + +inline uint ExtractPackedValue(uint packed, uint key) +{ + return packed >> ExtractPackedShift(key) & 0xffff; +} + +inline uint SubPartSizeWGE16(uint waveSize) +{ + return KEYS_PER_THREAD * waveSize; +} + +inline uint SharedOffsetWGE16(uint gtid, uint waveSize) +{ + return WaveGetLaneIndex() + getWaveIndex(gtid, waveSize) * SubPartSizeWGE16(waveSize); +} + +inline uint SubPartSizeWLT16(uint waveSize, uint _serialIterations) +{ + return KEYS_PER_THREAD * waveSize * _serialIterations; +} + +inline uint SharedOffsetWLT16(uint gtid, uint waveSize, uint _serialIterations) +{ + return WaveGetLaneIndex() + + (getWaveIndex(gtid, waveSize) / _serialIterations * SubPartSizeWLT16(waveSize, _serialIterations)) + + (getWaveIndex(gtid, waveSize) % _serialIterations * waveSize); +} + +inline uint DeviceOffsetWGE16(uint gtid, uint waveSize, uint partIndex) +{ + return SharedOffsetWGE16(gtid, waveSize) + partIndex * PART_SIZE; +} + +inline uint DeviceOffsetWLT16(uint gtid, uint waveSize, uint partIndex, uint serialIterations) +{ + return SharedOffsetWLT16(gtid, waveSize, serialIterations) + partIndex * PART_SIZE; +} + +inline uint GlobalHistOffset() +{ + return e_radixShift << 5; +} + +inline uint WaveHistsSizeWGE16(uint waveSize) +{ + return D_DIM / waveSize * RADIX; +} + +inline uint WaveHistsSizeWLT16() +{ + return D_TOTAL_SMEM; +} + +//***************************************************************************** +//FUNCTIONS COMMON TO THE DOWNSWEEP / DIGIT BINNING PASS +//***************************************************************************** +//If the size of a wave is too small, we do not have enough space in +//shared memory to assign a histogram to each wave, so instead, +//some operations are peformed serially. +inline uint SerialIterations(uint waveSize) +{ + return (D_DIM / waveSize + 31) >> 5; +} + +inline void ClearWaveHists(uint gtid, uint waveSize) +{ + const uint histsEnd = waveSize >= 16 ? + WaveHistsSizeWGE16(waveSize) : WaveHistsSizeWLT16(); + for (uint i = gtid; i < histsEnd; i += D_DIM) + g_d[i] = 0; +} + +inline void LoadKey(inout uint key, uint index) +{ +#if defined(KEY_UINT) + key = b_sort[index]; +#elif defined(KEY_INT) + key = UintToInt(b_sort[index]); +#elif defined(KEY_FLOAT) + key = FloatToUint(b_sort[index]); +#endif +} + +inline void LoadDummyKey(inout uint key) +{ + key = 0xffffffff; +} + +inline KeyStruct LoadKeysWGE16(uint gtid, uint waveSize, uint partIndex) +{ + KeyStruct keys; + [unroll] + for (uint i = 0, t = DeviceOffsetWGE16(gtid, waveSize, partIndex); + i < KEYS_PER_THREAD; + ++i, t += waveSize) + { + LoadKey(keys.k[i], t); + } + return keys; +} + +inline KeyStruct LoadKeysWLT16(uint gtid, uint waveSize, uint partIndex, uint serialIterations) +{ + KeyStruct keys; + [unroll] + for (uint i = 0, t = DeviceOffsetWLT16(gtid, waveSize, partIndex, serialIterations); + i < KEYS_PER_THREAD; + ++i, t += waveSize * serialIterations) + { + LoadKey(keys.k[i], t); + } + return keys; +} + +inline KeyStruct LoadKeysPartialWGE16(uint gtid, uint waveSize, uint partIndex) +{ + KeyStruct keys; + [unroll] + for (uint i = 0, t = DeviceOffsetWGE16(gtid, waveSize, partIndex); + i < KEYS_PER_THREAD; + ++i, t += waveSize) + { + if (t < e_numKeys) + LoadKey(keys.k[i], t); + else + LoadDummyKey(keys.k[i]); + } + return keys; +} + +inline KeyStruct LoadKeysPartialWLT16(uint gtid, uint waveSize, uint partIndex, uint serialIterations) +{ + KeyStruct keys; + [unroll] + for (uint i = 0, t = DeviceOffsetWLT16(gtid, waveSize, partIndex, serialIterations); + i < KEYS_PER_THREAD; + ++i, t += waveSize * serialIterations) + { + if (t < e_numKeys) + LoadKey(keys.k[i], t); + else + LoadDummyKey(keys.k[i]); + } + return keys; +} + +inline uint WaveFlagsWGE16(uint waveSize) +{ + return (waveSize & 31) ? (1U << waveSize) - 1 : 0xffffffff; +} + +inline uint WaveFlagsWLT16(uint waveSize) +{ + return (1U << waveSize) - 1;; +} + +inline void WarpLevelMultiSplitWGE16(uint key, inout uint4 waveFlags) +{ + [unroll] + for (uint k = 0; k < RADIX_LOG; ++k) + { + const uint currentBit = 1 << k + e_radixShift; + const bool t = (key & currentBit) != 0; + GroupMemoryBarrierWithGroupSync(); //Play on the safe side, throw in a barrier for convergence + const uint4 ballot = WaveActiveBallot(t); + if(t) + waveFlags &= ballot; + else + waveFlags &= (~ballot); + } +} + +inline uint2 CountBitsWGE16(uint waveSize, uint ltMask, uint4 waveFlags) +{ + uint2 count = uint2(0, 0); + + for(uint wavePart = 0; wavePart < waveSize; wavePart += 32) + { + uint t = countbits(waveFlags[wavePart >> 5]); + if (WaveGetLaneIndex() >= wavePart) + { + if (WaveGetLaneIndex() >= wavePart + 32) + count.x += t; + else + count.x += countbits(waveFlags[wavePart >> 5] & ltMask); + } + count.y += t; + } + + return count; +} + +inline void WarpLevelMultiSplitWLT16(uint key, inout uint waveFlags) +{ + [unroll] + for (uint k = 0; k < RADIX_LOG; ++k) + { + const bool t = key >> (k + e_radixShift) & 1; + waveFlags &= (t ? 0 : 0xffffffff) ^ (uint) WaveActiveBallot(t); + } +} + +inline OffsetStruct RankKeysWGE16( + uint waveSize, + uint waveOffset, + KeyStruct keys) +{ + OffsetStruct offsets; + const uint initialFlags = WaveFlagsWGE16(waveSize); + const uint ltMask = (1U << (WaveGetLaneIndex() & 31)) - 1; + + [unroll] + for (uint i = 0; i < KEYS_PER_THREAD; ++i) + { + uint4 waveFlags = initialFlags; + WarpLevelMultiSplitWGE16(keys.k[i], waveFlags); + + const uint index = ExtractDigit(keys.k[i]) + waveOffset; + const uint2 bitCount = CountBitsWGE16(waveSize, ltMask, waveFlags); + + offsets.o[i] = g_d[index] + bitCount.x; + GroupMemoryBarrierWithGroupSync(); + if (bitCount.x == 0) + g_d[index] += bitCount.y; + GroupMemoryBarrierWithGroupSync(); + } + + return offsets; +} + +inline OffsetStruct RankKeysWLT16(uint waveSize, uint waveIndex, KeyStruct keys, uint serialIterations) +{ + OffsetStruct offsets; + const uint ltMask = (1U << WaveGetLaneIndex()) - 1; + const uint initialFlags = WaveFlagsWLT16(waveSize); + + [unroll] + for (uint i = 0; i < KEYS_PER_THREAD; ++i) + { + uint waveFlags = initialFlags; + WarpLevelMultiSplitWLT16(keys.k[i], waveFlags); + + const uint index = ExtractPackedIndex(keys.k[i]) + + (waveIndex / serialIterations * HALF_RADIX); + + const uint peerBits = countbits(waveFlags & ltMask); + for (uint k = 0; k < serialIterations; ++k) + { + if (waveIndex % serialIterations == k) + offsets.o[i] = ExtractPackedValue(g_d[index], keys.k[i]) + peerBits; + + GroupMemoryBarrierWithGroupSync(); + if (waveIndex % serialIterations == k && peerBits == 0) + { + InterlockedAdd(g_d[index], + countbits(waveFlags) << ExtractPackedShift(keys.k[i])); + } + GroupMemoryBarrierWithGroupSync(); + } + } + + return offsets; +} + +inline uint WaveHistInclusiveScanCircularShiftWGE16(uint gtid, uint waveSize) +{ + uint histReduction = g_d[gtid]; + for (uint i = gtid + RADIX; i < WaveHistsSizeWGE16(waveSize); i += RADIX) + { + histReduction += g_d[i]; + g_d[i] = histReduction - g_d[i]; + } + return histReduction; +} + +inline uint WaveHistInclusiveScanCircularShiftWLT16(uint gtid) +{ + uint histReduction = g_d[gtid]; + for (uint i = gtid + HALF_RADIX; i < WaveHistsSizeWLT16(); i += HALF_RADIX) + { + histReduction += g_d[i]; + g_d[i] = histReduction - g_d[i]; + } + return histReduction; +} + +inline void WaveHistReductionExclusiveScanWGE16(uint gtid, uint waveSize, uint histReduction) +{ + if (gtid < RADIX) + { + const uint laneMask = waveSize - 1; + g_d[((WaveGetLaneIndex() + 1) & laneMask) + (gtid & ~laneMask)] = histReduction; + } + GroupMemoryBarrierWithGroupSync(); + + if (gtid < RADIX / waveSize) + { + g_d[gtid * waveSize] = + WavePrefixSum(g_d[gtid * waveSize]); + } + GroupMemoryBarrierWithGroupSync(); + + uint t = WaveReadLaneAt(g_d[gtid], 0); + if (gtid < RADIX && WaveGetLaneIndex()) + g_d[gtid] += t; +} + +//inclusive/exclusive prefix sum up the histograms, +//use a blelloch scan for in place packed exclusive +inline void WaveHistReductionExclusiveScanWLT16(uint gtid) +{ + uint shift = 1; + for (uint j = RADIX >> 2; j > 0; j >>= 1) + { + GroupMemoryBarrierWithGroupSync(); + if (gtid < j) + { + g_d[((((gtid << 1) + 2) << shift) - 1) >> 1] += + g_d[((((gtid << 1) + 1) << shift) - 1) >> 1] & 0xffff0000; + } + shift++; + } + GroupMemoryBarrierWithGroupSync(); + + if (gtid == 0) + g_d[HALF_RADIX - 1] &= 0xffff; + + for (uint j = 1; j < RADIX >> 1; j <<= 1) + { + --shift; + GroupMemoryBarrierWithGroupSync(); + if (gtid < j) + { + const uint t = ((((gtid << 1) + 1) << shift) - 1) >> 1; + const uint t2 = ((((gtid << 1) + 2) << shift) - 1) >> 1; + const uint t3 = g_d[t]; + g_d[t] = (g_d[t] & 0xffff) | (g_d[t2] & 0xffff0000); + g_d[t2] += t3 & 0xffff0000; + } + } + + GroupMemoryBarrierWithGroupSync(); + if (gtid < HALF_RADIX) + { + const uint t = g_d[gtid]; + g_d[gtid] = (t >> 16) + (t << 16) + (t & 0xffff0000); + } +} + +inline void UpdateOffsetsWGE16( + uint gtid, + uint waveSize, + inout OffsetStruct offsets, + KeyStruct keys) +{ + if (gtid >= waveSize) + { + const uint t = getWaveIndex(gtid, waveSize) * RADIX; + [unroll] + for (uint i = 0; i < KEYS_PER_THREAD; ++i) + { + const uint t2 = ExtractDigit(keys.k[i]); + offsets.o[i] += g_d[t2 + t] + g_d[t2]; + } + } + else + { + [unroll] + for (uint i = 0; i < KEYS_PER_THREAD; ++i) + offsets.o[i] += g_d[ExtractDigit(keys.k[i])]; + } +} + +inline void UpdateOffsetsWLT16( + uint gtid, + uint waveSize, + uint serialIterations, + inout OffsetStruct offsets, + KeyStruct keys) +{ + if (gtid >= waveSize * serialIterations) + { + const uint t = getWaveIndex(gtid, waveSize) / serialIterations * HALF_RADIX; + [unroll] + for (uint i = 0; i < KEYS_PER_THREAD; ++i) + { + const uint t2 = ExtractPackedIndex(keys.k[i]); + offsets.o[i] += ExtractPackedValue(g_d[t2 + t] + g_d[t2], keys.k[i]); + } + } + else + { + [unroll] + for (uint i = 0; i < KEYS_PER_THREAD; ++i) + offsets.o[i] += ExtractPackedValue(g_d[ExtractPackedIndex(keys.k[i])], keys.k[i]); + } +} + +inline void ScatterKeysShared(OffsetStruct offsets, KeyStruct keys) +{ + [unroll] + for (uint i = 0; i < KEYS_PER_THREAD; ++i) + g_d[offsets.o[i]] = keys.k[i]; +} + +inline uint DescendingIndex(uint deviceIndex) +{ + return e_numKeys - deviceIndex - 1; +} + +inline void WriteKey(uint deviceIndex, uint groupSharedIndex) +{ +#if defined(KEY_UINT) + b_alt[deviceIndex] = g_d[groupSharedIndex]; +#elif defined(KEY_INT) + b_alt[deviceIndex] = UintToInt(g_d[groupSharedIndex]); +#elif defined(KEY_FLOAT) + b_alt[deviceIndex] = UintToFloat(g_d[groupSharedIndex]); +#endif +} + +inline void LoadPayload(inout uint payload, uint deviceIndex) +{ +#if defined(PAYLOAD_UINT) + payload = b_sortPayload[deviceIndex]; +#elif defined(PAYLOAD_INT) || defined(PAYLOAD_FLOAT) + payload = asuint(b_sortPayload[deviceIndex]); +#endif +} + +inline void ScatterPayloadsShared(OffsetStruct offsets, KeyStruct payloads) +{ + ScatterKeysShared(offsets, payloads); +} + +inline void WritePayload(uint deviceIndex, uint groupSharedIndex) +{ +#if defined(PAYLOAD_UINT) + b_altPayload[deviceIndex] = g_d[groupSharedIndex]; +#elif defined(PAYLOAD_INT) + b_altPayload[deviceIndex] = asint(g_d[groupSharedIndex]); +#elif defined(PAYLOAD_FLOAT) + b_altPayload[deviceIndex] = asfloat(g_d[groupSharedIndex]); +#endif +} + +//***************************************************************************** +//SCATTERING: FULL PARTITIONS +//***************************************************************************** +//KEYS ONLY +inline void ScatterKeysOnlyDeviceAscending(uint gtid) +{ + for (uint i = gtid; i < PART_SIZE; i += D_DIM) + WriteKey(g_d[ExtractDigit(g_d[i]) + PART_SIZE] + i, i); +} + +inline void ScatterKeysOnlyDeviceDescending(uint gtid) +{ + if (e_radixShift == 24) + { + for (uint i = gtid; i < PART_SIZE; i += D_DIM) + WriteKey(DescendingIndex(g_d[ExtractDigit(g_d[i]) + PART_SIZE] + i), i); + } + else + { + ScatterKeysOnlyDeviceAscending(gtid); + } +} + +inline void ScatterKeysOnlyDevice(uint gtid) +{ +#if defined(SHOULD_ASCEND) + ScatterKeysOnlyDeviceAscending(gtid); +#else + ScatterKeysOnlyDeviceDescending(gtid); +#endif +} + +//KEY VALUE PAIRS +inline void ScatterPairsKeyPhaseAscending( + uint gtid, + inout DigitStruct digits) +{ + [unroll] + for (uint i = 0, t = gtid; i < KEYS_PER_THREAD; ++i, t += D_DIM) + { + digits.d[i] = ExtractDigit(g_d[t]); + WriteKey(g_d[digits.d[i] + PART_SIZE] + t, t); + } +} + +inline void ScatterPairsKeyPhaseDescending( + uint gtid, + inout DigitStruct digits) +{ + if (e_radixShift == 24) + { + [unroll] + for (uint i = 0, t = gtid; i < KEYS_PER_THREAD; ++i, t += D_DIM) + { + digits.d[i] = ExtractDigit(g_d[t]); + WriteKey(DescendingIndex(g_d[digits.d[i] + PART_SIZE] + t), t); + } + } + else + { + ScatterPairsKeyPhaseAscending(gtid, digits); + } +} + +inline void LoadPayloadsWGE16( + uint gtid, + uint waveSize, + uint partIndex, + inout KeyStruct payloads) +{ + [unroll] + for (uint i = 0, t = DeviceOffsetWGE16(gtid, waveSize, partIndex); + i < KEYS_PER_THREAD; + ++i, t += waveSize) + { + LoadPayload(payloads.k[i], t); + } +} + +inline void LoadPayloadsWLT16( + uint gtid, + uint waveSize, + uint partIndex, + uint serialIterations, + inout KeyStruct payloads) +{ + [unroll] + for (uint i = 0, t = DeviceOffsetWLT16(gtid, waveSize, partIndex, serialIterations); + i < KEYS_PER_THREAD; + ++i, t += waveSize * serialIterations) + { + LoadPayload(payloads.k[i], t); + } +} + +inline void ScatterPayloadsAscending(uint gtid, DigitStruct digits) +{ + [unroll] + for (uint i = 0, t = gtid; i < KEYS_PER_THREAD; ++i, t += D_DIM) + WritePayload(g_d[digits.d[i] + PART_SIZE] + t, t); +} + +inline void ScatterPayloadsDescending(uint gtid, DigitStruct digits) +{ + if (e_radixShift == 24) + { + [unroll] + for (uint i = 0, t = gtid; i < KEYS_PER_THREAD; ++i, t += D_DIM) + WritePayload(DescendingIndex(g_d[digits.d[i] + PART_SIZE] + t), t); + } + else + { + ScatterPayloadsAscending(gtid, digits); + } +} + +inline void ScatterPairsDevice( + uint gtid, + uint waveSize, + uint partIndex, + OffsetStruct offsets) +{ + DigitStruct digits; +#if defined(SHOULD_ASCEND) + ScatterPairsKeyPhaseAscending(gtid, digits); +#else + ScatterPairsKeyPhaseDescending(gtid, digits); +#endif + GroupMemoryBarrierWithGroupSync(); + + KeyStruct payloads; + if (waveSize >= 16) + LoadPayloadsWGE16(gtid, waveSize, partIndex, payloads); + else + LoadPayloadsWLT16(gtid, waveSize, partIndex, SerialIterations(waveSize), payloads); + ScatterPayloadsShared(offsets, payloads); + GroupMemoryBarrierWithGroupSync(); + +#if defined(SHOULD_ASCEND) + ScatterPayloadsAscending(gtid, digits); +#else + ScatterPayloadsDescending(gtid, digits); +#endif +} + +inline void ScatterDevice( + uint gtid, + uint waveSize, + uint partIndex, + OffsetStruct offsets) +{ +#if defined(SORT_PAIRS) + ScatterPairsDevice( + gtid, + waveSize, + partIndex, + offsets); +#else + ScatterKeysOnlyDevice(gtid); +#endif +} + +//***************************************************************************** +//SCATTERING: PARTIAL PARTITIONS +//***************************************************************************** +//KEYS ONLY +inline void ScatterKeysOnlyDevicePartialAscending(uint gtid, uint finalPartSize) +{ + for (uint i = gtid; i < PART_SIZE; i += D_DIM) + { + if (i < finalPartSize) + WriteKey(g_d[ExtractDigit(g_d[i]) + PART_SIZE] + i, i); + } +} + +inline void ScatterKeysOnlyDevicePartialDescending(uint gtid, uint finalPartSize) +{ + if (e_radixShift == 24) + { + for (uint i = gtid; i < PART_SIZE; i += D_DIM) + { + if (i < finalPartSize) + WriteKey(DescendingIndex(g_d[ExtractDigit(g_d[i]) + PART_SIZE] + i), i); + } + } + else + { + ScatterKeysOnlyDevicePartialAscending(gtid, finalPartSize); + } +} + +inline void ScatterKeysOnlyDevicePartial(uint gtid, uint partIndex) +{ + const uint finalPartSize = e_numKeys - partIndex * PART_SIZE; +#if defined(SHOULD_ASCEND) + ScatterKeysOnlyDevicePartialAscending(gtid, finalPartSize); +#else + ScatterKeysOnlyDevicePartialDescending(gtid, finalPartSize); +#endif +} + +//KEY VALUE PAIRS +inline void ScatterPairsKeyPhaseAscendingPartial( + uint gtid, + uint finalPartSize, + inout DigitStruct digits) +{ + [unroll] + for (uint i = 0, t = gtid; i < KEYS_PER_THREAD; ++i, t += D_DIM) + { + if (t < finalPartSize) + { + digits.d[i] = ExtractDigit(g_d[t]); + WriteKey(g_d[digits.d[i] + PART_SIZE] + t, t); + } + } +} + +inline void ScatterPairsKeyPhaseDescendingPartial( + uint gtid, + uint finalPartSize, + inout DigitStruct digits) +{ + if (e_radixShift == 24) + { + [unroll] + for (uint i = 0, t = gtid; i < KEYS_PER_THREAD; ++i, t += D_DIM) + { + if (t < finalPartSize) + { + digits.d[i] = ExtractDigit(g_d[t]); + WriteKey(DescendingIndex(g_d[digits.d[i] + PART_SIZE] + t), t); + } + } + } + else + { + ScatterPairsKeyPhaseAscendingPartial(gtid, finalPartSize, digits); + } +} + +inline void LoadPayloadsPartialWGE16( + uint gtid, + uint waveSize, + uint partIndex, + inout KeyStruct payloads) +{ + [unroll] + for (uint i = 0, t = DeviceOffsetWGE16(gtid, waveSize, partIndex); + i < KEYS_PER_THREAD; + ++i, t += waveSize) + { + if (t < e_numKeys) + LoadPayload(payloads.k[i], t); + } +} + +inline void LoadPayloadsPartialWLT16( + uint gtid, + uint waveSize, + uint partIndex, + uint serialIterations, + inout KeyStruct payloads) +{ + [unroll] + for (uint i = 0, t = DeviceOffsetWLT16(gtid, waveSize, partIndex, serialIterations); + i < KEYS_PER_THREAD; + ++i, t += waveSize * serialIterations) + { + if (t < e_numKeys) + LoadPayload(payloads.k[i], t); + } +} + +inline void ScatterPayloadsAscendingPartial( + uint gtid, + uint finalPartSize, + DigitStruct digits) +{ + [unroll] + for (uint i = 0, t = gtid; i < KEYS_PER_THREAD; ++i, t += D_DIM) + { + if (t < finalPartSize) + WritePayload(g_d[digits.d[i] + PART_SIZE] + t, t); + } +} + +inline void ScatterPayloadsDescendingPartial( + uint gtid, + uint finalPartSize, + DigitStruct digits) +{ + if (e_radixShift == 24) + { + [unroll] + for (uint i = 0, t = gtid; i < KEYS_PER_THREAD; ++i, t += D_DIM) + { + if (t < finalPartSize) + WritePayload(DescendingIndex(g_d[digits.d[i] + PART_SIZE] + t), t); + } + } + else + { + ScatterPayloadsAscendingPartial(gtid, finalPartSize, digits); + } +} + +inline void ScatterPairsDevicePartial( + uint gtid, + uint waveSize, + uint partIndex, + OffsetStruct offsets) +{ + DigitStruct digits; + const uint finalPartSize = e_numKeys - partIndex * PART_SIZE; +#if defined(SHOULD_ASCEND) + ScatterPairsKeyPhaseAscendingPartial(gtid, finalPartSize, digits); +#else + ScatterPairsKeyPhaseDescendingPartial(gtid, finalPartSize, digits); +#endif + GroupMemoryBarrierWithGroupSync(); + + KeyStruct payloads; + if (waveSize >= 16) + LoadPayloadsPartialWGE16(gtid, waveSize, partIndex, payloads); + else + LoadPayloadsPartialWLT16(gtid, waveSize, partIndex, SerialIterations(waveSize), payloads); + ScatterPayloadsShared(offsets, payloads); + GroupMemoryBarrierWithGroupSync(); + +#if defined(SHOULD_ASCEND) + ScatterPayloadsAscendingPartial(gtid, finalPartSize, digits); +#else + ScatterPayloadsDescendingPartial(gtid, finalPartSize, digits); +#endif +} + +inline void ScatterDevicePartial( + uint gtid, + uint waveSize, + uint partIndex, + OffsetStruct offsets) +{ +#if defined(SORT_PAIRS) + ScatterPairsDevicePartial( + gtid, + waveSize, + partIndex, + offsets); +#else + ScatterKeysOnlyDevicePartial(gtid, partIndex); +#endif +} \ No newline at end of file diff --git a/MVS/3DGS-Unity/Shaders/SortCommon.hlsl.meta b/MVS/3DGS-Unity/Shaders/SortCommon.hlsl.meta new file mode 100644 index 00000000..572930fc --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/SortCommon.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 268e5936ab6d79f4b8aeef8f5d14e7ee +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Shaders/SphericalHarmonics.hlsl b/MVS/3DGS-Unity/Shaders/SphericalHarmonics.hlsl new file mode 100644 index 00000000..83d64632 --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/SphericalHarmonics.hlsl @@ -0,0 +1,212 @@ +// SPDX-License-Identifier: MIT + +#ifndef SPHERICAL_HARMONICS_HLSL +#define SPHERICAL_HARMONICS_HLSL + +// SH rotation based on https://github.com/andrewwillmott/sh-lib (Unlicense / public domain) + +#define SH_MAX_ORDER 4 +#define SH_MAX_COEFFS_COUNT (SH_MAX_ORDER*SH_MAX_ORDER) + +float3 Dot3(int vidx, float3 v[SH_MAX_COEFFS_COUNT], float f[3]) +{ + return v[vidx+0] * f[0] + v[vidx+1] * f[1] + v[vidx+2] * f[2]; +} +float3 Dot5(int vidx, float3 v[SH_MAX_COEFFS_COUNT], float f[5]) +{ + return v[vidx+0] * f[0] + v[vidx+1] * f[1] + v[vidx+2] * f[2] + v[vidx+3] * f[3] + v[vidx+4] * f[4]; +} +float3 Dot7(int vidx, float3 v[SH_MAX_COEFFS_COUNT], float f[7]) +{ + return v[vidx+0] * f[0] + v[vidx+1] * f[1] + v[vidx+2] * f[2] + v[vidx+3] * f[3] + v[vidx+4] * f[4] + v[vidx+5] * f[5] + v[vidx+6] * f[6]; +} + +void RotateSH(float3x3 orient, int n, float3 coeffsIn[SH_MAX_COEFFS_COUNT], out float3 coeffs[SH_MAX_COEFFS_COUNT]) +{ + const float kSqrt03_02 = sqrt( 3.0 / 2.0); + const float kSqrt01_03 = sqrt( 1.0 / 3.0); + const float kSqrt02_03 = sqrt( 2.0 / 3.0); + const float kSqrt04_03 = sqrt( 4.0 / 3.0); + const float kSqrt01_04 = sqrt( 1.0 / 4.0); + const float kSqrt03_04 = sqrt( 3.0 / 4.0); + const float kSqrt01_05 = sqrt( 1.0 / 5.0); + const float kSqrt03_05 = sqrt( 3.0 / 5.0); + const float kSqrt06_05 = sqrt( 6.0 / 5.0); + const float kSqrt08_05 = sqrt( 8.0 / 5.0); + const float kSqrt09_05 = sqrt( 9.0 / 5.0); + const float kSqrt05_06 = sqrt( 5.0 / 6.0); + const float kSqrt01_06 = sqrt( 1.0 / 6.0); + const float kSqrt03_08 = sqrt( 3.0 / 8.0); + const float kSqrt05_08 = sqrt( 5.0 / 8.0); + const float kSqrt07_08 = sqrt( 7.0 / 8.0); + const float kSqrt09_08 = sqrt( 9.0 / 8.0); + const float kSqrt05_09 = sqrt( 5.0 / 9.0); + const float kSqrt08_09 = sqrt( 8.0 / 9.0); + + const float kSqrt01_10 = sqrt( 1.0 / 10.0); + const float kSqrt03_10 = sqrt( 3.0 / 10.0); + const float kSqrt01_12 = sqrt( 1.0 / 12.0); + const float kSqrt04_15 = sqrt( 4.0 / 15.0); + const float kSqrt01_16 = sqrt( 1.0 / 16.0); + const float kSqrt07_16 = sqrt( 7.0 / 16.0); + const float kSqrt15_16 = sqrt(15.0 / 16.0); + const float kSqrt01_18 = sqrt( 1.0 / 18.0); + const float kSqrt03_25 = sqrt( 3.0 / 25.0); + const float kSqrt14_25 = sqrt(14.0 / 25.0); + const float kSqrt15_25 = sqrt(15.0 / 25.0); + const float kSqrt18_25 = sqrt(18.0 / 25.0); + const float kSqrt01_32 = sqrt( 1.0 / 32.0); + const float kSqrt03_32 = sqrt( 3.0 / 32.0); + const float kSqrt15_32 = sqrt(15.0 / 32.0); + const float kSqrt21_32 = sqrt(21.0 / 32.0); + const float kSqrt01_50 = sqrt( 1.0 / 50.0); + const float kSqrt03_50 = sqrt( 3.0 / 50.0); + const float kSqrt21_50 = sqrt(21.0 / 50.0); + + int srcIdx = 0; + int dstIdx = 0; + + // band 0 + coeffs[dstIdx++] = coeffsIn[0]; + if (n < 2) + return; + + // band 1 + srcIdx += 1; + float sh1[3][3] = + { + // NOTE: change from upstream code at https://github.com/andrewwillmott/sh-lib, some of the + // values need to have "-" in front of them. + orient._22, -orient._23, orient._21, + -orient._32, orient._33, -orient._31, + orient._12, -orient._13, orient._11 + }; + coeffs[dstIdx++] = Dot3(srcIdx, coeffsIn, sh1[0]); + coeffs[dstIdx++] = Dot3(srcIdx, coeffsIn, sh1[1]); + coeffs[dstIdx++] = Dot3(srcIdx, coeffsIn, sh1[2]); + if (n < 3) + return; + + // band 2 + srcIdx += 3; + float sh2[5][5]; + + sh2[0][0] = kSqrt01_04 * ((sh1[2][2] * sh1[0][0] + sh1[2][0] * sh1[0][2]) + (sh1[0][2] * sh1[2][0] + sh1[0][0] * sh1[2][2])); + sh2[0][1] = (sh1[2][1] * sh1[0][0] + sh1[0][1] * sh1[2][0]); + sh2[0][2] = kSqrt03_04 * (sh1[2][1] * sh1[0][1] + sh1[0][1] * sh1[2][1]); + sh2[0][3] = (sh1[2][1] * sh1[0][2] + sh1[0][1] * sh1[2][2]); + sh2[0][4] = kSqrt01_04 * ((sh1[2][2] * sh1[0][2] - sh1[2][0] * sh1[0][0]) + (sh1[0][2] * sh1[2][2] - sh1[0][0] * sh1[2][0])); + + coeffs[dstIdx++] = Dot5(srcIdx, coeffsIn, sh2[0]); + + sh2[1][0] = kSqrt01_04 * ((sh1[1][2] * sh1[0][0] + sh1[1][0] * sh1[0][2]) + (sh1[0][2] * sh1[1][0] + sh1[0][0] * sh1[1][2])); + sh2[1][1] = sh1[1][1] * sh1[0][0] + sh1[0][1] * sh1[1][0]; + sh2[1][2] = kSqrt03_04 * (sh1[1][1] * sh1[0][1] + sh1[0][1] * sh1[1][1]); + sh2[1][3] = sh1[1][1] * sh1[0][2] + sh1[0][1] * sh1[1][2]; + sh2[1][4] = kSqrt01_04 * ((sh1[1][2] * sh1[0][2] - sh1[1][0] * sh1[0][0]) + (sh1[0][2] * sh1[1][2] - sh1[0][0] * sh1[1][0])); + + coeffs[dstIdx++] = Dot5(srcIdx, coeffsIn, sh2[1]); + + sh2[2][0] = kSqrt01_03 * (sh1[1][2] * sh1[1][0] + sh1[1][0] * sh1[1][2]) + -kSqrt01_12 * ((sh1[2][2] * sh1[2][0] + sh1[2][0] * sh1[2][2]) + (sh1[0][2] * sh1[0][0] + sh1[0][0] * sh1[0][2])); + sh2[2][1] = kSqrt04_03 * sh1[1][1] * sh1[1][0] + -kSqrt01_03 * (sh1[2][1] * sh1[2][0] + sh1[0][1] * sh1[0][0]); + sh2[2][2] = sh1[1][1] * sh1[1][1] + -kSqrt01_04 * (sh1[2][1] * sh1[2][1] + sh1[0][1] * sh1[0][1]); + sh2[2][3] = kSqrt04_03 * sh1[1][1] * sh1[1][2] + -kSqrt01_03 * (sh1[2][1] * sh1[2][2] + sh1[0][1] * sh1[0][2]); + sh2[2][4] = kSqrt01_03 * (sh1[1][2] * sh1[1][2] - sh1[1][0] * sh1[1][0]) + -kSqrt01_12 * ((sh1[2][2] * sh1[2][2] - sh1[2][0] * sh1[2][0]) + (sh1[0][2] * sh1[0][2] - sh1[0][0] * sh1[0][0])); + + coeffs[dstIdx++] = Dot5(srcIdx, coeffsIn, sh2[2]); + + sh2[3][0] = kSqrt01_04 * ((sh1[1][2] * sh1[2][0] + sh1[1][0] * sh1[2][2]) + (sh1[2][2] * sh1[1][0] + sh1[2][0] * sh1[1][2])); + sh2[3][1] = sh1[1][1] * sh1[2][0] + sh1[2][1] * sh1[1][0]; + sh2[3][2] = kSqrt03_04 * (sh1[1][1] * sh1[2][1] + sh1[2][1] * sh1[1][1]); + sh2[3][3] = sh1[1][1] * sh1[2][2] + sh1[2][1] * sh1[1][2]; + sh2[3][4] = kSqrt01_04 * ((sh1[1][2] * sh1[2][2] - sh1[1][0] * sh1[2][0]) + (sh1[2][2] * sh1[1][2] - sh1[2][0] * sh1[1][0])); + + coeffs[dstIdx++] = Dot5(srcIdx, coeffsIn, sh2[3]); + + sh2[4][0] = kSqrt01_04 * ((sh1[2][2] * sh1[2][0] + sh1[2][0] * sh1[2][2]) - (sh1[0][2] * sh1[0][0] + sh1[0][0] * sh1[0][2])); + sh2[4][1] = (sh1[2][1] * sh1[2][0] - sh1[0][1] * sh1[0][0]); + sh2[4][2] = kSqrt03_04 * (sh1[2][1] * sh1[2][1] - sh1[0][1] * sh1[0][1]); + sh2[4][3] = (sh1[2][1] * sh1[2][2] - sh1[0][1] * sh1[0][2]); + sh2[4][4] = kSqrt01_04 * ((sh1[2][2] * sh1[2][2] - sh1[2][0] * sh1[2][0]) - (sh1[0][2] * sh1[0][2] - sh1[0][0] * sh1[0][0])); + + coeffs[dstIdx++] = Dot5(srcIdx, coeffsIn, sh2[4]); + + if (n < 4) + return; + + // band 3 + srcIdx += 5; + float sh3[7][7]; + + sh3[0][0] = kSqrt01_04 * ((sh1[2][2] * sh2[0][0] + sh1[2][0] * sh2[0][4]) + (sh1[0][2] * sh2[4][0] + sh1[0][0] * sh2[4][4])); + sh3[0][1] = kSqrt03_02 * (sh1[2][1] * sh2[0][0] + sh1[0][1] * sh2[4][0]); + sh3[0][2] = kSqrt15_16 * (sh1[2][1] * sh2[0][1] + sh1[0][1] * sh2[4][1]); + sh3[0][3] = kSqrt05_06 * (sh1[2][1] * sh2[0][2] + sh1[0][1] * sh2[4][2]); + sh3[0][4] = kSqrt15_16 * (sh1[2][1] * sh2[0][3] + sh1[0][1] * sh2[4][3]); + sh3[0][5] = kSqrt03_02 * (sh1[2][1] * sh2[0][4] + sh1[0][1] * sh2[4][4]); + sh3[0][6] = kSqrt01_04 * ((sh1[2][2] * sh2[0][4] - sh1[2][0] * sh2[0][0]) + (sh1[0][2] * sh2[4][4] - sh1[0][0] * sh2[4][0])); + + coeffs[dstIdx++] = Dot7(srcIdx, coeffsIn, sh3[0]); + + sh3[1][0] = kSqrt01_06 * (sh1[1][2] * sh2[0][0] + sh1[1][0] * sh2[0][4]) + kSqrt01_06 * ((sh1[2][2] * sh2[1][0] + sh1[2][0] * sh2[1][4]) + (sh1[0][2] * sh2[3][0] + sh1[0][0] * sh2[3][4])); + sh3[1][1] = sh1[1][1] * sh2[0][0] + (sh1[2][1] * sh2[1][0] + sh1[0][1] * sh2[3][0]); + sh3[1][2] = kSqrt05_08 * sh1[1][1] * sh2[0][1] + kSqrt05_08 * (sh1[2][1] * sh2[1][1] + sh1[0][1] * sh2[3][1]); + sh3[1][3] = kSqrt05_09 * sh1[1][1] * sh2[0][2] + kSqrt05_09 * (sh1[2][1] * sh2[1][2] + sh1[0][1] * sh2[3][2]); + sh3[1][4] = kSqrt05_08 * sh1[1][1] * sh2[0][3] + kSqrt05_08 * (sh1[2][1] * sh2[1][3] + sh1[0][1] * sh2[3][3]); + sh3[1][5] = sh1[1][1] * sh2[0][4] + (sh1[2][1] * sh2[1][4] + sh1[0][1] * sh2[3][4]); + sh3[1][6] = kSqrt01_06 * (sh1[1][2] * sh2[0][4] - sh1[1][0] * sh2[0][0]) + kSqrt01_06 * ((sh1[2][2] * sh2[1][4] - sh1[2][0] * sh2[1][0]) + (sh1[0][2] * sh2[3][4] - sh1[0][0] * sh2[3][0])); + + coeffs[dstIdx++] = Dot7(srcIdx, coeffsIn, sh3[1]); + + sh3[2][0] = kSqrt04_15 * (sh1[1][2] * sh2[1][0] + sh1[1][0] * sh2[1][4]) + kSqrt01_05 * (sh1[0][2] * sh2[2][0] + sh1[0][0] * sh2[2][4]) + -sqrt(1.0 / 60.0) * ((sh1[2][2] * sh2[0][0] + sh1[2][0] * sh2[0][4]) - (sh1[0][2] * sh2[4][0] + sh1[0][0] * sh2[4][4])); + sh3[2][1] = kSqrt08_05 * sh1[1][1] * sh2[1][0] + kSqrt06_05 * sh1[0][1] * sh2[2][0] + -kSqrt01_10 * (sh1[2][1] * sh2[0][0] - sh1[0][1] * sh2[4][0]); + sh3[2][2] = sh1[1][1] * sh2[1][1] + kSqrt03_04 * sh1[0][1] * sh2[2][1] + -kSqrt01_16 * (sh1[2][1] * sh2[0][1] - sh1[0][1] * sh2[4][1]); + sh3[2][3] = kSqrt08_09 * sh1[1][1] * sh2[1][2] + kSqrt02_03 * sh1[0][1] * sh2[2][2] + -kSqrt01_18 * (sh1[2][1] * sh2[0][2] - sh1[0][1] * sh2[4][2]); + sh3[2][4] = sh1[1][1] * sh2[1][3] + kSqrt03_04 * sh1[0][1] * sh2[2][3] + -kSqrt01_16 * (sh1[2][1] * sh2[0][3] - sh1[0][1] * sh2[4][3]); + sh3[2][5] = kSqrt08_05 * sh1[1][1] * sh2[1][4] + kSqrt06_05 * sh1[0][1] * sh2[2][4] + -kSqrt01_10 * (sh1[2][1] * sh2[0][4] - sh1[0][1] * sh2[4][4]); + sh3[2][6] = kSqrt04_15 * (sh1[1][2] * sh2[1][4] - sh1[1][0] * sh2[1][0]) + kSqrt01_05 * (sh1[0][2] * sh2[2][4] - sh1[0][0] * sh2[2][0]) + -sqrt(1.0 / 60.0) * ((sh1[2][2] * sh2[0][4] - sh1[2][0] * sh2[0][0]) - (sh1[0][2] * sh2[4][4] - sh1[0][0] * sh2[4][0])); + + coeffs[dstIdx++] = Dot7(srcIdx, coeffsIn, sh3[2]); + + sh3[3][0] = kSqrt03_10 * (sh1[1][2] * sh2[2][0] + sh1[1][0] * sh2[2][4]) + -kSqrt01_10 * ((sh1[2][2] * sh2[3][0] + sh1[2][0] * sh2[3][4]) + (sh1[0][2] * sh2[1][0] + sh1[0][0] * sh2[1][4])); + sh3[3][1] = kSqrt09_05 * sh1[1][1] * sh2[2][0] + -kSqrt03_05 * (sh1[2][1] * sh2[3][0] + sh1[0][1] * sh2[1][0]); + sh3[3][2] = kSqrt09_08 * sh1[1][1] * sh2[2][1] + -kSqrt03_08 * (sh1[2][1] * sh2[3][1] + sh1[0][1] * sh2[1][1]); + sh3[3][3] = sh1[1][1] * sh2[2][2] + -kSqrt01_03 * (sh1[2][1] * sh2[3][2] + sh1[0][1] * sh2[1][2]); + sh3[3][4] = kSqrt09_08 * sh1[1][1] * sh2[2][3] + -kSqrt03_08 * (sh1[2][1] * sh2[3][3] + sh1[0][1] * sh2[1][3]); + sh3[3][5] = kSqrt09_05 * sh1[1][1] * sh2[2][4] + -kSqrt03_05 * (sh1[2][1] * sh2[3][4] + sh1[0][1] * sh2[1][4]); + sh3[3][6] = kSqrt03_10 * (sh1[1][2] * sh2[2][4] - sh1[1][0] * sh2[2][0]) + -kSqrt01_10 * ((sh1[2][2] * sh2[3][4] - sh1[2][0] * sh2[3][0]) + (sh1[0][2] * sh2[1][4] - sh1[0][0] * sh2[1][0])); + + coeffs[dstIdx++] = Dot7(srcIdx, coeffsIn, sh3[3]); + + sh3[4][0] = kSqrt04_15 * (sh1[1][2] * sh2[3][0] + sh1[1][0] * sh2[3][4]) + kSqrt01_05 * (sh1[2][2] * sh2[2][0] + sh1[2][0] * sh2[2][4]) + -sqrt(1.0 / 60.0) * ((sh1[2][2] * sh2[4][0] + sh1[2][0] * sh2[4][4]) + (sh1[0][2] * sh2[0][0] + sh1[0][0] * sh2[0][4])); + sh3[4][1] = kSqrt08_05 * sh1[1][1] * sh2[3][0] + kSqrt06_05 * sh1[2][1] * sh2[2][0] + -kSqrt01_10 * (sh1[2][1] * sh2[4][0] + sh1[0][1] * sh2[0][0]); + sh3[4][2] = sh1[1][1] * sh2[3][1] + kSqrt03_04 * sh1[2][1] * sh2[2][1] + -kSqrt01_16 * (sh1[2][1] * sh2[4][1] + sh1[0][1] * sh2[0][1]); + sh3[4][3] = kSqrt08_09 * sh1[1][1] * sh2[3][2] + kSqrt02_03 * sh1[2][1] * sh2[2][2] + -kSqrt01_18 * (sh1[2][1] * sh2[4][2] + sh1[0][1] * sh2[0][2]); + sh3[4][4] = sh1[1][1] * sh2[3][3] + kSqrt03_04 * sh1[2][1] * sh2[2][3] + -kSqrt01_16 * (sh1[2][1] * sh2[4][3] + sh1[0][1] * sh2[0][3]); + sh3[4][5] = kSqrt08_05 * sh1[1][1] * sh2[3][4] + kSqrt06_05 * sh1[2][1] * sh2[2][4] + -kSqrt01_10 * (sh1[2][1] * sh2[4][4] + sh1[0][1] * sh2[0][4]); + sh3[4][6] = kSqrt04_15 * (sh1[1][2] * sh2[3][4] - sh1[1][0] * sh2[3][0]) + kSqrt01_05 * (sh1[2][2] * sh2[2][4] - sh1[2][0] * sh2[2][0]) + -sqrt(1.0 / 60.0) * ((sh1[2][2] * sh2[4][4] - sh1[2][0] * sh2[4][0]) + (sh1[0][2] * sh2[0][4] - sh1[0][0] * sh2[0][0])); + + coeffs[dstIdx++] = Dot7(srcIdx, coeffsIn, sh3[4]); + + sh3[5][0] = kSqrt01_06 * (sh1[1][2] * sh2[4][0] + sh1[1][0] * sh2[4][4]) + kSqrt01_06 * ((sh1[2][2] * sh2[3][0] + sh1[2][0] * sh2[3][4]) - (sh1[0][2] * sh2[1][0] + sh1[0][0] * sh2[1][4])); + sh3[5][1] = sh1[1][1] * sh2[4][0] + (sh1[2][1] * sh2[3][0] - sh1[0][1] * sh2[1][0]); + sh3[5][2] = kSqrt05_08 * sh1[1][1] * sh2[4][1] + kSqrt05_08 * (sh1[2][1] * sh2[3][1] - sh1[0][1] * sh2[1][1]); + sh3[5][3] = kSqrt05_09 * sh1[1][1] * sh2[4][2] + kSqrt05_09 * (sh1[2][1] * sh2[3][2] - sh1[0][1] * sh2[1][2]); + sh3[5][4] = kSqrt05_08 * sh1[1][1] * sh2[4][3] + kSqrt05_08 * (sh1[2][1] * sh2[3][3] - sh1[0][1] * sh2[1][3]); + sh3[5][5] = sh1[1][1] * sh2[4][4] + (sh1[2][1] * sh2[3][4] - sh1[0][1] * sh2[1][4]); + sh3[5][6] = kSqrt01_06 * (sh1[1][2] * sh2[4][4] - sh1[1][0] * sh2[4][0]) + kSqrt01_06 * ((sh1[2][2] * sh2[3][4] - sh1[2][0] * sh2[3][0]) - (sh1[0][2] * sh2[1][4] - sh1[0][0] * sh2[1][0])); + + coeffs[dstIdx++] = Dot7(srcIdx, coeffsIn, sh3[5]); + + sh3[6][0] = kSqrt01_04 * ((sh1[2][2] * sh2[4][0] + sh1[2][0] * sh2[4][4]) - (sh1[0][2] * sh2[0][0] + sh1[0][0] * sh2[0][4])); + sh3[6][1] = kSqrt03_02 * (sh1[2][1] * sh2[4][0] - sh1[0][1] * sh2[0][0]); + sh3[6][2] = kSqrt15_16 * (sh1[2][1] * sh2[4][1] - sh1[0][1] * sh2[0][1]); + sh3[6][3] = kSqrt05_06 * (sh1[2][1] * sh2[4][2] - sh1[0][1] * sh2[0][2]); + sh3[6][4] = kSqrt15_16 * (sh1[2][1] * sh2[4][3] - sh1[0][1] * sh2[0][3]); + sh3[6][5] = kSqrt03_02 * (sh1[2][1] * sh2[4][4] - sh1[0][1] * sh2[0][4]); + sh3[6][6] = kSqrt01_04 * ((sh1[2][2] * sh2[4][4] - sh1[2][0] * sh2[4][0]) - (sh1[0][2] * sh2[0][4] - sh1[0][0] * sh2[0][0])); + + coeffs[dstIdx++] = Dot7(srcIdx, coeffsIn, sh3[6]); +} + +#endif // SPHERICAL_HARMONICS_HLSL diff --git a/MVS/3DGS-Unity/Shaders/SphericalHarmonics.hlsl.meta b/MVS/3DGS-Unity/Shaders/SphericalHarmonics.hlsl.meta new file mode 100644 index 00000000..3a109d8d --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/SphericalHarmonics.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0e45617a7c5ba4b4eb55e897761dcb31 +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/Shaders/SplatUtilities.compute b/MVS/3DGS-Unity/Shaders/SplatUtilities.compute new file mode 100644 index 00000000..9aa0a9bf --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/SplatUtilities.compute @@ -0,0 +1,757 @@ +// SPDX-License-Identifier: MIT +#define GROUP_SIZE 1024 + +#pragma kernel CSSetIndices +#pragma kernel CSCalcDistances +#pragma kernel CSCalcViewData +#pragma kernel CSUpdateEditData +#pragma kernel CSInitEditData +#pragma kernel CSClearBuffer +#pragma kernel CSInvertSelection +#pragma kernel CSSelectAll +#pragma kernel CSOrBuffers +#pragma kernel CSSelectionUpdate +#pragma kernel CSTranslateSelection +#pragma kernel CSRotateSelection +#pragma kernel CSScaleSelection +#pragma kernel CSExportData +#pragma kernel CSCopySplats + +// DeviceRadixSort +#pragma multi_compile __ KEY_UINT KEY_INT KEY_FLOAT +#pragma multi_compile __ PAYLOAD_UINT PAYLOAD_INT PAYLOAD_FLOAT +#pragma multi_compile __ SHOULD_ASCEND +#pragma multi_compile __ SORT_PAIRS +#pragma multi_compile __ VULKAN +#pragma kernel InitDeviceRadixSort +#pragma kernel Upsweep +#pragma kernel Scan +#pragma kernel Downsweep + +// GPU sorting needs wave ops +#pragma require wavebasic +#pragma require waveballot +#pragma use_dxc + +#include "DeviceRadixSort.hlsl" +#include "GaussianSplatting.hlsl" +#include "UnityCG.cginc" + +float4x4 _MatrixObjectToWorld; +float4x4 _MatrixWorldToObject; +float4x4 _MatrixMV; +float4 _VecScreenParams; +float4 _VecWorldSpaceCameraPos; +int _SelectionMode; + +RWStructuredBuffer _SplatSortDistances; +RWStructuredBuffer _SplatSortKeys; +uint _SplatCount; + +// radix sort etc. friendly, see http://stereopsis.com/radix.html +uint FloatToSortableUint(float f) +{ + uint fu = asuint(f); + uint mask = -((int)(fu >> 31)) | 0x80000000; + return fu ^ mask; +} + +[numthreads(GROUP_SIZE,1,1)] +void CSSetIndices (uint3 id : SV_DispatchThreadID) +{ + uint idx = id.x; + if (idx >= _SplatCount) + return; + + _SplatSortKeys[idx] = idx; +} + +[numthreads(GROUP_SIZE,1,1)] +void CSCalcDistances (uint3 id : SV_DispatchThreadID) +{ + uint idx = id.x; + if (idx >= _SplatCount) + return; + + uint origIdx = _SplatSortKeys[idx]; + + float3 pos = LoadSplatPos(origIdx); + pos = mul(_MatrixMV, float4(pos.xyz, 1)).xyz; + + _SplatSortDistances[idx] = FloatToSortableUint(pos.z); +} + +RWStructuredBuffer _SplatViewData; + +float _SplatScale; +float _SplatOpacityScale; +uint _SHOrder; +uint _SHOnly; + +uint _SplatCutoutsCount; + +#define SPLAT_CUTOUT_TYPE_ELLIPSOID 0 +#define SPLAT_CUTOUT_TYPE_BOX 1 + +struct GaussianCutoutShaderData // match GaussianCutout.ShaderData in C# +{ + float4x4 mat; + uint typeAndFlags; +}; +StructuredBuffer _SplatCutouts; + +RWByteAddressBuffer _SplatSelectedBits; +ByteAddressBuffer _SplatDeletedBits; +uint _SplatBitsValid; + +void DecomposeCovariance(float3 cov2d, out float2 v1, out float2 v2) +{ + #if 0 // does not quite give the correct results? + + // https://jsfiddle.net/mattrossman/ehxmtgw6/ + // References: + // - https://www.youtube.com/watch?v=e50Bj7jn9IQ + // - https://en.wikipedia.org/wiki/Eigenvalue_algorithm#2%C3%972_matrices + // - https://people.math.harvard.edu/~knill/teaching/math21b2004/exhibits/2dmatrices/index.html + float a = cov2d.x; + float b = cov2d.y; + float d = cov2d.z; + float det = a * d - b * b; // matrix is symmetric, so "c" is same as "b" + float trace = a + d; + + float mean = 0.5 * trace; + float dist = sqrt(mean * mean - det); + + float lambda1 = mean + dist; // 1st eigenvalue + float lambda2 = mean - dist; // 2nd eigenvalue + + if (b == 0) { + // https://twitter.com/the_ross_man/status/1706342719776551360 + if (a > d) v1 = float2(1, 0); + else v1 = float2(0, 1); + } else + v1 = normalize(float2(b, d - lambda2)); + + v1.y = -v1.y; + // The 2nd eigenvector is just a 90 degree rotation of the first since Gaussian axes are orthogonal + v2 = float2(v1.y, -v1.x); + + // scaling components + v1 *= sqrt(lambda1); + v2 *= sqrt(lambda2); + + float radius = 1.5; + v1 *= radius; + v2 *= radius; + + #else + + // same as in antimatter15/splat + float diag1 = cov2d.x, diag2 = cov2d.z, offDiag = cov2d.y; + float mid = 0.5f * (diag1 + diag2); + float radius = length(float2((diag1 - diag2) / 2.0, offDiag)); + float lambda1 = mid + radius; + float lambda2 = max(mid - radius, 0.1); + float2 diagVec = normalize(float2(offDiag, lambda1 - diag1)); + diagVec.y = -diagVec.y; + float maxSize = 4096.0; + v1 = min(sqrt(2.0 * lambda1), maxSize) * diagVec; + v2 = min(sqrt(2.0 * lambda2), maxSize) * float2(diagVec.y, -diagVec.x); + + #endif +} + +bool IsSplatCut(float3 pos) +{ + bool finalCut = false; + for (uint i = 0; i < _SplatCutoutsCount; ++i) + { + GaussianCutoutShaderData cutData = _SplatCutouts[i]; + uint type = cutData.typeAndFlags & 0xFF; + if (type == 0xFF) // invalid/null cutout, ignore + continue; + bool invert = (cutData.typeAndFlags & 0xFF00) != 0; + + float3 cutoutPos = mul(cutData.mat, float4(pos, 1)).xyz; + if (type == SPLAT_CUTOUT_TYPE_ELLIPSOID) + { + if (dot(cutoutPos, cutoutPos) <= 1) return invert; + } + if (type == SPLAT_CUTOUT_TYPE_BOX) + { + if (all(abs(cutoutPos) <= 1)) return invert; + } + finalCut |= !invert; + } + return finalCut; +} + +[numthreads(GROUP_SIZE,1,1)] +void CSCalcViewData (uint3 id : SV_DispatchThreadID) +{ + uint idx = id.x; + if (idx >= _SplatCount) + return; + + SplatData splat = LoadSplatData(idx); + SplatViewData view = (SplatViewData)0; + + float3 centerWorldPos = mul(_MatrixObjectToWorld, float4(splat.pos,1)).xyz; + float4 centerClipPos = mul(UNITY_MATRIX_VP, float4(centerWorldPos, 1)); + half opacityScale = _SplatOpacityScale; + float splatScale = _SplatScale; + + // deleted? + if (_SplatBitsValid) + { + uint wordIdx = idx / 32; + uint bitIdx = idx & 31; + uint wordVal = _SplatDeletedBits.Load(wordIdx * 4); + if (wordVal & (1 << bitIdx)) + { + centerClipPos.w = 0; + } + } + + // cutouts + if (IsSplatCut(splat.pos)) + { + centerClipPos.w = 0; + } + + view.pos = centerClipPos; + bool behindCam = centerClipPos.w <= 0; + if (!behindCam) + { + float4 boxRot = splat.rot; + float3 boxSize = splat.scale; + + float3x3 splatRotScaleMat = CalcMatrixFromRotationScale(boxRot, boxSize); + + float3 cov3d0, cov3d1; + CalcCovariance3D(splatRotScaleMat, cov3d0, cov3d1); + float splatScale2 = splatScale * splatScale; + cov3d0 *= splatScale2; + cov3d1 *= splatScale2; + float3 cov2d = CalcCovariance2D(splat.pos, cov3d0, cov3d1, _MatrixMV, UNITY_MATRIX_P, _VecScreenParams); + + DecomposeCovariance(cov2d, view.axis1, view.axis2); + + float3 worldViewDir = _VecWorldSpaceCameraPos.xyz - centerWorldPos; + float3 objViewDir = mul((float3x3)_MatrixWorldToObject, worldViewDir); + objViewDir = normalize(objViewDir); + + half4 col; + col.rgb = ShadeSH(splat.sh, objViewDir, _SHOrder, _SHOnly != 0); + col.a = min(splat.opacity * opacityScale, 65000); + view.color.x = (f32tof16(col.r) << 16) | f32tof16(col.g); + view.color.y = (f32tof16(col.b) << 16) | f32tof16(col.a); + } + + _SplatViewData[idx] = view; +} + + +RWByteAddressBuffer _DstBuffer; +ByteAddressBuffer _SrcBuffer; +uint _BufferSize; + +uint2 GetSplatIndicesFromWord(uint idx) +{ + uint idxStart = idx * 32; + uint idxEnd = min(idxStart + 32, _SplatCount); + return uint2(idxStart, idxEnd); +} + +[numthreads(GROUP_SIZE,1,1)] +void CSUpdateEditData (uint3 id : SV_DispatchThreadID) +{ + uint idx = id.x; + if (idx >= _BufferSize) + return; + + uint valSel = _SplatSelectedBits.Load(idx * 4); + uint valDel = _SplatDeletedBits.Load(idx * 4); + valSel &= ~valDel; // don't count deleted splats as selected + uint2 splatIndices = GetSplatIndicesFromWord(idx); + + // update selection bounds + float3 bmin = 1.0e38; + float3 bmax = -1.0e38; + uint mask = 1; + uint valCut = 0; + for (uint sidx = splatIndices.x; sidx < splatIndices.y; ++sidx, mask <<= 1) + { + float3 spos = LoadSplatPos(sidx); + // don't count cut splats as selected + if (IsSplatCut(spos)) + { + valSel &= ~mask; + valCut |= mask; + } + if (valSel & mask) + { + bmin = min(bmin, spos); + bmax = max(bmax, spos); + } + } + valCut &= ~valDel; // don't count deleted splats as cut + + if (valSel != 0) + { + _DstBuffer.InterlockedMin(12, FloatToSortableUint(bmin.x)); + _DstBuffer.InterlockedMin(16, FloatToSortableUint(bmin.y)); + _DstBuffer.InterlockedMin(20, FloatToSortableUint(bmin.z)); + _DstBuffer.InterlockedMax(24, FloatToSortableUint(bmax.x)); + _DstBuffer.InterlockedMax(28, FloatToSortableUint(bmax.y)); + _DstBuffer.InterlockedMax(32, FloatToSortableUint(bmax.z)); + } + uint sumSel = countbits(valSel); + uint sumDel = countbits(valDel); + uint sumCut = countbits(valCut); + _DstBuffer.InterlockedAdd(0, sumSel); + _DstBuffer.InterlockedAdd(4, sumDel); + _DstBuffer.InterlockedAdd(8, sumCut); +} + +[numthreads(1,1,1)] +void CSInitEditData (uint3 id : SV_DispatchThreadID) +{ + _DstBuffer.Store3(0, uint3(0,0,0)); // selected, deleted, cut counts + uint initMin = FloatToSortableUint(1.0e38); + uint initMax = FloatToSortableUint(-1.0e38); + _DstBuffer.Store3(12, uint3(initMin, initMin, initMin)); + _DstBuffer.Store3(24, uint3(initMax, initMax, initMax)); +} + +[numthreads(GROUP_SIZE,1,1)] +void CSClearBuffer (uint3 id : SV_DispatchThreadID) +{ + uint idx = id.x; + if (idx >= _BufferSize) + return; + _DstBuffer.Store(idx * 4, 0); +} + +[numthreads(GROUP_SIZE,1,1)] +void CSInvertSelection (uint3 id : SV_DispatchThreadID) +{ + uint idx = id.x; + if (idx >= _BufferSize) + return; + uint v = _DstBuffer.Load(idx * 4); + v = ~v; + + // do not select splats that are cut + uint2 splatIndices = GetSplatIndicesFromWord(idx); + uint mask = 1; + for (uint sidx = splatIndices.x; sidx < splatIndices.y; ++sidx, mask <<= 1) + { + float3 spos = LoadSplatPos(sidx); + if (IsSplatCut(spos)) + v &= ~mask; + } + + _DstBuffer.Store(idx * 4, v); +} + +[numthreads(GROUP_SIZE,1,1)] +void CSSelectAll (uint3 id : SV_DispatchThreadID) +{ + uint idx = id.x; + if (idx >= _BufferSize) + return; + uint v = ~0; + + // do not select splats that are cut + uint2 splatIndices = GetSplatIndicesFromWord(idx); + uint mask = 1; + for (uint sidx = splatIndices.x; sidx < splatIndices.y; ++sidx, mask <<= 1) + { + float3 spos = LoadSplatPos(sidx); + if (IsSplatCut(spos)) + v &= ~mask; + } + + _DstBuffer.Store(idx * 4, v); +} + + +[numthreads(GROUP_SIZE,1,1)] +void CSOrBuffers (uint3 id : SV_DispatchThreadID) +{ + uint idx = id.x; + if (idx >= _BufferSize) + return; + uint a = _SrcBuffer.Load(idx * 4); + uint b = _DstBuffer.Load(idx * 4); + _DstBuffer.Store(idx * 4, a | b); +} + +float4 _SelectionRect; + +[numthreads(GROUP_SIZE,1,1)] +void CSSelectionUpdate (uint3 id : SV_DispatchThreadID) +{ + uint idx = id.x; + if (idx >= _SplatCount) + return; + + float3 pos = LoadSplatPos(idx); + if (IsSplatCut(pos)) + return; + + float3 centerWorldPos = mul(_MatrixObjectToWorld, float4(pos,1)).xyz; + float4 centerClipPos = mul(UNITY_MATRIX_VP, float4(centerWorldPos, 1)); + bool behindCam = centerClipPos.w <= 0; + if (behindCam) + return; + + float2 pixelPos = (centerClipPos.xy / centerClipPos.w * float2(0.5, -0.5) + 0.5) * _VecScreenParams.xy; + if (pixelPos.x < _SelectionRect.x || pixelPos.x > _SelectionRect.z || + pixelPos.y < _SelectionRect.y || pixelPos.y > _SelectionRect.w) + { + return; + } + uint wordIdx = idx / 32; + uint bitIdx = idx & 31; + if (_SelectionMode) + _SplatSelectedBits.InterlockedOr(wordIdx * 4, 1u << bitIdx); // + + else + _SplatSelectedBits.InterlockedAnd(wordIdx * 4, ~(1u << bitIdx)); // - +} + +float3 _SelectionDelta; + +bool IsSplatSelected(uint idx) +{ + uint wordIdx = idx / 32; + uint bitIdx = idx & 31; + uint selVal = _SplatSelectedBits.Load(wordIdx * 4); + return (selVal & (1 << bitIdx)) != 0; +} + +[numthreads(GROUP_SIZE,1,1)] +void CSTranslateSelection (uint3 id : SV_DispatchThreadID) +{ + uint idx = id.x; + if (idx >= _SplatCount) + return; + if (!IsSplatSelected(idx)) + return; + + uint fmt = _SplatFormat & 0xFF; + if (_SplatChunkCount == 0 && fmt == VECTOR_FMT_32F) + { + uint stride = 12; + float3 pos = asfloat(_SplatPos.Load3(idx * stride)); + pos += _SelectionDelta; + _SplatPos.Store3(idx * stride, asuint(pos)); + } +} + +float3 _SelectionCenter; +float4 _SelectionDeltaRot; +ByteAddressBuffer _SplatPosMouseDown; +ByteAddressBuffer _SplatOtherMouseDown; + +[numthreads(GROUP_SIZE,1,1)] +void CSRotateSelection (uint3 id : SV_DispatchThreadID) +{ + uint idx = id.x; + if (idx >= _SplatCount) + return; + if (!IsSplatSelected(idx)) + return; + + uint posFmt = _SplatFormat & 0xFF; + if (_SplatChunkCount == 0 && posFmt == VECTOR_FMT_32F) + { + uint posStride = 12; + float3 pos = asfloat(_SplatPosMouseDown.Load3(idx * posStride)); + pos -= _SelectionCenter; + pos = mul(_MatrixObjectToWorld, float4(pos,1)).xyz; + pos = QuatRotateVector(pos, _SelectionDeltaRot); + pos = mul(_MatrixWorldToObject, float4(pos,1)).xyz; + pos += _SelectionCenter; + _SplatPos.Store3(idx * posStride, asuint(pos)); + } + + uint scaleFmt = (_SplatFormat >> 8) & 0xFF; + uint shFormat = (_SplatFormat >> 16) & 0xFF; + if (_SplatChunkCount == 0 && scaleFmt == VECTOR_FMT_32F && shFormat == VECTOR_FMT_32F) + { + uint otherStride = 4 + 12; + uint rotVal = _SplatOtherMouseDown.Load(idx * otherStride); + float4 rot = DecodeRotation(DecodePacked_10_10_10_2(rotVal)); + + //@TODO: correct rotation + rot = QuatMul(rot, _SelectionDeltaRot); + + rotVal = EncodeQuatToNorm10(PackSmallest3Rotation(rot)); + _SplatOther.Store(idx * otherStride, rotVal); + } + + //@TODO: rotate SHs +} + +//@TODO: maybe scale the splat scale itself too? +[numthreads(GROUP_SIZE,1,1)] +void CSScaleSelection (uint3 id : SV_DispatchThreadID) +{ + uint idx = id.x; + if (idx >= _SplatCount) + return; + if (!IsSplatSelected(idx)) + return; + + uint fmt = _SplatFormat & 0xFF; + if (_SplatChunkCount == 0 && fmt == VECTOR_FMT_32F) + { + uint stride = 12; + float3 pos = asfloat(_SplatPosMouseDown.Load3(idx * stride)); + pos -= _SelectionCenter; + pos = mul(_MatrixObjectToWorld, float4(pos,1)).xyz; + pos *= _SelectionDelta; + pos = mul(_MatrixWorldToObject, float4(pos,1)).xyz; + pos += _SelectionCenter; + _SplatPos.Store3(idx * stride, asuint(pos)); + } +} + +struct ExportSplatData +{ + float3 pos; + float3 nor; + float3 dc0; + float4 shR14; float4 shR58; float4 shR9C; float3 shRDF; + float4 shG14; float4 shG58; float4 shG9C; float3 shGDF; + float4 shB14; float4 shB58; float4 shB9C; float3 shBDF; + float opacity; + float3 scale; + float4 rot; +}; +RWStructuredBuffer _ExportBuffer; + +float3 ColorToSH0(float3 col) +{ + return (col - 0.5) / 0.2820948; +} +float InvSigmoid(float v) +{ + return log(v / max(1 - v, 1.0e-6)); +} + +// SH rotation +#include "SphericalHarmonics.hlsl" + +void RotateSH(inout SplatSHData sh, float3x3 rot) +{ + float3 shin[16]; + float3 shout[16]; + shin[0] = sh.col; + shin[1] = sh.sh1; + shin[2] = sh.sh2; + shin[3] = sh.sh3; + shin[4] = sh.sh4; + shin[5] = sh.sh5; + shin[6] = sh.sh6; + shin[7] = sh.sh7; + shin[8] = sh.sh8; + shin[9] = sh.sh9; + shin[10] = sh.sh10; + shin[11] = sh.sh11; + shin[12] = sh.sh12; + shin[13] = sh.sh13; + shin[14] = sh.sh14; + shin[15] = sh.sh15; + RotateSH(rot, 4, shin, shout); + sh.col = shout[0]; + sh.sh1 = shout[1]; + sh.sh2 = shout[2]; + sh.sh3 = shout[3]; + sh.sh4 = shout[4]; + sh.sh5 = shout[5]; + sh.sh6 = shout[6]; + sh.sh7 = shout[7]; + sh.sh8 = shout[8]; + sh.sh9 = shout[9]; + sh.sh10 = shout[10]; + sh.sh11 = shout[11]; + sh.sh12 = shout[12]; + sh.sh13 = shout[13]; + sh.sh14 = shout[14]; + sh.sh15 = shout[15]; +} + +float3x3 CalcSHRotMatrix(float4x4 objToWorld) +{ + float3x3 m = (float3x3)objToWorld; + float sx = length(float3(m[0][0], m[0][1], m[0][2])); + float sy = length(float3(m[1][0], m[1][1], m[1][2])); + float sz = length(float3(m[2][0], m[2][1], m[2][2])); + + float invSX = 1.0 / sx; + float invSY = 1.0 / sy; + float invSZ = 1.0 / sz; + + m[0][0] *= invSX; + m[0][1] *= invSX; + m[0][2] *= invSX; + m[1][0] *= invSY; + m[1][1] *= invSY; + m[1][2] *= invSY; + m[2][0] *= invSZ; + m[2][1] *= invSZ; + m[2][2] *= invSZ; + return m; +} + + +float4 _ExportTransformRotation; +float3 _ExportTransformScale; +uint _ExportTransformFlags; + +[numthreads(GROUP_SIZE,1,1)] +void CSExportData (uint3 id : SV_DispatchThreadID) +{ + uint idx = id.x; + if (idx >= _SplatCount) + return; + SplatData src = LoadSplatData(idx); + + bool isCut = IsSplatCut(src.pos); + + // transform splat by matrix, if needed + if (_ExportTransformFlags != 0) + { + src.pos = mul(_MatrixObjectToWorld, float4(src.pos,1)).xyz; + + // note: this only handles axis flips from scale, not any arbitrary scaling + if (_ExportTransformScale.x < 0) + src.rot.yz = -src.rot.yz; + if (_ExportTransformScale.y < 0) + src.rot.xz = -src.rot.xz; + if (_ExportTransformScale.z < 0) + src.rot.xy = -src.rot.xy; + src.rot = QuatMul(_ExportTransformRotation, src.rot); + src.scale *= abs(_ExportTransformScale); + + float3x3 shRot = CalcSHRotMatrix(_MatrixObjectToWorld); + RotateSH(src.sh, shRot); + } + + ExportSplatData dst; + dst.pos = src.pos; + dst.nor = 0; + dst.dc0 = ColorToSH0(src.sh.col); + + dst.shR14 = float4(src.sh.sh1.r, src.sh.sh2.r, src.sh.sh3.r, src.sh.sh4.r); + dst.shR58 = float4(src.sh.sh5.r, src.sh.sh6.r, src.sh.sh7.r, src.sh.sh8.r); + dst.shR9C = float4(src.sh.sh9.r, src.sh.sh10.r, src.sh.sh11.r, src.sh.sh12.r); + dst.shRDF = float3(src.sh.sh13.r, src.sh.sh14.r, src.sh.sh15.r); + + dst.shG14 = float4(src.sh.sh1.g, src.sh.sh2.g, src.sh.sh3.g, src.sh.sh4.g); + dst.shG58 = float4(src.sh.sh5.g, src.sh.sh6.g, src.sh.sh7.g, src.sh.sh8.g); + dst.shG9C = float4(src.sh.sh9.g, src.sh.sh10.g, src.sh.sh11.g, src.sh.sh12.g); + dst.shGDF = float3(src.sh.sh13.g, src.sh.sh14.g, src.sh.sh15.g); + + dst.shB14 = float4(src.sh.sh1.b, src.sh.sh2.b, src.sh.sh3.b, src.sh.sh4.b); + dst.shB58 = float4(src.sh.sh5.b, src.sh.sh6.b, src.sh.sh7.b, src.sh.sh8.b); + dst.shB9C = float4(src.sh.sh9.b, src.sh.sh10.b, src.sh.sh11.b, src.sh.sh12.b); + dst.shBDF = float3(src.sh.sh13.b, src.sh.sh14.b, src.sh.sh15.b); + + dst.opacity = InvSigmoid(src.opacity); + dst.scale = log(src.scale); + dst.rot = src.rot.wxyz; + + if (isCut) + dst.nor = 1; // mark as skipped for export + + _ExportBuffer[idx] = dst; +} + +RWByteAddressBuffer _CopyDstPos; +RWByteAddressBuffer _CopyDstOther; +RWByteAddressBuffer _CopyDstSH; +RWByteAddressBuffer _CopyDstEditDeleted; +RWTexture2D _CopyDstColor; +uint _CopyDstSize, _CopySrcStartIndex, _CopyDstStartIndex, _CopyCount; + +float4x4 _CopyTransformMatrix; +float4 _CopyTransformRotation; +float3 _CopyTransformScale; + +[numthreads(GROUP_SIZE,1,1)] +void CSCopySplats (uint3 id : SV_DispatchThreadID) +{ + uint idx = id.x; + if (idx >= _CopyCount) + return; + uint srcIdx = _CopySrcStartIndex + idx; + uint dstIdx = _CopyDstStartIndex + idx; + if (srcIdx >= _SplatCount || dstIdx >= _CopyDstSize) + return; + + SplatData src = LoadSplatData(idx); + + // transform the splat + src.pos = mul(_CopyTransformMatrix, float4(src.pos,1)).xyz; + // note: this only handles axis flips from scale, not any arbitrary scaling + if (_CopyTransformScale.x < 0) + src.rot.yz = -src.rot.yz; + if (_CopyTransformScale.y < 0) + src.rot.xz = -src.rot.xz; + if (_CopyTransformScale.z < 0) + src.rot.xy = -src.rot.xy; + src.rot = QuatMul(_CopyTransformRotation, src.rot); + src.scale *= abs(_CopyTransformScale); + + float3x3 shRot = CalcSHRotMatrix(_CopyTransformMatrix); + RotateSH(src.sh, shRot); + + // output data into destination: + // pos + uint posStride = 12; + _CopyDstPos.Store3(dstIdx * posStride, asuint(src.pos)); + // rot + scale + uint otherStride = 4 + 12; + uint rotVal = EncodeQuatToNorm10(PackSmallest3Rotation(src.rot)); + _CopyDstOther.Store4(dstIdx * otherStride, uint4( + rotVal, + asuint(src.scale.x), + asuint(src.scale.y), + asuint(src.scale.z))); + // color + uint3 pixelIndex = SplatIndexToPixelIndex(dstIdx); + _CopyDstColor[pixelIndex.xy] = float4(src.sh.col, src.opacity); + + // SH + uint shStride = 192; // 15*3 fp32, rounded up to multiple of 16 + uint shOffset = dstIdx * shStride; + _CopyDstSH.Store3(shOffset + 12 * 0, asuint(src.sh.sh1)); + _CopyDstSH.Store3(shOffset + 12 * 1, asuint(src.sh.sh2)); + _CopyDstSH.Store3(shOffset + 12 * 2, asuint(src.sh.sh3)); + _CopyDstSH.Store3(shOffset + 12 * 3, asuint(src.sh.sh4)); + _CopyDstSH.Store3(shOffset + 12 * 4, asuint(src.sh.sh5)); + _CopyDstSH.Store3(shOffset + 12 * 5, asuint(src.sh.sh6)); + _CopyDstSH.Store3(shOffset + 12 * 6, asuint(src.sh.sh7)); + _CopyDstSH.Store3(shOffset + 12 * 7, asuint(src.sh.sh8)); + _CopyDstSH.Store3(shOffset + 12 * 8, asuint(src.sh.sh9)); + _CopyDstSH.Store3(shOffset + 12 * 9, asuint(src.sh.sh10)); + _CopyDstSH.Store3(shOffset + 12 * 10, asuint(src.sh.sh11)); + _CopyDstSH.Store3(shOffset + 12 * 11, asuint(src.sh.sh12)); + _CopyDstSH.Store3(shOffset + 12 * 12, asuint(src.sh.sh13)); + _CopyDstSH.Store3(shOffset + 12 * 13, asuint(src.sh.sh14)); + _CopyDstSH.Store3(shOffset + 12 * 14, asuint(src.sh.sh15)); + + // deleted bits + uint srcWordIdx = srcIdx / 32; + uint srcBitIdx = srcIdx & 31; + if (_SplatDeletedBits.Load(srcWordIdx * 4) & (1u << srcBitIdx)) + { + uint dstWordIdx = dstIdx / 32; + uint dstBitIdx = dstIdx & 31; + _CopyDstEditDeleted.InterlockedOr(dstWordIdx * 4, 1u << dstBitIdx); + } +} diff --git a/MVS/3DGS-Unity/Shaders/SplatUtilities.compute.meta b/MVS/3DGS-Unity/Shaders/SplatUtilities.compute.meta new file mode 100644 index 00000000..038eddbd --- /dev/null +++ b/MVS/3DGS-Unity/Shaders/SplatUtilities.compute.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ec84f78b836bd4f96a105d6b804f08bd +ComputeShaderImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/package.json b/MVS/3DGS-Unity/package.json new file mode 100644 index 00000000..1f91eddc --- /dev/null +++ b/MVS/3DGS-Unity/package.json @@ -0,0 +1,13 @@ +{ + "author": "Aras Pranckevicius", + "dependencies": { "com.unity.burst": "1.8.8", "com.unity.collections": "2.1.4", "com.unity.mathematics": "1.2.6" }, + "description": "3D Gaussian Splatting rendering and tools", + "displayName": "Gaussian Splatting", + "keywords": [ "unity" ], + "license": "MIT", + "name": "org.nesnausk.gaussian-splatting", + "repository": "github:aras-p/UnityGaussianSplatting", + "unity": "2022.3", + "unityRelease": "7f1", + "version": "1.0.0" +} diff --git a/MVS/3DGS-Unity/package.json.meta b/MVS/3DGS-Unity/package.json.meta new file mode 100644 index 00000000..84bd996a --- /dev/null +++ b/MVS/3DGS-Unity/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 110db01d54641354399a53474743e47b +PackageManifestImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MVS/3DGS-Unity/room.ply b/MVS/3DGS-Unity/room.ply new file mode 100644 index 00000000..e9c819dc --- /dev/null +++ b/MVS/3DGS-Unity/room.ply @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fb37dd1f3f93a6c429f0ecc56d3b52540c4a5b0a286a65f458b020b50da870a +size 363144460 diff --git a/tests/OpenGL/res/models/backpack/ao.jpg b/MVS/OpenGL/res/models/backpack/ao.jpg similarity index 100% rename from tests/OpenGL/res/models/backpack/ao.jpg rename to MVS/OpenGL/res/models/backpack/ao.jpg diff --git a/tests/OpenGL/res/models/backpack/backpack.mtl b/MVS/OpenGL/res/models/backpack/backpack.mtl similarity index 100% rename from tests/OpenGL/res/models/backpack/backpack.mtl rename to MVS/OpenGL/res/models/backpack/backpack.mtl diff --git a/tests/OpenGL/res/models/backpack/diffuse.jpg b/MVS/OpenGL/res/models/backpack/diffuse.jpg similarity index 100% rename from tests/OpenGL/res/models/backpack/diffuse.jpg rename to MVS/OpenGL/res/models/backpack/diffuse.jpg diff --git a/tests/OpenGL/res/models/backpack/normal.png b/MVS/OpenGL/res/models/backpack/normal.png similarity index 100% rename from tests/OpenGL/res/models/backpack/normal.png rename to MVS/OpenGL/res/models/backpack/normal.png diff --git a/tests/OpenGL/res/models/backpack/roughness.jpg b/MVS/OpenGL/res/models/backpack/roughness.jpg similarity index 100% rename from tests/OpenGL/res/models/backpack/roughness.jpg rename to MVS/OpenGL/res/models/backpack/roughness.jpg diff --git a/tests/OpenGL/res/models/backpack/source_attribution.txt b/MVS/OpenGL/res/models/backpack/source_attribution.txt similarity index 100% rename from tests/OpenGL/res/models/backpack/source_attribution.txt rename to MVS/OpenGL/res/models/backpack/source_attribution.txt diff --git a/tests/OpenGL/res/models/backpack/specular.jpg b/MVS/OpenGL/res/models/backpack/specular.jpg similarity index 100% rename from tests/OpenGL/res/models/backpack/specular.jpg rename to MVS/OpenGL/res/models/backpack/specular.jpg diff --git a/docs/api/XCEngine/Editor/Editor.md b/docs/api/XCEngine/Editor/Editor.md index bbfcfedd..b163c079 100644 --- a/docs/api/XCEngine/Editor/Editor.md +++ b/docs/api/XCEngine/Editor/Editor.md @@ -4,51 +4,86 @@ **类型**: `app-module` -**描述**: 编辑器应用层 API 文档入口,镜像 `editor/src` 的目录结构,覆盖编辑器启动、上下文、面板工作区、项目浏览、场景编辑与 UI 基础设施。 +**描述**: XCEngine 独立编辑器应用层 API 文档入口,对应 `editor/src/**` 的模块结构,覆盖应用启动、上下文、面板、布局、命令、动作路由与 UI 基础设施。 ## 概述 -这一组文档对应的不是 `engine/include/XCEngine` 的 public engine headers,而是独立编辑器应用 `editor/src/**`。 +这一组文档对应的不是 `engine/include/XCEngine/**` 那类“引擎公共运行时头文件”,而是编辑器应用本身的源码模块。换句话说,这里的 API 更接近“工具层架构说明”和“编辑器内部可复用接口”,而不是给游戏运行时代码直接依赖的稳定 SDK。 -因此这里需要先建立一个正确心智模型: +当前 Editor 的主链路可以概括为: -- `XCEngine` 引擎模块负责运行时系统。 -- `Editor` 模块负责围绕这些运行时系统搭建编辑器应用。 -- 它更接近“应用层/工具层 API”,而不是给游戏代码直接依赖的稳定引擎 ABI。 +1. [Application](Application/Application.md) + 启动 Win32 窗口、D3D12 窗口渲染器、ImGui 会话与编辑器上下文。 +2. [Core](Core/Core.md) + 组织事件总线、选择系统、撤销系统、场景与项目管理接口。 +3. [Layers](Layers/Layers.md) + 让 `EditorLayer` 承担编辑器工作区生命周期。 +4. [Layout](Layout/Layout.md) + 构建 dockspace、默认布局与工作区停靠关系。 +5. [panels](panels/panels.md) + 承载 Scene / Game / Hierarchy / Inspector / Console / Project 等主要工作面板。 +6. [UI](UI/UI.md) + 承载 Dear ImGui 上层的主题 token、chrome、树视图、属性布局和通用 widget。 -当前编辑器的主链路大致是: +## 架构定位 -1. [Application](Application/Application.md) 启动 Win32 窗口、D3D12 窗口渲染器和 ImGui 会话。 -2. [Core::EditorContext](Core/EditorContext/EditorContext.md) 组装事件总线、场景管理、项目管理、选择管理和撤销系统。 -3. [Layers::EditorLayer](Layers/EditorLayer/EditorLayer.md) 承载编辑器工作区生命周期。 -4. [Core::EditorWorkspace](Core/EditorWorkspace/EditorWorkspace.md) 组织菜单、层级、场景视图、GameView、Inspector、Console 和 Project 等面板。 +从架构视角看,`Editor` 模块解决的是“如何把引擎运行时能力组织成一个可编辑、可观察、可操作的工具应用”。 + +这和商业游戏引擎的常见分层非常一致: + +- 引擎运行时负责场景、组件、渲染、资源和脚本能力。 +- 编辑器应用负责把这些能力包装成面板、命令、菜单、工作区与交互流。 + +因此阅读这套文档时,最重要的前置认知是:Editor 层的很多接口是为工具体验服务的,它们允许比运行时 API 更强的耦合、更明确的 UI 约束和更直接的产品导向。 + +## 当前重构重点 + +结合当前 `editor/src` 的实现,Editor 文档当前有几个结构上非常重要的重构点: + +- `UI.h` 现在明确作为 umbrella header 处理,其职责是聚合常用 UI helper,而不是声明新的运行时类型。 +- `TreeView`、`PropertyLayout`、`BuiltInIcons`、`DockTabBarChrome` 等新基础设施已经成为多个面板共享的 UI 基建。 +- `HierarchyPanel` 和 `ProjectPanel` 的实现已经明显转向“面板只负责呈现与路由,动作层 / 命令层负责执行业务”的分层。 + +这意味着 Editor 文档不能只做目录映射,还必须解释这些共享基础设施为什么存在、它们如何把编辑器代码从面板私有技巧提升为稳定的产品层模式。 + +## 聚合与辅助文件 + +并不是 `editor/src/**` 下每个文件都值得成为单独 API 页。当前有几类文件更适合在模块页说明: + +- `editor/src/UI/UI.h` + 这是 UI 子模块的 umbrella header,文档并入 [UI](UI/UI.md)。 +- `editor/src/EditorResources.h` + 当前只定义了 `IDI_APP_ICON 101`,用于 `EditorApp.rc` 的资源 id 绑定,更适合作为 Editor 应用资源入口说明,而不是独立类型页。 +- `editor/src/EditorApp.rc`、`editor/src/main.cpp` + 属于应用启动与资源清单支撑文件,不是面向上层复用的编辑器 API。 + +这种处理方式符合当前文档规范:只有真正承担模块职责或可复用契约的文件才进入 canonical API 树;纯资源声明和应用入口支撑文件优先并入模块说明。 ## 当前实现边界 -- 当前编辑器主要是 Windows + D3D12 + ImGui 路径。 -- 这组代码整体是应用层源码,不像 engine public headers 那样已经完全按稳定 SDK 方式整理。 -- 当前文档页会优先标注 `源文件`,而不是 `头文件`,以反映它们来自 `editor/src/**`。 -- 当前自动审计脚本仍以 `engine/include/XCEngine` 为主,因此 `Editor` 这组页主要靠链接完整性和人工结构约束维护。 +- 当前编辑器主路径仍然以 Windows + D3D12 + Dear ImGui 为核心。 +- 这套代码整体属于应用层源码,不应误解为已经整理成稳定插件 SDK。 +- 自动审计脚本目前主要覆盖 `engine/include/XCEngine/**` 的 public headers;Editor 这组文档更依赖目录并行约束、链接校验和人工核对源码行为。 ## 目录 - [Application](Application/Application.md) - 顶层编辑器应用入口。 -- [Theme](Theme/Theme.md) - 顶层主题入口。 -- [Core](Core/Core.md) - 上下文、事件、撤销、选择与基础数据结构。 -- [Managers](Managers/Managers.md) - 项目与场景管理实现。 -- [panels](panels/panels.md) - 编辑器面板基础设施。 +- [Actions](Actions/Actions.md) - 菜单、快捷键、按钮动作绑定与路由。 +- [Commands](Commands/Commands.md) - 面向场景与项目操作的命令封装。 +- [ComponentEditors](ComponentEditors/ComponentEditors.md) - 组件编辑器注册与实现。 +- [Core](Core/Core.md) - 上下文、事件、撤销、选择与基础接口。 - [Layers](Layers/Layers.md) - 编辑器 layer 封装。 -- [Platform](Platform/Platform.md) - Win32 窗口宿主与 D3D12 窗口渲染器。 -- [UI](UI/UI.md) - ImGui 会话与编辑器 UI 基础设施。 -- [Actions](Actions/Actions.md) - 菜单/按钮/快捷键动作绑定与路由层。 -- [Commands](Commands/Commands.md) - 面向场景与项目操作的高层命令封装。 -- [ComponentEditors](ComponentEditors/ComponentEditors.md) - 组件属性编辑器注册与实现层。 - [Layout](Layout/Layout.md) - Dock 布局控制。 +- [Managers](Managers/Managers.md) - 项目和场景管理实现。 +- [panels](panels/panels.md) - 主要工作面板。 +- [Platform](Platform/Platform.md) - Win32 宿主与 D3D12 窗口渲染路径。 +- [Theme](Theme/Theme.md) - 顶层主题入口。 +- [UI](UI/UI.md) - Editor UI 基础设施。 - [Utils](Utils/Utils.md) - 场景编辑与撤销相关辅助函数。 ## 相关文档 -- [XCEngine 根目录](../XCEngine.md) +- [XCEngine](../XCEngine.md) - [Scene](../Scene/Scene.md) - [Components](../Components/Components.md) - [Rendering](../Rendering/Rendering.md) diff --git a/docs/api/XCEngine/Editor/UI/BuiltInIcons/BuiltInIcons.md b/docs/api/XCEngine/Editor/UI/BuiltInIcons/BuiltInIcons.md new file mode 100644 index 00000000..f760d29b --- /dev/null +++ b/docs/api/XCEngine/Editor/UI/BuiltInIcons/BuiltInIcons.md @@ -0,0 +1,107 @@ +# BuiltInIcons + +**命名空间**: `XCEngine::Editor::UI` + +**类型**: `header-helper + enum class` + +**源文件**: `editor/src/UI/BuiltInIcons.h` + +**描述**: 为编辑器的资源树、资源网格和层级树提供内置图标枚举、初始化入口与统一绘制函数。 + +## 概述 + +`BuiltInIcons.h` 解决的不是“如何显示一张纹理”这个底层问题,而是“编辑器里哪些地方应该用统一图标语言表达文件夹、文件和场景对象”这个产品层问题。 + +当前源码里,这一层主要服务于三个界面: + +- `HierarchyPanel` 通过 `GameObject` 图标给场景树节点补前缀。 +- `ProjectPanel` 通过 `Folder` / `File` 图标绘制左侧目录树和右侧资源卡片。 +- `ProjectActionRouter` 在拖拽预览等交互里复用同一套图标语义。 + +这和商业级编辑器常见的做法一致:业务面板不直接持有纹理资源,不自己决定某一类对象该显示什么图标,而是把“对象类别 -> 图标表现”的决定集中到一层共享 helper 中。这样做的好处是统一、可替换,而且不会让每个面板都自己重复写上传纹理、绘制 fallback 图形、适配尺寸的逻辑。 + +## 公开 API + +| 成员 | 说明 | +|------|------| +| `enum class AssetIconKind { Folder, File, GameObject }` | 定义当前编辑器可识别的内置图标类别。 | +| `InitializeBuiltInIcons(ImGuiBackendBridge&, ID3D12Device*, ID3D12CommandQueue*)` | 初始化图标系统,上传贴图并分配 ImGui 可见的 SRV 描述符。 | +| `ShutdownBuiltInIcons()` | 释放内置图标占用的 GPU 资源与描述符。 | +| `DrawAssetIcon(ImDrawList*, const ImVec2& min, const ImVec2& max, AssetIconKind)` | 在给定矩形内绘制指定类别的图标。 | + +## 生命周期 + +- 这一层本质上是一个进程级的全局状态,当前实现通过匿名命名空间里的 `g_icons` 保存后端指针和已上传纹理。 +- 正确顺序是先初始化 `ImGuiBackendBridge`,再调用 `InitializeBuiltInIcons(...)`。 +- 关闭时应先停止使用这些图标,再调用 `ShutdownBuiltInIcons()`,最后销毁 ImGui 后端。 +- 当前 `Application::InitializeImGui()` 和 `Application::Shutdown()` 已经按照这个顺序接线。 + +## 当前实现行为 + +按 `editor/src/UI/BuiltInIcons.cpp` 的实现,当前版本有几个值得明确写进文档的事实: + +- 只有 `Folder` 和 `GameObject` 两类图标会尝试从磁盘加载 PNG。 +- 图标路径不是从项目目录查找,而是从可执行文件目录推导到 `../../resources/Icons/folder_icon.png` 与 `../../resources/Icons/gameobject_icon.png`。 +- 贴图上传路径目前只支持 D3D12,上传时会创建默认堆纹理、上传堆 buffer、一次性命令列表,并在结束后主动等待命令队列空闲。 +- `File` 图标当前不是贴图资源,而是运行时用 `ImDrawList` 直接画出的简化文件形状。 +- 如果 `Folder` / `GameObject` 的 PNG 加载失败,系统不会抛出错误或写日志;它会静默退回到程序化绘制的 fallback 图标。 + +这意味着它更接近“编辑器内部视觉资源辅助层”,而不是一个对外稳定暴露的通用图标资源系统。 + +## 设计说明 + +如果把它和 Unity 的使用体验类比,可以把这层理解成“轻量版的内建编辑器图标入口”。它的目标不是提供一个完整的图标数据库,而是确保最核心的编辑器对象类型在不同面板里看起来一致。 + +这样设计的收益是: + +- 面板代码只关心“我要画文件夹图标”,而不关心纹理从哪里来。 +- 资源加载失败时仍然有 fallback,不会导致整个面板失去可用性。 +- 以后如果要统一替换图标风格,只需要改这一层,而不是同时改 `HierarchyPanel`、`ProjectPanel` 和拖拽预览逻辑。 + +代价也很明确: + +- 当前实现和 D3D12 / ImGui 后端强绑定,还不是渲染后端无关的接口。 +- 图标集合很小,只覆盖当前编辑器刚需。 +- 路径解析和加载失败处理还比较工程化,不是面向内容制作流程的资源系统。 + +## 线程语义 + +- 这套 API 应被视为仅限编辑器 UI / 渲染线程使用。 +- 初始化和销毁会触发 GPU 资源分配、命令提交与队列等待,不适合在任意后台线程上调用。 +- `DrawAssetIcon(...)` 依赖当前帧的 `ImDrawList` 和 ImGui 绘制上下文,也只能在 ImGui 绘制阶段调用。 + +## 典型用法 + +```cpp +// 初始化阶段 +m_imguiBackend.Initialize(...); +UI::InitializeBuiltInIcons( + m_imguiBackend, + m_windowRenderer.GetDevice(), + m_windowRenderer.GetCommandQueue()); + +// 面板绘制阶段 +UI::DrawAssetIcon( + ImGui::GetWindowDrawList(), + iconMin, + iconMax, + UI::AssetIconKind::Folder); + +// 关闭阶段 +UI::ShutdownBuiltInIcons(); +``` + +## 当前限制 + +- 当前只支持 D3D12 上传路径,没有 OpenGL / Vulkan / 软件后备实现。 +- 图标种类固定为 `Folder`、`File`、`GameObject` 三类。 +- 没有热重载、主题切换或 DPI 变体资源管理。 +- 加载失败时以静默 fallback 为主,没有诊断级错误反馈。 + +## 相关文档 + +- [UI](../UI.md) +- [StyleTokens](../StyleTokens/StyleTokens.md) +- [Application](../../Application/Application.md) +- [HierarchyPanel](../../panels/HierarchyPanel/HierarchyPanel.md) +- [ProjectPanel](../../panels/ProjectPanel/ProjectPanel.md) diff --git a/docs/api/XCEngine/Editor/UI/DividerChrome/DividerChrome.md b/docs/api/XCEngine/Editor/UI/DividerChrome/DividerChrome.md new file mode 100644 index 00000000..c729df56 --- /dev/null +++ b/docs/api/XCEngine/Editor/UI/DividerChrome/DividerChrome.md @@ -0,0 +1,73 @@ +# DividerChrome + +**命名空间**: `XCEngine::Editor::UI` + +**类型**: `header-helper` + +**源文件**: `editor/src/UI/DividerChrome.h` + +**描述**: 提供编辑器面板分隔线的轻量绘制函数,用统一的 `StyleTokens` 控制颜色与线宽。 + +## 概述 + +`DividerChrome.h` 很小,但它承担的是“视觉一致性”而不是“复杂交互”。它把横向分隔线、纵向分隔线和当前窗口底边线抽成统一 helper,避免各个面板自己散落写 `AddLine(...)` 与硬编码颜色。 + +在商业编辑器里,这类 helper 很常见,因为它们能把“只是画一条线”这件小事也纳入统一设计系统:线宽、颜色、出现位置都不再是面板作者自己临时决定,而是由共享 token 决定。 + +## 公开 API + +| 成员 | 说明 | +|------|------| +| `DrawHorizontalDivider(...)` | 在任意 `ImDrawList` 上绘制一条横向分隔线。 | +| `DrawVerticalDivider(...)` | 在任意 `ImDrawList` 上绘制一条纵向分隔线。 | +| `DrawCurrentWindowBottomDivider(...)` | 读取当前 ImGui 窗口的矩形并在底边绘制横线。 | + +## 当前实现行为 + +按 `editor/src/UI/DividerChrome.h` 的实现: + +- 默认颜色来自 `PanelDividerColor()`。 +- 默认厚度来自 `PanelDividerThickness()`。 +- 如果传入的 `drawList` 为空,或绘制范围是退化区间,函数会直接返回。 +- `DrawCurrentWindowBottomDivider(...)` 不会创建额外布局空间;它只是读取当前窗口的 `Pos` 与 `Size` 后直接在底边绘线。 + +这意味着它是纯绘制 helper,不管理布局、不创建交互区域,也不记录任何状态。 + +## 设计说明 + +把 divider 单独抽出来有两个直接好处: + +- `ProjectPanel`、`PanelChrome`、自定义标签栏都可以复用同一套边界视觉语言。 +- 当设计风格变化时,只要改 token,而不是到处找 `AddLine(...)` 的裸调用。 + +可以把它理解成商业引擎编辑器里“panel chrome”的最小组成部分。它不像 splitter 那样负责拖拽,也不像 toolbar scope 那样负责结构;它只负责把层次边界画正确。 + +## 使用建议 + +- 如果你已经有明确的屏幕坐标,就直接调用 `DrawHorizontalDivider(...)` 或 `DrawVerticalDivider(...)`。 +- 如果你只是想给当前 child/window 补一条底边线,优先用 `DrawCurrentWindowBottomDivider(...)`。 +- 这类 helper 适合放在面板收尾阶段调用,而不是提前调用后再继续写会改变窗口高度的控件。 + +## 典型用法 + +```cpp +ImDrawList* drawList = ImGui::GetWindowDrawList(); +const ImVec2 min = ImGui::GetWindowPos(); +const ImVec2 max(min.x + ImGui::GetWindowSize().x, min.y + ImGui::GetWindowSize().y); + +UI::DrawHorizontalDivider(drawList, min.x, max.x, max.y - 0.5f); +``` + +## 当前限制 + +- 不负责布局留白,调用者必须自己决定线的位置。 +- 没有 hover / active 等交互状态,它不是 splitter。 +- 只是一层对 `ImDrawList::AddLine(...)` 的统一封装,不提供更复杂的边框系统。 + +## 相关文档 + +- [UI](../UI.md) +- [StyleTokens](../StyleTokens/StyleTokens.md) +- [Core](../Core/Core.md) +- [PanelChrome](../PanelChrome/PanelChrome.md) +- [ProjectPanel](../../panels/ProjectPanel/ProjectPanel.md) diff --git a/docs/api/XCEngine/Editor/UI/DockTabBarChrome/DockTabBarChrome.md b/docs/api/XCEngine/Editor/UI/DockTabBarChrome/DockTabBarChrome.md new file mode 100644 index 00000000..54e4a2c5 --- /dev/null +++ b/docs/api/XCEngine/Editor/UI/DockTabBarChrome/DockTabBarChrome.md @@ -0,0 +1,103 @@ +# DockTabBarChrome + +**命名空间**: `XCEngine::Editor::UI` + +**类型**: `header-helper` + +**源文件**: `editor/src/UI/DockTabBarChrome.h` + +**描述**: 基于 ImGui Docking 内部节点实现自定义停靠标签栏外观、选中逻辑、拖拽排序与拖出浮动行为。 + +## 概述 + +`DockTabBarChrome.h` 是当前 Editor UI 里技术耦合度最高的一层 helper 之一。它的职责不是创建 dockspace,而是在 ImGui 已经提供 docking 能力的前提下,把默认标签栏替换成一套更像商业编辑器的自定义标签栏。 + +当前这套方案由两部分组成: + +- `ConfigureDockTabBarChrome(...)` 递归配置 dock node,关闭原生 tab bar,并确保叶子节点处于可绘制的稳定状态。 +- `DrawDockedWindowTabStrip()` 在具体面板窗口内部补画自定义标签条。 + +从调用关系上看: + +- `DockLayoutController::RenderDockspace()` 负责每帧配置 dockspace 节点。 +- `PanelChrome::PanelWindowScope` 在 `ImGui::Begin(...)` 成功后调用 `DrawDockedWindowTabStrip()`。 + +也就是说,这一层本质上是“布局层 + 面板 chrome 层”的协作产物,而不是某一个面板自己的私有实现。 + +## 建议视为公开入口的函数 + +虽然头文件里存在很多 inline helper,但从设计意图上,真正应该被其他模块直接依赖的入口主要只有下面三个: + +| 成员 | 说明 | +|------|------| +| `ConfigureDockTabBarChrome(ImGuiDockNode* node)` | 对指定 dock node 递归应用自定义 tab bar 策略。 | +| `ConfigureDockTabBarChrome(ImGuiID dockspaceId)` | 通过 dockspace id 找到 root node 并应用同样策略。 | +| `DrawDockedWindowTabStrip()` | 在当前面板窗口顶部绘制自定义标签条。 | + +其他诸如 `DockTabOrderCache()`、`ReorderDockTab(...)`、`BeginCustomDockTabUndock(...)` 之类的函数,虽然在头文件可见,但更适合作为当前实现细节理解,而不是稳定的上层调用契约。 + +## 当前实现行为 + +按 `editor/src/UI/DockTabBarChrome.h` 的实现,当前版本具备以下行为: + +- 对叶子 `ImGuiDockNode` 会强制设置 `ImGuiDockNodeFlags_NoTabBar`、`NoWindowMenuButton`、`NoCloseButton`,隐藏 ImGui 原生标签栏。 +- 通过静态 `std::unordered_map>` 维护每个 dock node 的 tab 顺序缓存。 +- 如果当前叶子节点没有显式选中页签,系统会把第一个窗口设为选中页签。 +- 自定义标签条支持: + - 单击切换选中页签。 + - 左键拖拽改变页签顺序。 + - 满足阈值时将页签从当前 dock 节点拖出,进入 ImGui 原生的 undock 流程。 +- 标签颜色、背景色与分隔线使用 `StyleTokens` 和 ImGui dock style 的组合结果。 +- 标签宽度当前按文本宽度加固定水平 padding 计算,没有做更复杂的压缩或滚动策略。 + +这套实现明显不是简单换皮,而是接管了 tab strip 的一部分交互语义。 + +## 设计说明 + +为什么要做这一层,而不是直接接受 ImGui 默认标签栏? + +- 商业编辑器通常会把工作区标签视觉做得更克制、更稳定,以便和工具栏、面板边框形成统一外观。 +- 一旦需要控制页签排序、激活行为、拖出阈值、底部分隔线这些细节,直接用默认样式往往不够。 +- 把这部分逻辑集中在 `DockTabBarChrome.h` 中,能避免 `Hierarchy`、`Scene`、`Console` 这类面板各自处理 dock 标签外观。 + +如果和 Unity 的使用体验类比,这层更像“编辑器工作区标签栏的定制实现”,而不是某个单独窗口组件。 + +## 前置条件与线程语义 + +- 只能在启用了 ImGui Docking 的编辑器 UI 帧里使用。 +- `ConfigureDockTabBarChrome(...)` 应在 dockspace 建立后、面板开始绘制前调用;当前由 `DockLayoutController` 统一负责。 +- `DrawDockedWindowTabStrip()` 需要当前窗口已经 `Begin(...)` 成功且窗口处于 docked 状态;当前由 `PanelWindowScope` 自动调用。 +- 这一层依赖 `imgui_internal.h` 暴露的内部结构,应视为 UI 主线程专用逻辑,不具备线程安全保证。 + +## 典型用法 + +```cpp +const ImGuiID dockspaceId = ImGui::GetID("MainDockspace.Root"); +UI::ConfigureDockTabBarChrome(dockspaceId); + +{ + UI::DockHostStyleScope dockHostStyle; + ImGui::DockSpace(dockspaceId, ImVec2(0.0f, 0.0f), dockFlags); +} +``` + +面板窗口不需要自己手写标签条调用,使用 `PanelWindowScope` 时会自动进入: + +```cpp +UI::PanelWindowScope panel("Hierarchy"); +``` + +## 当前限制 + +- 强依赖 `imgui_internal.h`、`ImGuiWindow`、`ImGuiDockNode` 等内部实现细节,升级 ImGui 时需要重点回归。 +- 当前没有 close button、window menu button,也没有更复杂的 tab overflow 处理。 +- tab 顺序缓存是进程内静态状态,不是跨会话布局资产。 +- 这是 Editor 专用 UI 基建,不适合直接当作通用运行时 UI API 使用。 + +## 相关文档 + +- [UI](../UI.md) +- [StyleTokens](../StyleTokens/StyleTokens.md) +- [PanelChrome](../PanelChrome/PanelChrome.md) +- [DockHostStyle](../DockHostStyle/DockHostStyle.md) +- [DockLayoutController](../../Layout/DockLayoutController/DockLayoutController.md) diff --git a/docs/api/XCEngine/Editor/UI/PropertyLayout/PropertyLayout.md b/docs/api/XCEngine/Editor/UI/PropertyLayout/PropertyLayout.md new file mode 100644 index 00000000..e8b7bf8d --- /dev/null +++ b/docs/api/XCEngine/Editor/UI/PropertyLayout/PropertyLayout.md @@ -0,0 +1,105 @@ +# PropertyLayout + +**命名空间**: `XCEngine::Editor::UI` + +**类型**: `header-helper + struct` + +**源文件**: `editor/src/UI/PropertyLayout.h` + +**描述**: 为 Inspector 属性行提供统一的标签列 / 控件列几何计算,并把具体控件绘制委托给回调。 + +## 概述 + +`PropertyLayout.h` 是当前 Inspector 体验能否“像一个成熟编辑器”而不是“像一堆临时摆放的 ImGui 控件”的关键基础设施。 + +它不直接定义浮点框、复选框或向量输入框,而是先回答一个更底层的问题: + +- 标签列从哪里开始? +- 控件列从哪里开始? +- 当前行有多高? +- 控件应该拿到多宽的可用空间? + +把这层几何计算独立出来以后,`ScalarControls`、`VectorControls`、`PropertyGrid` 这些上层 helper 就可以共享同一套 Inspector 排版规则,而不需要每种控件都重复手算列宽和光标位置。 + +## 公开 API + +| 成员 | 说明 | +|------|------| +| `PropertyLayoutSpec` | 描述标签缩进、控件列起点、标签和控件间距、控件右侧留白。 | +| `PropertyLayoutMetrics` | 保存一行属性被计算出的实际几何结果。 | +| `MakePropertyLayout()` | 生成使用默认 token 的 `PropertyLayoutSpec`。 | +| `PushPropertyLayoutStyles()` | 推入当前属性行需要的样式变量。 | +| `GetPropertyControlWidth(...)` | 根据布局结果返回控件区域宽度。 | +| `SetNextPropertyControlWidth(...)` | 用布局结果直接设置下一个控件的宽度。 | +| `AlignPropertyControlToRight(...)` | 让较窄控件在属性列中右对齐。 | +| `DrawPropertyRow(...)` | 绘制一整行属性,并把具体控件绘制委托给回调。 | + +## 当前实现行为 + +按 `editor/src/UI/PropertyLayout.h` 的实现: + +- `PropertyLayoutSpec` 的默认值直接来自 `StyleTokens.h`,例如 `InspectorPropertyControlColumnStart()` 与 `InspectorPropertyLabelInset()`。 +- `PushPropertyLayoutStyles()` 当前只推入 `ImGuiStyleVar_FramePadding`,并不负责整套 Inspector 样式。 +- `DrawPropertyRow(...)` 会: + - 以 `label` 为 `PushID` 的依据。 + - 读取当前内容区宽度并计算一整行的 label / control 几何。 + - 直接用 `ImDrawList::AddText(...)` 绘制标签文本,而不是创建一个独立的 ImGui label item。 + - 把光标移动到控件列起点,再调用外部回调绘制真正的控件。 + - 最后用 `Dummy(...)` 吃掉这一行占用的高度,确保后续布局连续。 + +这说明它是一层“布局执行器”,不是单纯的常量集合。 + +## 设计说明 + +商业引擎编辑器通常会把 Inspector 的“字段布局规则”和“字段编辑控件”拆开,这一点和 Unity Inspector 的使用体验很像: + +- 左边是稳定的属性标签列。 +- 右边是不同类型字段共享的一列编辑区域。 +- 上层组件编辑器只描述“这里是一条 Position / Rotation / Scale”,而不是自己计算每个字段的横向坐标。 + +这样拆分的收益非常直接: + +- 所有组件编辑器天然保持一致的列对齐。 +- 以后如果想统一调整 Inspector 视觉密度,只需要修改 token 或布局层。 +- `PropertyGrid` 可以专注在“属性语义 + 撤销接线”,而不必再重复几何计算。 + +## 使用模式 + +更推荐的使用方式不是直接手算坐标,而是把控件包进 `DrawPropertyRow(...)` 的回调: + +```cpp +const UI::PropertyLayoutSpec layout = UI::MakePropertyLayout(); + +UI::DrawPropertyRow("Mass", layout, [&](const UI::PropertyLayoutMetrics& metrics) { + UI::SetNextPropertyControlWidth(metrics); + return ImGui::DragFloat("##value", &mass, 0.1f, 0.0f, 1000.0f, "%.2f"); +}); +``` + +如果只是常见属性类型,实际工程里更常见的入口是: + +- `ScalarControls.h` +- `VectorControls.h` +- `PropertyGrid.h` + +它们已经把 `PropertyLayout` 作为底层依赖封装好了。 + +## 线程语义 + +- 这一层完全依赖当前帧的 ImGui 上下文和当前窗口布局状态,只能在 UI 线程、ImGui 绘制阶段调用。 +- 它不维护后台状态,也不适合离线计算布局。 + +## 当前限制 + +- `PushID(label)` 意味着同一作用域里若有重复标签,调用方应额外 `PushID` 以避免冲突。 +- 标签是直接画到 draw list 上的,因此不是可交互的独立 ImGui item。 +- 当前布局仍然是固定列起点模型,不是响应式表单系统。 +- `PushPropertyLayoutStyles()` 目前只做最小样式压栈,离完整的属性主题系统还有距离。 + +## 相关文档 + +- [UI](../UI.md) +- [StyleTokens](../StyleTokens/StyleTokens.md) +- [ScalarControls](../ScalarControls/ScalarControls.md) +- [VectorControls](../VectorControls/VectorControls.md) +- [PropertyGrid](../PropertyGrid/PropertyGrid.md) diff --git a/docs/api/XCEngine/Editor/UI/SplitterChrome/SplitterChrome.md b/docs/api/XCEngine/Editor/UI/SplitterChrome/SplitterChrome.md new file mode 100644 index 00000000..daf69f47 --- /dev/null +++ b/docs/api/XCEngine/Editor/UI/SplitterChrome/SplitterChrome.md @@ -0,0 +1,88 @@ +# SplitterChrome + +**命名空间**: `XCEngine::Editor::UI` + +**类型**: `header-helper + enum class + struct` + +**源文件**: `editor/src/UI/SplitterChrome.h` + +**描述**: 为编辑器面板提供统一的 splitter 主题颜色与拖拽分隔条绘制 / 交互结果。 + +## 概述 + +`SplitterChrome.h` 处理的是“两个区域之间如何被拖拽改变尺寸”这个问题。和 `DividerChrome` 不同,它不只是画一条视觉边界线,而是同时承担: + +- 交互命中区域创建。 +- hover / active 状态计算。 +- 鼠标光标切换。 +- 拖拽位移返回。 + +当前源码中,最直接的使用者是 `ProjectPanel`:左侧目录树和右侧资源浏览区之间的宽度调节完全依赖这层 helper。 + +## 公开 API + +| 成员 | 说明 | +|------|------| +| `enum class SplitterAxis { Vertical, Horizontal }` | 定义 splitter 的主轴方向。 | +| `struct SplitterResult` | 返回当前 splitter 的 hover、active 与拖拽增量。 | +| `ApplySplitterThemeColors(ImVec4* colors)` | 用当前 token 覆盖 ImGui separator / resize grip 相关颜色。 | +| `DrawSplitter(...)` | 绘制 splitter 并返回本帧交互结果。 | + +## 当前实现行为 + +按 `editor/src/UI/SplitterChrome.h` 的实现: + +- `DrawSplitter(...)` 使用 `ImGui::InvisibleButton(...)` 创建命中区域。 +- 命中区域厚度默认来自 `PanelSplitterHitThickness()`,而真正画出来的线宽来自 `PanelSplitterVisibleThickness()`。 +- 当 splitter 处于 active 状态时: + - 纵向 splitter 返回 `MouseDelta.x` + - 横向 splitter 返回 `MouseDelta.y` +- hover 或 active 时会把鼠标指针切到 `ResizeEW` 或 `ResizeNS`。 +- 它只返回“这一帧用户拖了多少”,并不直接修改任何布局变量;调用者必须自己把 `delta` 累加到宽度 / 高度并做 clamp。 + +因此,这层是“交互采样 + 视觉呈现”,不是完整的布局管理器。 + +## 设计说明 + +把 splitter 从具体面板里抽出来是非常典型的商业编辑器实践: + +- 面板只关心自己的布局状态,例如 `m_navigationWidth`。 +- splitter helper 只关心拖拽命中、光标和线条绘制。 +- 主题层通过 `StyleTokens` 统一控制 splitter 粗细、颜色和命中区宽度。 + +这样 `ProjectPanel`、后续的多列 Inspector 或资源导入面板都能使用相同的分隔条行为,而不会出现每个面板“拖动手感都不一样”的问题。 + +## 典型用法 + +```cpp +const UI::SplitterResult splitter = + UI::DrawSplitter("##ProjectPaneSplitter", UI::SplitterAxis::Vertical, totalHeight); + +if (splitter.active) { + m_navigationWidth += splitter.delta; +} +``` + +调用者通常还应该把结果夹紧到合理区间,例如: + +- 最小导航宽度 +- 最小内容区宽度 + +## 线程语义 + +- 只能在 ImGui UI 线程使用。 +- 每帧结果是即时的,不会自动跨帧缓存。 +- `ApplySplitterThemeColors(...)` 修改的是调用方传入的颜色数组,通常应在同一帧、同一上下文中使用。 + +## 当前限制 + +- 当前只提供基础 hover / active 与位移返回,不提供吸附、双击重置、动画过渡等高级行为。 +- 颜色仍然是静态 token,不支持运行时主题切换动画。 +- 由调用者自己负责宽度约束和布局重算,没有更高层的布局容器抽象。 + +## 相关文档 + +- [UI](../UI.md) +- [StyleTokens](../StyleTokens/StyleTokens.md) +- [DividerChrome](../DividerChrome/DividerChrome.md) +- [ProjectPanel](../../panels/ProjectPanel/ProjectPanel.md) diff --git a/docs/api/XCEngine/Editor/UI/StyleTokens/StyleTokens.md b/docs/api/XCEngine/Editor/UI/StyleTokens/StyleTokens.md index dca8ae36..32e6247d 100644 --- a/docs/api/XCEngine/Editor/UI/StyleTokens/StyleTokens.md +++ b/docs/api/XCEngine/Editor/UI/StyleTokens/StyleTokens.md @@ -2,45 +2,90 @@ **命名空间**: `XCEngine::Editor::UI` -**类型**: `header-helper` +**类型**: `header-helper + struct` **源文件**: `editor/src/UI/StyleTokens.h` -**描述**: 统一定义编辑器 UI 使用的颜色、尺寸、间距和布局 token。 +**描述**: 集中定义 Editor UI 的颜色、尺寸、间距与树视图样式,是当前编辑器设计系统的单一 token 源。 ## 概述 -`StyleTokens.h` 是当前 UI 层的设计 token 中心。 -它集中提供了大量 inline token helper,例如: +`StyleTokens.h` 是当前 Editor UI 的设计语言中心。它把原本最容易散落在各个面板、各类 helper 和临时控件中的“魔法数字”集中成一组具名 token,让代码能够表达设计意图,而不是只暴露数值本身。 -- Dock 标签颜色 -- 工具栏高度与 padding -- 资产网格尺寸 -- Inspector 标签列宽 -- 弹窗按钮尺寸 -- 向量控件按钮颜色 -- Console 状态颜色 +例如: + +- `ProjectNavigationDefaultWidth()` 表达的是“项目导航栏默认宽度”。 +- `InspectorPropertyControlColumnStart()` 表达的是“Inspector 控件列起点”。 +- `PanelSplitterHitThickness()` 表达的是“splitter 命中区宽度”。 + +这比直接写 `248.0f`、`236.0f`、`4.0f` 更接近商业编辑器的工程实践,因为当 UI 逐步复杂起来后,真正难维护的从来不是控件本身,而是这些散落的视觉约束。 + +## 当前 token 分组 + +按 `editor/src/UI/StyleTokens.h` 的实现,当前 token 大致可以分成下面几类: + +| 类别 | 代表 token | 主要消费者 | +|------|-------------|------------| +| Dock host / tab | `DockHostFramePadding()`、`DockTabSelectedColor()` | `DockHostStyle`、`DockTabBarChrome` | +| 面板与工具栏 | `PanelWindowPadding()`、`ToolbarPadding()` | `PanelChrome`、各类 panel toolbar | +| Project 浏览器 | `ProjectNavigationDefaultWidth()`、`AssetGridSpacing()` | `ProjectPanel`、`Widgets` | +| TreeView 导航树 | `NavigationTreeIconSize()`、`NavigationTreePrefixWidth()` | `TreeView`、`HierarchyPanel`、`ProjectPanel` | +| Inspector / 属性布局 | `InspectorPropertyControlColumnStart()`、`ControlFramePadding()` | `PropertyLayout`、`ScalarControls`、`VectorControls`、`PropertyGrid` | +| Popup / Combo | `PopupWindowPadding()`、`ComboPopupBackgroundColor()` | `Core`、`Widgets` | +| 资产卡片与图标 | `AssetTileSize()`、`BuiltInFolderIconBodyColor()` | `Widgets`、`BuiltInIcons` | +| Console / 状态栏 | `ConsoleRowHoverFillColor()`、`MenuBarStatusIdleColor()` | `Widgets`、菜单栏与 Console UI | + +此外,`StyleTokens.h` 里还定义了: + +- `struct TreeViewStyle` +- `NavigationTreeStyle()` +- `HierarchyTreeStyle()` +- `ProjectFolderTreeStyle()` + +它们是树视图层的“组合 token”,不是单个数值,而是一组可复用的树节点视觉约束。 + +## 当前实现行为 + +按当前源码,这一层有几个很重要的特点: + +- token 目前全部是 header-only inline 函数,不是配置资产,也不是运行时可热更新的数据表。 +- 很多 helper 会把这里的 token 当默认值,而不是自己再声明一套局部常量。 +- `PropertyLayout`、`SplitterChrome`、`DockTabBarChrome`、`BuiltInIcons`、`Widgets` 都直接依赖这里的 token。 +- 某些 token 之间存在设计上的复用关系,例如 `PanelDividerColor()` 当前直接复用 splitter 的 idle 颜色。 + +这意味着 `StyleTokens.h` 不是“装饰性文件”,而是整个 Editor UI 复用层的上游依赖。 ## 设计说明 -这是商业编辑器 UI 非常推荐的做法。 -不要在控件代码里到处写 `6.0f`、`0.24f`、`104.0f` 这种魔法数字,而应先抽象成 token。 +为什么这层很重要? -收益包括: +- 当你在重构 `ProjectPanel` 时,不应该顺手发明一套新的资产卡片尺寸。 +- 当你在做 `HierarchyPanel` 的树前缀图标时,不应该自己再决定一套图标槽宽。 +- 当你在优化 Inspector 的密度时,真正应该改的是 token,而不是 5 个不同 helper 里的重复常量。 -- 调整风格时能集中修改 -- 命名本身就表达设计意图 -- 高层 widget 与具体数值解耦 +这就是商业级编辑器常说的“设计系统落地到代码层”的意义。对于 XCEngine 来说,这一层还没有演化成完整的主题资产系统,但它已经承担了相同的架构角色。 + +## 与其他 UI helper 的关系 + +- `PropertyLayout` 使用它定义属性行的列宽、label inset 和 frame padding。 +- `TreeView` 使用它定义缩进、前缀插槽宽度和图标尺寸。 +- `SplitterChrome` 与 `DividerChrome` 使用它定义边界线和分隔条视觉。 +- `Widgets` 使用它定义资产卡片、面包屑、组件 section 和各种通用控件的视觉细节。 +- `BuiltInIcons` 使用它定义文件 / 文件夹 fallback 图标颜色。 + +从依赖方向上说,这一层应该尽量保持在 UI 栈的较底部,避免反向依赖更高层的业务 widget。 ## 当前限制 -- 仍然是 header inline 常量函数,而不是数据驱动主题系统 -- token 数量已经较多,后续可能需要再分层 -- 当前主要围绕唯一默认主题设计 +- 当前仍然是“写死在代码里的默认主题”,不是运行时可切换的主题资源系统。 +- token 命名已经带有明显的面板语义,例如 `ProjectNavigationPanePadding()`,说明它还是偏应用内设计系统,而不是完全抽象的通用 design token。 +- 还没有颜色模式切换、用户主题文件或样式编辑器一类更高阶能力。 ## 相关文档 - [UI](../UI.md) - [BaseTheme](../BaseTheme/BaseTheme.md) -- [PanelChrome](../PanelChrome/PanelChrome.md) -- [Widgets](../Widgets/Widgets.md) +- [DockHostStyle](../DockHostStyle/DockHostStyle.md) +- [PropertyLayout](../PropertyLayout/PropertyLayout.md) +- [TreeView](../TreeView/TreeView.md) +- [SplitterChrome](../SplitterChrome/SplitterChrome.md) diff --git a/docs/api/XCEngine/Editor/UI/TreeView/TreeView.md b/docs/api/XCEngine/Editor/UI/TreeView/TreeView.md new file mode 100644 index 00000000..c8173497 --- /dev/null +++ b/docs/api/XCEngine/Editor/UI/TreeView/TreeView.md @@ -0,0 +1,122 @@ +# TreeView + +**命名空间**: `XCEngine::Editor::UI` + +**类型**: `header-helper + class + struct` + +**源文件**: `editor/src/UI/TreeView.h` + +**描述**: 提供编辑器树形视图的统一节点状态、前缀绘制槽、交互回调和展开状态持久化机制。 + +## 概述 + +`TreeView.h` 是当前 Editor UI 重构里最重要的公共基础设施之一。它把原本很容易散落在 `HierarchyPanel`、`ProjectPanel` 中的树节点绘制逻辑抽成一层统一接口,让不同面板能够共享: + +- 相同的树节点视觉风格。 +- 相同的展开 / 收起行为。 +- 相同的前缀图标插槽模型。 +- 相同的点击、双击、右键、拖拽扩展接入点。 + +如果从使用体验上理解,它很接近商业编辑器中“导航树控件”的内建基础层。`HierarchyPanel` 和 `ProjectPanel` 的左侧目录树并没有各写一套独立的 tree widget,而是都基于这层构建。 + +## 公开类型与函数 + +| 成员 | 说明 | +|------|------| +| `class TreeViewState` | 保存节点展开状态的内存态容器。 | +| `TreeNodeOptions` | 控制选中、叶子节点、默认展开、点击展开策略等基础选项。 | +| `TreeNodeResult` | 返回节点本帧是否打开、是否点击、是否双击、是否右键等交互结果。 | +| `TreeNodePrefixContext` | 给前缀绘制回调提供绘制区域、选中状态和 hover 状态。 | +| `TreeNodePrefixSlot` | 定义一个可选的前缀绘制槽。 | +| `TreeNodeCallbacks` | 定义交互回调和额外渲染回调。 | +| `TreeNodeDefinition` | 组合节点选项、持久化 key、样式、前缀槽与回调。 | +| `ResetTreeLayout()` | 清空当前树布局的缩进栈,开始一棵新的树。 | +| `DrawTreeNode(...)` | 绘制节点并返回本帧结果。 | +| `EndTreeNode()` | 与打开状态的节点配对,弹出一层树缩进。 | + +## TreeViewState 的角色 + +`TreeViewState` 当前只做一件事:根据 `std::string_view key` 保存节点展开状态。 + +它不是场景数据,也不是项目数据,只是某个 UI 实例自己的展开状态缓存。因此: + +- `HierarchyPanel` 用它记住实体树哪些节点已经展开。 +- `ProjectPanel` 用它记住目录树哪些文件夹已经展开。 + +当前实现采用 `std::unordered_map`,所以最好的 `persistenceKey` 是稳定且能跨帧复现的标识,例如: + +- 场景对象的 UUID +- 资源目录的完整路径 + +## 当前实现行为 + +按 `editor/src/UI/TreeView.h` 的实现,当前版本有几个关键事实: + +- 树缩进不是保存在某个对象里,而是保存在一个静态 `TreeIndentStack()` 中。 +- 因此每次绘制一棵新的根树之前都应该先调用 `ResetTreeLayout()`。 +- `DrawTreeNode(...)` 若返回 `open = true`,调用方在绘制完所有子节点后必须调用 `EndTreeNode()` 与之配对。 +- 节点背景当前直接使用 `ImGuiCol_Header` / `HeaderHovered` / `HeaderActive` 这一组颜色绘制选中与 hover 态。 +- 展开箭头由 `Core.h` 里的 `DrawDisclosureArrow(...)` 手工绘制。 +- prefix slot 允许调用方在标签前插入小图标、状态灯或其他自定义绘制内容。 +- `callbacks.onInteraction` 适合接选择、右键菜单、双击重命名等语义。 +- `callbacks.onRenderExtras` 适合接拖拽源 / 拖拽目标之类必须紧跟节点绘制的额外逻辑。 + +这说明它不是对 `ImGui::TreeNodeEx(...)` 的轻封装,而是自己接管了树节点的大部分视觉和交互行为。 + +## 设计说明 + +为什么要单独造这一层,而不是每个面板直接用 ImGui 原生 tree API? + +- `Hierarchy` 和 `Project` 都需要统一的左侧导航树风格,这种复用非常适合抽成共享 helper。 +- 商业编辑器中的树视图往往不仅是“文本 + 箭头”,还需要图标前缀、整行高亮、拖放热点、重命名切换等语义。 +- 一旦把节点定义、展开状态和回调插槽标准化,上层面板代码就能更聚焦于业务对象,而不是 UI 细节。 + +如果和 Unity 对照,可以把它理解成“Hierarchy / Project 导航树的共用控件层”,而不是某个特定面板的局部技巧。 + +## 典型用法 + +```cpp +UI::ResetTreeLayout(); + +UI::TreeNodeDefinition node; +node.options.selected = isSelected; +node.options.leaf = !hasChildren; +node.persistenceKey = stablePath; +node.style = UI::ProjectFolderTreeStyle(); +node.prefix.width = UI::NavigationTreePrefixWidth(); +node.prefix.draw = DrawFolderPrefix; +node.callbacks.onInteraction = [&](const UI::TreeNodeResult& result) { + if (result.clicked) { + NavigateToFolder(); + } +}; + +const UI::TreeNodeResult result = + UI::DrawTreeNode(&m_treeState, folder.get(), folder->name.c_str(), node); + +if (result.open) { + DrawChildren(); + UI::EndTreeNode(); +} +``` + +## 生命周期与线程语义 + +- `TreeViewState` 由具体面板持有,通常作为成员变量存在于面板实例生命周期内。 +- 整套 API 都依赖当前 ImGui 帧状态,只能在 UI 线程使用。 +- 它不负责把展开状态写入磁盘或布局文件;当前只是内存级持久化。 + +## 当前限制 + +- 静态 `TreeIndentStack()` 让它更像“约定式 helper”,而不是完全可重入的小部件对象。 +- 没有键盘导航、滚动到可见、虚拟化大树等更高级的树控件能力。 +- 展开状态目前只保存在面板实例中,重启编辑器后不会自动恢复。 +- 当前回调模型偏即时模式,适合编辑器内部使用,但不是声明式 UI 框架。 + +## 相关文档 + +- [UI](../UI.md) +- [StyleTokens](../StyleTokens/StyleTokens.md) +- [BuiltInIcons](../BuiltInIcons/BuiltInIcons.md) +- [HierarchyPanel](../../panels/HierarchyPanel/HierarchyPanel.md) +- [ProjectPanel](../../panels/ProjectPanel/ProjectPanel.md) diff --git a/docs/api/XCEngine/Editor/UI/UI.md b/docs/api/XCEngine/Editor/UI/UI.md index e2f2a778..f9cef513 100644 --- a/docs/api/XCEngine/Editor/UI/UI.md +++ b/docs/api/XCEngine/Editor/UI/UI.md @@ -4,47 +4,106 @@ **类型**: `submodule` -**描述**: 编辑器 ImGui 基础设施、主题、控件与面板绘制辅助层。 +**描述**: 编辑器基于 Dear ImGui 的 UI 基础设施层,负责会话、主题 token、面板 chrome、树视图、属性布局和通用控件封装。 ## 概述 -`UI` 子模块当前内容很多,但核心方向很清楚: +`XCEngine::Editor::UI` 不是单个 widget 库,而是一组逐层叠加的编辑器 UI 基建。它的目标是把 Dear ImGui 这种非常自由、非常底层的即时模式 API 收束成一套可维护的“编辑器内建控件层”。 -- 维护 ImGui 会话与布局文件 -- 封装统一视觉主题 -- 提供属性面板、工具栏、菜单、场景状态等 UI 辅助 +当前源码里,这一层大致可以分成四层: -已文档化的核心页面: +1. **会话与后端层** + 负责 ImGui 上下文、ini 持久化、后端桥接和纹理描述符分配。 +2. **主题与设计 token 层** + 负责颜色、尺寸、间距、dock host 风格与常用视觉常量。 +3. **chrome 与布局层** + 负责面板窗口、工具栏、树视图、splitter、divider、属性行布局和自定义 dock 标签栏。 +4. **语义化控件层** + 负责属性网格、资产卡片、面包屑、弹窗、组件折叠段和各种编辑器专用小部件。 -- [ImGuiSession](ImGuiSession/ImGuiSession.md) -- [ImGuiBackendBridge](ImGuiBackendBridge/ImGuiBackendBridge.md) -- [BaseTheme](BaseTheme/BaseTheme.md) -- [StyleTokens](StyleTokens/StyleTokens.md) -- [Core](Core/Core.md) -- [PanelChrome](PanelChrome/PanelChrome.md) -- [Widgets](Widgets/Widgets.md) -- [PopupState](PopupState/PopupState.md) -- [ScalarControls](ScalarControls/ScalarControls.md) -- [VectorControls](VectorControls/VectorControls.md) -- [PropertyGrid](PropertyGrid/PropertyGrid.md) -- [DockHostStyle](DockHostStyle/DockHostStyle.md) -- [ConsoleFilterState](ConsoleFilterState/ConsoleFilterState.md) -- [ConsoleLogFormatter](ConsoleLogFormatter/ConsoleLogFormatter.md) -- [SceneStatusWidget](SceneStatusWidget/SceneStatusWidget.md) -- [AboutEditorDialog](AboutEditorDialog/AboutEditorDialog.md) +这类分层方式非常接近商业级游戏引擎编辑器的组织方式。原因很简单:如果每个面板都直接拼原始 ImGui 调用,代码很快就会变成不可维护的样式杂糅体;而先建设统一 UI 层,后续任何面板重构、主题调整和交互升级都会容易很多。 -`UI/UI.h` 本身只是聚合入口,真正值得阅读的是这些分层 helper: +## 聚合头文件 -- `ImGuiSession + ImGuiBackendBridge` 负责上下文与后端绑定 -- `BaseTheme + StyleTokens` 负责视觉规范 -- `Core + PanelChrome + Widgets` 负责通用交互壳层 -- `ScalarControls + VectorControls + PropertyGrid` 负责 Inspector 表单体验 +**源文件**: `editor/src/UI/UI.h` -这样拆分的好处,是把 Dear ImGui 容易失控的即时模式代码收束成一套可复用部件库。 +`UI.h` 当前是一个标准的 umbrella header。它的职责是把 Editor UI 常用 helper 聚合到同一个入口,而不是声明新的运行时类型。 + +因此这页文档直接承担 `UI.h` 的说明职责,不再额外创建一个重复的类型页。 + +## 当前架构重点 + +结合当前 `editor/src/UI/**` 与最近一次 Editor UI 重构,以下几层是现在最值得读的核心: + +- `ImGuiSession + ImGuiBackendBridge` + 管理 ImGui 上下文、DPI、SRV 描述符与窗口后端对接。 +- `BaseTheme + StyleTokens + DockHostStyle` + 管理设计 token 和 dock host 外观,是全局视觉风格的起点。 +- `Core + DividerChrome + SplitterChrome + DockTabBarChrome + PanelChrome` + 管理窗口 chrome、底边线、拖拽分隔条与自定义 dock 标签栏。 +- `TreeView + BuiltInIcons` + 管理层级树 / 目录树的共享节点表现与图标前缀。 +- `PropertyLayout + ScalarControls + VectorControls + PropertyGrid` + 管理 Inspector 的属性布局、标量控件、向量控件和高层属性编辑入口。 +- `Widgets + PopupState + SceneStatusWidget + AboutEditorDialog` + 提供更接近编辑器业务语义的通用 widget。 + +这次重构里,`TreeView`、`PropertyLayout`、`BuiltInIcons` 和 `DockTabBarChrome` 是最明显的新基础设施,它们共同把原先分散在具体面板中的 UI 技巧沉淀成了复用层。 + +## 设计说明 + +如果把它和 Unity 一类成熟编辑器对照,可以把 `Editor::UI` 理解成“编辑器内部控件系统”,而不是游戏运行时 UI 框架: + +- 它面向工具开发,不面向游戏内 HUD。 +- 它可以为编辑器体验服务而使用较强约束的 helper。 +- 它允许把某些风格、布局和交互策略写死在共享层,以换取整个工具界面的统一性。 + +这种设计的好处是: + +- 面板作者写的代码更接近业务语义,而不是样式拼装。 +- 主题、间距、树视图和 Inspector 布局能在全局范围内保持一致。 +- 面板之间可以共享拖拽、上下文菜单、资产卡片、树节点前缀等成熟模式。 + +代价也很明确: + +- 当前 UI 层明显偏 Editor 私有实现,不是面向外部插件的稳定 ABI。 +- 很多 helper 仍然是 header-only inline 形式,接口演化速度会比较快。 +- 当前实现强依赖 Windows + D3D12 + Dear ImGui 的编辑器运行路径。 + +## 头文件 + +- [AboutEditorDialog](AboutEditorDialog/AboutEditorDialog.md) - `AboutEditorDialog.h`,关于对话框相关 UI。 +- [BaseTheme](BaseTheme/BaseTheme.md) - `BaseTheme.h`,编辑器基础主题安装。 +- [BuiltInIcons](BuiltInIcons/BuiltInIcons.md) - `BuiltInIcons.h`,内置资源/对象图标系统。 +- [ConsoleFilterState](ConsoleFilterState/ConsoleFilterState.md) - `ConsoleFilterState.h`,Console 过滤状态。 +- [ConsoleLogFormatter](ConsoleLogFormatter/ConsoleLogFormatter.md) - `ConsoleLogFormatter.h`,Console 日志格式化。 +- [Core](Core/Core.md) - `Core.h`,底层 ImGui helper 与 popup chrome 包装。 +- [DividerChrome](DividerChrome/DividerChrome.md) - `DividerChrome.h`,统一分隔线绘制。 +- [DockHostStyle](DockHostStyle/DockHostStyle.md) - `DockHostStyle.h`,dock host 风格压栈。 +- [DockTabBarChrome](DockTabBarChrome/DockTabBarChrome.md) - `DockTabBarChrome.h`,自定义 dock 标签栏。 +- [ImGuiBackendBridge](ImGuiBackendBridge/ImGuiBackendBridge.md) - `ImGuiBackendBridge.h`,ImGui 与 D3D12 之间的桥接层。 +- [ImGuiSession](ImGuiSession/ImGuiSession.md) - `ImGuiSession.h`,ImGui 会话生命周期。 +- [PanelChrome](PanelChrome/PanelChrome.md) - `PanelChrome.h`,面板窗口 / 工具栏 / 内容区 RAII 外壳。 +- [PopupState](PopupState/PopupState.md) - `PopupState.h`,延迟弹窗与目标型弹窗状态。 +- [PropertyGrid](PropertyGrid/PropertyGrid.md) - `PropertyGrid.h`,Inspector 级属性编辑入口。 +- [PropertyLayout](PropertyLayout/PropertyLayout.md) - `PropertyLayout.h`,属性行几何布局层。 +- [ScalarControls](ScalarControls/ScalarControls.md) - `ScalarControls.h`,标量属性控件。 +- [SceneStatusWidget](SceneStatusWidget/SceneStatusWidget.md) - `SceneStatusWidget.h`,场景状态部件。 +- [SplitterChrome](SplitterChrome/SplitterChrome.md) - `SplitterChrome.h`,分隔条交互与绘制。 +- [StyleTokens](StyleTokens/StyleTokens.md) - `StyleTokens.h`,Editor UI 设计 token 中心。 +- [TreeView](TreeView/TreeView.md) - `TreeView.h`,树视图共享基础设施。 +- [VectorControls](VectorControls/VectorControls.md) - `VectorControls.h`,向量属性控件。 +- [Widgets](Widgets/Widgets.md) - `Widgets.h`,资产卡片、面包屑、组件折叠段等通用 widget。 + +## 当前实现边界 + +- 这是 Editor 应用层 UI,不是运行时 `engine/include/XCEngine` 风格的公共引擎 API。 +- 当前很多接口仍然直接暴露 ImGui 类型,如 `ImDrawList`、`ImVec2`、`ImGuiID`。 +- 自定义 dock 标签栏、树视图和图标系统都明显面向当前编辑器产品形态,而不是通用 GUI 框架。 ## 相关文档 -- [Editor 模块](../Editor.md) -- [Application](../Application/Application.md) -- [Platform](../Platform/Platform.md) +- [Editor](../Editor.md) +- [Layout](../Layout/Layout.md) +- [ComponentEditors](../ComponentEditors/ComponentEditors.md) - [Editor Architecture And Workflow](../../../_guides/Editor/Editor-Architecture-And-Workflow.md) diff --git a/docs/api/XCEngine/Editor/panels/HierarchyPanel/HierarchyPanel.md b/docs/api/XCEngine/Editor/panels/HierarchyPanel/HierarchyPanel.md index 3fda87e2..59da4945 100644 --- a/docs/api/XCEngine/Editor/panels/HierarchyPanel/HierarchyPanel.md +++ b/docs/api/XCEngine/Editor/panels/HierarchyPanel/HierarchyPanel.md @@ -2,49 +2,110 @@ **命名空间**: `XCEngine::Editor` -**类型**: `class + enum class` +**类型**: `class` **源文件**: `editor/src/panels/HierarchyPanel.h` -**描述**: 层级面板,负责显示场景对象树、搜索、排序、拖放层级调整以及内联重命名。 +**描述**: 编辑器场景层级面板,负责绘制根实体树、处理选择与重命名事件,并把上下文菜单与拖放操作路由给 Action 层。 ## 概述 -`HierarchyPanel` 是当前编辑器里交互最丰富的面板之一。 +`HierarchyPanel` 是当前编辑器里最典型的“视图层面板”:它自己拥有 UI 状态,但不直接承担场景编辑命令实现。它的主要任务是把当前场景对象以树形方式呈现出来,并把用户交互转换成选择、重命名、右键菜单和拖放请求。 -它当前承载的功能包括: +按当前实现,这个面板主要负责: -- 订阅选择变化和重命名请求事件 -- 层级树渲染 -- 搜索过滤 -- 排序选项 -- 拖拽层级调整 -- 右键上下文菜单 -- 内联重命名 +- 订阅选择变化与外部重命名请求事件。 +- 读取 `ISceneManager` 提供的根实体列表。 +- 基于 `UI::TreeView` 递归绘制场景对象树。 +- 维护内联重命名状态。 +- 将选择、右键菜单、拖放等行为委托给 `Actions::HierarchyActionRouter` 一侧的 helper。 -头文件里还定义了: +这和商业引擎编辑器的分层很一致:Hierarchy 面板负责“看见和触发”,而不是直接“改数据和执行业务命令”。 -- `enum class SortMode { Name, ComponentCount, TransformFirst }` +## 当前实现行为 -## 当前实现说明 +按 `editor/src/panels/HierarchyPanel.cpp` 的实现: -- `OnAttach()` 会订阅 `SelectionChangedEvent` 和 `EntityRenameRequestedEvent`。 -- 搜索过滤当前按名字子串匹配,并递归检查子节点。 -- 排序支持: - - `Name` - - `ComponentCount` - - `TransformFirst` -- 双击节点会进入重命名状态。 -- 背景点击、右键菜单和拖放逻辑主要委托给 `Actions` 层。 +- `OnAttach()` 会订阅: + - `SelectionChangedEvent` + - `EntityRenameRequestedEvent` +- `OnDetach()` 会正确取消订阅并清零 handler id。 +- `Render()` 会: + - 应用 `HierarchyInspectorPanelBackgroundColor()`。 + - 通过 `PanelWindowScope` / `PanelContentScope` 建立标准面板外壳。 + - 调用 `Actions::ObserveFocusedActionRoute(...)` 将当前焦点路由标记为 `Hierarchy`。 + - 向 `ISceneManager` 读取根实体并逐个递归渲染。 + - 在树绘制完成后处理背景点击、背景右键菜单、实体右键菜单和根级 drop target。 -## 当前实现边界 +## 节点绘制模型 -- 当前排序和过滤都在 UI 渲染阶段直接对实体列表做处理。 -- `TransformFirst` 排序实际上是“有 Transform 的对象优先”,而不是更复杂的 transform-aware hierarchy order。 +当前的节点绘制已经不再是旧版本那种局部自定义树,而是完全建立在 `UI::TreeView` 之上: + +- 每个实体节点都会构造一个 `UI::TreeNodeDefinition`。 +- `selected` 状态来自 `ISelectionManager::IsSelected(...)`。 +- `leaf` 状态来自 `gameObject->GetChildCount() == 0`。 +- `persistenceKey` 使用 `gameObject->GetUUID()` 转成字符串,保证展开状态在同一面板实例中稳定。 +- `style` 使用 `UI::HierarchyTreeStyle()`。 +- `prefix` 使用 `UI::NavigationTreePrefixWidth()` 和 `UI::DrawAssetIcon(..., AssetIconKind::GameObject)` 绘制对象图标。 + +这意味着当前 Hierarchy 的视觉和交互行为已经被统一纳入 Editor UI 基础设施,而不是面板自己手工维护整套树渲染细节。 + +## 交互行为 + +当前节点交互通过 `TreeNodeCallbacks` 接入: + +- 单击左键:调用 `Actions::HandleHierarchySelectionClick(...)`,支持结合 `Ctrl` 执行多选。 +- 右键:调用 `Actions::HandleHierarchyItemContextRequest(...)` 打开目标实体上下文菜单。 +- 双击:调用 `BeginRename(...)` 进入内联重命名。 +- 节点额外渲染阶段:调用 `Actions::BeginHierarchyEntityDrag(...)` 和 `Actions::AcceptHierarchyEntityDrop(...)` 接入拖放。 + +因此 `HierarchyPanel` 自己不直接执行“重排父子关系”之类操作,它只负责在正确的节点生命周期里提供 drop source / target 入口。 + +## 重命名模型 + +`HierarchyPanel` 当前用 `UI::InlineTextEditState` 保存重命名状态。 + +当前行为是: + +- 外部若派发 `EntityRenameRequestedEvent`,面板会在 `OnRenameRequested(...)` 中找到实体并进入重命名。 +- 若用户双击树节点,也会进入重命名。 +- 编辑过程中: + - `Enter` 提交。 + - `Escape` 取消。 + - 输入框失焦且用户左键点击其他位置时提交。 +- `CommitRename()` 最终通过 `Actions::CommitEntityRename(...)` 把改名请求发往动作层。 + +这类实现很像商业编辑器中的“inline rename controller”:面板持有输入框状态,但真正的实体改名仍然走统一命令路径。 + +## 生命周期与线程语义 + +- 该面板依赖有效的 `IEditorContext` 才能 attach、订阅事件并绘制。 +- 事件订阅和 UI 绘制都应视为编辑器主线程行为。 +- `m_treeState` 和 `m_renameState` 都属于面板实例私有状态,不会自动跨会话持久化。 + +## 设计说明 + +当前实现的一个正确方向是:Hierarchy 面板只负责“把场景对象转成 Editor UI 语义”,而不是把所有业务都塞进面板里。 + +这样做的收益是: + +- 树视图风格、图标前缀、展开行为可以和 `ProjectPanel` 共享。 +- 选择、重命名、上下文菜单、拖放都能被 `Actions` 层集中治理。 +- 面板本身更容易继续重构,比如后续加入搜索、过滤、批量操作时,不必推翻底层树控件。 + +## 当前限制 + +- 当前没有搜索、过滤、排序或大场景虚拟化能力。 +- 展开状态只保存在 `UI::TreeViewState` 的内存态中,不会自动写入布局文件。 +- 重命名输入框是替换式绘制,不是“树节点原位嵌入子控件”的更复杂实现。 +- 目前只为每个节点提供统一的 `GameObject` 图标前缀,没有按组件类型做更细粒度图标区分。 ## 相关文档 - [panels](../panels.md) -- [SelectionManager](../../Core/SelectionManager/SelectionManager.md) -- [SceneManager](../../Managers/SceneManager/SceneManager.md) +- [TreeView](../../UI/TreeView/TreeView.md) +- [BuiltInIcons](../../UI/BuiltInIcons/BuiltInIcons.md) +- [HierarchyActionRouter](../../Actions/HierarchyActionRouter/HierarchyActionRouter.md) - [EditorEvents](../../Core/EditorEvents/EditorEvents.md) +- [ISceneManager](../../Core/ISceneManager/ISceneManager.md) +- [ISelectionManager](../../Core/ISelectionManager/ISelectionManager.md) diff --git a/docs/api/XCEngine/Editor/panels/ProjectPanel/ProjectPanel.md b/docs/api/XCEngine/Editor/panels/ProjectPanel/ProjectPanel.md index f2b7b689..e4846b87 100644 --- a/docs/api/XCEngine/Editor/panels/ProjectPanel/ProjectPanel.md +++ b/docs/api/XCEngine/Editor/panels/ProjectPanel/ProjectPanel.md @@ -6,36 +6,121 @@ **源文件**: `editor/src/panels/ProjectPanel.h` -**描述**: 项目面板,负责展示当前资产目录、面包屑导航、搜索、资产瓦片交互以及文件夹创建与上下文菜单。 +**描述**: 编辑器项目资源浏览面板,负责目录树、面包屑、搜索框、资源卡片和拖放交互的前端呈现。 ## 概述 -`ProjectPanel` 当前是 [ProjectManager](../../Managers/ProjectManager/ProjectManager.md) 的主要 UI 前端。 +`ProjectPanel` 是当前 Editor 中最接近“资源浏览器”的面板。它本身不维护项目资源数据库,而是把 `IProjectManager` 暴露的数据模型转成一个典型的双栏浏览界面: -它负责: +- 左侧是目录树导航。 +- 右侧是当前目录的资源浏览区。 +- 顶部是搜索框与面包屑。 -- 初始化项目浏览器 -- 绘制工具栏与面包屑 -- 绘制资产网格 -- 搜索过滤 -- 资产点击、打开、拖放和右键菜单 -- 空白区域上下文菜单 -- 新建文件夹弹窗 +如果和 Unity 对照,可以把它理解成一个更轻量、当前聚焦于基础浏览和拖放的 Project Browser。 -## 当前实现说明 +## 当前实现行为 -- `Initialize(projectPath)` 直接调用 `m_context->GetProjectManager().Initialize(projectPath)`。 -- `Render()` 中资产会按自适应列数排成网格。 -- 搜索当前按名字子串过滤。 -- 资产图标当前按 `isFolder` 区分 folder/file,再配合 action/router 决定交互。 +按 `editor/src/panels/ProjectPanel.cpp` 的实现: -## 当前实现边界 +- `Initialize(projectPath)` 直接委托给 `m_context->GetProjectManager().Initialize(projectPath)`。 +- `Render()` 会: + - 建立标准 `PanelWindowScope`。 + - 把焦点动作路由标记为 `EditorActionRoute::Project`。 + - 先渲染 toolbar。 + - 再创建左右分栏内容区。 + - 使用 `UI::DrawSplitter(...)` 支持调整左侧导航栏宽度。 + - 收尾时绘制“新建文件夹”对话框。 -- 当前搜索是前端过滤,不是索引搜索。 -- 资产预览目前还是轻量瓦片,不是完整导入数据库浏览器。 +当前导航栏宽度会被显式夹紧在一个合理范围内: + +- 最小值来自 `ProjectNavigationMinWidth()` +- 右侧浏览区最小宽度来自 `ProjectBrowserMinWidth()` + +这说明当前实现已经从一开始就按“可调整工作区”的编辑器思路组织,而不是固定死尺寸。 + +## 左侧目录树 + +左侧目录树是当前 `ProjectPanel` 最典型的共享 UI 基建使用者之一: + +- 根节点来自 `IProjectManager::GetRootFolder()`。 +- 当前目录来自 `IProjectManager::GetCurrentFolder()`。 +- 每个目录节点都通过 `UI::DrawTreeNode(...)` 绘制。 +- 节点样式使用 `UI::ProjectFolderTreeStyle()`。 +- 节点前缀使用 `UI::DrawAssetIcon(..., AssetIconKind::Folder)`。 +- `defaultOpen` 会根据 `IsCurrentTreeBranch(...)` 判断当前目录是否位于该目录分支下。 +- 展开状态保存在 `m_folderTreeState` 中。 + +用户单击树节点时,会立即调用 `manager.NavigateToFolder(folder)` 完成导航;右键则通过 `Actions::HandleProjectItemContextRequest(...)` 打开对应上下文菜单。 + +## 右侧浏览区 + +右侧浏览区分成两层: + +- Header:显示面包屑导航,并在底部画一条 divider。 +- Body:以资源网格形式显示当前目录下通过搜索过滤后的条目。 + +资源卡片当前通过 `UI::DrawAssetTile(...)` 绘制,并根据 `item->isFolder` 区分: + +- `Folder` 图标 +- `File` 图标 + +交互结果统一收集到 `AssetItemInteraction` 中,再在循环结束后统一处理。这种写法有一个很实用的好处:可以避免在绘制过程中直接修改当前迭代容器或导航状态,让即时模式 UI 代码更稳定。 + +## 搜索与导航 + +当前搜索实现比较明确,也需要在文档里写清楚: + +- 搜索框位于 toolbar 右侧。 +- 搜索只对 `manager.GetCurrentItems()` 返回的当前目录条目生效。 +- 匹配逻辑是大小写不敏感的子串匹配。 +- 当前没有全文索引、标签过滤或类型过滤。 + +面包屑则通过 `UI::DrawToolbarBreadcrumbs(...)` 实现,点击非当前段会调用 `manager.NavigateToIndex(index)`。 + +## 拖放与上下文菜单 + +当前 `ProjectPanel` 并不自己实现拖放协议和命令执行,而是按职责分层调用其他模块: + +- `Actions::BeginProjectAssetDrag(item, iconKind)` 负责发起拖拽源。 +- `Actions::AcceptProjectAssetDropPayload(item)` 负责检测是否有资源被拖到当前目标上。 +- 若确实发生移动,则调用 `Commands::MoveAssetToFolder(...)`。 +- 右键菜单与空白区域菜单由 `Actions::*ContextPopup(...)` 系列 helper 负责绘制。 + +这种组织方式和 `HierarchyPanel` 一样,遵循的是“面板负责展示与采样,动作层 / 命令层负责实际编辑行为”的编辑器架构。 + +## 生命周期与线程语义 + +- 面板本身持有的是 UI 状态:搜索文本、导航栏宽度、目录树展开状态、弹窗状态。 +- 真实项目数据由 `IProjectManager` 持有。 +- 整套逻辑应视为编辑器 UI 主线程代码。 + +## 设计说明 + +当前 `ProjectPanel` 的设计方向是合理的,因为它先把“资源浏览器”拆成几个稳定的基础体验单元: + +- 分栏布局 +- 目录树 +- 面包屑 +- 资源网格 +- 拖放与上下文菜单 + +这样做的好处是,后续无论是加缩略图、资源导入器状态、筛选器还是收藏夹,都可以在现有骨架上演进,而不是推倒重来。 + +## 当前限制 + +- 搜索只在当前目录里做前端子串过滤,不是全项目索引搜索。 +- 当前没有资源缩略图生成或异步预览系统,图标仍以 `BuiltInIcons` 和简单卡片为主。 +- 文件树展开状态只保存在内存中,不会自动跨重启恢复。 +- 拖放移动是直接命令式处理,没有更复杂的批处理或事务预览。 ## 相关文档 - [panels](../panels.md) +- [IProjectManager](../../Core/IProjectManager/IProjectManager.md) - [ProjectManager](../../Managers/ProjectManager/ProjectManager.md) - [AssetItem](../../Core/AssetItem/AssetItem.md) +- [ProjectActionRouter](../../Actions/ProjectActionRouter/ProjectActionRouter.md) +- [ProjectCommands](../../Commands/ProjectCommands/ProjectCommands.md) +- [TreeView](../../UI/TreeView/TreeView.md) +- [BuiltInIcons](../../UI/BuiltInIcons/BuiltInIcons.md) +- [SplitterChrome](../../UI/SplitterChrome/SplitterChrome.md) diff --git a/docs/api/XCEngine/RHI/RHI.md b/docs/api/XCEngine/RHI/RHI.md index a43c6f1d..2c4e9365 100644 --- a/docs/api/XCEngine/RHI/RHI.md +++ b/docs/api/XCEngine/RHI/RHI.md @@ -4,43 +4,125 @@ **类型**: `module` -**描述**: 渲染硬件抽象层及其后端。 +**描述**: 提供渲染硬件抽象层、后端选择入口、资源与命令提交接口,以及跨后端共享的描述符和枚举定义。 ## 概览 -该目录与 `XCEngine/RHI` 对应的 public headers 保持平行,用于承载唯一的 canonical API 文档入口。 +`XCEngine::RHI` 是当前引擎渲染栈里最靠近图形 API 的一层。它的职责不是提供高层渲染功能,而是把 D3D12、OpenGL 等后端收敛到一组共同接口之下: -## 子目录 +- [RHIFactory](RHIFactory/RHIFactory.md) 负责选择并创建具体后端设备。 +- [RHIDevice](RHIDevice/RHIDevice.md) 是核心抽象入口,承担“设备对象 + 资源工厂”的双重职责。 +- [RHICommandQueue](RHICommandQueue/RHICommandQueue.md) 和 [RHICommandList](RHICommandList/RHICommandList.md) 负责提交与记录 GPU 工作。 +- [RHITypes](RHITypes/RHITypes.md) 和 [RHIEnums](RHIEnums/RHIEnums.md) 定义跨后端共享的描述符语言。 -- [D3D12](D3D12/D3D12.md) -- [OpenGL](OpenGL/OpenGL.md) +如果拿商用引擎做类比,这层更接近 Unreal 风格的低层 RHI / render backend,而不是 Unity 面向 gameplay 的公共渲染 API。Unity 普通业务层一般不会直接碰设备、命令队列、资源视图;而 XCEngine 当前把这些对象直接暴露给引擎上层、测试和后端验证代码,用来支撑渲染系统构建、后端 bring-up 和图形测试。 -## 头文件 +## 当前架构理解 -- [RHIBuffer](RHIBuffer/RHIBuffer.md) - `RHIBuffer.h` -- [RHICapabilities](RHICapabilities/RHICapabilities.md) - `RHICapabilities.h` -- [RHICommandList](RHICommandList/RHICommandList.md) - `RHICommandList.h` -- [RHICommandQueue](RHICommandQueue/RHICommandQueue.md) - `RHICommandQueue.h` -- [RHIDescriptorPool](RHIDescriptorPool/RHIDescriptorPool.md) - `RHIDescriptorPool.h` -- [RHIDescriptorSet](RHIDescriptorSet/RHIDescriptorSet.md) - `RHIDescriptorSet.h` -- [RHIDevice](RHIDevice/RHIDevice.md) - `RHIDevice.h` -- [RHIEnums](RHIEnums/RHIEnums.md) - `RHIEnums.h` -- [RHIFactory](RHIFactory/RHIFactory.md) - `RHIFactory.h` -- [RHIFence](RHIFence/RHIFence.md) - `RHIFence.h` -- [RHIFramebuffer](RHIFramebuffer/RHIFramebuffer.md) - `RHIFramebuffer.h` -- [RHIPipelineLayout](RHIPipelineLayout/RHIPipelineLayout.md) - `RHIPipelineLayout.h` -- [RHIPipelineState](RHIPipelineState/RHIPipelineState.md) - `RHIPipelineState.h` -- [RHIRenderPass](RHIRenderPass/RHIRenderPass.md) - `RHIRenderPass.h` -- [RHIResource](RHIResource/RHIResource.md) - `RHIResource.h` -- [RHIResourceView](RHIResourceView/RHIResourceView.md) - `RHIResourceView.h` -- [RHISampler](RHISampler/RHISampler.md) - `RHISampler.h` -- [RHIScreenshot](RHIScreenshot/RHIScreenshot.md) - `RHIScreenshot.h` -- [RHIShader](RHIShader/RHIShader.md) - `RHIShader.h` -- [RHISwapChain](RHISwapChain/RHISwapChain.md) - `RHISwapChain.h` -- [RHITexture](RHITexture/RHITexture.md) - `RHITexture.h` -- [RHITypes](RHITypes/RHITypes.md) - `RHITypes.h` +当前源码呈现出的主链路大致是: + +1. 通过 [RHIFactory](RHIFactory/RHIFactory.md) 选择后端。 +2. 通过 [RHIDevice](RHIDevice/RHIDevice.md) 初始化设备并查询 [RHICapabilities](RHICapabilities/RHICapabilities.md)。 +3. 用 `RHIDevice` 创建队列、命令列表、buffer、texture、render pass、pipeline state、descriptor pool / set 等对象。 +4. 在 [RHICommandList](RHICommandList/RHICommandList.md) 上录制状态设置、clear、copy、draw、dispatch。 +5. 通过 [RHICommandQueue](RHICommandQueue/RHICommandQueue.md) 提交并用 [RHIFence](RHIFence/RHIFence.md) 同步。 + +这套设计的好处是: + +- 对接新后端时,上层接口面比较稳定。 +- 单元测试和集成测试可以直接验证抽象层行为。 +- 渲染模块可以在这一层之上继续搭更高层的 renderer、frame graph 或材质系统。 + +代价也很明确: + +- 接口比较显式,样板代码多。 +- 抽象层并不完全“纯净”,仍能看到 D3D12 / OpenGL 风格痕迹。 +- 当前版本大量对象仍采用裸指针所有权,文档必须把生命周期约束写清楚。 + +## 后端可用性 + +按当前源码而不是设计愿景来看,`RHIFactory` 的真实后端可用性是: + +- `D3D12`: 当前工厂始终可创建,是默认最完整的桌面后端之一。 +- `OpenGL`: 仅在编译时定义 `XCENGINE_SUPPORT_OPENGL` 时可创建。 +- `Vulkan`: 仅在编译时定义 `XCENGINE_SUPPORT_VULKAN` 时可创建。 +- `Metal`: `RHIType` 中已有枚举项,但当前工厂直接返回 `nullptr`。 + +这说明 `RHIType` 代表的是“抽象层计划支持的后端集合”,不等于“当前构建一定可用的后端集合”。 + +## 所有权与生命周期 + +这是 `RHI` 模块里最重要的使用约定之一。 + +当前抽象层大量 API 都返回裸指针,包括: + +- `RHIFactory::CreateRHIDevice()` +- `RHIDevice::CreateBuffer()` / `CreateTexture()` / `CreateCommandList()` / `CreateCommandQueue()` 等 +- descriptor pool、descriptor set、render pass、framebuffer、sampler、fence、resource view 等 + +按当前测试和调用模式,推荐把它们理解为: + +1. 由创建者拥有返回对象。 +2. 使用结束前先调用对象自己的 `Shutdown()`。 +3. 然后再 `delete`。 + +也就是说,这一层目前不是 `Core::Ref` / RAII 优先的风格,而是更接近底层图形资源包装常见的“显式关闭 + 显式释放”模式。 + +## 设计现实与实现边界 + +当前 `RHI` 抽象层已经能表达核心 GPU 对象,但它还不是一个完全收敛的、无后端泄漏的终态接口: + +- [RHITypes](RHITypes/RHITypes.md) 里既有通用描述符,也有明显偏 D3D12 的结构名,例如 `RootSignatureDesc`、`DescriptorHeapDesc`、`CommandAllocatorDesc`。 +- [RHICommandList](RHICommandList/RHICommandList.md) 同时暴露了 render pass、render target、descriptor set、copy、draw、dispatch 等多种路径,混合了不同代际的抽象思路。 +- [RHICommandQueue](RHICommandQueue/RHICommandQueue.md) 的 `ExecuteCommandLists()` 采用 `void**`,说明抽象层仍带有一定后端适配痕迹。 +- `Metal` 仍是占位,`Vulkan` 目录也还在逐步补全文档。 + +这并不意味着设计错误。对一个正在演进的商业级引擎来说,更现实的路径通常就是先把“能支撑后端实现和测试”的抽象做出来,再逐步收敛接口一致性。 + +## 后端目录 + +- [D3D12](D3D12/D3D12.md) - Direct3D 12 后端实现。 +- [OpenGL](OpenGL/OpenGL.md) - OpenGL 后端实现。 +- `Vulkan` - 头文件目录已存在,当前 canonical 文档仍在补建中。 + +## 顶层头文件 + +- [RHIBuffer](RHIBuffer/RHIBuffer.md) - `RHIBuffer.h`,buffer 抽象资源接口。 +- [RHICapabilities](RHICapabilities/RHICapabilities.md) - `RHICapabilities.h`,设备能力与限制信息。 +- [RHICommandList](RHICommandList/RHICommandList.md) - `RHICommandList.h`,命令录制接口。 +- [RHICommandQueue](RHICommandQueue/RHICommandQueue.md) - `RHICommandQueue.h`,命令提交与同步接口。 +- [RHIDescriptorPool](RHIDescriptorPool/RHIDescriptorPool.md) - `RHIDescriptorPool.h`,descriptor set 分配池。 +- [RHIDescriptorSet](RHIDescriptorSet/RHIDescriptorSet.md) - `RHIDescriptorSet.h`,资源绑定集合。 +- [RHIDevice](RHIDevice/RHIDevice.md) - `RHIDevice.h`,抽象设备与对象工厂。 +- [RHIEnums](RHIEnums/RHIEnums.md) - `RHIEnums.h`,跨后端共享枚举。 +- [RHIFactory](RHIFactory/RHIFactory.md) - `RHIFactory.h`,后端选择入口。 +- [RHIFence](RHIFence/RHIFence.md) - `RHIFence.h`,GPU 同步原语。 +- [RHIFramebuffer](RHIFramebuffer/RHIFramebuffer.md) - `RHIFramebuffer.h`,帧缓冲对象。 +- [RHIPipelineLayout](RHIPipelineLayout/RHIPipelineLayout.md) - `RHIPipelineLayout.h`,资源绑定布局。 +- [RHIPipelineState](RHIPipelineState/RHIPipelineState.md) - `RHIPipelineState.h`,图形/计算管线状态。 +- [RHIRenderPass](RHIRenderPass/RHIRenderPass.md) - `RHIRenderPass.h`,render pass 描述与句柄。 +- [RHIResource](RHIResource/RHIResource.md) - `RHIResource.h`,资源基类接口。 +- [RHIResourceView](RHIResourceView/RHIResourceView.md) - `RHIResourceView.h`,资源视图接口。 +- [RHISampler](RHISampler/RHISampler.md) - `RHISampler.h`,采样器对象。 +- [RHIScreenshot](RHIScreenshot/RHIScreenshot.md) - `RHIScreenshot.h`,截图接口。 +- [RHIShader](RHIShader/RHIShader.md) - `RHIShader.h`,shader 抽象。 +- [RHISwapChain](RHISwapChain/RHISwapChain.md) - `RHISwapChain.h`,窗口展示交换链。 +- [RHITexture](RHITexture/RHITexture.md) - `RHITexture.h`,texture 抽象资源接口。 +- [RHITypes](RHITypes/RHITypes.md) - `RHITypes.h`,共享描述符与辅助结构。 + +## 推荐阅读顺序 + +1. 先读 [Devices, Queues, Command Lists, And Resource Creation](../../_guides/RHI/Devices-Queues-CommandLists-And-Resource-Creation.md),建立正确心智模型。 +2. 再读 [RHIFactory](RHIFactory/RHIFactory.md) 和 [RHIDevice](RHIDevice/RHIDevice.md),理解后端选择和对象创建。 +3. 然后读 [RHICommandQueue](RHICommandQueue/RHICommandQueue.md) 与 [RHICommandList](RHICommandList/RHICommandList.md),理解录制与提交。 +4. 最后再查 [RHITypes](RHITypes/RHITypes.md)、[RHIEnums](RHIEnums/RHIEnums.md)、[RHICapabilities](RHICapabilities/RHICapabilities.md) 这些通用支持页。 + +## 相关指南 + +- [Devices, Queues, Command Lists, And Resource Creation](../../_guides/RHI/Devices-Queues-CommandLists-And-Resource-Creation.md) - 解释当前 RHI 的真实使用路径、生命周期约束以及和 Unity / 商用引擎常见设计的对应关系。 ## 相关文档 - [上级目录](../XCEngine.md) +- [Rendering](../Rendering/Rendering.md) - [API 总索引](../../main.md) diff --git a/docs/api/XCEngine/RHI/RHIBuffer/RHIBuffer.md b/docs/api/XCEngine/RHI/RHIBuffer/RHIBuffer.md index 8dc2c141..edc3d16b 100644 --- a/docs/api/XCEngine/RHI/RHIBuffer/RHIBuffer.md +++ b/docs/api/XCEngine/RHI/RHIBuffer/RHIBuffer.md @@ -6,39 +6,132 @@ **头文件**: `XCEngine/RHI/RHIBuffer.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHIBuffer` public API。 +**描述**: 抽象 buffer 资源接口,负责 CPU 写入、尺寸与 stride 查询、资源状态记录以及调试命名。 -## 概述 +## 角色概述 -`RHIBuffer.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHIBuffer` 是 [RHIResource](../RHIResource/RHIResource.md) 的具体资源类型之一,用来承载: -## 声明概览 +- vertex buffer +- index buffer +- constant buffer +- readback buffer +- 间接参数或其他 buffer 形态 -| 声明 | 类型 | 说明 | -|------|------|------| -| `RHIBuffer` | `class` | 继承自 `RHIResource` 的公开声明。 | +当前 buffer 的“用途种类”主要由 `BufferType` 表达,而不是靠不同类名再拆成一堆具体 buffer 类型。 -## 公共方法 +## 创建方式 -| 方法 | 描述 | -|------|------| -| [~RHIBuffer()](Destructor.md) | 销毁对象并释放相关资源。 | -| [Map](Map.md) | 公开方法,详见头文件声明。 | -| [Unmap](Unmap.md) | 公开方法,详见头文件声明。 | -| [SetData](SetData.md) | 设置相关状态或配置。 | -| [GetSize](GetSize.md) | 获取相关状态或对象。 | -| [GetBufferType](GetBufferType.md) | 获取相关状态或对象。 | -| [SetBufferType](SetBufferType.md) | 设置相关状态或配置。 | -| [GetStride](GetStride.md) | 获取相关状态或对象。 | -| [SetStride](SetStride.md) | 设置相关状态或配置。 | -| [GetNativeHandle](GetNativeHandle.md) | 获取相关状态或对象。 | -| [GetState](GetState.md) | 获取相关状态或对象。 | -| [SetState](SetState.md) | 设置相关状态或配置。 | -| [GetName](GetName.md) | 获取相关状态或对象。 | -| [SetName](SetName.md) | 设置相关状态或配置。 | -| [Shutdown](Shutdown.md) | 关闭并清理内部状态。 | +`RHIBuffer` 本身不是直接构造的,通常由 [RHIDevice](../RHIDevice/RHIDevice.md) 通过 [CreateBuffer](../RHIDevice/CreateBuffer.md) 创建,输入参数来自 [RHITypes](../RHITypes/RHITypes.md) 中的 `BufferDesc`: + +- `size` +- `stride` +- `bufferType` +- `flags` + +## 当前接口分组 + +### CPU 访问 + +- [Map](Map.md) +- [Unmap](Unmap.md) +- [SetData](SetData.md) + +这是当前 buffer 抽象里最值得注意的一组接口。它说明当前 `RHI` 不是把 buffer 完全当成“只能由 copy/transfer 写入的纯 GPU 资源”,而是允许上层直接进行 CPU 写入。 + +### 元数据 + +- [GetSize](GetSize.md) +- [GetBufferType](GetBufferType.md) +- [SetBufferType](SetBufferType.md) +- [GetStride](GetStride.md) +- [SetStride](SetStride.md) +- [GetName](GetName.md) +- [SetName](SetName.md) + +### 资源基类能力 + +- [GetNativeHandle](GetNativeHandle.md) +- [GetState](GetState.md) +- [SetState](SetState.md) +- [Shutdown](Shutdown.md) + +## `Map()` / `SetData()` 应该怎么理解 + +从当前 D3D12 / OpenGL / Vulkan 实现来看,`Map()` 都是直接返回后端可写入的 CPU 指针: + +- D3D12 映射底层 `ID3D12Resource` +- OpenGL 使用 `glMapBuffer` +- Vulkan 映射底层 `VkDeviceMemory` + +这意味着 `Map()` 在当前代码库里是真实可用能力,而不是占位接口。 + +但仍然要注意两点: + +### 1. 抽象接口没有显式暴露内存访问策略 + +`RHIBuffer` 自己没有告诉你它位于 upload heap、device local 还是别的内存类型。具体策略由后端在 `CreateBuffer()` 时根据 `BufferType` 决定。 + +例如当前源码里: + +- D3D12 对 `Constant` / `Vertex` / `Index` 倾向于使用 `UPLOAD` heap +- Vulkan 当前 `CreateBuffer()` 走的是 host-visible / host-coherent 内存 + +所以文档不能把它说成“所有 buffer 都适合任意频率 CPU 映射”,只能说当前常见路径支持映射和写入。 + +### 2. `Map()` 返回的指针应视为临时访问窗口 + +最安全的做法仍然是: + +1. `Map()` +2. 写入数据 +3. `Unmap()` + +而不是长期持有裸指针跨帧使用。 + +## 测试体现出的真实语义 + +`tests/RHI/unit/test_buffer.cpp` 已经覆盖了这些行为: + +- `Map()` / `Unmap()` 可用 +- `SetData()` 可写入整块数据 +- `GetSize()`、`GetStride()` 返回创建时的元数据 +- `GetBufferType()` / `SetBufferType()` 可读写类型标记 +- `GetState()` / `SetState()` 支持资源状态跟踪 +- `SetName()` / `GetName()` 支持调试命名 +- `GetNativeHandle()` 创建成功后通常非空 + +同时,command list 与集成测试也在真实使用 buffer: + +- 创建 vertex / index buffer +- 调用 `SetData()` +- 再通过 [RHIResourceView](../RHIResourceView/RHIResourceView.md) 绑定到 draw path + +## 当前设计理解 + +把 buffer 统一放进同一个接口,有几个工程上的好处: + +- 渲染系统可以用一套创建入口处理大多数线性 GPU 数据 +- 后端可以自行决定底层内存策略 +- 测试更容易覆盖共同行为 + +代价是抽象层不会自动告诉你“这个 buffer 最适合做什么”,调用方仍然需要结合 `BufferType` 和使用场景自己判断。 + +## 生命周期 + +`RHIBuffer` 由 [RHIDevice](../RHIDevice/RHIDevice.md) 创建,并以裸指针返回。当前推荐流程是: + +1. 创建 buffer +2. 可选地 `Map()` / `SetData()` +3. 通过 view 或其他路径参与渲染 +4. 调用 [Shutdown](Shutdown.md) +5. `delete` ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHIResource](../RHIResource/RHIResource.md) +- [RHIResourceView](../RHIResourceView/RHIResourceView.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [RHICommandList](../RHICommandList/RHICommandList.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHICapabilities/RHICapabilities.md b/docs/api/XCEngine/RHI/RHICapabilities/RHICapabilities.md index 9ccad72e..79ff1780 100644 --- a/docs/api/XCEngine/RHI/RHICapabilities/RHICapabilities.md +++ b/docs/api/XCEngine/RHI/RHICapabilities/RHICapabilities.md @@ -6,56 +6,117 @@ **头文件**: `XCEngine/RHI/RHICapabilities.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHICapabilities` public API。 +**描述**: 描述当前设备支持的功能开关、资源上限、光栅限制和版本信息,是 renderer 初始化阶段的主要特性查询入口。 -## 概述 +## 角色概述 -`RHICapabilities.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHICapabilities` 是 [RHIDevice](../RHIDevice/RHIDevice.md) 暴露给上层的能力快照。它的定位很明确: -## 声明概览 +- 在 renderer 启动时决定某条渲染路径是否可用 +- 给资源系统提供尺寸和数量上限 +- 为调试与日志输出提供设备能力摘要 -| 声明 | 类型 | 说明 | -|------|------|------| -| `RHICapabilities` | `struct` | 头文件中的公开声明。 | +这类结构在商业引擎里很常见,因为高层 renderer 往往需要先读一遍“当前设备能不能做某件事”,再决定启用哪些 feature set。 -## 结构体成员 +## 字段分组 -| 成员 | 类型 | 描述 | 默认值 | -|------|------|------|--------| -| `bSupportsRayTracing` | `bool` | 结构体公开字段。 | `false` | -| `bSupportsMeshShaders` | `bool` | 结构体公开字段。 | `false` | -| `bSupportsExplicitMultiThreading` | `bool` | 结构体公开字段。 | `false` | -| `bSupportsGeometryShaders` | `bool` | 结构体公开字段。 | `false` | -| `bSupportsTessellation` | `bool` | 结构体公开字段。 | `false` | -| `bSupportsComputeShaders` | `bool` | 结构体公开字段。 | `false` | -| `bSupportsDepthBoundsTest` | `bool` | 结构体公开字段。 | `false` | -| `bSupportsAlphaToCoverage` | `bool` | 结构体公开字段。 | `false` | -| `bSupportsIndependentBlend` | `bool` | 结构体公开字段。 | `false` | -| `bSupportsLogicOps` | `bool` | 结构体公开字段。 | `false` | -| `bSupportsMultiViewport` | `bool` | 结构体公开字段。 | `false` | -| `bSupportsConservativeRasterization` | `bool` | 结构体公开字段。 | `false` | -| `bSupportsProgrammableSamplePositions` | `bool` | 结构体公开字段。 | `false` | -| `maxTexture2DSize` | `uint32_t` | 结构体公开字段。 | `0` | -| `maxTexture3DSize` | `uint32_t` | 结构体公开字段。 | `0` | -| `maxTextureCubeSize` | `uint32_t` | 结构体公开字段。 | `0` | -| `maxRenderTargets` | `uint32_t` | 结构体公开字段。 | `0` | -| `maxViewports` | `uint32_t` | 结构体公开字段。 | `0` | -| `maxVertexAttribs` | `uint32_t` | 结构体公开字段。 | `0` | -| `maxConstantBufferSize` | `uint32_t` | 结构体公开字段。 | `0` | -| `maxAnisotropy` | `uint32_t` | 结构体公开字段。 | `0` | -| `maxColorAttachments` | `uint32_t` | 结构体公开字段。 | `0` | -| `minSmoothedLineWidth` | `float` | 结构体公开字段。 | `1.0f` | -| `maxSmoothedLineWidth` | `float` | 结构体公开字段。 | `1.0f` | -| `minPointSize` | `float` | 结构体公开字段。 | `1.0f` | -| `maxPointSize` | `float` | 结构体公开字段。 | `1.0f` | -| `maxPointSizeAA` | `float` | 结构体公开字段。 | `1.0f` | -| `maxLineWidth` | `float` | 结构体公开字段。 | `1.0f` | -| `maxLineWidthAA` | `float` | 结构体公开字段。 | `1.0f` | -| `majorVersion` | `int` | 结构体公开字段。 | `0` | -| `minorVersion` | `int` | 结构体公开字段。 | `0` | -| `shaderModel` | `std::string` | 结构体公开字段。 | - | +### 功能开关 + +- `bSupportsRayTracing` +- `bSupportsMeshShaders` +- `bSupportsExplicitMultiThreading` +- `bSupportsGeometryShaders` +- `bSupportsTessellation` +- `bSupportsComputeShaders` +- `bSupportsDepthBoundsTest` +- `bSupportsAlphaToCoverage` +- `bSupportsIndependentBlend` +- `bSupportsLogicOps` +- `bSupportsMultiViewport` +- `bSupportsConservativeRasterization` +- `bSupportsProgrammableSamplePositions` + +### 资源与渲染上限 + +- `maxTexture2DSize` +- `maxTexture3DSize` +- `maxTextureCubeSize` +- `maxRenderTargets` +- `maxViewports` +- `maxVertexAttribs` +- `maxConstantBufferSize` +- `maxAnisotropy` +- `maxColorAttachments` + +### 线宽、点大小相关限制 + +- `minSmoothedLineWidth` +- `maxSmoothedLineWidth` +- `minPointSize` +- `maxPointSize` +- `maxPointSizeAA` +- `maxLineWidth` +- `maxLineWidthAA` + +### 版本与 shader 模型 + +- `majorVersion` +- `minorVersion` +- `shaderModel` + +## 当前实现语义 + +这是一个纯 public struct,带默认值,没有 getter / setter,也没有更复杂的 feature query 层级。也就是说: + +- 默认构造时,布尔项基本都是 `false` +- 数值项基本是 `0` 或 `1.0f` +- 真正的能力数据由具体后端设备在初始化时填充 + +这种设计非常直接,适合当前阶段的引擎实现,但也意味着它不是那种高度抽象、可按扩展名逐项查询的 capability database。 + +## 测试揭示出的保证边界 + +`tests/RHI/unit/test_capabilities.cpp` 很适合拿来理解“这份结构当前到底保证到什么程度”。 + +现有测试主要验证的是: + +- 常见纹理尺寸、render target 数量、viewport 数量等至少大于某些下限 +- `majorVersion` / `minorVersion` 非负 +- D3D12 下 `shaderModel` 非空 +- 各项 line width / point size 数据不小于基础值 +- `maxConstantBufferSize` 在一个合理范围内 + +这说明当前 `RHICapabilities` 更像“运行时可用的设备特征摘要”,而不是一份经过严格标准化校验的完整硬件契约。 + +## 怎么正确使用 + +推荐把它用于: + +- 启动时 feature gating +- 选择 render path +- 做日志输出和诊断 +- 对资源尺寸做防御性检查 + +不建议把它当成: + +- 跨平台精确一致的能力数据库 +- 替代后端专用 feature query 的唯一信息源 +- 细粒度扩展发现系统 + +## 和商用引擎能力系统的关系 + +很多成熟引擎会把能力系统做得更分层,例如把 adapter info、feature support、format support、optional extensions 分开表示。当前 `RHICapabilities` 还没有走到那一步,它更像一个实用的第一层设备能力快照。 + +这对当前阶段反而是合理的: + +- renderer 能快速消费 +- 文档和测试更容易保持一致 +- 后续如果要拆分也有基础数据模型可演进 ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [RHITypes](../RHITypes/RHITypes.md) +- [Devices, Queues, Command Lists, And Resource Creation](../../../_guides/RHI/Devices-Queues-CommandLists-And-Resource-Creation.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHICommandList/RHICommandList.md b/docs/api/XCEngine/RHI/RHICommandList/RHICommandList.md index c7e22b20..11f60a45 100644 --- a/docs/api/XCEngine/RHI/RHICommandList/RHICommandList.md +++ b/docs/api/XCEngine/RHI/RHICommandList/RHICommandList.md @@ -6,55 +6,167 @@ **头文件**: `XCEngine/RHI/RHICommandList.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHICommandList` public API。 +**描述**: 抽象命令录制接口,负责记录资源状态切换、render pass、绑定状态、draw、dispatch、clear 和 copy 等 GPU 工作。 -## 概述 +## 角色概述 -`RHICommandList.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHICommandList` 是当前抽象层里最直接面向 GPU 录制语义的接口。按原生图形 API 的习惯来理解,它代表一段待提交的命令流,通常由 [RHIDevice](../RHIDevice/RHIDevice.md) 创建、由 [RHICommandQueue](../RHICommandQueue/RHICommandQueue.md) 执行。 -## 声明概览 +和很多理想化的“最小 command buffer 抽象”不同,当前这份接口比较宽: -| 声明 | 类型 | 说明 | -|------|------|------| -| `DepthStencilState` | `struct` | 头文件中的公开声明。 | -| `BlendState` | `struct` | 头文件中的公开声明。 | -| `RHICommandList` | `class` | 头文件中的公开声明。 | +- 既有 draw 也有 dispatch +- 既有 render pass 路径也有直接 `SetRenderTargets()` 路径 +- 既有 `SetPipelineState()`,也保留了 `SetShader()` +- 既覆盖 barrier / clear / copy,也覆盖 descriptor set 绑定 + +这反映出当前抽象层更偏“支撑后端实现和测试的统一录制入口”,而不是已经极致收敛后的最终形态。 + +## 录制生命周期 + +按现有测试的真实使用顺序,最常见流程是: + +1. 创建 `RHICommandList` +2. [Reset](Reset.md) +3. 录制状态、资源绑定和 draw / dispatch +4. [Close](Close.md) +5. 交给 [RHICommandQueue](../RHICommandQueue/RHICommandQueue.md) 提交 +6. 使用结束后 [Shutdown](Shutdown.md) 并 `delete` + +这和 D3D12 / Vulkan 一类显式 API 的工作流是一致的。 + +## 接口分组 + +### 同步与状态切换 + +- [TransitionBarrier](TransitionBarrier.md) + +当前 barrier 接口接收的是 `RHIResourceView*`,而不是 `RHIResource*` 或更细粒度的 barrier 描述结构。这是一种相对简化、也带有当前实现痕迹的抽象选择。 + +### render pass 与附件绑定 + +- [BeginRenderPass](BeginRenderPass.md) +- [EndRenderPass](EndRenderPass.md) +- [SetRenderTargets](SetRenderTargets.md) + +这说明当前接口同时保留了更现代的 render pass 语义和更传统的显式 render target 绑定语义。工程上应尽量在同一条渲染路径里保持一致,不要随意混用。 + +### 管线与 descriptor 绑定 + +- [SetShader](SetShader.md) +- [SetPipelineState](SetPipelineState.md) +- [SetGraphicsDescriptorSets](SetGraphicsDescriptorSets.md) +- [SetComputeDescriptorSets](SetComputeDescriptorSets.md) +- [SetPrimitiveTopology](SetPrimitiveTopology.md) + +这里最值得注意的是 `SetShader()` 和 `SetPipelineState()` 并存,说明当前抽象并不是完全 PSO-only 的模型。 + +### 固定功能状态 + +- [SetViewport](SetViewport.md) +- [SetViewports](SetViewports.md) +- [SetScissorRect](SetScissorRect.md) +- [SetScissorRects](SetScissorRects.md) +- [SetStencilRef](SetStencilRef.md) +- [SetBlendFactor](SetBlendFactor.md) + +### 资源绑定 + +- [SetVertexBuffers](SetVertexBuffers.md) +- [SetIndexBuffer](SetIndexBuffer.md) + +现有测试里,这部分通常会先由 `RHIDevice` 创建 buffer,再创建对应的 resource view,最后绑定到 command list。 + +### 执行命令 + +- [Draw](Draw.md) +- [DrawIndexed](DrawIndexed.md) +- [Dispatch](Dispatch.md) + +### clear、copy 与 native handle + +- [Clear](Clear.md) +- [ClearRenderTarget](ClearRenderTarget.md) +- [ClearDepthStencil](ClearDepthStencil.md) +- [CopyResource](CopyResource.md) +- [GetNativeHandle](GetNativeHandle.md) + +## 头文件中的辅助结构 + +`RHICommandList.h` 里还定义了两个结构: + +- `DepthStencilState` +- `BlendState` + +需要特别说明的是,这两个结构并不是当前主 pipeline 描述路径里最核心的状态结构。当前 `RHIPipelineState` / `GraphicsPipelineDesc` 更主要使用的是 [RHITypes](../RHITypes/RHITypes.md) 中的: + +- `DepthStencilStateDesc` +- `BlendDesc` + +所以这里更合理的理解是:`RHICommandList.h` 里的这两个结构代表了历史遗留或辅助性状态表达,而不是整个抽象层的唯一标准状态类型。 + +## 测试体现出的真实能力 + +`tests/RHI/unit/test_command_list.cpp` 对理解这份接口很重要。当前测试已经覆盖了: + +- `Reset()` / `Close()` +- 拓扑、viewport、scissor 等基础状态设置 +- 真实的 vertex / index buffer view 绑定 +- `ClearRenderTarget()`、`ClearDepthStencil()` +- `TransitionBarrier()`、`CopyResource()` +- `BeginRenderPass()` / `EndRenderPass()` +- OpenGL 后端下的 descriptor set、framebuffer attachment 和 compute 路径验证 + +这说明 `RHICommandList` 不是纸面抽象,而是当前图形测试已经在直接依赖的一层。 + +## 当前设计边界 + +- 没有显式二级命令列表 / bundle / secondary command buffer 抽象。 +- barrier 模型比较简化。 +- shader 绑定模型和 pipeline 绑定模型并存,接口风格还在收敛中。 +- render pass 路径和直接 render target 绑定路径并存。 + +这些边界在演进中的引擎里很常见。文档的职责不是替它美化,而是把这些事实讲清楚,帮助使用者减少误用。 ## 公共方法 -| 方法 | 描述 | -|------|------| -| [~RHICommandList()](Destructor.md) | 销毁对象并释放相关资源。 | -| [Shutdown](Shutdown.md) | 关闭并清理内部状态。 | -| [Reset](Reset.md) | 公开方法,详见头文件声明。 | -| [Close](Close.md) | 公开方法,详见头文件声明。 | -| [TransitionBarrier](TransitionBarrier.md) | 公开方法,详见头文件声明。 | -| [BeginRenderPass](BeginRenderPass.md) | 公开方法,详见头文件声明。 | -| [EndRenderPass](EndRenderPass.md) | 公开方法,详见头文件声明。 | -| [SetShader](SetShader.md) | 设置相关状态或配置。 | -| [SetPipelineState](SetPipelineState.md) | 设置相关状态或配置。 | -| [SetGraphicsDescriptorSets](SetGraphicsDescriptorSets.md) | 设置相关状态或配置。 | -| [SetComputeDescriptorSets](SetComputeDescriptorSets.md) | 设置相关状态或配置。 | -| [SetPrimitiveTopology](SetPrimitiveTopology.md) | 设置相关状态或配置。 | -| [SetViewport](SetViewport.md) | 设置相关状态或配置。 | -| [SetViewports](SetViewports.md) | 设置相关状态或配置。 | -| [SetScissorRect](SetScissorRect.md) | 设置相关状态或配置。 | -| [SetScissorRects](SetScissorRects.md) | 设置相关状态或配置。 | -| [SetRenderTargets](SetRenderTargets.md) | 设置相关状态或配置。 | -| [SetStencilRef](SetStencilRef.md) | 设置相关状态或配置。 | -| [SetBlendFactor](SetBlendFactor.md) | 设置相关状态或配置。 | -| [SetVertexBuffers](SetVertexBuffers.md) | 设置相关状态或配置。 | -| [SetIndexBuffer](SetIndexBuffer.md) | 设置相关状态或配置。 | -| [Draw](Draw.md) | 公开方法,详见头文件声明。 | -| [DrawIndexed](DrawIndexed.md) | 公开方法,详见头文件声明。 | -| [Clear](Clear.md) | 清空内部数据。 | -| [ClearRenderTarget](ClearRenderTarget.md) | 清空内部数据。 | -| [ClearDepthStencil](ClearDepthStencil.md) | 清空内部数据。 | -| [CopyResource](CopyResource.md) | 公开方法,详见头文件声明。 | -| [Dispatch](Dispatch.md) | 公开方法,详见头文件声明。 | -| [GetNativeHandle](GetNativeHandle.md) | 获取相关状态或对象。 | +- [Reset](Reset.md) +- [Close](Close.md) +- [TransitionBarrier](TransitionBarrier.md) +- [BeginRenderPass](BeginRenderPass.md) +- [EndRenderPass](EndRenderPass.md) +- [SetShader](SetShader.md) +- [SetPipelineState](SetPipelineState.md) +- [SetGraphicsDescriptorSets](SetGraphicsDescriptorSets.md) +- [SetComputeDescriptorSets](SetComputeDescriptorSets.md) +- [SetPrimitiveTopology](SetPrimitiveTopology.md) +- [SetViewport](SetViewport.md) +- [SetViewports](SetViewports.md) +- [SetScissorRect](SetScissorRect.md) +- [SetScissorRects](SetScissorRects.md) +- [SetRenderTargets](SetRenderTargets.md) +- [SetStencilRef](SetStencilRef.md) +- [SetBlendFactor](SetBlendFactor.md) +- [SetVertexBuffers](SetVertexBuffers.md) +- [SetIndexBuffer](SetIndexBuffer.md) +- [Draw](Draw.md) +- [DrawIndexed](DrawIndexed.md) +- [Clear](Clear.md) +- [ClearRenderTarget](ClearRenderTarget.md) +- [ClearDepthStencil](ClearDepthStencil.md) +- [CopyResource](CopyResource.md) +- [Dispatch](Dispatch.md) +- [GetNativeHandle](GetNativeHandle.md) + +## 相关指南 + +- [Devices, Queues, Command Lists, And Resource Creation](../../../_guides/RHI/Devices-Queues-CommandLists-And-Resource-Creation.md) ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHICommandQueue](../RHICommandQueue/RHICommandQueue.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [RHIPipelineState](../RHIPipelineState/RHIPipelineState.md) +- [RHIRenderPass](../RHIRenderPass/RHIRenderPass.md) +- [RHITypes](../RHITypes/RHITypes.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHICommandQueue/RHICommandQueue.md b/docs/api/XCEngine/RHI/RHICommandQueue/RHICommandQueue.md index e3182c92..2bcf7cbf 100644 --- a/docs/api/XCEngine/RHI/RHICommandQueue/RHICommandQueue.md +++ b/docs/api/XCEngine/RHI/RHICommandQueue/RHICommandQueue.md @@ -6,36 +6,99 @@ **头文件**: `XCEngine/RHI/RHICommandQueue.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHICommandQueue` public API。 +**描述**: 抽象命令提交队列,负责执行命令列表、管理 GPU 同步以及暴露基础队列信息。 -## 概述 +## 角色概述 -`RHICommandQueue.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHICommandQueue` 对应的是原生图形 API 里的提交队列概念。当前接口主要承担三类职责: -## 声明概览 +- 提交命令列表 +- 和 [RHIFence](../RHIFence/RHIFence.md) 协作完成 GPU 同步 +- 暴露队列类型、帧索引和时间戳频率等队列级信息 -| 声明 | 类型 | 说明 | -|------|------|------| -| `RHICommandQueue` | `class` | 头文件中的公开声明。 | +在抽象层里,它位于 [RHIDevice](../RHIDevice/RHIDevice.md) 和 [RHICommandList](../RHICommandList/RHICommandList.md) 之间,是“录制好的 GPU 工作真正被执行”的入口。 + +## 当前接口语义 + +### 提交 + +- [ExecuteCommandLists](ExecuteCommandLists.md) + +这是队列最核心的方法。但要注意,当前签名是 `ExecuteCommandLists(uint32_t count, void** lists)`,而不是 `RHICommandList**`。这说明抽象层在提交阶段仍保留了一定后端适配痕迹,接口类型安全性不算强。 + +### 同步 + +- [Signal](Signal.md) +- [Wait](Wait.md) +- [GetCompletedValue](GetCompletedValue.md) +- [WaitForIdle](WaitForIdle.md) + +这组接口提供了最基础的 GPU timeline / fence 同步语义。 + +### 队列与帧信息 + +- [GetType](GetType.md) +- [GetTimestampFrequency](GetTimestampFrequency.md) +- [GetNativeHandle](GetNativeHandle.md) +- [WaitForPreviousFrame](WaitForPreviousFrame.md) +- [GetCurrentFrame](GetCurrentFrame.md) + +其中 `WaitForPreviousFrame()` 和 `GetCurrentFrame()` 暗示当前抽象层除了通用队列语义,还兼顾了交换链驱动的 frame-loop 使用场景。 + +## 队列类型 + +队列类型由 [CommandQueueType](../RHIEnums/RHIEnums.md) 表达,当前枚举包括: + +- `Direct` +- `Compute` +- `Copy` + +但从当前测试覆盖和接口成熟度看,最常见、最稳定的仍是 `Direct` 路径。 + +## 生命周期与所有权 + +`RHICommandQueue` 通常由 [RHIDevice](../RHIDevice/RHIDevice.md) 创建,并以裸指针形式返回。和本模块其他对象一样,推荐使用模式是: + +1. `RHIDevice::CreateCommandQueue()` +2. 使用队列提交命令或等待同步 +3. `queue->Shutdown()` +4. `delete queue` + +## 设计理解 + +从商业引擎实践看,把 queue 抽象单独暴露出来是合理的: + +- 它让 renderer 可以明确区分“录制命令”和“提交命令”。 +- 它为多队列或异步计算扩展保留了接口形状。 +- 它便于测试在设备层之上直接验证提交和同步行为。 + +但当前实现仍然比较早期: + +- 提交接口还不够类型安全。 +- 队列抽象还没有扩展到更复杂的 submission batch、timeline semaphore 或跨队列调度模型。 +- `WaitForPreviousFrame()` 这类接口说明它同时背负了一些具体 frame-loop 约定,而不是完全最小化的 queue 抽象。 ## 公共方法 -| 方法 | 描述 | -|------|------| -| [~RHICommandQueue()](Destructor.md) | 销毁对象并释放相关资源。 | -| [Shutdown](Shutdown.md) | 关闭并清理内部状态。 | -| [ExecuteCommandLists](ExecuteCommandLists.md) | 公开方法,详见头文件声明。 | -| [Signal](Signal.md) | 公开方法,详见头文件声明。 | -| [Wait](Wait.md) | 公开方法,详见头文件声明。 | -| [GetCompletedValue](GetCompletedValue.md) | 获取相关状态或对象。 | -| [WaitForIdle](WaitForIdle.md) | 公开方法,详见头文件声明。 | -| [GetType](GetType.md) | 获取相关状态或对象。 | -| [GetTimestampFrequency](GetTimestampFrequency.md) | 获取相关状态或对象。 | -| [GetNativeHandle](GetNativeHandle.md) | 获取相关状态或对象。 | -| [WaitForPreviousFrame](WaitForPreviousFrame.md) | 公开方法,详见头文件声明。 | -| [GetCurrentFrame](GetCurrentFrame.md) | 获取相关状态或对象。 | +- [ExecuteCommandLists](ExecuteCommandLists.md) +- [Signal](Signal.md) +- [Wait](Wait.md) +- [GetCompletedValue](GetCompletedValue.md) +- [WaitForIdle](WaitForIdle.md) +- [GetType](GetType.md) +- [GetTimestampFrequency](GetTimestampFrequency.md) +- [GetNativeHandle](GetNativeHandle.md) +- [WaitForPreviousFrame](WaitForPreviousFrame.md) +- [GetCurrentFrame](GetCurrentFrame.md) + +## 相关指南 + +- [Devices, Queues, Command Lists, And Resource Creation](../../../_guides/RHI/Devices-Queues-CommandLists-And-Resource-Creation.md) ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [RHICommandList](../RHICommandList/RHICommandList.md) +- [RHIFence](../RHIFence/RHIFence.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHIDescriptorPool/RHIDescriptorPool.md b/docs/api/XCEngine/RHI/RHIDescriptorPool/RHIDescriptorPool.md index 690c5f9b..32d6ad7d 100644 --- a/docs/api/XCEngine/RHI/RHIDescriptorPool/RHIDescriptorPool.md +++ b/docs/api/XCEngine/RHI/RHIDescriptorPool/RHIDescriptorPool.md @@ -6,32 +6,107 @@ **头文件**: `XCEngine/RHI/RHIDescriptorPool.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHIDescriptorPool` public API。 +**描述**: descriptor set 分配池,负责按指定 heap 类型和容量创建、回收 `RHIDescriptorSet`。 -## 概述 +## 角色概述 -`RHIDescriptorPool.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHIDescriptorPool` 是当前资源绑定系统里的分配器入口。它的抽象目标比较清晰: -## 声明概览 +- 上层先定义 descriptor pool 的类型和容量 +- 再从 pool 中分配一个或多个 [RHIDescriptorSet](../RHIDescriptorSet/RHIDescriptorSet.md) -| 声明 | 类型 | 说明 | -|------|------|------| -| `RHIDescriptorPool` | `class` | 头文件中的公开声明。 | +从设计上看,它相当于在不同后端之间收敛: + +- D3D12 风格的 descriptor heap / descriptor range 分配 +- Vulkan 风格的 descriptor pool / descriptor set 分配 +- OpenGL 当前实现中的绑定点管理 + +## `DescriptorPoolDesc` 的核心字段 + +当前 pool 描述来自 [RHITypes](../RHITypes/RHITypes.md) 中的 `DescriptorPoolDesc`,最重要的字段是: + +- `type` +- `descriptorCount` +- `shaderVisible` + +其中 `type` 对应 [DescriptorHeapType](../RHIEnums/RHIEnums.md)。 + +## 当前支持的池类型 + +现有测试已经覆盖了以下几种 pool 类型: + +- `CBV_SRV_UAV` +- `Sampler` +- `RTV` +- `DSV` + +这说明当前抽象层已经把常见资源视图和采样器池分开表达,而不是只做单一 descriptor arena。 + +## 当前使用路径 + +典型流程是: + +1. 通过 [RHIDevice](../RHIDevice/RHIDevice.md) 创建 `RHIDescriptorPool` +2. 调用 [AllocateSet](AllocateSet.md) 传入 `DescriptorSetLayoutDesc` +3. 获得 [RHIDescriptorSet](../RHIDescriptorSet/RHIDescriptorSet.md) +4. 使用结束后销毁 set,再关闭 pool + +当前接口还提供 [FreeSet](FreeSet.md),说明 pool 设计时就考虑了 set 生命周期管理,而不是单纯一次性线性分配。 + +## 设计理解 + +这层抽象在商业引擎里很常见,因为 descriptor / binding 资源通常不是孤立对象,而是需要一个分配域: + +- pool 负责容量和类型边界 +- set 负责单次绑定内容 + +当前实现比较薄,但这是合理的第一步。它已经足够表达“这个 pass / material 需要从哪个类型的绑定池里拿一组 descriptor set”。 + +## 当前边界 + +当前 `RHIDescriptorPool` 没有直接暴露: + +- 碎片率或剩余容量查询 +- reset-all / frame allocator 语义 +- 多线程分配保证 +- 复杂回收策略 + +所以更准确的理解是:它是一个够用的基础分配接口,而不是完整的 descriptor allocator 子系统。 + +## 测试体现出的真实语义 + +`tests/RHI/unit/test_descriptor.cpp` 和 `test_descriptor_set.cpp` 表明: + +- `GetType()` 和 `GetDescriptorCount()` 会反映创建时的 pool 配置 +- `Shutdown()` 可以重复调用 +- pool 创建成功后可连续 `AllocateSet()` +- 部分测试直接通过 `pool->FreeSet(set)` 回收 set + +这说明它已经是 descriptor 相关测试的主要对象,而不是占位接口。 + +## 生命周期 + +`RHIDescriptorPool` 由 [RHIDevice](../RHIDevice/RHIDevice.md) 创建,使用完成后应: + +1. 先释放或关闭从该 pool 分配出的 set +2. 调用 [Shutdown](Shutdown.md) +3. `delete` ## 公共方法 -| 方法 | 描述 | -|------|------| -| [~RHIDescriptorPool()](Destructor.md) | 销毁对象并释放相关资源。 | -| [Initialize](Initialize.md) | 初始化内部状态。 | -| [Shutdown](Shutdown.md) | 关闭并清理内部状态。 | -| [GetNativeHandle](GetNativeHandle.md) | 获取相关状态或对象。 | -| [GetDescriptorCount](GetDescriptorCount.md) | 获取相关状态或对象。 | -| [GetType](GetType.md) | 获取相关状态或对象。 | -| [AllocateSet](AllocateSet.md) | 公开方法,详见头文件声明。 | -| [FreeSet](FreeSet.md) | 公开方法,详见头文件声明。 | +- [Initialize](Initialize.md) +- [Shutdown](Shutdown.md) +- [GetNativeHandle](GetNativeHandle.md) +- [GetDescriptorCount](GetDescriptorCount.md) +- [GetType](GetType.md) +- [AllocateSet](AllocateSet.md) +- [FreeSet](FreeSet.md) ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [RHIDescriptorSet](../RHIDescriptorSet/RHIDescriptorSet.md) +- [RHITypes](../RHITypes/RHITypes.md) +- [RHIEnums](../RHIEnums/RHIEnums.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHIDescriptorSet/RHIDescriptorSet.md b/docs/api/XCEngine/RHI/RHIDescriptorSet/RHIDescriptorSet.md index 3991da4e..b604dea7 100644 --- a/docs/api/XCEngine/RHI/RHIDescriptorSet/RHIDescriptorSet.md +++ b/docs/api/XCEngine/RHI/RHIDescriptorSet/RHIDescriptorSet.md @@ -6,37 +6,124 @@ **头文件**: `XCEngine/RHI/RHIDescriptorSet.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHIDescriptorSet` public API。 +**描述**: 资源绑定集合对象,负责把 resource view、sampler 和常量数据组织成一组可绑定描述。 -## 概述 +## 角色概述 -`RHIDescriptorSet.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHIDescriptorSet` 是当前抽象层里对“一组资源绑定”的统一表达。它通常不直接独立创建,而是从 [RHIDescriptorPool](../RHIDescriptorPool/RHIDescriptorPool.md) 中分配出来。 -## 声明概览 +它承担三类职责: -| 声明 | 类型 | 说明 | -|------|------|------| -| `RHIDescriptorSet` | `class` | 头文件中的公开声明。 | +- 管理布局绑定信息 +- 持有或引用 view / sampler 绑定 +- 维护常量缓冲区的 CPU 侧写入状态 + +## 当前接口语义 + +### 生命周期与绑定 + +- [Bind](Bind.md) +- [Unbind](Unbind.md) +- [Shutdown](Shutdown.md) + +这说明 descriptor set 在当前抽象里不是单纯静态数据对象,而是允许直接参与绑定/解绑流程。 + +### 资源更新 + +- [Update](Update.md) +- [UpdateSampler](UpdateSampler.md) + +这两个接口分别用于写入资源视图和 sampler。 + +需要特别注意的是,`Update(uint32_t offset, ...)` 参数名虽然叫 `offset`,但从当前测试特别是 OpenGL 路径来看,它的现实语义更接近“binding number”,而不是“布局数组中的第几个元素”。 + +例如测试会定义 binding `3` 和 `7`,然后显式调用: + +- `set->Update(7, srv)` + +并验证只有 binding `7` 被更新。 + +### 常量数据 + +- [WriteConstant](WriteConstant.md) +- [GetConstantBufferData](GetConstantBufferData.md) +- [GetConstantBufferSize](GetConstantBufferSize.md) +- [IsConstantDirty](IsConstantDirty.md) +- [MarkConstantClean](MarkConstantClean.md) + +这组接口说明当前 `RHIDescriptorSet` 不只是一个“引用外部 GPU 资源的句柄集合”,它还承担了一层常量数据 staging / dirty tracking 的职责。 + +## 布局信息 + +`RHIDescriptorSet` 通过以下接口暴露自身布局: + +- [GetBindingCount](GetBindingCount.md) +- [GetBindings](GetBindings.md) + +布局描述本身来自 [RHITypes](../RHITypes/RHITypes.md) 中的: + +- `DescriptorSetLayoutBinding` +- `DescriptorSetLayoutDesc` + +这意味着 set 的资源组织方式在创建时就已由布局确定,而不是运行时自由追加字段。 + +## 测试体现出的真实语义 + +`tests/RHI/unit/test_descriptor_set.cpp` 很能说明当前实现已经具备哪些行为: + +- 可以分配空布局 set,也可以分配带 SRV / Sampler / CBV 的布局 +- `Update()` 可以写入 `RHIResourceView` +- `UpdateSampler()` 可以写入 `RHISampler` +- `WriteConstant()` 会分配或更新常量数据,并能通过 `GetConstantBufferData()` / `GetConstantBufferSize()` 读取状态 +- `WriteConstant()` 会把 dirty 标记设为 true,`MarkConstantClean()` 会清掉该标记 +- OpenGL 路径会按 binding number 执行纹理和 UBO 绑定 +- D3D12 路径还存在更底层的 descriptor offset、descriptor index 和常量缓冲上传行为 + +这说明 `RHIDescriptorSet` 当前已经不是纸面抽象,而是后端资源绑定机制的真实统一入口。 + +## 设计理解 + +如果参考商业引擎常见做法,这样的 descriptor set 抽象有几个明显好处: + +- renderer 可以用统一布局描述去组织材质和 pass 资源 +- 后端可以各自把这组绑定映射到 descriptor heap、binding point 或 native layout +- 常量缓冲和资源视图能在同一对象里统一管理修改状态 + +代价是当前接口也背了一些实现细节: + +- `offset` / `binding` 语义不够直观 +- 既有资源绑定,也有常量缓冲 staging +- 后端差异仍然会在具体行为上暴露出来 + +## 生命周期 + +通常流程是: + +1. 从 [RHIDescriptorPool](../RHIDescriptorPool/RHIDescriptorPool.md) 分配 +2. 调用 `Update()` / `UpdateSampler()` / `WriteConstant()` 填充数据 +3. 交给 [RHICommandList](../RHICommandList/RHICommandList.md) 或后端绑定路径使用 +4. 使用结束后 [Shutdown](Shutdown.md) 并 `delete` ## 公共方法 -| 方法 | 描述 | -|------|------| -| [~RHIDescriptorSet()](Destructor.md) | 销毁对象并释放相关资源。 | -| [Shutdown](Shutdown.md) | 关闭并清理内部状态。 | -| [Bind](Bind.md) | 公开方法,详见头文件声明。 | -| [Unbind](Unbind.md) | 公开方法,详见头文件声明。 | -| [Update](Update.md) | 更新运行时状态。 | -| [UpdateSampler](UpdateSampler.md) | 更新运行时状态。 | -| [WriteConstant](WriteConstant.md) | 公开方法,详见头文件声明。 | -| [GetBindingCount](GetBindingCount.md) | 获取相关状态或对象。 | -| [GetBindings](GetBindings.md) | 获取相关状态或对象。 | -| [GetConstantBufferData](GetConstantBufferData.md) | 获取相关状态或对象。 | -| [GetConstantBufferSize](GetConstantBufferSize.md) | 获取相关状态或对象。 | -| [IsConstantDirty](IsConstantDirty.md) | 查询当前状态。 | -| [MarkConstantClean](MarkConstantClean.md) | 公开方法,详见头文件声明。 | +- [Shutdown](Shutdown.md) +- [Bind](Bind.md) +- [Unbind](Unbind.md) +- [Update](Update.md) +- [UpdateSampler](UpdateSampler.md) +- [WriteConstant](WriteConstant.md) +- [GetBindingCount](GetBindingCount.md) +- [GetBindings](GetBindings.md) +- [GetConstantBufferData](GetConstantBufferData.md) +- [GetConstantBufferSize](GetConstantBufferSize.md) +- [IsConstantDirty](IsConstantDirty.md) +- [MarkConstantClean](MarkConstantClean.md) ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHIDescriptorPool](../RHIDescriptorPool/RHIDescriptorPool.md) +- [RHICommandList](../RHICommandList/RHICommandList.md) +- [RHITypes](../RHITypes/RHITypes.md) +- [RHIEnums](../RHIEnums/RHIEnums.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHIDevice/RHIDevice.md b/docs/api/XCEngine/RHI/RHIDevice/RHIDevice.md index a14a3d4c..c0f96df3 100644 --- a/docs/api/XCEngine/RHI/RHIDevice/RHIDevice.md +++ b/docs/api/XCEngine/RHI/RHIDevice/RHIDevice.md @@ -6,50 +6,168 @@ **头文件**: `XCEngine/RHI/RHIDevice.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHIDevice` public API。 +**描述**: 抽象图形设备接口,负责设备初始化、能力查询,并作为大多数 RHI 对象的统一创建中心。 -## 概述 +## 角色概述 -`RHIDevice.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHIDevice` 是当前 `RHI` 抽象层的中心对象。它不像某些引擎那样把资源工厂、提交器、能力查询器分拆成多套接口,而是采用一种更集中的“设备即工厂”设计: -## 声明概览 +- 初始化后端上下文或 native device +- 持有能力信息和设备信息 +- 创建资源对象、命令对象、pipeline 对象和 descriptor 对象 +- 提供必要的 native handle 泄露口 -| 声明 | 类型 | 说明 | -|------|------|------| -| `RHIDevice` | `class` | 头文件中的公开声明。 | +这和原生图形 API 的心智模型比较接近,也符合很多商业引擎底层渲染后端的设计习惯。好处是统一、直接,代价是接口面比较大。 + +## 生命周期 + +### 初始化 + +`Initialize(const RHIDeviceDesc&)` 是创建后的第一步。当前 `RHIDeviceDesc` 只暴露了三个设备级开关: + +- `enableDebugLayer` +- `enableGPUValidation` +- `adapterIndex` + +这说明当前设备初始化配置还比较克制,没有把所有平台差异都堆进入口参数里。 + +### 关闭 + +`Shutdown()` 负责销毁设备级状态。按当前测试习惯,调用方应在删除设备之前显式调用它,而不是只依赖析构函数。 + +### 查询 + +初始化成功后,调用方通常会继续读取: + +- [GetCapabilities](GetCapabilities.md) +- [GetDeviceInfo](GetDeviceInfo.md) +- [GetNativeDevice](GetNativeDevice.md) + +其中 `GetNativeDevice()` 明确是一个“打破抽象边界”的出口,供后端专用逻辑或调试逻辑使用。 + +## 它负责创建什么 + +当前接口覆盖了 RHI 里绝大多数对象类别。 + +### 资源与展示 + +- [CreateBuffer](CreateBuffer.md) +- [CreateTexture](CreateTexture.md) +- [CreateSwapChain](CreateSwapChain.md) + +`CreateTexture()` 还有一个带 `initialData` 和 `rowPitch` 的重载,允许直接创建并上传初始数据。 + +### 执行与同步 + +- [CreateCommandList](CreateCommandList.md) +- [CreateCommandQueue](CreateCommandQueue.md) +- [CreateFence](CreateFence.md) + +### shader 与管线 + +- [CreateShader](CreateShader.md) +- [CreatePipelineState](CreatePipelineState.md) +- [CreatePipelineLayout](CreatePipelineLayout.md) +- [CreateSampler](CreateSampler.md) + +### render pass 与 framebuffer + +- [CreateRenderPass](CreateRenderPass.md) +- [CreateFramebuffer](CreateFramebuffer.md) + +### descriptor 与资源视图 + +- [CreateDescriptorPool](CreateDescriptorPool.md) +- [CreateDescriptorSet](CreateDescriptorSet.md) +- [CreateVertexBufferView](CreateVertexBufferView.md) +- [CreateIndexBufferView](CreateIndexBufferView.md) +- [CreateRenderTargetView](CreateRenderTargetView.md) +- [CreateDepthStencilView](CreateDepthStencilView.md) +- [CreateShaderResourceView](CreateShaderResourceView.md) +- [CreateUnorderedAccessView](CreateUnorderedAccessView.md) + +从接口形状就能看出,当前 `RHIDevice` 同时承担了资源创建器、视图工厂、descriptor 工厂和 pipeline 工厂的职责。 + +## 所有权约定 + +这是这页最关键的现实语义。 + +当前 `RHIDevice` 的所有创建接口都返回裸指针。按 `tests/RHI/unit/test_device.cpp`、`test_command_list.cpp` 等现有测试来看,推荐使用方式是: + +1. 通过 `RHIDevice` 创建对象。 +2. 使用对象执行初始化、录制或资源操作。 +3. 结束前调用对象自己的 `Shutdown()`。 +4. 最后 `delete`。 + +这同样适用于 `buffer`、`texture`、`queue`、`command list`、`fence`、`sampler`、`render pass`、`framebuffer`、`descriptor pool`、`descriptor set`、`resource view` 等对象。 + +如果带着现代 RAII 预期来使用这层接口,很容易误判释放责任。当前文档必须把这一点写死。 + +## 当前设计理解 + +从架构方向看,`RHIDevice` 的定位是合理的: + +- 抽象层统一把后端对象创建集中到设备上,方便 renderer 只依赖一套入口。 +- 设备负责暴露能力信息,便于上层在初始化阶段建立 feature branch。 +- 资源视图和 descriptor 也由设备创建,符合 D3D12 / Vulkan 风格资源管理直觉。 + +但从当前实现成熟度看,也要认识到几个边界: + +- 还没有单独的内存分配器 / residency / heap 管理抽象。 +- 资源创建描述符虽然统一,但很多字段仍是 `uint32_t` 承载枚举值,而不是更强类型的 API。 +- `GetNativeDevice()` 表明上层仍可能在必要时下钻到后端实现。 + +这说明当前阶段的目标更偏“稳定支撑后端实现和测试”,而不是已经完成最终抽象收敛。 + +## 测试中体现出的真实用法 + +现有测试提供了比模板文档更可靠的使用线索: + +- 创建设备后先 `Initialize()`。 +- 查询 `GetCapabilities()` 和 `GetDeviceInfo()`。 +- 创建 `Buffer`、`Texture`、`Fence`、`CommandQueue`、`CommandList`、`Sampler` 等对象。 +- 对每个对象做基本验证后 `Shutdown()` 并 `delete`。 + +这说明 `RHIDevice` 当前不仅是概念入口,而且已经是单元测试和集成测试里的真实生产入口。 ## 公共方法 -| 方法 | 描述 | -|------|------| -| [~RHIDevice()](Destructor.md) | 销毁对象并释放相关资源。 | -| [Initialize](Initialize.md) | 初始化内部状态。 | -| [Shutdown](Shutdown.md) | 关闭并清理内部状态。 | -| [CreateBuffer](CreateBuffer.md) | 创建新对象或资源。 | -| [CreateTexture](CreateTexture.md) | 创建新对象或资源。 | -| [CreateSwapChain](CreateSwapChain.md) | 创建新对象或资源。 | -| [CreateCommandList](CreateCommandList.md) | 创建新对象或资源。 | -| [CreateCommandQueue](CreateCommandQueue.md) | 创建新对象或资源。 | -| [CreateShader](CreateShader.md) | 创建新对象或资源。 | -| [CreatePipelineState](CreatePipelineState.md) | 创建新对象或资源。 | -| [CreatePipelineLayout](CreatePipelineLayout.md) | 创建新对象或资源。 | -| [CreateFence](CreateFence.md) | 创建新对象或资源。 | -| [CreateSampler](CreateSampler.md) | 创建新对象或资源。 | -| [CreateRenderPass](CreateRenderPass.md) | 创建新对象或资源。 | -| [CreateFramebuffer](CreateFramebuffer.md) | 创建新对象或资源。 | -| [CreateDescriptorPool](CreateDescriptorPool.md) | 创建新对象或资源。 | -| [CreateDescriptorSet](CreateDescriptorSet.md) | 创建新对象或资源。 | -| [CreateVertexBufferView](CreateVertexBufferView.md) | 创建新对象或资源。 | -| [CreateIndexBufferView](CreateIndexBufferView.md) | 创建新对象或资源。 | -| [CreateRenderTargetView](CreateRenderTargetView.md) | 创建新对象或资源。 | -| [CreateDepthStencilView](CreateDepthStencilView.md) | 创建新对象或资源。 | -| [CreateShaderResourceView](CreateShaderResourceView.md) | 创建新对象或资源。 | -| [CreateUnorderedAccessView](CreateUnorderedAccessView.md) | 创建新对象或资源。 | -| [GetCapabilities](GetCapabilities.md) | 获取相关状态或对象。 | -| [GetDeviceInfo](GetDeviceInfo.md) | 获取相关状态或对象。 | -| [GetNativeDevice](GetNativeDevice.md) | 获取相关状态或对象。 | +- [Initialize](Initialize.md) - 初始化设备。 +- [Shutdown](Shutdown.md) - 关闭设备并释放设备级状态。 +- [CreateBuffer](CreateBuffer.md) +- [CreateTexture](CreateTexture.md) +- [CreateSwapChain](CreateSwapChain.md) +- [CreateCommandList](CreateCommandList.md) +- [CreateCommandQueue](CreateCommandQueue.md) +- [CreateShader](CreateShader.md) +- [CreatePipelineState](CreatePipelineState.md) +- [CreatePipelineLayout](CreatePipelineLayout.md) +- [CreateFence](CreateFence.md) +- [CreateSampler](CreateSampler.md) +- [CreateRenderPass](CreateRenderPass.md) +- [CreateFramebuffer](CreateFramebuffer.md) +- [CreateDescriptorPool](CreateDescriptorPool.md) +- [CreateDescriptorSet](CreateDescriptorSet.md) +- [CreateVertexBufferView](CreateVertexBufferView.md) +- [CreateIndexBufferView](CreateIndexBufferView.md) +- [CreateRenderTargetView](CreateRenderTargetView.md) +- [CreateDepthStencilView](CreateDepthStencilView.md) +- [CreateShaderResourceView](CreateShaderResourceView.md) +- [CreateUnorderedAccessView](CreateUnorderedAccessView.md) +- [GetCapabilities](GetCapabilities.md) +- [GetDeviceInfo](GetDeviceInfo.md) +- [GetNativeDevice](GetNativeDevice.md) + +## 相关指南 + +- [Devices, Queues, Command Lists, And Resource Creation](../../../_guides/RHI/Devices-Queues-CommandLists-And-Resource-Creation.md) ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHIFactory](../RHIFactory/RHIFactory.md) +- [RHICommandQueue](../RHICommandQueue/RHICommandQueue.md) +- [RHICommandList](../RHICommandList/RHICommandList.md) +- [RHICapabilities](../RHICapabilities/RHICapabilities.md) +- [RHITypes](../RHITypes/RHITypes.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHIEnums/RHIEnums.md b/docs/api/XCEngine/RHI/RHIEnums/RHIEnums.md index 06e74f3a..1f73181c 100644 --- a/docs/api/XCEngine/RHI/RHIEnums/RHIEnums.md +++ b/docs/api/XCEngine/RHI/RHIEnums/RHIEnums.md @@ -2,72 +2,139 @@ **命名空间**: `XCEngine::RHI` -**类型**: `enum class` +**类型**: `header collection` **头文件**: `XCEngine/RHI/RHIEnums.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHIEnums` public API。 +**描述**: 提供 RHI 抽象层使用的公共枚举,用来描述 shader、资源、格式、队列、状态切换和后端类型等核心概念。 -## 概述 +## 角色概述 -`RHIEnums.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHIEnums.h` 是整个 `RHI` 抽象层的词汇表。它本身不做任何运行时工作,但几乎所有描述符和接口都会引用这里的枚举: -## 声明概览 +- [RHITypes](../RHITypes/RHITypes.md) 里大量 `uint32_t` 字段本质上都承载这些枚举值。 +- [RHIDevice](../RHIDevice/RHIDevice.md) 的创建描述、[RHICommandList](../RHICommandList/RHICommandList.md) 的状态设置、[RHIPipelineState](../RHIPipelineState/RHIPipelineState.md) 的管线描述都依赖这套词汇。 -| 声明 | 类型 | 说明 | -|------|------|------| -| `ShaderType` | `enum class` | 头文件中的公开声明。 | -| `ShaderLanguage` | `enum class` | 头文件中的公开声明。 | -| `CullMode` | `enum class` | 头文件中的公开声明。 | -| `FillMode` | `enum class` | 头文件中的公开声明。 | -| `FrontFace` | `enum class` | 头文件中的公开声明。 | -| `BlendOp` | `enum class` | 头文件中的公开声明。 | -| `BlendFactor` | `enum class` | 头文件中的公开声明。 | -| `ComparisonFunc` | `enum class` | 头文件中的公开声明。 | -| `StencilOp` | `enum class` | 头文件中的公开声明。 | -| `TextureType` | `enum class` | 头文件中的公开声明。 | -| `BufferType` | `enum class` | 头文件中的公开声明。 | -| `DescriptorType` | `enum class` | 头文件中的公开声明。 | -| `PipelineType` | `enum class` | 头文件中的公开声明。 | -| `CommandQueueType` | `enum class` | 头文件中的公开声明。 | -| `LoadAction` | `enum class` | 头文件中的公开声明。 | -| `StoreAction` | `enum class` | 头文件中的公开声明。 | -| `PresentFlags` | `enum class` | 头文件中的公开声明。 | -| `PrimitiveTopology` | `enum class` | 头文件中的公开声明。 | -| `PrimitiveTopologyType` | `enum class` | 头文件中的公开声明。 | -| `FilterMode` | `enum class` | 头文件中的公开声明。 | -| `TextureAddressMode` | `enum class` | 头文件中的公开声明。 | -| `BorderColor` | `enum class` | 头文件中的公开声明。 | -| `LogicOp` | `enum class` | 头文件中的公开声明。 | -| `ColorWriteMask` | `enum class` | 头文件中的公开声明。 | -| `ShaderVisibility` | `enum class` | 头文件中的公开声明。 | -| `RootParameterType` | `enum class` | 头文件中的公开声明。 | -| `DescriptorHeapType` | `enum class` | 头文件中的公开声明。 | -| `ResourceViewDimension` | `enum class` | 头文件中的公开声明。 | -| `ResourceViewType` | `enum class` | 头文件中的公开声明。 | -| `QueryType` | `enum class` | 头文件中的公开声明。 | -| `Format` | `enum class` | 头文件中的公开声明。 | -| `ResourceStates` | `enum class` | 头文件中的公开声明。 | -| `HeapType` | `enum class` | 头文件中的公开声明。 | -| `RHIType` | `enum class` | 头文件中的公开声明。 | +所以这页最重要的价值不是罗列每个值,而是说明这些枚举被分成了哪些语义组,以及使用时要注意什么。 -## 枚举值 +## 主要枚举分组 -| 枚举值 | 数值 | 描述 | -|--------|------|------| -| `Vertex` | - | 枚举项。 | -| `Fragment` | - | 枚举项。 | -| `Geometry` | - | 枚举项。 | -| `Compute` | - | 枚举项。 | -| `TessControl` | - | 枚举项。 | -| `TessEvaluation` | - | 枚举项。 | -| `Hull` | - | 枚举项。 | -| `Domain` | - | 枚举项。 | -| `Amplification` | - | 枚举项。 | -| `Mesh` | - | 枚举项。 | -| `Library` | - | 枚举项。 | +### shader 与编译 + +- `ShaderType` +- `ShaderLanguage` +- `ShaderVisibility` + +这些枚举定义 shader 阶段、源码语言和资源可见性。 + +### 光栅化与混合状态 + +- `CullMode` +- `FillMode` +- `FrontFace` +- `BlendOp` +- `BlendFactor` +- `ComparisonFunc` +- `StencilOp` +- `LogicOp` +- `ColorWriteMask` + +这组枚举主要被 [RHITypes](../RHITypes/RHITypes.md) 里的 `RasterizerDesc`、`BlendDesc`、`DepthStencilStateDesc` 使用。 + +### 资源与视图 + +- `TextureType` +- `BufferType` +- `DescriptorType` +- `DescriptorHeapType` +- `ResourceViewDimension` +- `ResourceViewType` +- `Format` +- `HeapType` + +这组是资源系统最常用的枚举集合。 + +### 命令提交与渲染流程 + +- `PipelineType` +- `CommandQueueType` +- `LoadAction` +- `StoreAction` +- `PresentFlags` +- `PrimitiveTopology` +- `PrimitiveTopologyType` +- `ResourceStates` +- `QueryType` + +这组更多服务于 command list、queue、render pass 和 swapchain。 + +### 采样与地址模式 + +- `FilterMode` +- `TextureAddressMode` +- `BorderColor` + +### pipeline layout / root parameter + +- `RootParameterType` + +### 后端选择 + +- `RHIType` + +这是 [RHIFactory](../RHIFactory/RHIFactory.md) 用来选择后端设备的枚举。 + +## 使用时最值得注意的几点 + +### 1. 很多地方需要手动 `static_cast` + +因为 [RHITypes](../RHITypes/RHITypes.md) 里很多字段是 `uint32_t`,常见写法会是: + +```cpp +desc.queueType = static_cast(CommandQueueType::Direct); +desc.format = static_cast(Format::R8G8B8A8_UNorm); +``` + +这意味着这些枚举虽然是强类型 `enum class`,但在描述符层最终经常会退化为整数存储。 + +### 2. `ColorWriteMask` 是当前少数带位运算帮助函数的枚举 + +头文件里只为 `ColorWriteMask` 提供了 `operator|`。这说明它被明确按 bitmask 使用,而其他很多“Flags”字样的枚举目前并没有同样的位运算封装。 + +### 3. `RHIType` 不等于“当前构建一定可用的后端集合” + +`RHIType` 里虽然定义了: + +- `D3D12` +- `OpenGL` +- `Vulkan` +- `Metal` + +但按当前 [RHIFactory](../RHIFactory/RHIFactory.md) 实现: + +- `OpenGL` 和 `Vulkan` 受编译宏控制 +- `Metal` 当前直接返回 `nullptr` + +所以它更像“抽象层目标后端集合”,而不是运行时保证。 + +### 4. 名称中性,不代表抽象完全无偏 + +这些枚举尽量使用跨 API 共通词汇,但它们仍然是在真实后端压力下收敛出来的公共子集,不代表已经完整覆盖所有底层 API 的全部特性语义。 + +## 推荐怎么使用这页 + +实际工程里,最合理的阅读方式是: + +1. 先知道某个接口或描述符需要哪类枚举。 +2. 再回到这页查具体可选值。 + +不要把这页当成孤立知识点记忆;它必须结合 [RHITypes](../RHITypes/RHITypes.md) 和具体创建接口一起看,才有意义。 ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHITypes](../RHITypes/RHITypes.md) +- [RHIFactory](../RHIFactory/RHIFactory.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [RHICommandList](../RHICommandList/RHICommandList.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHIFactory/RHIFactory.md b/docs/api/XCEngine/RHI/RHIFactory/RHIFactory.md index b5be6135..10784864 100644 --- a/docs/api/XCEngine/RHI/RHIFactory/RHIFactory.md +++ b/docs/api/XCEngine/RHI/RHIFactory/RHIFactory.md @@ -6,25 +6,81 @@ **头文件**: `XCEngine/RHI/RHIFactory.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHIFactory` public API。 +**描述**: 提供统一的 RHI 后端选择入口,根据枚举或字符串创建具体 `RHIDevice` 实现。 -## 概述 +## 角色概述 -`RHIFactory.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHIFactory` 是当前抽象层的引导入口。它的价值不在于复杂逻辑,而在于把“上层代码如何选中某个图形后端”这件事收敛到一个稳定入口里: -## 声明概览 +- 测试代码可以按参数切换 D3D12 / OpenGL / Vulkan。 +- 引擎启动流程不需要直接 `#include` 某个具体后端设备头。 +- 以后如果要接配置文件、命令行或编辑器选项,也可以继续沿用这个入口。 -| 声明 | 类型 | 说明 | -|------|------|------| -| `RHIFactory` | `class` | 头文件中的公开声明。 | +这类工厂在商用引擎里很常见,因为“后端选择”通常是启动层问题,而不是渲染业务层问题。 + +## 当前创建语义 + +`RHIFactory` 只暴露两个静态重载: + +- `CreateRHIDevice(RHIType type)` +- `CreateRHIDevice(const std::string& typeName)` + +它们都会直接 `new` 出具体后端设备,并返回 `RHIDevice*`。当前没有智能指针包装,也没有注册表或插件发现机制。 + +## 后端可用性 + +按当前 `engine/src/RHI/RHIFactory.cpp` 的实现,真实行为是: + +- `RHIType::D3D12` 始终返回 `new D3D12Device()`。 +- `RHIType::OpenGL` 只有在定义 `XCENGINE_SUPPORT_OPENGL` 时才会返回 `new OpenGLDevice()`。 +- `RHIType::Vulkan` 只有在定义 `XCENGINE_SUPPORT_VULKAN` 时才会返回 `new VulkanDevice()`。 +- `RHIType::Metal` 当前直接返回 `nullptr`。 + +这和很多商业引擎的“平台编译开关决定后端可用集合”是一致的,但当前实现还没有提供更友好的 fallback 策略。 + +## 字符串重载支持的名称 + +字符串重载当前支持的别名是源码硬编码的: + +- `D3D12`, `d3d12` +- `OpenGL`, `opengl`, `GL` +- `Vulkan`, `vulkan`, `VK`, `vk` + +如果名字不匹配,或者对应后端没有编译进当前构建,工厂会返回 `nullptr`。 + +## 所有权约定 + +`CreateRHIDevice()` 返回的是裸指针。按当前测试和调用习惯,调用方负责: + +1. 判断返回值是否为空。 +2. 调用 `Initialize()` 完成设备初始化。 +3. 使用完毕后先 `Shutdown()`。 +4. 最后 `delete`。 + +这一点必须显式记住,因为它和 `Core` 模块里常见的 `Ref` / `UniqueRef` 使用习惯不同。 + +## 当前设计边界 + +`RHIFactory` 当前是一个非常薄的入口,因此它没有提供下面这些商业引擎常见增强能力: + +- 没有“选择首选后端,否则回退到次选后端”的策略接口。 +- 没有适配器探测或按能力自动挑选设备。 +- 没有插件式后端注册。 +- 没有返回错误原因,只有 `nullptr`。 + +这不是缺陷掩盖,而是当前实现范围确实比较收敛。它的职责只是“根据已知后端名创建一个设备对象”。 ## 公共方法 -| 方法 | 描述 | -|------|------| -| [CreateRHIDevice](CreateRHIDevice.md) | 创建新对象或资源。 | +- [CreateRHIDevice](CreateRHIDevice.md) - 根据 `RHIType` 或后端名称创建抽象设备实例。 + +## 相关指南 + +- [Devices, Queues, Command Lists, And Resource Creation](../../../_guides/RHI/Devices-Queues-CommandLists-And-Resource-Creation.md) ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [RHIEnums](../RHIEnums/RHIEnums.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHIFence/RHIFence.md b/docs/api/XCEngine/RHI/RHIFence/RHIFence.md index 5c3e1411..f1dca38c 100644 --- a/docs/api/XCEngine/RHI/RHIFence/RHIFence.md +++ b/docs/api/XCEngine/RHI/RHIFence/RHIFence.md @@ -6,30 +6,111 @@ **头文件**: `XCEngine/RHI/RHIFence.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHIFence` public API。 +**描述**: GPU 同步原语接口,用于 signal、wait 和 completed value 查询,是命令队列同步和 frame pacing 的基础构件。 -## 概述 +## 角色概述 -`RHIFence.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHIFence` 是当前 `RHI` 抽象层里最基础的同步对象。它通常和 [RHICommandQueue](../RHICommandQueue/RHICommandQueue.md) 配合使用,用来表达: -## 声明概览 +- 某个 GPU 提交点是否已经完成 +- CPU 是否需要等待某个值 +- 当前完成值推进到了哪里 -| 声明 | 类型 | 说明 | -|------|------|------| -| `RHIFence` | `class` | 头文件中的公开声明。 | +如果拿商用引擎常见心智模型来理解,它更接近 timeline-style fence / completion fence,而不是图形 API 中所有同步原语的统一抽象。 -## 公共方法 +## 当前接口 -| 方法 | 描述 | -|------|------| -| [~RHIFence()](Destructor.md) | 销毁对象并释放相关资源。 | -| [Shutdown](Shutdown.md) | 关闭并清理内部状态。 | -| [Signal](Signal.md) | 公开方法,详见头文件声明。 | -| [Wait](Wait.md) | 公开方法,详见头文件声明。 | -| [GetCompletedValue](GetCompletedValue.md) | 获取相关状态或对象。 | -| [GetNativeHandle](GetNativeHandle.md) | 获取相关状态或对象。 | +- [Signal](Signal.md) +- [Wait](Wait.md) +- [GetCompletedValue](GetCompletedValue.md) +- [GetNativeHandle](GetNativeHandle.md) +- [Shutdown](Shutdown.md) + +## 一个必须写清楚的细节:无参 `Signal()` 并不完全统一 + +`RHIFence` 同时提供: + +- `Signal()` +- `Signal(uint64_t value)` + +但当前无参重载在不同后端上的实现并不完全一致: + +- D3D12 当前实现等价于 `Signal(1)` +- OpenGL 当前实现也等价于 `Signal(1)` +- Vulkan 当前头文件实现是 `++m_value` + +这意味着: + +- 无参 `Signal()` 不是跨后端严格统一的 timeline 递增语义 +- 如果你需要可移植、可推断的同步值行为,应该优先使用显式值重载 `Signal(value)` + +这是一个非常值得文档明确指出的实现事实。 + +## `Wait()` 和 completed value 语义 + +当前测试已经覆盖: + +- signal 到某个值后 wait +- completed value 递增到更大值 +- wait 一个小于已完成值的目标 +- 多次 signal / wait 组合 + +从这些测试和当前实现看,更合理的理解是: + +- `Wait(value)` 表示“至少等到这个值” +- `GetCompletedValue()` 返回当前后端已完成的最大同步值 + +## 和 `RHICommandQueue` 的关系 + +有两条常见用法: + +### fence 自己 signal / wait + +测试里直接调用: + +- `fence->Signal(value)` +- `fence->Wait(value)` + +### 由 queue 推进 fence + +队列也有: + +- `queue->Signal(fence, value)` +- `queue->Wait(fence, value)` + +这更接近真实 GPU 提交流程中的使用方式。 + +## 当前设计边界 + +`RHIFence` 当前没有提供: + +- 多对象 join / fan-in 抽象 +- semaphore 风格资源依赖表达 +- timeline semaphore / binary semaphore 的统一细分类型 + +它的定位就是一层简单、可验证的 completion fence。 + +## native handle 语义 + +`GetNativeHandle()` 也是明显的后端逃逸口: + +- D3D12 下是原生 fence 对象 +- OpenGL 下是 `GLsync` +- Vulkan 当前 public 实现甚至可能返回 `nullptr` + +因此调用方不能把它当成稳定跨后端能力。 + +## 生命周期 + +`RHIFence` 由 [RHIDevice](../RHIDevice/RHIDevice.md) 创建,并以裸指针返回。使用完成后推荐: + +1. [Shutdown](Shutdown.md) +2. `delete` ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHICommandQueue](../RHICommandQueue/RHICommandQueue.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [Devices, Queues, Command Lists, And Resource Creation](../../../_guides/RHI/Devices-Queues-CommandLists-And-Resource-Creation.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHIFramebuffer/RHIFramebuffer.md b/docs/api/XCEngine/RHI/RHIFramebuffer/RHIFramebuffer.md index 1dedde19..547e6d1e 100644 --- a/docs/api/XCEngine/RHI/RHIFramebuffer/RHIFramebuffer.md +++ b/docs/api/XCEngine/RHI/RHIFramebuffer/RHIFramebuffer.md @@ -6,31 +6,169 @@ **头文件**: `XCEngine/RHI/RHIFramebuffer.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHIFramebuffer` public API。 +**描述**: 抽象 framebuffer 对象,负责把 render pass 描述与一组具体 attachment view 绑定起来,形成一次可用于渲染输出的目标集合。 -## 概述 +## 角色概述 -`RHIFramebuffer.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHIFramebuffer` 不是纹理资源本体,也不是 render pass 本体。它更像是两者之间的一层“装配结果”: -## 声明概览 +- [RHIRenderPass](../RHIRenderPass/RHIRenderPass.md) 负责描述这次 pass 需要怎样的颜色/深度附件语义 +- [RHIResourceView](../RHIResourceView/RHIResourceView.md) 负责把具体纹理解释为 render target / depth stencil 视图 +- `RHIFramebuffer` 则把它们组合成一份真正可绑定到 GPU 的输出目标配置 -| 声明 | 类型 | 说明 | -|------|------|------| -| `RHIFramebuffer` | `class` | 头文件中的公开声明。 | +这种拆分与商业引擎、现代图形 API 的思路一致。它的价值在于: + +- 同一个 render pass 可以反复搭配不同纹理视图 +- swap chain resize 或离屏目标切换时,只需要重建 framebuffer,而不必重写整套 pass 语义 +- 后端可以各自用最合适的 native 方式存储这组 attachment 绑定关系 + +## 输入语义 + +当前抽象接口上的 `Initialize()` 需要这些核心输入: + +- `renderPass` +- `width` +- `height` +- `colorAttachmentCount` +- `colorAttachments` +- `depthStencilAttachment` + +这几个参数共同表达的是: + +- 这份 framebuffer 应当匹配哪种 pass 附件布局 +- 它的目标尺寸是多少 +- 它绑定了哪些颜色视图 +- 是否还绑定了深度/模板视图 + +## 当前后端差异 + +### D3D12 + +当前 D3D12 实现并不会创建真正的 native framebuffer 对象。 + +它做的事情非常轻量: + +- 保存 `D3D12RenderPass*` +- 保存宽高 +- 从每个 `RHIResourceView` 中提取 CPU descriptor handle +- 把颜色 RTV handle 和深度 DSV handle 缓存起来 + +有几个后果非常重要: + +- [GetNativeHandle](GetNativeHandle.md) 当前返回 `nullptr` +- [IsValid](IsValid.md) 的判断条件只是 `m_renderPass != nullptr` +- 当前实现不会主动校验 attachment 数量、尺寸、格式是否与 render pass 严格匹配 +- 即使宽高是 `0`,对象也可能创建成功 + +换句话说,D3D12 路径里的 `RHIFramebuffer` 更像“供 command list 使用的一组 RTV/DSV 句柄快照”,而不是一个强校验、强约束的独立 native 对象。 + +### OpenGL + +OpenGL 路径会创建真正的 FBO,并把 resource view 中记录的附件信息挂到 FBO 上,然后调用 `glCheckFramebufferStatus()` 做完整性检查。 + +这条路径的特点是: + +- [GetNativeHandle](GetNativeHandle.md) 返回的是 OpenGL framebuffer 对象名 +- [IsValid](IsValid.md) 反映的是 FBO 是否已成功创建 +- 会根据 resource view 的附件目标、mip、layer 去做实际挂接 +- 当前实现最多处理前 16 个颜色附件 + +还需要特别注意一个实现事实: + +当前 `OpenGLFramebuffer::Initialize(RHIRenderPass*, ...)` 里,`renderPass` 参数实际上没有被用来做匹配校验。也就是说,OpenGL 的“有效性”更多来自 FBO 自身的 GL 完整性检查,而不是来自 render pass 与 framebuffer 的抽象层一致性校验。 + +### Vulkan + +Vulkan 是当前校验最严格的一条路径。 + +在真正创建 `VkFramebuffer` 前,当前实现会检查: + +- `VkDevice` 是否有效 +- `renderPass` 是否非空且 `VkRenderPass` 有效 +- `width` / `height` 是否大于 0 +- `colorAttachmentCount > 0` 时 `colorAttachments` 不能为 `nullptr` +- `colorAttachmentCount` 必须与 render pass 的颜色附件数量一致 +- 深度附件的有无必须与 render pass 是否声明 depth/stencil 一致 +- 每个传入的 `VulkanResourceView` 都必须持有有效 `VkImageView` + +只有全部满足时才会创建 `VkFramebuffer`。 + +因此当前最保守、最可移植的工程习惯是:按 Vulkan 的严格要求去构造 framebuffer,而不要依赖 D3D12 / OpenGL 某些较宽松的容忍行为。 + +## 测试体现出的真实语义 + +`tests/RHI/unit/test_framebuffer.cpp` 目前覆盖了这些场景: + +- 单颜色附件创建 +- 宽高查询 +- `IsValid()` 基本语义 +- 显式 `Shutdown()` +- 颜色 + 深度模板附件 +- 多颜色附件 +- 非法尺寸 +- 颜色附件指针为 `nullptr` + +测试里一个很关键的信号是:对于非法尺寸和空颜色视图,测试并没有要求“一定创建失败”,而是采用“如果创建成功则检查其返回状态”的写法。 + +这恰恰说明当前抽象层对非法输入没有统一拒绝语义,后端差异必须在文档里写明,而不能假装它已经完全抹平。 + +## 生命周期与所有权 + +`RHIFramebuffer` 通常通过 [RHIDevice::CreateFramebuffer](../RHIDevice/CreateFramebuffer.md) 创建,并以裸指针返回。 + +它只拥有自己内部的 native / backend 状态,不拥有: + +- `RHIRenderPass` +- `RHIResourceView` +- 底层 `RHITexture` + +销毁 framebuffer 不等于销毁附件纹理或其视图。当前最稳妥的释放方式仍然是: + +1. [Shutdown](Shutdown.md) +2. `delete` + +## 线程语义 + +当前接口没有声明线程安全保证。从源码和图形 API 约束出发,更安全的理解是: + +- 创建、销毁和绑定相关操作应放在渲染线程或 RHI 线程 +- 不要跨线程同时修改同一个 framebuffer +- 不要假设 resize、swap chain 重建、attachment 替换与旧 framebuffer 并发安全 + +## 设计理解 + +把 framebuffer 作为独立对象,而不是把 attachment 直接塞进 command list 调用里,是现代渲染架构里很常见的一种收敛方式。 + +它的好处在于: + +- 附件绑定关系可以被缓存和复用 +- render pass 语义与具体图像资源可以分离 +- resize、离屏渲染、GBuffer、多目标输出这类场景更容易组织 + +如果从 Unity 风格去理解,它更接近“引擎内部组织 render target set 的对象”,而不是用户层直接面对的某个高层渲染资产。 + +## 当前实现限制 + +- 抽象接口没有提供“创建后反查 attachment 列表”的通用 API,调用方需要自己记住输入 +- D3D12 路径没有真正的 native framebuffer,对 [GetNativeHandle](GetNativeHandle.md) 不能做可移植假设 +- OpenGL 路径的 `renderPass` 当前主要起抽象层占位作用,不承担严格匹配校验 +- Vulkan 路径最严格,意味着上层若想写出稳定的跨后端代码,最好按 Vulkan 约束准备 attachment ## 公共方法 -| 方法 | 描述 | -|------|------| -| [~RHIFramebuffer()](Destructor.md) | 销毁对象并释放相关资源。 | -| [Shutdown](Shutdown.md) | 关闭并清理内部状态。 | -| [Initialize](Initialize.md) | 初始化内部状态。 | -| [GetNativeHandle](GetNativeHandle.md) | 获取相关状态或对象。 | -| [GetWidth](GetWidth.md) | 获取相关状态或对象。 | -| [GetHeight](GetHeight.md) | 获取相关状态或对象。 | -| [IsValid](IsValid.md) | 查询当前状态。 | +- [Initialize](Initialize.md) +- [Shutdown](Shutdown.md) +- [GetNativeHandle](GetNativeHandle.md) +- [GetWidth](GetWidth.md) +- [GetHeight](GetHeight.md) +- [IsValid](IsValid.md) ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHIRenderPass](../RHIRenderPass/RHIRenderPass.md) +- [RHIResourceView](../RHIResourceView/RHIResourceView.md) +- [RHITexture](../RHITexture/RHITexture.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [RHICommandList](../RHICommandList/RHICommandList.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHIPipelineLayout/RHIPipelineLayout.md b/docs/api/XCEngine/RHI/RHIPipelineLayout/RHIPipelineLayout.md index cdcf5634..bfacb063 100644 --- a/docs/api/XCEngine/RHI/RHIPipelineLayout/RHIPipelineLayout.md +++ b/docs/api/XCEngine/RHI/RHIPipelineLayout/RHIPipelineLayout.md @@ -6,28 +6,193 @@ **头文件**: `XCEngine/RHI/RHIPipelineLayout.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHIPipelineLayout` public API。 +**描述**: 资源绑定布局抽象,负责描述一个 pipeline 预期会使用多少常量缓冲、纹理、采样器和 UAV,以及这些绑定在后端中应如何组织。 -## 概述 +## 角色概述 -`RHIPipelineLayout.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHIPipelineLayout` 对应的是“渲染或计算管线在资源绑定层面长什么样”。 -## 声明概览 +这类对象在现代图形 API 里都很关键,只是名字不同: -| 声明 | 类型 | 说明 | -|------|------|------| -| `RHIPipelineLayout` | `class` | 头文件中的公开声明。 | +- 在 D3D12 里更接近 root signature 及其参数布局 +- 在 Vulkan 里更接近一组 descriptor set layout 加 pipeline layout +- 在 OpenGL 里则更像一份绑定点分配方案 + +如果从商业级游戏引擎的角度理解,它更像 Unity SRP / Unreal RHI 内部会维护的“资源绑定契约”,而不是面向 gameplay 层的材质接口。把这层单独抽出来的好处是: + +- pipeline state 可以明确声明自己依赖哪些资源类别 +- descriptor set / resource view 的更新路径有稳定的布局依据 +- 后端可以把同一份高层描述翻译成各自的 native 绑定模型 + +## 两种建模方式 + +当前 `RHIPipelineLayoutDesc` 支持两种输入方式: + +### 1. 扁平计数 + +直接填写: + +- `constantBufferCount` +- `textureCount` +- `samplerCount` +- `uavCount` + +这种方式简单直接,适合早期 bring-up、轻量测试和不关心 set slot 的场景。 + +### 2. 显式 set layout + +通过: + +- `setLayouts` +- `setLayoutCount` +- `DescriptorSetLayoutBinding` + +显式声明每个 set 里有哪些 binding、类型是什么、数量多少、可见阶段是什么。 + +这条路径更接近现代引擎里“先设计绑定布局,再做资源写入”的工作方式,也更适合多 set、多资源类别并存的真实渲染管线。 + +## 当前实现里的重要事实 + +这是这一页最需要写清楚的部分。 + +当你传入 `setLayouts` 时,当前三套后端实现都会: + +- 深拷贝 `DescriptorSetLayoutDesc` +- 深拷贝其中的 `DescriptorSetLayoutBinding` +- 重新统计 `constantBufferCount` / `textureCount` / `samplerCount` / `uavCount` + +也就是说,`setLayouts` 一旦被成功创建,后端不会继续依赖调用方原始数组的生命周期。`tests/RHI/unit/test_pipeline_layout.cpp` 也专门验证了这一点:创建之后再修改原始 binding 数组,不会反向污染 layout 内部保存的数据。 + +这很符合商业引擎常见的设计取向:布局对象一旦建立,就应该成为稳定的、可复用的绑定契约,而不是继续悬挂在外部临时数组上。 + +## 后端差异 + +### D3D12 + +当前 D3D12 路径并不是通过抽象类上的 `Initialize()` 完成初始化,而是由 [RHIDevice](../RHIDevice/RHIDevice.md) 内部走 `D3D12PipelineLayout::InitializeWithDevice()` 创建。`D3D12PipelineLayout::Initialize(const RHIPipelineLayoutDesc&)` 当前直接返回 `false`。 + +创建成功后,D3D12 会把布局翻译为 root signature: + +- 常量缓冲通常拆成独立 root parameter +- SRV / UAV / Sampler 更偏向 descriptor table +- 如果使用显式 set layout,还会为每个 set 单独维护 root parameter 映射 + +当前实现还提供了大量 D3D12 专属查询能力,例如: + +- 是否存在某个常量缓冲 binding +- 某个 SRV table / UAV table / sampler table 对应哪个 root parameter index +- 在显式 set layout 模式下,某个 set slot 是否拥有指定资源类别 + +这些能力对于 D3D12 command list 的资源绑定翻译很重要,但它们不是 `RHIPipelineLayout` 抽象层的可移植契约,不能拿来当跨后端通用规则。 + +`GetNativeHandle()` 在 D3D12 下返回的是 `ID3D12RootSignature*`。 + +### OpenGL + +OpenGL 并不会创建一个独立的 native pipeline layout 对象。当前实现更像是在内存里建立一张“binding -> OpenGL binding point”的映射表。 + +有几个关键信息: + +- 如果使用显式 set layout,OpenGL 会按资源类别分别分配 binding point +- 同一类资源的 binding point 会跨 set 递增 +- 不同 set 中即使都用了 `binding = 0`,也会被分配到不同的最终 binding point + +例如测试已经验证过: + +- set0 的 CBV binding 0 会落到 binding point 0 +- set1 的 CBV binding 0 会落到 binding point 1 +- SRV / UAV / Sampler 也分别有自己独立的递增序列 + +这说明当前 OpenGL 路径并不是“简单照抄 binding 编号”,而是在用一层布局映射来解决跨 set 的重号问题。 + +如果没有显式 set layout,当前 OpenGL 查询函数会把 set 0 下的 binding 本身当作最终 binding point 使用。 + +`GetNativeHandle()` 在 OpenGL 下并不是 GL 原生对象句柄,而是在 layout 已初始化时返回 `this`,本质上只是“这个抽象对象当前有效”的后端信号。 + +### Vulkan + +Vulkan 路径的行为最接近现代显式图形 API 的常规理解: + +- 显式 set layout 会被翻译成多个 `VkDescriptorSetLayout` +- 然后再组合成一个 `VkPipelineLayout` + +如果调用方没有传 `setLayouts`,而是只给了四类扁平计数,当前 Vulkan 会主动合成“伪 set layout”: + +- 一组只包含 CBV 的 set +- 一组只包含 SRV 的 set +- 一组只包含 UAV 的 set +- 一组只包含 Sampler 的 set + +这是一种很务实的过渡设计。它允许上层先用较简单的计数模型驱动 Vulkan backend,而不必一上来就强制所有调用点显式构造 descriptor set layout 数组。 + +和 D3D12 一样,`VulkanPipelineLayout::Initialize(const RHIPipelineLayoutDesc&)` 当前并不是主创建入口;真实创建路径是设备内部调用带 `VkDevice` 参数的重载。 + +`GetNativeHandle()` 在 Vulkan 下返回的是 `VkPipelineLayout`。 + +## 测试体现出的真实语义 + +`tests/RHI/unit/test_pipeline_layout.cpp` 目前已经覆盖了这些要点: + +- 只给 CBV 计数也能创建 +- 只给 Texture / Sampler / UAV 计数也能创建 +- 零计数布局也允许创建 +- `Shutdown()` 可以重复调用 +- 显式 set layout 会被深拷贝 +- 显式 set layout 会反推四类资源总数 +- D3D12 能区分不同资源类别对应的 root parameter / descriptor table +- D3D12 和 OpenGL 都能正确分离不同 set slot 中的重叠 binding + +这意味着当前 `RHIPipelineLayout` 已经不是空壳概念,而是 command list 资源绑定逻辑真正依赖的布局对象。 + +## 设计理解 + +把 pipeline layout 单独抽出来,而不是把一切都塞进 pipeline state,本质上是在做“资源绑定契约”与“渲染状态契约”的解耦。 + +这样设计的收益很直接: + +- shader / pipeline state 只关心资源布局结果,不需要重新解释每个 descriptor set +- descriptor set 可以围绕 layout 独立分配和更新 +- 多后端翻译时,root signature、descriptor set layout、OpenGL binding point 分配都能共享同一个上层输入模型 + +这也是商业引擎里常见的方向。对熟悉 Unity 的读者,可以把它理解成比 `Material.SetTexture()` 这类 API 更底层、更加接近 SRP backend 资源绑定约束的那一层。 + +## 生命周期 + +当前主路径是通过 [RHIDevice::CreatePipelineLayout](../RHIDevice/CreatePipelineLayout.md) 创建,并以裸指针返回。按照现有测试和实现,最稳妥的释放顺序仍然是: + +1. [Shutdown](Shutdown.md) +2. `delete` + +`RHIPipelineLayout` 自己不负责销毁 descriptor set、descriptor pool 或 shader 资源;它只是资源绑定布局契约。 + +## 线程语义 + +public header 没有给出任何线程安全保证,当前实现里也看不到同步设施。从现有源码与测试使用方式看,更安全的工程规则是: + +- 在渲染线程或 RHI 线程上创建和销毁 +- 不要在多线程下同时读写同一个 layout 实例 +- 不要假设 backend 查询辅助函数是线程安全的 + +## 当前实现限制 + +- 抽象层只暴露了极简接口;很多真正有用的查询能力仍然停留在后端专属类里 +- `D3D12PipelineLayout` 和 `VulkanPipelineLayout` 的抽象 `Initialize()` 当前都不是实际创建入口 +- 当前布局模型只覆盖 CBV / SRV / UAV / Sampler 这类描述符资源,没有统一抽象 push constant、root constant、immutable sampler 等更高级能力 +- OpenGL 的 native handle 不是真正的 GL 对象;D3D12 / Vulkan 的 native handle 含义也完全不同,不能混用 ## 公共方法 -| 方法 | 描述 | -|------|------| -| [~RHIPipelineLayout()](Destructor.md) | 销毁对象并释放相关资源。 | -| [Initialize](Initialize.md) | 初始化内部状态。 | -| [Shutdown](Shutdown.md) | 关闭并清理内部状态。 | -| [GetNativeHandle](GetNativeHandle.md) | 获取相关状态或对象。 | +- [Initialize](Initialize.md) +- [Shutdown](Shutdown.md) +- [GetNativeHandle](GetNativeHandle.md) ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [RHIDescriptorPool](../RHIDescriptorPool/RHIDescriptorPool.md) +- [RHIDescriptorSet](../RHIDescriptorSet/RHIDescriptorSet.md) +- [RHIPipelineState](../RHIPipelineState/RHIPipelineState.md) +- [RHITypes](../RHITypes/RHITypes.md) +- [Devices, Queues, Command Lists, And Resource Creation](../../../_guides/RHI/Devices-Queues-CommandLists-And-Resource-Creation.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHIPipelineState/RHIPipelineState.md b/docs/api/XCEngine/RHI/RHIPipelineState/RHIPipelineState.md index 1368ee54..bf334525 100644 --- a/docs/api/XCEngine/RHI/RHIPipelineState/RHIPipelineState.md +++ b/docs/api/XCEngine/RHI/RHIPipelineState/RHIPipelineState.md @@ -6,47 +6,131 @@ **头文件**: `XCEngine/RHI/RHIPipelineState.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHIPipelineState` public API。 +**描述**: 抽象图形/计算管线状态对象,负责聚合输入布局、光栅化、混合、深度模板、render target 格式以及可选计算 shader。 -## 概述 +## 角色概述 -`RHIPipelineState.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHIPipelineState` 对应的是当前抽象层里的“可绑定管线状态包”。它的接口明显带有“统一图形状态描述”的设计意图,而不是简单把某个后端的 native PSO 结构原样暴露出去。 -## 声明概览 +头文件注释里直接写了: -| 声明 | 类型 | 说明 | -|------|------|------| -| `RHIPipelineState` | `class` | 头文件中的公开声明。 | +- `Unity SRP style` +- `Shader independent of PSO` + +这说明当前设计方向是希望用一套更统一的 pipeline 状态模型去支撑不同后端,而不是要求所有状态都只通过 shader 或 native API 自己的配置路径表达。 + +## 当前状态模型 + +`RHIPipelineState` 当前主要包含两类信息: + +### 图形状态 + +- [SetInputLayout](SetInputLayout.md) +- [SetRasterizerState](SetRasterizerState.md) +- [SetBlendState](SetBlendState.md) +- [SetDepthStencilState](SetDepthStencilState.md) +- [SetTopology](SetTopology.md) +- [SetRenderTargetFormats](SetRenderTargetFormats.md) +- [SetSampleCount](SetSampleCount.md) + +### 计算路径 + +- [SetComputeShader](SetComputeShader.md) + +也就是说,当前同一个抽象接口既能表达 graphics pipeline,也能表达 compute pipeline。 + +## 类型与有效性 + +这是这页最值得说明的地方。 + +### `GetType()` + +从现有测试看: + +- 默认创建出来的 pipeline state 类型是 `PipelineType::Graphics` +- 当设置了 compute shader 后,类型可以变成 `PipelineType::Compute` + +### `IsValid()` / `EnsureValid()` + +现有测试明确揭示了一个很重要的后端差异: + +- 在 D3D12 下,默认或信息不足的 pipeline state 往往不是立即有效的。 +- 在 OpenGL 路径下,默认 pipeline state 更容易被视为有效。 + +头文件注释甚至直接写出了当前统一语义: + +- `D3D12` 需要编译 +- `OpenGL` 总是有效 + +这意味着 `RHIPipelineState` 的“有效”不是完全抽象无差异的概念,而是和后端实现成熟度、native API 要求直接相关。 + +## 设计理解 + +从商用引擎经验看,这样的 pipeline state 抽象是合理的: + +- renderer 可以先在统一描述层拼好状态,再交给后端去编译或绑定 +- 输入布局、混合、深度模板和 render target 格式等关键状态有明确归属 +- 计算路径可以与图形路径复用一部分生命周期和绑定逻辑 + +但当前实现也有现实边界: + +- 还保留了 `RHICommandList::SetShader()` 这种并行路径,所以整个系统并不是“只有 PSO”这一种绑定范式 +- `GraphicsPipelineDesc` 与 `RHIPipelineState` 的关系更偏工程实现上的状态收敛,而不是已经完全封装成单一材质系统 +- 有效性判定明显依赖后端 + +## 测试体现出的真实使用方式 + +`tests/RHI/unit/test_pipeline_state.cpp` 和 `test_compute.cpp` 给出了当前比较可信的使用路径: + +- 可以先创建默认 `GraphicsPipelineDesc` 再逐步设置状态 +- 可以读回 `RasterizerDesc`、`BlendDesc`、`DepthStencilStateDesc`、`InputLayoutDesc` +- 可以为 graphics pipeline 直接在 `GraphicsPipelineDesc` 里提供 vertex / fragment shader +- 可以用 `SetComputeShader()` 走 compute 路径 +- 在部分后端下 `EnsureValid()` 会触发或推进有效性检查,但并不保证无条件成功 + +这说明当前 pipeline state 的职责更像“后端可消费的统一状态对象”,而不是文档层面随便说说的概念壳子。 + +## 生命周期 + +当前接口提供: + +- [Bind](Bind.md) +- [Unbind](Unbind.md) +- [Shutdown](Shutdown.md) +- [GetNativeHandle](GetNativeHandle.md) + +通常它由 [RHIDevice](../RHIDevice/RHIDevice.md) 创建,并以裸指针形式返回。使用完成后应显式 `Shutdown()` 再 `delete`。 ## 公共方法 -| 方法 | 描述 | -|------|------| -| [~RHIPipelineState()](Destructor.md) | 销毁对象并释放相关资源。 | -| [SetInputLayout](SetInputLayout.md) | 设置相关状态或配置。 | -| [SetRasterizerState](SetRasterizerState.md) | 设置相关状态或配置。 | -| [SetBlendState](SetBlendState.md) | 设置相关状态或配置。 | -| [SetDepthStencilState](SetDepthStencilState.md) | 设置相关状态或配置。 | -| [SetTopology](SetTopology.md) | 设置相关状态或配置。 | -| [SetRenderTargetFormats](SetRenderTargetFormats.md) | 设置相关状态或配置。 | -| [SetSampleCount](SetSampleCount.md) | 设置相关状态或配置。 | -| [SetComputeShader](SetComputeShader.md) | 设置相关状态或配置。 | -| [GetRasterizerState](GetRasterizerState.md) | 获取相关状态或对象。 | -| [GetBlendState](GetBlendState.md) | 获取相关状态或对象。 | -| [GetDepthStencilState](GetDepthStencilState.md) | 获取相关状态或对象。 | -| [GetInputLayout](GetInputLayout.md) | 获取相关状态或对象。 | -| [GetHash](GetHash.md) | 获取相关状态或对象。 | -| [GetComputeShader](GetComputeShader.md) | 获取相关状态或对象。 | -| [HasComputeShader](HasComputeShader.md) | 判断是否具备指定状态或能力。 | -| [IsValid](IsValid.md) | 查询当前状态。 | -| [EnsureValid](EnsureValid.md) | 公开方法,详见头文件声明。 | -| [Shutdown](Shutdown.md) | 关闭并清理内部状态。 | -| [Bind](Bind.md) | 公开方法,详见头文件声明。 | -| [Unbind](Unbind.md) | 公开方法,详见头文件声明。 | -| [GetNativeHandle](GetNativeHandle.md) | 获取相关状态或对象。 | -| [GetType](GetType.md) | 获取相关状态或对象。 | +- [SetInputLayout](SetInputLayout.md) +- [SetRasterizerState](SetRasterizerState.md) +- [SetBlendState](SetBlendState.md) +- [SetDepthStencilState](SetDepthStencilState.md) +- [SetTopology](SetTopology.md) +- [SetRenderTargetFormats](SetRenderTargetFormats.md) +- [SetSampleCount](SetSampleCount.md) +- [SetComputeShader](SetComputeShader.md) +- [GetRasterizerState](GetRasterizerState.md) +- [GetBlendState](GetBlendState.md) +- [GetDepthStencilState](GetDepthStencilState.md) +- [GetInputLayout](GetInputLayout.md) +- [GetHash](GetHash.md) +- [GetComputeShader](GetComputeShader.md) +- [HasComputeShader](HasComputeShader.md) +- [IsValid](IsValid.md) +- [EnsureValid](EnsureValid.md) +- [Shutdown](Shutdown.md) +- [Bind](Bind.md) +- [Unbind](Unbind.md) +- [GetNativeHandle](GetNativeHandle.md) +- [GetType](GetType.md) ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHITypes](../RHITypes/RHITypes.md) +- [RHICommandList](../RHICommandList/RHICommandList.md) +- [RHIPipelineLayout](../RHIPipelineLayout/RHIPipelineLayout.md) +- [RHIShader](../RHIShader/RHIShader.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHIRenderPass/RHIRenderPass.md b/docs/api/XCEngine/RHI/RHIRenderPass/RHIRenderPass.md index 262725bb..faa0415e 100644 --- a/docs/api/XCEngine/RHI/RHIRenderPass/RHIRenderPass.md +++ b/docs/api/XCEngine/RHI/RHIRenderPass/RHIRenderPass.md @@ -6,32 +6,102 @@ **头文件**: `XCEngine/RHI/RHIRenderPass.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHIRenderPass` public API。 +**描述**: 抽象 render pass 对象,负责描述颜色附件和深度模板附件的 load/store 行为与 clear 值。 -## 概述 +## 角色概述 -`RHIRenderPass.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHIRenderPass` 是当前 `RHI` 抽象层里对“本次渲染通道要操作哪些附件、以什么方式进入和离开”的统一表达。 -## 声明概览 +它由两个部分组成: -| 声明 | 类型 | 说明 | -|------|------|------| -| `AttachmentDesc` | `struct` | 头文件中的公开声明。 | -| `RHIRenderPass` | `class` | 头文件中的公开声明。 | +- `AttachmentDesc` +- `RHIRenderPass` + +其中 `AttachmentDesc` 是最关键的输入描述。 + +## `AttachmentDesc` 表达什么 + +`AttachmentDesc` 当前包含: + +- `format` +- `loadOp` +- `storeOp` +- `stencilLoadOp` +- `stencilStoreOp` +- `clearValue` + +这说明当前 render pass 抽象主要关注的是附件格式、load/store 语义和 clear 参数,而不是更复杂的 subpass、dependency 或 transient attachment 模型。 + +对当前引擎阶段来说,这是一种合理且务实的收敛方式: + +- 足够支撑基本颜色/深度通道 +- 能和 command list 的 `BeginRenderPass()` 对接 +- 不需要立刻把 Vulkan / D3D12 的全部 render pass 复杂度暴露出来 + +## 当前创建与使用路径 + +虽然 `RHIRenderPass` 自己暴露了 [Initialize](Initialize.md),但在真实使用里,上层更常见的入口是: + +- [RHIDevice::CreateRenderPass](../RHIDevice/CreateRenderPass.md) + +现有测试和 command list 用例基本都遵循这个路径: + +1. 构造一个或多个 `AttachmentDesc` +2. 通过 `RHIDevice` 创建 `RHIRenderPass` +3. 创建配套 `RHIFramebuffer` +4. 在 [RHICommandList](../RHICommandList/RHICommandList.md) 上 `BeginRenderPass()` / `EndRenderPass()` + +## 当前能力边界 + +按头文件和测试来看,当前 `RHIRenderPass` 能稳定表达的是: + +- 纯颜色附件 pass +- 颜色 + 深度模板 pass +- 多个颜色附件 +- 可选深度模板附件 + +但它没有直接表达: + +- subpass +- attachment dependency +- transient attachment / input attachment +- 更复杂的 render graph 级资源声明 + +这说明它更像当前阶段的“基础渲染通道描述”,而不是最终的现代 render graph 节点模型。 + +## 测试体现出的现实语义 + +`tests/RHI/unit/test_render_pass.cpp` 给出了几个重要信号: + +- `GetColorAttachmentCount()` 会反映创建时的颜色附件数量 +- `GetColorAttachments()` 可以拿回附件描述 +- 深度模板附件可以为 `nullptr` +- `Shutdown()` 可以安全调用两次 +- `GetNativeHandle()` 当前测试接受 `nullptr` + +最后一点很重要:不要假设 `RHIRenderPass` 一定会提供可直接操作的 native handle。至少在当前抽象层里,这个返回值并不是用户级主路径依赖点。 + +## 生命周期 + +`RHIRenderPass` 通常由 [RHIDevice](../RHIDevice/RHIDevice.md) 创建,并和 [RHIFramebuffer](../RHIFramebuffer/RHIFramebuffer.md) 配套使用。使用完成后应显式: + +1. [Shutdown](Shutdown.md) +2. `delete` ## 公共方法 -| 方法 | 描述 | -|------|------| -| [~RHIRenderPass()](Destructor.md) | 销毁对象并释放相关资源。 | -| [Shutdown](Shutdown.md) | 关闭并清理内部状态。 | -| [Initialize](Initialize.md) | 初始化内部状态。 | -| [GetColorAttachmentCount](GetColorAttachmentCount.md) | 获取相关状态或对象。 | -| [GetColorAttachments](GetColorAttachments.md) | 获取相关状态或对象。 | -| [GetDepthStencilAttachment](GetDepthStencilAttachment.md) | 获取相关状态或对象。 | -| [GetNativeHandle](GetNativeHandle.md) | 获取相关状态或对象。 | +- [Initialize](Initialize.md) +- [Shutdown](Shutdown.md) +- [GetColorAttachmentCount](GetColorAttachmentCount.md) +- [GetColorAttachments](GetColorAttachments.md) +- [GetDepthStencilAttachment](GetDepthStencilAttachment.md) +- [GetNativeHandle](GetNativeHandle.md) ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [RHICommandList](../RHICommandList/RHICommandList.md) +- [RHIFramebuffer](../RHIFramebuffer/RHIFramebuffer.md) +- [RHITypes](../RHITypes/RHITypes.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHIResource/RHIResource.md b/docs/api/XCEngine/RHI/RHIResource/RHIResource.md index 22dff5f6..c1a72fc8 100644 --- a/docs/api/XCEngine/RHI/RHIResource/RHIResource.md +++ b/docs/api/XCEngine/RHI/RHIResource/RHIResource.md @@ -6,28 +6,78 @@ **头文件**: `XCEngine/RHI/RHIResource.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHIResource` public API。 +**描述**: 资源基类抽象,提供 native handle 暴露口和统一的资源状态读写接口。 -## 概述 +## 角色概述 -`RHIResource.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHIResource` 是当前抽象层里最小的一层资源基类。它只关心两件事: -## 声明概览 +- 这个资源背后的 native object 是什么 +- 当前抽象层认为它处于什么 `ResourceStates` -| 声明 | 类型 | 说明 | -|------|------|------| -| `RHIResource` | `class` | 头文件中的公开声明。 | +这意味着它不是一个可直接独立使用的“完整资源对象”,而是为更具体的资源类型打底: -## 公共方法 +- [RHIBuffer](../RHIBuffer/RHIBuffer.md) +- [RHITexture](../RHITexture/RHITexture.md) -| 方法 | 描述 | -|------|------| -| [~RHIResource()](Destructor.md) | 销毁对象并释放相关资源。 | -| [GetNativeHandle](GetNativeHandle.md) | 获取相关状态或对象。 | -| [GetState](GetState.md) | 获取相关状态或对象。 | -| [SetState](SetState.md) | 设置相关状态或配置。 | +## 为什么只有这三个接口 + +当前 `RHIResource` 只暴露: + +- [GetNativeHandle](GetNativeHandle.md) +- [GetState](GetState.md) +- [SetState](SetState.md) + +这种最小化接口设计是合理的,因为不同资源类型真正关心的元数据差异很大: + +- buffer 关心大小、stride、buffer type +- texture 关心宽高深、mip、format、texture type + +把这些都塞进基类反而会让抽象变脆。 + +## `ResourceStates` 的意义 + +`GetState()` / `SetState()` 使用的是 [RHIEnums](../RHIEnums/RHIEnums.md) 中的 `ResourceStates`。 + +这套状态值的意义不是“完全等同某个后端原生状态枚举”,而是当前引擎抽象层用于追踪资源读写阶段和 barrier 目标的统一语义。比如: + +- `Common` +- `VertexAndConstantBuffer` +- `RenderTarget` +- `PixelShaderResource` +- `CopyDst` + +在实际使用里,这些状态通常会和 [RHICommandList](../RHICommandList/RHICommandList.md) 的 barrier、copy、render target 绑定路径一起使用。 + +## 需要注意的现实边界 + +### 1. 资源状态是抽象层跟踪值,不等于所有后端都原生保存同样的状态对象 + +例如 Vulkan 路径会把它用于 layout / access / stage 的转换推导;OpenGL 路径则更多把它作为引擎侧状态记录。 + +### 2. 很多上层调用并不直接拿 `RHIResource*` + +虽然 `RHIResource` 是 buffer / texture 的基类,但当前很多绑定和 barrier 路径其实更常拿的是 [RHIResourceView](../RHIResourceView/RHIResourceView.md)。这说明当前抽象层在“资源本体”和“资源视图”之间更偏视图驱动。 + +### 3. 基类没有 `Shutdown()` + +`RHIResource` 没有定义统一的生命周期接口;关闭和释放由具体资源类型自己负责。这也是为什么不能把基类当成完整资源对象来用。 + +## 怎么理解 `GetNativeHandle()` + +`GetNativeHandle()` 明确是一个后端逃逸口: + +- D3D12 下可能是 `ID3D12Resource*` +- OpenGL 下可能是纹理 / buffer 的 GL object 相关句柄 +- Vulkan 下可能是 `VkImage` / `VkBuffer` 一类 native handle + +调用方不能把它当成跨后端稳定接口,只能在明确知道当前后端类型时使用。 ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHIBuffer](../RHIBuffer/RHIBuffer.md) +- [RHITexture](../RHITexture/RHITexture.md) +- [RHIResourceView](../RHIResourceView/RHIResourceView.md) +- [RHICommandList](../RHICommandList/RHICommandList.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHIResourceView/RHIResourceView.md b/docs/api/XCEngine/RHI/RHIResourceView/RHIResourceView.md index fdd169d8..b9dca2ab 100644 --- a/docs/api/XCEngine/RHI/RHIResourceView/RHIResourceView.md +++ b/docs/api/XCEngine/RHI/RHIResourceView/RHIResourceView.md @@ -2,42 +2,137 @@ **命名空间**: `XCEngine::RHI` -**类型**: `class (abstract)` +**类型**: `class hierarchy` **头文件**: `XCEngine/RHI/RHIResourceView.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHIResourceView` public API。 +**描述**: 资源视图抽象层,用统一接口表达 render target、depth stencil、shader resource、unordered access 以及 buffer 视图等绑定对象。 -## 概述 +## 角色概述 -`RHIResourceView.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHIResourceView` 代表“如何把一个资源解释成某种可绑定视图”。这和 [RHIResource](../RHIResource/RHIResource.md) / [RHITexture](../RHITexture/RHITexture.md) / [RHIBuffer](../RHIBuffer/RHIBuffer.md) 的资源本体是两回事。 -## 声明概览 +这种拆分是商业引擎和现代图形 API 都非常常见的设计: -| 声明 | 类型 | 说明 | -|------|------|------| -| `RHIResourceView` | `class` | 头文件中的公开声明。 | -| `RHIVertexBufferView` | `class` | 继承自 `RHIResourceView` 的公开声明。 | -| `RHIIndexBufferView` | `class` | 继承自 `RHIResourceView` 的公开声明。 | -| `RHIRenderTargetView` | `class` | 继承自 `RHIResourceView` 的公开声明。 | -| `RHIDepthStencilView` | `class` | 继承自 `RHIResourceView` 的公开声明。 | -| `RHIShaderResourceView` | `class` | 继承自 `RHIResourceView` 的公开声明。 | -| `RHIUnorderedAccessView` | `class` | 继承自 `RHIResourceView` 的公开声明。 | -| `RHIConstantBufferView` | `class` | 继承自 `RHIResourceView` 的公开声明。 | +- 资源本体负责存储 +- 资源视图负责绑定语义 -## 公共方法 +例如同一张 texture 可能被解释为: -| 方法 | 描述 | -|------|------| -| [~RHIResourceView()](Destructor.md) | 销毁对象并释放相关资源。 | -| [Shutdown](Shutdown.md) | 关闭并清理内部状态。 | -| [GetNativeHandle](GetNativeHandle.md) | 获取相关状态或对象。 | -| [IsValid](IsValid.md) | 查询当前状态。 | -| [GetViewType](GetViewType.md) | 获取相关状态或对象。 | -| [GetDimension](GetDimension.md) | 获取相关状态或对象。 | -| [GetFormat](GetFormat.md) | 获取相关状态或对象。 | +- render target +- shader resource +- depth stencil +- unordered access + +## 当前层级 + +头文件里定义了以下层级: + +- `RHIResourceView` +- `RHIVertexBufferView` +- `RHIIndexBufferView` +- `RHIRenderTargetView` +- `RHIDepthStencilView` +- `RHIShaderResourceView` +- `RHIUnorderedAccessView` +- `RHIConstantBufferView` + +其中基础公共接口主要集中在 `RHIResourceView` 本体: + +- [Shutdown](Shutdown.md) +- [GetNativeHandle](GetNativeHandle.md) +- [IsValid](IsValid.md) +- [GetViewType](GetViewType.md) +- [GetDimension](GetDimension.md) +- [GetFormat](GetFormat.md) + +## 一个需要特别说明的现实差异 + +虽然头文件定义了更细分的子类,但当前 [RHIDevice](../RHIDevice/RHIDevice.md) 的公共工厂接口大多返回的是 `RHIResourceView*`,例如: + +- `CreateVertexBufferView()` +- `CreateIndexBufferView()` +- `CreateRenderTargetView()` +- `CreateDepthStencilView()` +- `CreateShaderResourceView()` +- `CreateUnorderedAccessView()` + +这说明当前抽象层在“类型系统上有细分层级”和“日常工厂接口以基类返回”为两套并存设计。对调用方来说,最稳妥的主路径仍然是通过: + +- `GetViewType()` +- `GetDimension()` +- `GetFormat()` + +来判断视图语义,而不是假定自己总能拿到某个强类型子类指针。 + +## 当前已经真实覆盖的视图类型 + +`tests/RHI/unit/test_views.cpp` 已经覆盖了这些创建路径: + +- render target view +- depth stencil view +- shader resource view +- unordered access view +- vertex buffer view +- index buffer view + +还覆盖了: + +- array texture 的 SRV +- cube texture 的 SRV +- 多 mip 的 DSV + +这说明当前视图系统已经在真实处理二维、数组、立方体和 buffer 视图,不是单一的纹理壳子。 + +## `RHIConstantBufferView` 的当前状态 + +这是一个很值得写清楚的点。 + +虽然 `RHIResourceView.h` 里定义了 `RHIConstantBufferView`,但当前公开的 [RHIDevice](../RHIDevice/RHIDevice.md) 接口并没有 `CreateConstantBufferView()` 工厂函数。 + +也就是说,在当前 public RHI 主路径里: + +- `CBV` 类型概念存在 +- 但常量数据绑定更多是通过 [RHIDescriptorSet](../RHIDescriptorSet/RHIDescriptorSet.md) 的 `WriteConstant()` 路径完成 + +这类“类型已经存在,但公共创建入口尚未统一开放”的情况,正是演进中抽象层常见的过渡状态。 + +## 视图与命令列表的关系 + +当前 [RHICommandList](../RHICommandList/RHICommandList.md) 和 descriptor 路径都高度依赖 view: + +- vertex/index buffer 绑定使用 buffer view +- render target / depth clear 使用相应 view +- `TransitionBarrier()` 当前接收的也是 `RHIResourceView*` + +这说明在当前抽象层里,view 不只是绑定对象,也是部分资源状态与渲染操作的实际工作单位。 + +## native handle 的语义 + +`GetNativeHandle()` 是强后端相关的: + +- D3D12 可能对应 descriptor handle / view backing data +- OpenGL 可能对应 framebuffer、texture 或 buffer 相关对象 +- Vulkan / 其他后端也会有各自实现 + +因此不能把它当成跨后端稳定格式来使用。 + +## 生命周期 + +resource view 通常由 [RHIDevice](../RHIDevice/RHIDevice.md) 创建,并以裸指针返回。使用完成后推荐: + +1. [Shutdown](Shutdown.md) +2. `delete` + +它们和资源本体的所有权是分开的;关闭 view 不等于关闭 texture / buffer 本体。 ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHIResource](../RHIResource/RHIResource.md) +- [RHIBuffer](../RHIBuffer/RHIBuffer.md) +- [RHITexture](../RHITexture/RHITexture.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [RHIDescriptorSet](../RHIDescriptorSet/RHIDescriptorSet.md) +- [RHICommandList](../RHICommandList/RHICommandList.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHISampler/RHISampler.md b/docs/api/XCEngine/RHI/RHISampler/RHISampler.md index 65651287..29279654 100644 --- a/docs/api/XCEngine/RHI/RHISampler/RHISampler.md +++ b/docs/api/XCEngine/RHI/RHISampler/RHISampler.md @@ -6,30 +6,161 @@ **头文件**: `XCEngine/RHI/RHISampler.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHISampler` public API。 +**描述**: 采样状态抽象,负责描述纹理采样时的过滤、寻址、LOD、比较采样和边框颜色等行为。 -## 概述 +## 角色概述 -`RHISampler.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHISampler` 的职责不是存储纹理数据,而是定义“如何读取纹理”。 -## 声明概览 +把 sampler 从 texture 中拆出来,是现代图形 API 和商业引擎里非常常见的设计: -| 声明 | 类型 | 说明 | -|------|------|------| -| `RHISampler` | `class` | 头文件中的公开声明。 | +- 同一张纹理可以搭配不同 sampler 反复复用 +- 过滤模式、寻址模式、比较采样等状态不必重复绑定在每张纹理上 +- descriptor set / material 系统更容易缓存和共享采样状态 + +如果从 Unity 风格理解,它更接近底层图形后端中的 sampler state,而不是高层材质检查器里随手改一个纹理导入设置那么简单。 + +## `SamplerDesc` 表达什么 + +`RHITypes.h` 里的 `SamplerDesc` 当前包含这些核心字段: + +- `filter` +- `addressU` / `addressV` / `addressW` +- `mipLodBias` +- `maxAnisotropy` +- `comparisonFunc` +- `borderColorR/G/B/A` +- `minLod` / `maxLod` + +它本质上是在用一份统一描述去覆盖: + +- 过滤策略 +- UVW 方向寻址模式 +- LOD 控制 +- 阴影图等场景下的 comparison sampling +- 边框颜色 + +## 当前推荐使用路径 + +对上层来说,当前更可靠的主路径通常是: + +1. 通过 [RHIDevice::CreateSampler](../RHIDevice/CreateSampler.md) 创建 `RHISampler` +2. 通过 [RHIDescriptorSet](../RHIDescriptorSet/RHIDescriptorSet.md) 的 `UpdateSampler()` 写入描述符集合 +3. 在绘制或 dispatch 时由 descriptor set / pipeline 绑定链路消费 + +这也是更贴近商业引擎的方式。sampler 应该被看成“资源绑定系统的一部分”,而不是总是手工即时 bind 的状态对象。 + +## 后端差异 + +### D3D12 + +当前 D3D12 路径里的 `RHISampler` 更像 `D3D12_SAMPLER_DESC` 的一个轻量包装。 + +它的几个关键事实是: + +- 创建时只缓存 `D3D12_SAMPLER_DESC` +- 当前不会单独创建一个 native GPU sampler 对象 +- [GetNativeHandle](GetNativeHandle.md) 返回的是内部 `D3D12_SAMPLER_DESC` 地址 +- [GetID](GetID.md) 当前恒为 `0` +- [Bind](Bind.md) / [Unbind](Unbind.md) 当前是 no-op + +真正把这个 sampler 变成 GPU 可见描述符的步骤,当前发生在 `D3D12DescriptorSet::UpdateSampler()` 里:那里会把 `D3D12Sampler` 里缓存的 `D3D12_SAMPLER_DESC` 写入 sampler heap。 + +所以对 D3D12 来说,`RHISampler` 当前更像“用于后续描述符写入的配置对象”,而不是可直接 bind 的 runtime object。 + +### OpenGL + +OpenGL 路径会创建真实的 GL sampler 对象: + +- `glGenSamplers` +- `glSamplerParameteri` +- `glSamplerParameterf` +- `glBindSampler` + +因此: + +- [GetID](GetID.md) 返回的是真正的 OpenGL sampler name +- [Bind](Bind.md) / [Unbind](Unbind.md) 在 OpenGL 下有实际效果 +- [GetNativeHandle](GetNativeHandle.md) 本质上是 GL sampler id 的指针化表示 + +`tests/RHI/unit/test_sampler.cpp` 还专门验证了 OpenGL 对这些状态的映射: + +- Wrap / Mirror / Border +- 线性与各向异性过滤 +- 比较采样模式 +- `minLod` / `maxLod` + +也要注意一个现实细节:当前 `OpenGLDevice::CreateSampler()` 本身没有像 `CreateShader()` 那样主动调用 `MakeContextCurrent()`。这意味着创建 sampler 时更稳妥的前提仍然是调用方已经处在有效的 OpenGL 上下文中。 + +### Vulkan + +Vulkan 路径会创建真实的 `VkSampler`: + +- [GetNativeHandle](GetNativeHandle.md) 返回 `VkSampler` 的地址 +- [Bind](Bind.md) / [Unbind](Unbind.md) 当前是 no-op +- [GetID](GetID.md) 当前恒为 `0` + +这很符合 Vulkan 的实际工作方式:sampler 不是靠即时状态绑定消费,而是通过 descriptor set 写入并由 pipeline 使用。 + +## 可移植使用建议 + +对跨后端代码来说,下面这些规则最稳妥: + +- 不要把 [GetID](GetID.md) 当作通用标识符;它只有在 OpenGL 下才有明确可用意义 +- 不要假设 [Bind](Bind.md) / [Unbind](Unbind.md) 在所有后端都有效 +- 尽量通过 descriptor set 的 `UpdateSampler()` 路径去消费 sampler +- 把 [GetNativeHandle](GetNativeHandle.md) 视为后端逃逸口,而不是统一格式的句柄 + +## 测试体现出的真实语义 + +当前单测已经覆盖: + +- 基本创建 +- `Bind()` / `Unbind()` +- `GetID()` +- `GetNativeHandle()` +- OpenGL 下 sampler 参数是否按 `SamplerDesc` 正确落地 + +但这些测试没有宣称“所有后端都必须支持即时 bind 风格”,所以文档不能把 OpenGL 的表现误写成抽象层通用保证。 + +## 生命周期 + +`RHISampler` 通常由设备创建并以裸指针返回。当前最稳妥的释放方式仍然是: + +1. [Shutdown](Shutdown.md) +2. `delete` + +关闭 sampler 不会销毁纹理本体,也不会自动更新 descriptor set 里已经写入的资源绑定关系。 + +## 线程语义 + +当前 public API 没有提供线程安全保证。从实现和图形 API 约束来看,更安全的工程规则是: + +- 在渲染线程或 RHI 线程创建和销毁 sampler +- 不要并发调用同一个 sampler 的 bind / unbind / shutdown +- 对 OpenGL 路径,创建和即时绑定都应假设存在正确的当前上下文 + +## 当前实现限制 + +- D3D12 / Vulkan 下的 [Bind](Bind.md) 与 [Unbind](Unbind.md) 当前不构成可移植工作流 +- [GetID](GetID.md) 不是跨后端稳定语义 +- OpenGL 对部分更高级 filter 族并没有一一精确映射;当前主要覆盖普通、比较和各向异性路径 +- 抽象层还没有覆盖 immutable sampler、sampler reduction mode 等更高级能力 ## 公共方法 -| 方法 | 描述 | -|------|------| -| [~RHISampler()](Destructor.md) | 销毁对象并释放相关资源。 | -| [Shutdown](Shutdown.md) | 关闭并清理内部状态。 | -| [Bind](Bind.md) | 公开方法,详见头文件声明。 | -| [Unbind](Unbind.md) | 公开方法,详见头文件声明。 | -| [GetNativeHandle](GetNativeHandle.md) | 获取相关状态或对象。 | -| [GetID](GetID.md) | 获取相关状态或对象。 | +- [Shutdown](Shutdown.md) +- [Bind](Bind.md) +- [Unbind](Unbind.md) +- [GetNativeHandle](GetNativeHandle.md) +- [GetID](GetID.md) ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [RHIDescriptorSet](../RHIDescriptorSet/RHIDescriptorSet.md) +- [RHITexture](../RHITexture/RHITexture.md) +- [RHITypes](../RHITypes/RHITypes.md) +- [RHIEnums](../RHIEnums/RHIEnums.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHIScreenshot/RHIScreenshot.md b/docs/api/XCEngine/RHI/RHIScreenshot/RHIScreenshot.md index 88c4aabe..7a30676d 100644 --- a/docs/api/XCEngine/RHI/RHIScreenshot/RHIScreenshot.md +++ b/docs/api/XCEngine/RHI/RHIScreenshot/RHIScreenshot.md @@ -6,28 +6,175 @@ **头文件**: `XCEngine/RHI/RHIScreenshot.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHIScreenshot` public API。 +**描述**: 截图辅助对象,用于把当前 swap chain back buffer 读回到 CPU 并保存为文件,主要面向调试、测试和工具场景。 -## 概述 +## 角色概述 -`RHIScreenshot.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHIScreenshot` 不是核心渲染管线对象,而是一条诊断与工具链路径。 -## 声明概览 +它解决的问题很直接: -| 声明 | 类型 | 说明 | -|------|------|------| -| `RHIScreenshot` | `class` | 头文件中的公开声明。 | +- 当前画面到底渲染出了什么 +- swap chain 在 present 前后是否正确 +- 集成测试能否把输出结果落盘 + +从定位上看,它更接近“引擎内置的轻量截图抓取辅助”,而不是面向最终玩家的完整截图系统。当前实现明显偏 debug / test 风格,而不是面向高性能运行时捕获。 + +## 创建方式 + +当前统一入口是: + +- [Create](Create.md) + +`RHIScreenshot::Create(RHIType)` 会按后端返回不同实现: + +- `D3D12` 当前始终可创建 +- `OpenGL` 取决于 `XCENGINE_SUPPORT_OPENGL` +- `Vulkan` 取决于 `XCENGINE_SUPPORT_VULKAN` +- 其他未实现后端返回 `nullptr` + +这意味着截图能力和 RHI 工厂一样,也受编译开关与后端建设状态影响。 + +## 当前主工作流 + +对上层来说,最典型的使用顺序是: + +1. 拿到有效的 [RHIDevice](../RHIDevice/RHIDevice.md) +2. 拿到有效的 [RHISwapChain](../RHISwapChain/RHISwapChain.md) +3. 调用 [Capture](Capture.md) +4. 用完后 [Shutdown](Shutdown.md) 并 `delete` + +`tests/RHI/unit/test_screenshot.cpp` 也主要围绕这条路径进行验证: + +- 可以创建截图对象 +- 可以对当前 swap chain 进行基本截图 +- `Present(0, 0)` 之后依然可以截图 + +## 当前输出行为 + +这是最需要提前告诉使用者的实现事实。 + +当前三套后端的截图实现都会把数据写成二进制 PPM,也就是 `P6` 格式: + +- 文件头写入 `P6` +- 紧接着写宽高与 `255` +- 再写 RGB 像素数据 + +这意味着: + +- 即使你把文件名写成 `.png`、`.jpg` 或其他扩展名,当前写出的内容依然是 PPM 数据 +- 当前抽象层没有提供输出格式选择、压缩、alpha 保留或 HDR 导出能力 + +## 这是同步、阻塞的调试路径 + +当前各后端实现都会显式等待 GPU / 驱动完成读回: + +- OpenGL 调用 `glFinish()` +- D3D12 提交临时命令列表并等待 fence +- Vulkan 提交复制命令并 `vkQueueWaitIdle()` + +所以 `RHIScreenshot` 现在应当被视为: + +- 调试工具路径 +- 自动化测试辅助路径 +- Editor / 开发期排障路径 + +而不是适合每帧调用的实时功能。 + +## 后端差异 + +### D3D12 + +当前 D3D12 会: + +- 创建 readback buffer +- 临时创建 command allocator / command list +- 把 back buffer 从 render target 转成 copy source +- 执行 `CopyTextureRegion` +- 再切回 render target +- 用 fence 等待 GPU 完成 +- Map readback buffer 并写出 PPM + +这条路径的关键现实约束是: + +- 当前实现假定被捕获资源能从 `D3D12_RESOURCE_STATE_RENDER_TARGET` 转到 copy source 再切回去 +- 它更偏向当前 swap chain back buffer 这种调试用途 +- 它是一次完整的同步读回流程,代价较高 + +### OpenGL + +OpenGL 路径会: + +- 显式 `MakeContextCurrent()` +- `glFinish()` +- 根据 swap chain 当前 back buffer 状态,选择直接从 `GL_BACK` 读,或者临时创建 read FBO 从 back buffer texture 读 +- 调用 `glReadPixels()` +- 逐行倒序写出文件 + +“逐行倒序写出”这一点很重要,它说明 OpenGL 路径当前会主动做一次垂直翻转,以适配 OpenGL 常见的左下角原点读取习惯。 + +### Vulkan + +Vulkan 路径会: + +- 创建 staging buffer 与 host visible 内存 +- 创建临时 command pool / command buffer +- 把 swap chain image 从 `VK_IMAGE_LAYOUT_PRESENT_SRC_KHR` 转成 `VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL` +- 执行 `vkCmdCopyImageToBuffer` +- 再切回 present layout +- 提交命令并等待 graphics queue idle +- Map staging 内存并写出 PPM + +当前 Vulkan 写文件时是按内存中的行顺序直接写出,没有像 OpenGL 那样做显式垂直翻转。 + +因此当前跨后端截图结果在“图像朝向”上不应被假定完全一致。OpenGL 路径显式翻转,而 D3D12 / Vulkan 路径当前没有这一层统一处理。 + +## 与商业引擎工作流的关系 + +商业级引擎里通常会有多层截图路径: + +- 轻量级 back buffer dump +- 离屏 render target 抓取 +- 异步 readback +- 带格式转换、压缩、UI 叠加或平台分享的最终用户截图 + +当前 `RHIScreenshot` 只覆盖了其中最基础的一层,也就是“把当前 swap chain back buffer 读回并存盘”。这对于底层 bring-up 和图形测试已经很有价值,但还远不是完整截图系统。 + +## 生命周期 + +当前三套后端的 [Shutdown](Shutdown.md) 基本都是 no-op,但仍然建议统一按接口风格调用: + +1. [Shutdown](Shutdown.md) +2. `delete` + +这样后续即使截图对象持有更多缓存资源,也不需要改调用习惯。 + +## 线程语义 + +当前接口没有声明线程安全保证。从源码行为看,更稳妥的工程规则是: + +- 在渲染线程或 RHI 线程使用 +- 调用时确保 device / swap chain 处于有效状态 +- 不要并发对同一个 swap chain 做截图和重建 + +## 当前实现限制 + +- 当前抽象接口只能抓 swap chain,不支持直接抓任意 `RHITexture` +- 只有同步读回,没有异步 capture 队列 +- 只有 PPM 输出,没有 PNG/JPG/HDR 等格式支持 +- 没有颜色空间、gamma、alpha、UI 合成等高级控制 +- 输出目录若不存在,后端会直接失败,不会自动创建目录 ## 公共方法 -| 方法 | 描述 | -|------|------| -| [~RHIScreenshot()](Destructor.md) | 销毁对象并释放相关资源。 | -| [Capture](Capture.md) | 公开方法,详见头文件声明。 | -| [Shutdown](Shutdown.md) | 关闭并清理内部状态。 | -| [Create](Create.md) | 创建新对象或资源。 | +- [Capture](Capture.md) +- [Shutdown](Shutdown.md) +- [Create](Create.md) ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [RHISwapChain](../RHISwapChain/RHISwapChain.md) +- [RHITexture](../RHITexture/RHITexture.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHIShader/RHIShader.md b/docs/api/XCEngine/RHI/RHIShader/RHIShader.md index 524d818f..8c48e8f2 100644 --- a/docs/api/XCEngine/RHI/RHIShader/RHIShader.md +++ b/docs/api/XCEngine/RHI/RHIShader/RHIShader.md @@ -6,33 +6,224 @@ **头文件**: `XCEngine/RHI/RHIShader.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHIShader` public API。 +**描述**: 单阶段 shader 抽象,负责承载编译后的 shader 代码、shader 类型信息以及可选的反射结果。 -## 概述 +## 角色概述 -`RHIShader.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHIShader` 当前表达的是“单个 shader stage 的编译产物”,而不是完整的材质系统,也不是完整的 graphics program。 -## 声明概览 +从接口形状就能看出这一点: -| 声明 | 类型 | 说明 | -|------|------|------| -| `RHIShader` | `class` | 头文件中的公开声明。 | +- 它只有一个 [GetType](GetType.md) +- [RHIPipelineState](../RHIPipelineState/RHIPipelineState.md) 的 `GraphicsPipelineDesc` 也分别持有 `vertexShader`、`fragmentShader`、`geometryShader` + +这与现代商业引擎和底层图形 API 的常见组织方式一致:shader module / bytecode 是 stage 级资源,真正的 graphics pipeline 则由多个 stage 组合而成。 + +如果从 Unity 去类比,更准确的理解不是“这等同于 Unity 的 Shader 资源”,而是“它更接近 Unity / SRP / 底层后端内部管理的单阶段编译产物”。 + +## 当前更可靠的创建路径 + +虽然 `RHIShader` 自身暴露了 [CompileFromFile](CompileFromFile.md) 和 [Compile](Compile.md),但对上层代码来说,当前更可靠的主路径通常仍然是: + +- 先构造 `ShaderCompileDesc` +- 再通过 [RHIDevice::CreateShader](../RHIDevice/CreateShader.md) 创建 + +这么做的好处是: + +- D3D12 / OpenGL / Vulkan 可以各自走最合适的预处理和编译路径 +- Vulkan 这种需要先把 GLSL 编译成 SPIR-V 的后端,逻辑会被设备层代管 +- 上层代码不必直接碰后端专属类 + +## `ShaderCompileDesc` 表达什么 + +`ShaderCompileDesc` 当前包含这些核心输入: + +- `fileName` +- `source` +- `sourceLanguage` +- `entryPoint` +- `profile` +- `macros` + +它试图提供一份统一的编译描述,但当前后端对这些字段的支持程度并不完全一致,这一点必须写清楚。 + +## 后端差异 + +### D3D12 + +D3D12 路径当前直接调用: + +- `D3DCompileFromFile` +- `D3DCompile` + +并使用: + +- `D3DCOMPILE_DEBUG` +- `D3DCOMPILE_SKIP_OPTIMIZATION` + +来生成调试友好的 bytecode。 + +这条路径的关键语义是: + +- `profile` 决定 shader stage,例如 `vs_5_0`、`ps_5_0` +- [GetNativeHandle](GetNativeHandle.md) 返回的是编译后的 `ID3DBlob*` +- `IsValid()` 本质上检查 bytecode blob 是否存在 +- [GetUniformInfos](GetUniformInfos.md) / [GetUniformInfo](GetUniformInfo.md) 通过 `D3DReflect` 反射已绑定资源 + +但也有需要明确写出的限制: + +- 当前 D3D12 代码没有把 `ShaderCompileDesc::macros` 传给 `D3DCompile*` +- 反射结果更接近“绑定资源信息”,不等于跨后端统一的高层 uniform 语义 + +### OpenGL + +OpenGL 路径支持从文件或源码编译 GLSL,但它的内部模型与 D3D12、Vulkan 都不一样。 + +当前实现会: + +- 根据 `profile`、文件后缀或源码特征推断 shader 类型 +- 忽略 `entryPoint`,因为 GLSL 当前仍默认使用 `main` +- 把单阶段源码编译并链接到一个 program object 中 + +因此: + +- [GetNativeHandle](GetNativeHandle.md) 返回的是 OpenGL program id 的指针化表示 +- 它不是独立的 GL shader object 句柄 +- [GetUniformInfos](GetUniformInfos.md) 返回的是 program active uniform 反射结果 + +这一点很重要:当前 `RHIShader` 在 OpenGL 下承载的是“单阶段 program 包装”,不是与 D3D12 bytecode 或 Vulkan shader module 完全等价的数据结构。 + +### Vulkan + +Vulkan 路径需要特别说明,因为它分成两层: + +1. `VulkanDevice::CreateShader()` 先调用 `CompileVulkanShader()` +2. `VulkanShader` 再用得到的 SPIR-V 字节创建 `VkShaderModule` + +当前 Vulkan 编译链的真实行为是: + +- 支持 GLSL 或 SPIR-V 输入 +- 当前不支持 HLSL source 直接走 Vulkan backend +- 如果是 GLSL,会先编译成 SPIR-V +- `macros` 会被注入 GLSL 源码编译路径 +- `entryPoint` 默认为 `main` + +而 `VulkanShader` 对象本身的 `Compile()` 实际上要求输入已经是 SPIR-V 字节流。 + +当前 Vulkan 还有一个很关键的现实边界: + +- `GetUniformInfos()` 目前返回空列表 +- `GetUniformInfo()` 只会在内部 `m_uniformInfos` 被填充时才有结果 +- 但当前实现并没有做统一反射填充 + +所以 Vulkan 下的 shader 反射能力目前还远不如 D3D12 / OpenGL 成熟,不能把“接口上有反射方法”误写成“所有后端都已有完整反射数据”。 + +## `GetType()` 与单阶段语义 + +`GetType()` 当前返回的是单阶段类型,例如: + +- `Vertex` +- `Fragment` +- `Geometry` +- `Compute` + +测试已经覆盖了 vertex 和 fragment 的主路径。这说明当前 `RHIShader` 的单位就是“一个 stage”,而不是“一个完整 graphics shader program”。 + +## 反射信息应该如何理解 + +`RHIShader::UniformInfo` 当前包含: + +- `name` +- `bindPoint` +- `size` +- `type` +- `arraySize` +- `offset` + +但这些字段的语义并不是跨后端完全一致的稳定 ABI。 + +当前更安全的理解是: + +- D3D12:更偏向绑定资源反射 +- OpenGL:更偏向 active uniform / program 反射 +- Vulkan:当前基本没有统一反射数据 + +因此这套接口更适合: + +- 调试 +- 文档核验 +- 工具辅助 + +而不适合被当成跨后端材质系统的唯一真相来源。 + +## 测试体现出的真实语义 + +`tests/RHI/unit/test_shader.cpp` 当前已经验证: + +- 空描述符创建失败 +- 从文件或源码创建 vertex / fragment shader +- 创建成功后 `IsValid()` 为真 +- `GetType()` 与预期 stage 一致 +- `GetNativeHandle()` 非空 +- `Shutdown()` 会让对象失效 +- 缺失文件会导致创建失败 + +也就是说,当前 shader 抽象至少已经覆盖了真实可用的编译与有效性判断路径,而不是模板化占位页。 + +## 生命周期 + +`RHIShader` 通常通过 [RHIDevice](../RHIDevice/RHIDevice.md) 创建,并以裸指针返回。当前最稳妥的释放方式仍然是: + +1. [Shutdown](Shutdown.md) +2. `delete` + +`Shutdown()` 后: + +- D3D12 会释放 bytecode blob +- OpenGL 会删除 program +- Vulkan 会销毁 shader module + +## 线程语义 + +当前 public API 没有提供线程安全保证。从源码可以得到更保守的工程结论: + +- shader 创建、编译、销毁应视为显式的 RHI 线程 / 渲染线程操作 +- OpenGL 编译依赖有效当前上下文 +- 不要并发读写同一个 shader 实例 + +## 设计理解 + +把 `RHIShader` 保持为单阶段对象,是一种很务实的底层渲染架构选择: + +- shader 资产可以独立编译和缓存 +- graphics / compute pipeline 可以各自组合需要的 stage +- 反射、调试、编译错误处理不会全部绑死在 pipeline state 上 + +这种设计比“一个大而全的万能 shader 资源”更接近底层渲染后端的真实结构,也更便于后续引入 pipeline cache、shader variant、离线编译等能力。 + +## 当前实现限制 + +- `ShaderCompileDesc` 的跨后端支持并不对齐,尤其是 `macros`、`entryPoint`、`sourceLanguage` +- 当前没有统一的错误对象;失败通常体现在返回 `nullptr` 或 `false` +- OpenGL / D3D12 / Vulkan 的 native handle 完全不是同一类对象 +- Vulkan 反射当前很弱,不能依赖 [GetUniformInfos](GetUniformInfos.md) 做统一工具链 ## 公共方法 -| 方法 | 描述 | -|------|------| -| [~RHIShader()](Destructor.md) | 销毁对象并释放相关资源。 | -| [CompileFromFile](CompileFromFile.md) | 公开方法,详见头文件声明。 | -| [Compile](Compile.md) | 公开方法,详见头文件声明。 | -| [GetType](GetType.md) | 获取相关状态或对象。 | -| [IsValid](IsValid.md) | 查询当前状态。 | -| [GetNativeHandle](GetNativeHandle.md) | 获取相关状态或对象。 | -| [Shutdown](Shutdown.md) | 关闭并清理内部状态。 | -| [GetUniformInfos](GetUniformInfos.md) | 获取相关状态或对象。 | -| [GetUniformInfo](GetUniformInfo.md) | 获取相关状态或对象。 | +- [CompileFromFile](CompileFromFile.md) +- [Compile](Compile.md) +- [GetType](GetType.md) +- [IsValid](IsValid.md) +- [GetNativeHandle](GetNativeHandle.md) +- [Shutdown](Shutdown.md) +- [GetUniformInfos](GetUniformInfos.md) +- [GetUniformInfo](GetUniformInfo.md) ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [RHIPipelineState](../RHIPipelineState/RHIPipelineState.md) +- [RHITypes](../RHITypes/RHITypes.md) +- [RHIEnums](../RHIEnums/RHIEnums.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHISwapChain/RHISwapChain.md b/docs/api/XCEngine/RHI/RHISwapChain/RHISwapChain.md index 2e6102f7..147e01ac 100644 --- a/docs/api/XCEngine/RHI/RHISwapChain/RHISwapChain.md +++ b/docs/api/XCEngine/RHI/RHISwapChain/RHISwapChain.md @@ -6,31 +6,119 @@ **头文件**: `XCEngine/RHI/RHISwapChain.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHISwapChain` public API。 +**描述**: 窗口展示交换链接口,负责管理 back buffer、present 和 resize,是渲染输出到窗口的最终桥接层。 -## 概述 +## 角色概述 -`RHISwapChain.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHISwapChain` 是 `RHI` 抽象层里最接近“屏幕展示”的对象。它把: -## 声明概览 +- 窗口句柄 +- 呈现队列 +- back buffer 纹理 +- present / resize 行为 -| 声明 | 类型 | 说明 | -|------|------|------| -| `RHISwapChain` | `class` | 头文件中的公开声明。 | +收敛成一套统一接口。 -## 公共方法 +如果从商用引擎视角理解,它就是 renderer 最后把颜色输出送到窗口的那道门。 -| 方法 | 描述 | -|------|------| -| [~RHISwapChain()](Destructor.md) | 销毁对象并释放相关资源。 | -| [Shutdown](Shutdown.md) | 关闭并清理内部状态。 | -| [GetCurrentBackBufferIndex](GetCurrentBackBufferIndex.md) | 获取相关状态或对象。 | -| [GetCurrentBackBuffer](GetCurrentBackBuffer.md) | 获取相关状态或对象。 | -| [Present](Present.md) | 公开方法,详见头文件声明。 | -| [Resize](Resize.md) | 公开方法,详见头文件声明。 | -| [GetNativeHandle](GetNativeHandle.md) | 获取相关状态或对象。 | +## 创建方式 + +swapchain 通常由 [RHIDevice](../RHIDevice/RHIDevice.md) 通过 [CreateSwapChain](../RHIDevice/CreateSwapChain.md) 创建,输入参数来自 [RHITypes](../RHITypes/RHITypes.md) 中的 `SwapChainDesc`,同时还需要一个 present queue。 + +## 当前接口语义 + +- [GetCurrentBackBufferIndex](GetCurrentBackBufferIndex.md) +- [GetCurrentBackBuffer](GetCurrentBackBuffer.md) +- [Present](Present.md) +- [Resize](Resize.md) +- [GetNativeHandle](GetNativeHandle.md) +- [Shutdown](Shutdown.md) + +## 最关键的所有权规则 + +`GetCurrentBackBuffer()` 返回的是 `RHITexture*`,但这个纹理不是调用方拥有的独立对象。 + +按当前后端实现: + +- D3D12 返回内部 `m_backBuffers` 向量中元素的地址 +- OpenGL 返回 `m_backBufferTexture` +- Vulkan 返回内部 `unique_ptr` 持有对象的裸指针 + +因此这里有一个必须写死的规则: + +- 通过 swapchain 取得的 back buffer 由 swapchain 自己持有 +- 调用方不应该对这个返回值执行 `Shutdown()` 或 `delete` + +## `GetCurrentBackBufferIndex()` 的可移植语义 + +这个索引在不同后端上的行为并不完全一致: + +- D3D12 / Vulkan 会跟随当前交换链图像轮换 +- OpenGL 当前实现始终返回 `0` + +所以最安全的理解是: + +- 它是“当前展示图像的后端信息” +- 不是跨所有后端都等价的 frame slot 语义 + +## `Present()` / `Resize()` 的现实边界 + +### `Present()` + +测试已经覆盖: + +- `Present(0, 0)` +- 带 `syncInterval` 的 present +- 连续多次 present + +但是否真正使用 `syncInterval` / `flags` 取决于后端。比如当前 OpenGL 实现会忽略这两个参数。 + +### `Resize()` + +`Resize()` 可能导致内部 back buffer 资源被重建或重新解释。对调用方来说,最安全的工程规则是: + +- 不要在 `Resize()` 后继续长期持有旧的 back buffer 指针 +- 需要时重新调用 `GetCurrentBackBuffer()` + +## 测试体现出的真实语义 + +`tests/RHI/unit/test_swap_chain.cpp` 已经验证了: + +- 创建成功 +- 当前 back buffer index 落在有效范围内 +- `GetCurrentBackBuffer()` 非空 +- 可以 resize +- 可以反复 present +- 支持 2-buffer 与 3-buffer 路径 +- `Shutdown()` 可重复调用 + +这说明 swapchain 在当前抽象层中已经是稳定主路径对象,而不是仅供单一后端调试。 + +## `GetNativeHandle()` 的后端差异 + +这个接口是非常典型的后端逃逸口: + +- D3D12 返回 DXGI swapchain 对象 +- OpenGL 当前返回窗口句柄 +- Vulkan 返回 `VkSwapchainKHR` + +因此不能把它当成统一结构使用。 + +## 生命周期 + +普通使用方式是: + +1. 通过 [RHIDevice](../RHIDevice/RHIDevice.md) 创建 swapchain +2. 读取当前 back buffer,并围绕它创建 view / framebuffer 等 +3. 录制并提交命令 +4. 调用 [Present](Present.md) +5. 结束时 [Shutdown](Shutdown.md) 并 `delete` ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [RHITexture](../RHITexture/RHITexture.md) +- [RHICommandQueue](../RHICommandQueue/RHICommandQueue.md) +- [RHIFramebuffer](../RHIFramebuffer/RHIFramebuffer.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHITexture/RHITexture.md b/docs/api/XCEngine/RHI/RHITexture/RHITexture.md index 01d2dce9..8035d05e 100644 --- a/docs/api/XCEngine/RHI/RHITexture/RHITexture.md +++ b/docs/api/XCEngine/RHI/RHITexture/RHITexture.md @@ -6,37 +6,117 @@ **头文件**: `XCEngine/RHI/RHITexture.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHITexture` public API。 +**描述**: 抽象纹理资源接口,负责暴露尺寸、格式、纹理类型、资源状态、调试命名和 native handle。 -## 概述 +## 角色概述 -`RHITexture.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHITexture` 是 [RHIResource](../RHIResource/RHIResource.md) 的另一类核心具体资源。它既用于普通纹理资源,也用于 render target、depth texture、swapchain back buffer 这类图形输出资源。 -## 声明概览 +和很多成熟引擎类似,当前抽象层把“纹理是什么”与“纹理怎么被绑定/解释”分开处理: -| 声明 | 类型 | 说明 | -|------|------|------| -| `RHITexture` | `class` | 继承自 `RHIResource` 的公开声明。 | +- `RHITexture` 代表资源本体 +- [RHIResourceView](../RHIResourceView/RHIResourceView.md) 代表对纹理的不同视图解释 -## 公共方法 +## 创建方式 -| 方法 | 描述 | -|------|------| -| [~RHITexture()](Destructor.md) | 销毁对象并释放相关资源。 | -| [GetWidth](GetWidth.md) | 获取相关状态或对象。 | -| [GetHeight](GetHeight.md) | 获取相关状态或对象。 | -| [GetDepth](GetDepth.md) | 获取相关状态或对象。 | -| [GetMipLevels](GetMipLevels.md) | 获取相关状态或对象。 | -| [GetFormat](GetFormat.md) | 获取相关状态或对象。 | -| [GetTextureType](GetTextureType.md) | 获取相关状态或对象。 | -| [GetState](GetState.md) | 获取相关状态或对象。 | -| [SetState](SetState.md) | 设置相关状态或配置。 | -| [GetNativeHandle](GetNativeHandle.md) | 获取相关状态或对象。 | -| [GetName](GetName.md) | 获取相关状态或对象。 | -| [SetName](SetName.md) | 设置相关状态或配置。 | -| [Shutdown](Shutdown.md) | 关闭并清理内部状态。 | +`RHITexture` 通常由 [RHIDevice](../RHIDevice/RHIDevice.md) 通过以下重载创建: + +- [CreateTexture](../RHIDevice/CreateTexture.md) +- [CreateTexture](../RHIDevice/CreateTexture.md) 的带初始数据重载 + +创建描述来自 [RHITypes](../RHITypes/RHITypes.md) 中的 `TextureDesc`。 + +## 当前接口能直接告诉你什么 + +- [GetWidth](GetWidth.md) +- [GetHeight](GetHeight.md) +- [GetDepth](GetDepth.md) +- [GetMipLevels](GetMipLevels.md) +- [GetFormat](GetFormat.md) +- [GetTextureType](GetTextureType.md) +- [GetState](GetState.md) +- [SetState](SetState.md) +- [GetNativeHandle](GetNativeHandle.md) +- [GetName](GetName.md) +- [SetName](SetName.md) +- [Shutdown](Shutdown.md) + +## 当前已经覆盖到的纹理类型 + +`tests/RHI/unit/test_texture.cpp` 已经验证了多个纹理形态: + +- `Texture1D` +- `Texture2D` +- `Texture3D` +- `Texture2DArray` +- `TextureCube` +- `TextureCubeArray` + +同时也覆盖了: + +- 多 mip 级 +- 多种格式 +- 多采样创建路径 + +这说明当前 `RHITexture` 已经不是“只有 2D RGBA8”那种早期占位资源抽象。 + +## 状态语义 + +和 buffer 一样,texture 也维护 [ResourceStates](../RHIEnums/RHIEnums.md): + +- `Common` +- `RenderTarget` +- `PixelShaderResource` +- `CopyDst` +- `DepthWrite` + +测试明确覆盖了多次状态切换,因此这里的状态不是死字段,而是当前引擎真实依赖的资源跟踪信息。它会和 [RHICommandList](../RHICommandList/RHICommandList.md) 的 barrier、clear、copy 路径发生关系。 + +## 需要注意的接口边界 + +### 1. 不是所有创建信息都能从对象接口直接读回 + +虽然 `TextureDesc` 里有: + +- `arraySize` +- `sampleCount` +- `sampleQuality` +- `flags` + +但 `RHITexture` 公共接口并没有提供这些字段的直接查询方法。当前文档不能假设对象页能完整还原所有创建描述。 + +### 2. 初始数据上传发生在设备创建阶段 + +带 `initialData` 的上传路径属于 `RHIDevice::CreateTexture()` 重载,不属于 `RHITexture` 对象自身的后续方法。 + +### 3. swapchain back buffer 也是 `RHITexture*` + +但通过 [RHISwapChain](../RHISwapChain/RHISwapChain.md) 取回的 back buffer 不是由调用方拥有的独立纹理对象,不能按普通 `CreateTexture()` 的产物去 `delete`。 + +## 测试体现出的真实语义 + +当前测试已经证明: + +- 创建成功后可以查询宽高深、mip、格式、纹理类型 +- `GetState()` / `SetState()` 可多次切换 +- `SetName()` / `GetName()` 可用于调试命名 +- `GetNativeHandle()` 创建成功后通常非空 +- `Shutdown()` 可重复调用 + +## 生命周期 + +普通 `RHITexture` 由 [RHIDevice](../RHIDevice/RHIDevice.md) 创建并返回裸指针。使用完成后推荐: + +1. [Shutdown](Shutdown.md) +2. `delete` + +唯一需要特别区分的是 swapchain back buffer,它由 swapchain 持有,不应由调用方释放。 ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHIResource](../RHIResource/RHIResource.md) +- [RHIResourceView](../RHIResourceView/RHIResourceView.md) +- [RHISwapChain](../RHISwapChain/RHISwapChain.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/RHITypes/RHITypes.md b/docs/api/XCEngine/RHI/RHITypes/RHITypes.md index 055c05e9..e48f34aa 100644 --- a/docs/api/XCEngine/RHI/RHITypes/RHITypes.md +++ b/docs/api/XCEngine/RHI/RHITypes/RHITypes.md @@ -2,79 +2,154 @@ **命名空间**: `XCEngine::RHI` -**类型**: `struct` +**类型**: `header collection` **头文件**: `XCEngine/RHI/RHITypes.h` -**描述**: 定义 `XCEngine/RHI` 子目录中的 `RHITypes` public API。 +**描述**: 提供跨后端共享的描述符、辅助结构和设备信息结构,是 `RHI` 抽象层的公共数据语言。 -## 概述 +## 这不是一个单独的“类型” -`RHITypes.h` 是 `XCEngine/RHI` 子目录 下的 public header,当前页面作为平行目录中的 canonical 总览,用于汇总该头文件暴露的主要声明。 +`RHITypes.h` 并不声明一个叫 `RHITypes` 的运行时对象。它更准确的定位是:`RHI` 模块的公共描述符头文件集合。 -## 声明概览 +几乎所有核心接口都会依赖它: -| 声明 | 类型 | 说明 | -|------|------|------| -| `Viewport` | `struct` | 头文件中的公开声明。 | -| `Rect` | `struct` | 头文件中的公开声明。 | -| `Color` | `struct` | 头文件中的公开声明。 | -| `ClearValue` | `struct` | 头文件中的公开声明。 | -| `ShaderCompileMacro` | `struct` | 头文件中的公开声明。 | -| `ShaderCompileDesc` | `struct` | 头文件中的公开声明。 | -| `InputElementDesc` | `struct` | 头文件中的公开声明。 | -| `InputLayoutDesc` | `struct` | 头文件中的公开声明。 | -| `VertexBufferBinding` | `struct` | 头文件中的公开声明。 | -| `TextureCopyLocation` | `struct` | 头文件中的公开声明。 | -| `DescriptorHandle` | `struct` | 头文件中的公开声明。 | -| `GPUDescriptorHandle` | `struct` | 头文件中的公开声明。 | -| `CPUDescriptorHandle` | `struct` | 头文件中的公开声明。 | -| `SubresourceRange` | `struct` | 头文件中的公开声明。 | -| `TextureDesc` | `struct` | 头文件中的公开声明。 | -| `BufferDesc` | `struct` | 头文件中的公开声明。 | -| `RenderTargetDesc` | `struct` | 头文件中的公开声明。 | -| `DepthStencilDesc` | `struct` | 头文件中的公开声明。 | -| `DescriptorHeapDesc` | `struct` | 头文件中的公开声明。 | -| `CommandQueueDesc` | `struct` | 头文件中的公开声明。 | -| `CommandListDesc` | `struct` | 头文件中的公开声明。 | -| `CommandAllocatorDesc` | `struct` | 头文件中的公开声明。 | -| `FenceDesc` | `struct` | 头文件中的公开声明。 | -| `QueryHeapDesc` | `struct` | 头文件中的公开声明。 | -| `SamplerDesc` | `struct` | 头文件中的公开声明。 | -| `SwapChainDesc` | `struct` | 头文件中的公开声明。 | -| `RenderTargetViewDesc` | `struct` | 头文件中的公开声明。 | -| `DepthStencilViewDesc` | `struct` | 头文件中的公开声明。 | -| `ShaderResourceViewDesc` | `struct` | 头文件中的公开声明。 | -| `ConstantBufferViewDesc` | `struct` | 头文件中的公开声明。 | -| `UnorderedAccessViewDesc` | `struct` | 头文件中的公开声明。 | -| `RootSignatureDesc` | `struct` | 头文件中的公开声明。 | -| `StencilOpDesc` | `struct` | 头文件中的公开声明。 | -| `DepthStencilStateDesc` | `struct` | 头文件中的公开声明。 | -| `BlendDesc` | `struct` | 头文件中的公开声明。 | -| `RasterizerDesc` | `struct` | 头文件中的公开声明。 | -| `PipelineStateHash` | `struct` | 头文件中的公开声明。 | -| `GraphicsPipelineDesc` | `struct` | 头文件中的公开声明。 | -| `RHIDeviceDesc` | `struct` | 头文件中的公开声明。 | -| `RHIDeviceInfo` | `struct` | 头文件中的公开声明。 | -| `RHIRenderPassDesc` | `struct` | 头文件中的公开声明。 | -| `DescriptorSetLayoutBinding` | `struct` | 头文件中的公开声明。 | -| `DescriptorSetLayoutDesc` | `struct` | 头文件中的公开声明。 | -| `RHIPipelineLayoutDesc` | `struct` | 头文件中的公开声明。 | -| `ResourceViewDesc` | `struct` | 头文件中的公开声明。 | -| `DescriptorPoolDesc` | `struct` | 头文件中的公开声明。 | +- [RHIDevice](../RHIDevice/RHIDevice.md) 的创建参数来自这里 +- [RHICommandList](../RHICommandList/RHICommandList.md) 的 viewport / rect / clear value 来自这里 +- [RHIPipelineState](../RHIPipelineState/RHIPipelineState.md) 的状态描述来自这里 +- descriptor set / pipeline layout / resource view 的布局语言也来自这里 -## 结构体成员 +理解这页的关键不是死记字段,而是先理解这些结构被分成了哪些“语义家族”。 -| 成员 | 类型 | 描述 | 默认值 | -|------|------|------|--------| -| `topLeftX` | `float` | 结构体公开字段。 | - | -| `topLeftY` | `float` | 结构体公开字段。 | - | -| `width` | `float` | 结构体公开字段。 | - | -| `height` | `float` | 结构体公开字段。 | - | -| `minDepth` | `float` | 结构体公开字段。 | - | -| `maxDepth` | `float` | 结构体公开字段。 | - | +## 类型家族 + +### 视口、区域与 clear 值 + +- `Viewport` +- `Rect` +- `Color` +- `ClearValue` + +这些是 command list 和 render pass 最基础的辅助数据结构。 + +### shader 编译描述 + +- `ShaderCompileMacro` +- `ShaderCompileDesc` + +这里可以看到当前 shader 输入既支持文件路径,也支持内存中的 `source` 字节序列,并且使用 `std::wstring` 表达文件名、入口点和 profile。 + +### 顶点输入与基础资源描述 + +- `InputElementDesc` +- `InputLayoutDesc` +- `TextureDesc` +- `BufferDesc` +- `SamplerDesc` +- `SwapChainDesc` + +这些结构基本决定了资源和图形状态的创建方式。当前很多字段并不是强类型枚举,而是 `uint32_t` / `uint64_t`,调用方需要显式使用 [RHIEnums](../RHIEnums/RHIEnums.md) 里的枚举值进行 `static_cast`。 + +### 资源视图与 descriptor 相关结构 + +- `RenderTargetViewDesc` +- `DepthStencilViewDesc` +- `ShaderResourceViewDesc` +- `ConstantBufferViewDesc` +- `UnorderedAccessViewDesc` +- `ResourceViewDesc` +- `DescriptorHandle` +- `GPUDescriptorHandle` +- `CPUDescriptorHandle` +- `DescriptorSetLayoutBinding` +- `DescriptorSetLayoutDesc` +- `DescriptorPoolDesc` +- `RHIPipelineLayoutDesc` + +这部分是资源绑定系统的公共语言。它既要服务 D3D12 风格 descriptor heap / root signature 心智模型,也要兼容 OpenGL 当前的绑定实现,因此接口形状不是完全中性的。 + +### 设备、队列与同步描述 + +- `RHIDeviceDesc` +- `RHIDeviceInfo` +- `CommandQueueDesc` +- `CommandListDesc` +- `FenceDesc` +- `QueryHeapDesc` + +这些类型支撑设备初始化、命令系统创建和设备信息查询。 + +### pipeline state 描述 + +- `StencilOpDesc` +- `DepthStencilStateDesc` +- `BlendDesc` +- `RasterizerDesc` +- `PipelineStateHash` +- `GraphicsPipelineDesc` + +`RHIPipelineState.h` 头文件注释里明确提到这是 “Unity SRP style” 的状态配置方向。可以把它理解为:引擎希望用一套更统一的图形状态描述去收敛后端 PSO / program pipeline 差异,而不是把所有 native API 结构直接暴露给上层。 + +### 兼容层与后端痕迹明显的结构 + +- `DescriptorHeapDesc` +- `CommandAllocatorDesc` +- `RootSignatureDesc` +- `RHIRenderPassDesc` + +这些名字和字段明显带有 D3D12 / 显式图形 API 背景。它们的存在并不奇怪,反而说明当前抽象层是在真实后端实现基础上生长出来的,而不是纯理论设计。 + +## 最重要的使用约定 + +### 1. 很多字段是“枚举值容器”,不是强类型枚举字段 + +例如: + +- `TextureDesc::format` +- `TextureDesc::textureType` +- `BufferDesc::bufferType` +- `CommandQueueDesc::queueType` +- `SamplerDesc::filter` + +这些字段往往使用 `uint32_t`,调用方通常写成: + +```cpp +desc.bufferType = static_cast(BufferType::Vertex); +desc.format = static_cast(Format::R8G8B8A8_UNorm); +``` + +这种写法对跨后端兼容很直接,但类型约束较弱。 + +### 2. 这不是 C ABI 风格的 POD 头文件 + +`RHITypes.h` 里大量使用了: + +- `std::vector` +- `std::wstring` +- 原始指针 +- 指向其他 RHI 对象的裸指针 + +所以它更适合被理解为“引擎内部 C++ 描述符语言”,而不是稳定二进制 ABI 或数据驱动序列化格式。 + +### 3. 当前抽象层不是完全后端无痕的 + +如果你看到 `RootSignatureDesc`、`DescriptorHeapDesc`、`CommandAllocatorDesc` 这些结构,正确理解不是“抽象失败”,而是“当前抽象优先服务真实后端实现与演进,而不是先追求绝对纯净”。 + +## 建议怎么读 + +如果你第一次接触这页,不建议从上到下把所有结构都读完。更高效的方式是: + +1. 先读 [RHIEnums](../RHIEnums/RHIEnums.md),理解可选枚举集合。 +2. 再读 [RHIDevice](../RHIDevice/RHIDevice.md),看这些描述符分别喂给哪些创建接口。 +3. 真正用到某个对象时,再回来查对应那一组结构。 + +这比把 `RHITypes.h` 当词典通读更符合工程实践。 ## 相关文档 -- [当前目录](../RHI.md) - 返回 `RHI` 平行目录 -- [API 总索引](../../../main.md) - 返回顶层索引 +- [当前模块](../RHI.md) +- [RHIEnums](../RHIEnums/RHIEnums.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [RHICommandList](../RHICommandList/RHICommandList.md) +- [RHIPipelineState](../RHIPipelineState/RHIPipelineState.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/Vulkan.md b/docs/api/XCEngine/RHI/Vulkan/Vulkan.md new file mode 100644 index 00000000..ae9f63bc --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/Vulkan.md @@ -0,0 +1,81 @@ +# Vulkan + +**命名空间**: `XCEngine::RHI` + +**类型**: `submodule` + +**描述**: `RHI` 的 Vulkan 后端实现目录,负责把抽象设备、队列、命令列表、资源、描述符和管线状态翻译为 Vulkan 原生对象。 + +## 概览 + +`XCEngine/RHI/Vulkan` 是当前引擎 Vulkan backend 的 public API 入口树。它和上层抽象 [RHI](../RHI.md) 的关系可以这样理解: + +- `RHI` 说明“跨后端统一契约” +- `Vulkan` 说明“这些契约在 Vulkan 上当前是怎么落地的” + +当前这一层已经覆盖了: + +- 设备、队列、命令列表与交换链 +- buffer、texture、resource view +- render pass、framebuffer、pipeline layout、pipeline state +- descriptor pool、descriptor set、sampler、shader +- 截图与共享工具头 + +## 设计要点 + +- 目录结构严格与 `engine/include/XCEngine/RHI/Vulkan` 保持平行 +- 文档区分抽象契约与当前 Vulkan 实现,避免把未来意图写成现状 +- 优先写清楚当前真实行为、平台边界、所有权和限制 +- 在能准确类比时补充商业引擎 / Unity 风格的解释性内容 + +## 头文件与类型页 + +- [VulkanBuffer](VulkanBuffer/VulkanBuffer.md) - `VulkanBuffer.h` +- [VulkanCommandList](VulkanCommandList/VulkanCommandList.md) - `VulkanCommandList.h` +- [VulkanCommandQueue](VulkanCommandQueue/VulkanCommandQueue.md) - `VulkanCommandQueue.h` +- [VulkanCommon](VulkanCommon/VulkanCommon.md) - `VulkanCommon.h` +- [VulkanDescriptorPool](VulkanDescriptorPool/VulkanDescriptorPool.md) - `VulkanDescriptorPool.h` +- [VulkanDescriptorSet](VulkanDescriptorSet/VulkanDescriptorSet.md) - `VulkanDescriptorSet.h` +- [VulkanDevice](VulkanDevice/VulkanDevice.md) - `VulkanDevice.h` +- [VulkanFence](VulkanFence/VulkanFence.md) - `VulkanFence.h` +- [VulkanFramebuffer](VulkanFramebuffer/VulkanFramebuffer.md) - `VulkanFramebuffer.h` +- [VulkanPipelineLayout](VulkanPipelineLayout/VulkanPipelineLayout.md) - `VulkanPipelineLayout.h` +- [VulkanPipelineState](VulkanPipelineState/VulkanPipelineState.md) - `VulkanPipelineState.h` +- [VulkanRenderPass](VulkanRenderPass/VulkanRenderPass.md) - `VulkanRenderPass.h` +- [VulkanResourceView](VulkanResourceView/VulkanResourceView.md) - `VulkanResourceView.h` +- [VulkanSampler](VulkanSampler/VulkanSampler.md) - `VulkanSampler.h` +- [VulkanScreenshot](VulkanScreenshot/VulkanScreenshot.md) - `VulkanScreenshot.h` +- [VulkanShader](VulkanShader/VulkanShader.md) - `VulkanShader.h` +- [VulkanShaderCompiler](VulkanShaderCompiler/VulkanShaderCompiler.md) - `VulkanShaderCompiler.h` +- [VulkanSwapChain](VulkanSwapChain/VulkanSwapChain.md) - `VulkanSwapChain.h` +- [VulkanTexture](VulkanTexture/VulkanTexture.md) - `VulkanTexture.h` + +## 建议阅读顺序 + +如果你是第一次进入 Vulkan 后端,建议按下面顺序建立整体心智模型: + +1. [VulkanDevice](VulkanDevice/VulkanDevice.md) +2. [VulkanCommandQueue](VulkanCommandQueue/VulkanCommandQueue.md) +3. [VulkanCommandList](VulkanCommandList/VulkanCommandList.md) +4. [VulkanSwapChain](VulkanSwapChain/VulkanSwapChain.md) +5. [VulkanPipelineLayout](VulkanPipelineLayout/VulkanPipelineLayout.md) +6. [VulkanPipelineState](VulkanPipelineState/VulkanPipelineState.md) +7. [VulkanDescriptorPool](VulkanDescriptorPool/VulkanDescriptorPool.md) +8. [VulkanDescriptorSet](VulkanDescriptorSet/VulkanDescriptorSet.md) +9. [VulkanBuffer](VulkanBuffer/VulkanBuffer.md) / [VulkanTexture](VulkanTexture/VulkanTexture.md) / [VulkanResourceView](VulkanResourceView/VulkanResourceView.md) + +## 相关指南 + +- [Devices, Queues, Command Lists, And Resource Creation](../../../_guides/RHI/Devices-Queues-CommandLists-And-Resource-Creation.md) + +## 相关文档 + +- [RHI](../RHI.md) +- [RHIDevice](../RHIDevice/RHIDevice.md) +- [RHICommandQueue](../RHICommandQueue/RHICommandQueue.md) +- [RHICommandList](../RHICommandList/RHICommandList.md) +- [RHIPipelineState](../RHIPipelineState/RHIPipelineState.md) +- [RHIPipelineLayout](../RHIPipelineLayout/RHIPipelineLayout.md) +- [RHISwapChain](../RHISwapChain/RHISwapChain.md) +- [RHIShader](../RHIShader/RHIShader.md) +- [API 总索引](../../../main.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanBuffer/VulkanBuffer.md b/docs/api/XCEngine/RHI/Vulkan/VulkanBuffer/VulkanBuffer.md new file mode 100644 index 00000000..e9642c0c --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanBuffer/VulkanBuffer.md @@ -0,0 +1,94 @@ +# VulkanBuffer + +**命名空间**: `XCEngine::RHI` + +**类型**: `class` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanBuffer.h` + +**描述**: Vulkan 后端里的 `RHIBuffer` 实现,负责创建 `VkBuffer`、分配绑定 `VkDeviceMemory`,并提供映射写入能力。 + +## 概览 + +`VulkanBuffer` 是当前 Vulkan 后端最基础的资源对象之一。它封装了: + +- `VkBuffer` +- 绑定到该 buffer 的 `VkDeviceMemory` +- RHI 层的软件状态、步长、名称与 buffer 类型 + +## 生命周期 + +典型顺序: + +1. 由 [VulkanDevice](../VulkanDevice/VulkanDevice.md) 创建 +2. `Initialize(device, desc, usageFlags, memoryProperties)` +3. 需要时 `Map()` / `SetData()` / `Unmap()` +4. 不再使用时 `Shutdown()` + +析构函数会调用 `Shutdown()`。 + +## 当前实现的真实行为 + +- 初始化时会先创建 `VkBuffer` +- 查询内存需求 +- 通过 `VulkanDevice::FindMemoryType()` 选内存类型 +- 分配并绑定 `VkDeviceMemory` + +`Map()` / `Unmap()` 都直接作用于 `VkDeviceMemory`。`SetData()` 的行为是: + +- 如果当前没映射,就临时 `Map()` +- `memcpy` 到目标偏移 +- 如果是它自己临时映射的,再自动 `Unmap()` + +因此它是标准的“主机映射写入”路径。 + +需要特别说明的是:虽然 `VulkanBuffer` 支持任意 `usageFlags` 和 `memoryProperties` 组合,但当前 [VulkanDevice](../VulkanDevice/VulkanDevice.md) 的 `CreateBuffer()` 默认传入的是 host-visible / host-coherent 内存属性,而不是更激进的 device-local 策略。 + +## 状态与所有权 + +- `GetState()` / `SetState()` 维护的是软件侧 `ResourceStates` +- `GetNativeHandle()` 返回 `VkBuffer` +- `VulkanBuffer` 拥有 `VkBuffer` 和 `VkDeviceMemory` + +## 线程语义 + +没有内部锁。更稳妥的用法是: + +- 同一时刻只在一个线程上修改同一个 buffer 的映射数据 +- 不要把 `Map()` 出来的指针视为跨线程共享写入缓冲区 + +## 设计取向 + +当前实现明显偏向“先把 buffer 可创建、可写、可被命令列表使用”: + +- 优点是简单直观,适合测试和基础渲染路径 +- 代价是显存分层与上传优化还比较初级 + +## 当前限制 + +- 默认设备创建路径偏 host-visible +- 没有单独的上传堆 / 默认堆抽象 +- 状态跟踪是软件侧记录,不是驱动可查询状态 + +## 主要公开方法 + +- `bool Initialize(VulkanDevice* device, const BufferDesc& desc, VkBufferUsageFlags usageFlags, VkMemoryPropertyFlags memoryProperties)` +- `void Shutdown()` +- `void* Map()` +- `void Unmap()` +- `void SetData(const void* data, size_t size, size_t offset = 0)` +- `uint64_t GetSize() const` +- `BufferType GetBufferType() const` +- `void SetBufferType(BufferType type)` +- `uint32_t GetStride() const` +- `void SetStride(uint32_t stride)` +- `void* GetNativeHandle()` +- `ResourceStates GetState() const` +- `void SetState(ResourceStates state)` + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [VulkanDevice](../VulkanDevice/VulkanDevice.md) +- [VulkanResourceView](../VulkanResourceView/VulkanResourceView.md) +- [RHIBuffer](../../RHIBuffer/RHIBuffer.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/BeginRenderPass.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/BeginRenderPass.md new file mode 100644 index 00000000..fa7ad753 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/BeginRenderPass.md @@ -0,0 +1,31 @@ +# VulkanCommandList::BeginRenderPass + +```cpp +void BeginRenderPass(RHIRenderPass* renderPass, RHIFramebuffer* framebuffer, + const Rect& renderArea, uint32_t clearValueCount, const ClearValue* clearValues) override; +``` + +## 作用 + +显式开始一个 Vulkan render pass。 + +## 前置条件 + +- `renderPass` 与 `framebuffer` 都必须是 Vulkan 后端对象 +- framebuffer 必须与 render pass 兼容 +- command buffer 已经开始录制 + +## 当前实现行为 + +- 会检查 `VulkanRenderPass`、`VulkanFramebuffer` 和它们的 native handle 是否有效 +- 若已有活跃 render pass,会先结束旧的 +- 会把当前颜色目标和深度目标更新为 framebuffer 的 attachment +- 会根据 `renderArea` 自动设置 viewport 和 scissor +- viewport 会用负高度保持 RHI 左上角原点语义 + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [SetRenderTargets](SetRenderTargets.md) +- [VulkanRenderPass](../VulkanRenderPass/VulkanRenderPass.md) +- [VulkanFramebuffer](../VulkanFramebuffer/VulkanFramebuffer.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/Clear.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/Clear.md new file mode 100644 index 00000000..fc04d849 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/Clear.md @@ -0,0 +1,26 @@ +# VulkanCommandList::Clear + +```cpp +void Clear(float r, float g, float b, float a, uint32_t buffers) override; +``` + +## 作用 + +按抽象 RHI 的统一接口清理当前颜色和/或深度模板目标。 + +## 当前实现行为 + +- 如果需要清颜色,会结束活跃 render pass +- 把颜色目标切到 `CopyDst` +- 用 `vkCmdClearColorImage(...)` 清理 +- 如果需要清深度/模板,也会走 image clear 路径而不是 render pass loadOp 路径 + +## 注意事项 + +当前实现是显式 image clear,不等价于“依赖 render pass clear attachment”。 + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [ClearRenderTarget](ClearRenderTarget.md) +- [ClearDepthStencil](ClearDepthStencil.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/ClearDepthStencil.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/ClearDepthStencil.md new file mode 100644 index 00000000..a85672cc --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/ClearDepthStencil.md @@ -0,0 +1,20 @@ +# VulkanCommandList::ClearDepthStencil + +```cpp +void ClearDepthStencil(RHIResourceView* depthStencil, float depth, uint8_t stencil) override; +``` + +## 作用 + +清理指定深度模板目标。 + +## 当前实现行为 + +- 会结束活跃 render pass +- 把纹理切到 `CopyDst` +- 再调用 `vkCmdClearDepthStencilImage(...)` + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [Clear](Clear.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/ClearRenderTarget.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/ClearRenderTarget.md new file mode 100644 index 00000000..bfe48a9c --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/ClearRenderTarget.md @@ -0,0 +1,20 @@ +# VulkanCommandList::ClearRenderTarget + +```cpp +void ClearRenderTarget(RHIResourceView* renderTarget, const float color[4]) override; +``` + +## 作用 + +清理指定颜色目标。 + +## 当前实现行为 + +- 本质上走和 `Clear()` 类似的 image clear 路径 +- 需要目标 view 对应有效 `VkImageView` +- 会处理必要的状态切换后调用 `vkCmdClearColorImage(...)` + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [Clear](Clear.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/Close.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/Close.md new file mode 100644 index 00000000..744ec419 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/Close.md @@ -0,0 +1,25 @@ +# VulkanCommandList::Close + +```cpp +void Close() override; +``` + +## 作用 + +结束当前命令录制,把 command buffer 置为可提交状态。 + +## 当前实现行为 + +- 会先结束活跃 render pass +- 如果当前颜色目标是交换链图像,会在结束前把它转到 `ResourceStates::Present` +- 最后调用 `vkEndCommandBuffer(...)` + +## 注意事项 + +如果打算把命令列表提交给 [VulkanCommandQueue](../VulkanCommandQueue/VulkanCommandQueue.md),通常应先调用 `Close()`。 + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [Reset](Reset.md) +- [TransitionBarrier](TransitionBarrier.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/CopyResource.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/CopyResource.md new file mode 100644 index 00000000..35dd5bc4 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/CopyResource.md @@ -0,0 +1,24 @@ +# VulkanCommandList::CopyResource + +```cpp +void CopyResource(RHIResourceView* dst, RHIResourceView* src) override; +``` + +## 作用 + +执行资源拷贝。 + +## 当前实现行为 + +- 先验证源/目标 view 都有效 +- 会先结束活跃 render pass +- 当前覆盖两类主要路径: + - texture 到 texture + - buffer 到 buffer +- texture 拷贝会处理必要的 layout / state 切换 + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [TransitionBarrier](TransitionBarrier.md) +- [Dispatch](Dispatch.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/Dispatch.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/Dispatch.md new file mode 100644 index 00000000..e797f8b1 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/Dispatch.md @@ -0,0 +1,29 @@ +# VulkanCommandList::Dispatch + +```cpp +void Dispatch(uint32_t x, uint32_t y, uint32_t z) override; +``` + +## 作用 + +发起一次 compute dispatch。 + +## 前置条件 + +- 当前 pipeline state 已设置 +- pipeline state 持有有效 compute shader +- 需要的 descriptor set 已绑定 + +## 当前实现行为 + +- 会先结束活跃 render pass +- 如果当前 pipeline 没有 compute shader,直接返回 +- 会调用 `m_currentPipelineState->EnsureValid()` +- 如果 compute pipeline 尚未创建,可能在这里延迟创建 +- 最终绑定 compute pipeline 并调用 `vkCmdDispatch(...)` + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [SetComputeDescriptorSets](SetComputeDescriptorSets.md) +- [VulkanPipelineState](../VulkanPipelineState/VulkanPipelineState.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/Draw.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/Draw.md new file mode 100644 index 00000000..b44dbbb8 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/Draw.md @@ -0,0 +1,27 @@ +# VulkanCommandList::Draw + +```cpp +void Draw(uint32_t vertexCount, uint32_t instanceCount = 1, uint32_t startVertex = 0, uint32_t startInstance = 0) override; +``` + +## 作用 + +发起一次非索引绘制。 + +## 前置条件 + +- 当前 pipeline state 有效 +- 已设置 render target 或显式开始 render pass + +## 当前实现行为 + +- 会先调用内部 `EnsureGraphicsRenderPass()` +- 该步骤可能隐式创建 transient framebuffer 并开始 render pass +- 之后绑定当前 graphics pipeline +- 最终调用 `vkCmdDraw(...)` + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [DrawIndexed](DrawIndexed.md) +- [SetRenderTargets](SetRenderTargets.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/DrawIndexed.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/DrawIndexed.md new file mode 100644 index 00000000..8936f184 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/DrawIndexed.md @@ -0,0 +1,26 @@ +# VulkanCommandList::DrawIndexed + +```cpp +void DrawIndexed(uint32_t indexCount, uint32_t instanceCount = 1, uint32_t startIndex = 0, int32_t baseVertex = 0, uint32_t startInstance = 0) override; +``` + +## 作用 + +发起一次索引绘制。 + +## 当前实现行为 + +- 和 `Draw()` 一样,会先确保 graphics render pass 可用 +- 绑定当前 graphics pipeline +- 最终调用 `vkCmdDrawIndexed(...)` + +## 前置条件 + +- 索引缓冲已经通过 `SetIndexBuffer()` 绑定 +- 当前 pipeline state 与 render target 兼容 + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [Draw](Draw.md) +- [SetIndexBuffer](SetIndexBuffer.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/Initialize.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/Initialize.md new file mode 100644 index 00000000..105bf63c --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/Initialize.md @@ -0,0 +1,27 @@ +# VulkanCommandList::Initialize + +```cpp +bool Initialize(VulkanDevice* device); +``` + +## 作用 + +初始化命令列表,创建 command pool 和一个 primary command buffer。 + +## 当前实现行为 + +- 要求 `device` 和 `device->GetDevice()` 有效 +- 使用 graphics queue family 创建 command pool +- command pool 带 `VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT` +- 只分配一个 `VK_COMMAND_BUFFER_LEVEL_PRIMARY` command buffer + +## 返回值 + +- `true` - 初始化成功 +- `false` - command pool 或 command buffer 分配失败 + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [Reset](Reset.md) +- [Close](Close.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/Reset.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/Reset.md new file mode 100644 index 00000000..04952f78 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/Reset.md @@ -0,0 +1,26 @@ +# VulkanCommandList::Reset + +```cpp +void Reset() override; +``` + +## 作用 + +重置命令列表并开始新一轮录制。 + +## 当前实现行为 + +- 若存在活跃 render pass,会先结束它 +- 调用 `vkResetCommandPool(...)` +- 销毁由自动 render pass 路径创建的 transient framebuffer +- 清空当前 render target、depth target、pipeline state、viewport/scissor 标记 +- 重新以 `VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT` 开始录制 + +## 使用建议 + +每次正式录制前都应先 `Reset()`,不要假设新创建的命令列表天然处于已开始录制状态。 + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [Close](Close.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetComputeDescriptorSets.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetComputeDescriptorSets.md new file mode 100644 index 00000000..6f80cb6f --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetComputeDescriptorSets.md @@ -0,0 +1,25 @@ +# VulkanCommandList::SetComputeDescriptorSets + +```cpp +void SetComputeDescriptorSets(uint32_t firstSet, uint32_t count, RHIDescriptorSet** descriptorSets, RHIPipelineLayout* pipelineLayout) override; +``` + +## 作用 + +把一组 descriptor set 绑定到 compute bind point。 + +## 当前实现行为 + +- 要求 `pipelineLayout` 显式非空 +- 会收集每个 `VulkanDescriptorSet` 的 native `VkDescriptorSet` +- 最终调用 `vkCmdBindDescriptorSets(..., VK_PIPELINE_BIND_POINT_COMPUTE, ...)` + +## 与 graphics 版本的差异 + +graphics 版本可以从当前 pipeline state 推导 layout;compute 版本当前要求调用方明确传入 pipeline layout。 + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [SetGraphicsDescriptorSets](SetGraphicsDescriptorSets.md) +- [VulkanPipelineLayout](../VulkanPipelineLayout/VulkanPipelineLayout.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetGraphicsDescriptorSets.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetGraphicsDescriptorSets.md new file mode 100644 index 00000000..4824a9dd --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetGraphicsDescriptorSets.md @@ -0,0 +1,27 @@ +# VulkanCommandList::SetGraphicsDescriptorSets + +```cpp +void SetGraphicsDescriptorSets(uint32_t firstSet, uint32_t count, RHIDescriptorSet** descriptorSets, RHIPipelineLayout* pipelineLayout) override; +``` + +## 作用 + +把一组 descriptor set 绑定到 graphics bind point。 + +## 当前实现行为 + +- 要求 command buffer 有效,`descriptorSets` 非空且 `count > 0` +- 如果显式传入 `pipelineLayout`,优先使用它 +- 否则会尝试从当前 `m_currentPipelineState` 推导 native pipeline layout +- 最终调用 `vkCmdBindDescriptorSets(..., VK_PIPELINE_BIND_POINT_GRAPHICS, ...)` + +## 失败条件 + +- pipeline layout 解析失败时会直接返回,不会报错 +- 任意 descriptor set 无效时也会中止绑定 + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [SetComputeDescriptorSets](SetComputeDescriptorSets.md) +- [VulkanDescriptorSet](../VulkanDescriptorSet/VulkanDescriptorSet.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetIndexBuffer.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetIndexBuffer.md new file mode 100644 index 00000000..de5242be --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetIndexBuffer.md @@ -0,0 +1,21 @@ +# VulkanCommandList::SetIndexBuffer + +```cpp +void SetIndexBuffer(RHIResourceView* buffer, uint64_t offset) override; +``` + +## 作用 + +绑定索引缓冲。 + +## 当前实现行为 + +- 要求传入有效的 index buffer 视图 +- 索引格式来自 view 的 `Format` +- 最终调用 `vkCmdBindIndexBuffer(...)` + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [DrawIndexed](DrawIndexed.md) +- [VulkanResourceView](../VulkanResourceView/VulkanResourceView.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetPipelineState.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetPipelineState.md new file mode 100644 index 00000000..435fbf22 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetPipelineState.md @@ -0,0 +1,22 @@ +# VulkanCommandList::SetPipelineState + +```cpp +void SetPipelineState(RHIPipelineState* pso) override; +``` + +## 作用 + +设置当前 draw / dispatch 要使用的 pipeline state。 + +## 当前实现行为 + +- 当前只是把参数向下转为 `VulkanPipelineState*` 后保存到 `m_currentPipelineState` +- 不会立刻绑定到 command buffer +- 真正绑定发生在 `Draw()`、`DrawIndexed()` 或 `Dispatch()` 内部 + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [Draw](Draw.md) +- [Dispatch](Dispatch.md) +- [VulkanPipelineState](../VulkanPipelineState/VulkanPipelineState.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetRenderTargets.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetRenderTargets.md new file mode 100644 index 00000000..2856d7b6 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetRenderTargets.md @@ -0,0 +1,22 @@ +# VulkanCommandList::SetRenderTargets + +```cpp +void SetRenderTargets(uint32_t count, RHIResourceView** renderTargets, RHIResourceView* depthStencil = nullptr) override; +``` + +## 作用 + +设置当前颜色目标和可选深度目标,供后续自动 render pass 路径使用。 + +## 当前实现行为 + +- 只保存当前颜色目标和深度目标指针 +- 当前只真正记录第一个颜色目标 +- 不会立刻创建 framebuffer,也不会立刻开始 render pass +- 真正的 render pass 开始可能延迟到 `Draw()` / `DrawIndexed()` 时由内部 `EnsureGraphicsRenderPass()` 完成 + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [BeginRenderPass](BeginRenderPass.md) +- [Draw](Draw.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetScissorRect.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetScissorRect.md new file mode 100644 index 00000000..5cca3687 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetScissorRect.md @@ -0,0 +1,19 @@ +# VulkanCommandList::SetScissorRect + +```cpp +void SetScissorRect(const Rect& rect) override; +``` + +## 作用 + +设置当前剪裁矩形。 + +## 当前实现行为 + +- 会更新内部 `VkRect2D` +- 同时把 scissor 直接写入当前 command buffer + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [SetViewport](SetViewport.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetVertexBuffers.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetVertexBuffers.md new file mode 100644 index 00000000..741afa52 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetVertexBuffers.md @@ -0,0 +1,26 @@ +# VulkanCommandList::SetVertexBuffers + +```cpp +void SetVertexBuffers(uint32_t startSlot, uint32_t count, RHIResourceView** buffers, const uint64_t* offsets, const uint32_t* strides) override; +``` + +## 作用 + +绑定一组顶点缓冲。 + +## 当前实现行为 + +- 要求传入的是有效的 buffer 类型 `VulkanResourceView` +- 会从每个 view 中取出底层 `VkBuffer` +- 偏移优先取外部 `offsets`,并叠加 view 自身记录的 `bufferOffset` +- 最终调用 `vkCmdBindVertexBuffers(...)` + +## 注意事项 + +- `strides` 参数不会直接传给 Vulkan;实际 stride 主要用于 view / input layout 语义配合 + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [SetIndexBuffer](SetIndexBuffer.md) +- [VulkanResourceView](../VulkanResourceView/VulkanResourceView.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetViewport.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetViewport.md new file mode 100644 index 00000000..1fa52e67 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/SetViewport.md @@ -0,0 +1,21 @@ +# VulkanCommandList::SetViewport + +```cpp +void SetViewport(const Viewport& viewport) override; +``` + +## 作用 + +设置当前 Vulkan viewport。 + +## 当前实现行为 + +- 会把 `y` 设为 `topLeftY + height` +- 会把 `height` 设为负值 +- 这样可以在 Vulkan 中维持与其他后端一致的左上角原点语义 +- 同时把 viewport 直接写入当前 command buffer + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [SetScissorRect](SetScissorRect.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/TransitionBarrier.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/TransitionBarrier.md new file mode 100644 index 00000000..d32313ca --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/TransitionBarrier.md @@ -0,0 +1,26 @@ +# VulkanCommandList::TransitionBarrier + +```cpp +void TransitionBarrier(RHIResourceView* resource, ResourceStates stateBefore, ResourceStates stateAfter) override; +``` + +## 作用 + +请求把资源状态切换到目标状态。 + +## 当前实现行为 + +- 当前主要处理 texture 视图 +- `stateBefore` 在实现里被忽略 +- 真正使用的是 `VulkanTexture` 当前记录的状态和 `stateAfter` +- buffer 状态切换主要走内部专用路径,不通过这个公开接口完成 + +## 影响 + +这意味着当前 barrier 模型是“软件状态跟踪优先”的简化实现,而不是严格校验调用方给出的 before/after。 + +## 相关文档 + +- [VulkanCommandList](VulkanCommandList.md) +- [CopyResource](CopyResource.md) +- [VulkanTexture](../VulkanTexture/VulkanTexture.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/VulkanCommandList.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/VulkanCommandList.md new file mode 100644 index 00000000..61b718bb --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandList/VulkanCommandList.md @@ -0,0 +1,187 @@ +# VulkanCommandList + +**命名空间**: `XCEngine::RHI` + +**类型**: `class` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanCommandList.h` + +**描述**: Vulkan 后端里的 `RHICommandList` 实现,封装一个 primary `VkCommandBuffer`,负责录制 draw、dispatch、clear、copy、barrier 与 descriptor 绑定。 + +## 概览 + +`VulkanCommandList` 是 Vulkan 后端最直接面向 GPU 录制语义的类。它和抽象层的 [RHICommandList](../../RHICommandList/RHICommandList.md) 一一对应,但实现上保留了当前引擎自己的工程取舍。 + +当前版本有两个很重要的特点: + +- 它既支持显式 `BeginRenderPass()` / `EndRenderPass()` 路径,也支持 `SetRenderTargets()` 后在绘制时懒创建 transient framebuffer 的路径。 +- 它维持的是“对上层更友好”的 RHI 约定,而不是完全照搬 Vulkan 原生用法,例如 viewport 会通过负高度翻转来维持左上角原点语义。 + +这和很多商业引擎的 backend 包装思路一致:不把 Vulkan 原始复杂度直接暴露给上层,而是在 backend 内部吃掉坐标系、render pass 和状态转换的差异。 + +## 生命周期 + +推荐使用顺序: + +1. 由 [VulkanDevice](../VulkanDevice/VulkanDevice.md) 创建命令列表 +2. `Initialize(VulkanDevice*)` +3. 每帧或每次录制前 `Reset()` +4. 录制资源状态、绑定与 draw / dispatch / clear / copy +5. `Close()` +6. 交给 [VulkanCommandQueue](../VulkanCommandQueue/VulkanCommandQueue.md) 提交 +7. 不再使用时 `Shutdown()` + +当前实现里: + +- `Initialize()` 创建一个 command pool 和一个 primary command buffer +- `Reset()` 会 `vkResetCommandPool()`,清空暂存 framebuffer,并重新 `vkBeginCommandBuffer()` +- `Close()` 会结束活跃 render pass,并在当前颜色目标是交换链图像时把它转到 `Present` +- `Shutdown()` 会销毁 command pool,并释放 command buffer + +## 当前实现的真实行为 + +### 命令缓冲模型 + +- 每个 `VulkanCommandList` 只拥有一个 primary `VkCommandBuffer` +- 没有 secondary command buffer 或 bundle 抽象 +- command pool 使用 `VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT` +- `Reset()` 使用 `VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT` 开始录制 + +因此它更接近“短生命周期、一次性录制”的命令列表模型。 + +### render pass 两条路径并存 + +当前图形录制有两条路径: + +1. 显式路径:`BeginRenderPass(renderPass, framebuffer, ...)` +2. 便捷路径:`SetRenderTargets()` 后,在 `Draw()` / `DrawIndexed()` 前由 `EnsureGraphicsRenderPass()` 自动创建临时 framebuffer 并开始 render pass + +这对上层调用很方便,但也意味着两套语义并存。工程上最好在同一条渲染路径里保持一致,不要一会儿显式 render pass,一会儿依赖懒创建路径。 + +### 资源状态转换 + +- `TransitionBarrier()` 当前只真正处理 texture 视图 +- `stateBefore` 参数在实现里被显式忽略 +- 实际转换更依赖 `VulkanTexture` 内部记录的当前状态 + +这说明当前 barrier 模型是“软件跟踪状态 + backend 内部翻译”的简化实现,不是完全按照调用方给出的 before/after 做严格校验。 + +### shader 与 pipeline + +- `SetShader()` 当前是 no-op +- 真正影响 draw / dispatch 的是 `SetPipelineState()` +- `Draw()` / `DrawIndexed()` 会在确认 render pass 有效后直接绑定 `m_currentPipelineState->GetPipeline()` +- `Dispatch()` 会要求当前 pipeline state 拥有 compute shader,并先 `EnsureValid()` + +因此对 Vulkan 后端来说,`SetShader()` 只是保留抽象层接口兼容性,实际录制应以 pipeline state 为中心。 + +### descriptor 绑定 + +- `SetGraphicsDescriptorSets()` 可以从显式传入的 `pipelineLayout`,或当前 `m_currentPipelineState` 推导 native pipeline layout +- `SetComputeDescriptorSets()` 要求调用方显式传入 `pipelineLayout` +- 两者最终都用 `vkCmdBindDescriptorSets()` + +这和 Vulkan 原生模型一致:descriptor set 绑定必须匹配 pipeline layout。 + +### 固定功能状态 + +- `SetViewport()` 会把 `y` 设为 `topLeftY + height`,并把 `height` 设为负值 +- 这样可以让上层继续使用和 D3D12/OpenGL 接近的左上角原点语义 +- `SetViewports()` / `SetScissorRects()` 当前只取第一个元素 +- `SetStencilRef()` 与 `SetBlendFactor()` 当前都是 no-op + +这体现了当前 RHI 的设计取向:优先维持跨后端的一致调用体验,其次再补完 Vulkan 的细粒度状态控制。 + +### clear / copy / dispatch + +- `Clear()`、`ClearRenderTarget()`、`ClearDepthStencil()` 会结束当前 render pass,并通过 `vkCmdClearColorImage()` / `vkCmdClearDepthStencilImage()` 直接清图 +- `CopyResource()` 当前覆盖了 texture-to-texture 与 buffer-to-buffer 路径 +- `Dispatch()` 会先结束活跃 render pass,再切到 compute pipeline bind point + +这说明当前实现已经支持基础 graphics + compute 混合录制,但不是更高级的 render graph 调度模型。 + +## 线程语义 + +从实现看,`VulkanCommandList` 没有内部同步原语。更可靠的使用方式是: + +- 同一个命令列表对象一次只在一个线程录制 +- `Reset()`、录制、`Close()` 由调用方串行完成 +- 提交后不要在 GPU 仍可能使用该命令缓冲时立刻跨线程复用它 + +## 所有权与临时资源 + +- 命令列表拥有自己的 command pool 和 command buffer +- 通过 `EnsureGraphicsRenderPass()` 创建的 transient framebuffer 由命令列表暂存,并在 `Reset()` / `Shutdown()` 时销毁 +- 当前颜色/深度目标只是借用指针,不拥有对应 texture / view + +这很像商业引擎里常见的“命令列表拥有短命 backend 辅助对象,但不拥有上层资源”的模式。 + +## 设计取向 + +`VulkanCommandList` 的实现不是“把 Vulkan API 原样套壳”,而是有明显的工程化折中: + +- 保留 RHI 统一接口,减少上层为后端分支代码 +- 在 backend 内部处理 viewport 翻转与 render pass 拼装 +- 用软件状态跟踪简化 barrier 使用 + +好处是上层更容易写出跨后端测试和样例;代价是 Vulkan 高级能力目前没有全部暴露,某些接口行为也比名字看起来更受限。 + +如果拿 Unity 对照,可以把它理解成更靠近 SRP backend 内部 command recording 层,而不是把 Vulkan command buffer 语义原封不动扔给业务层。 + +## 当前限制 + +- 只封装一个 primary command buffer +- `SetShader()` 当前无效果 +- `TransitionBarrier()` 忽略 `stateBefore` +- `SetViewports()` / `SetScissorRects()` 只使用第一个元素 +- `SetStencilRef()` / `SetBlendFactor()` 当前无效果 +- 自动 render pass 路径只围绕当前颜色目标和可选深度目标工作 + +## 主要公开方法 + +- `bool Initialize(VulkanDevice* device)` +- `void Shutdown()` +- `void Reset()` +- `void Close()` +- `void TransitionBarrier(RHIResourceView* resource, ResourceStates stateBefore, ResourceStates stateAfter)` +- `void BeginRenderPass(RHIRenderPass* renderPass, RHIFramebuffer* framebuffer, const Rect& renderArea, uint32_t clearValueCount, const ClearValue* clearValues)` +- `void EndRenderPass()` +- `void SetShader(RHIShader* shader)` +- `void SetPipelineState(RHIPipelineState* pso)` +- `void SetGraphicsDescriptorSets(...)` +- `void SetComputeDescriptorSets(...)` +- `void SetPrimitiveTopology(PrimitiveTopology topology)` +- `void SetViewport(const Viewport& viewport)` +- `void SetViewports(uint32_t count, const Viewport* viewports)` +- `void SetScissorRect(const Rect& rect)` +- `void SetScissorRects(uint32_t count, const Rect* rects)` +- `void SetRenderTargets(uint32_t count, RHIResourceView** renderTargets, RHIResourceView* depthStencil = nullptr)` +- `void SetVertexBuffers(...)` +- `void SetIndexBuffer(RHIResourceView* buffer, uint64_t offset)` +- `void Draw(...)` +- `void DrawIndexed(...)` +- `void Clear(...)` +- `void ClearRenderTarget(...)` +- `void ClearDepthStencil(...)` +- `void CopyResource(RHIResourceView* dst, RHIResourceView* src)` +- `void Dispatch(uint32_t x, uint32_t y, uint32_t z)` + +## 相关测试与使用线索 + +- `tests/RHI/unit/test_command_list.cpp` 覆盖了抽象命令列表的大部分基础行为 +- `tests/RHI/unit/test_vulkan_graphics.cpp` 直接验证了 Vulkan render pass、framebuffer、copy、graphics pipeline 与 compute dispatch 路径 +- `tests/RHI/integration/fixtures/RHIIntegrationFixture.cpp` 展示了交换链回读、render target 设置和提交流程 + +## 相关指南 + +- [Devices, Queues, Command Lists, And Resource Creation](../../../../_guides/RHI/Devices-Queues-CommandLists-And-Resource-Creation.md) + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [VulkanDevice](../VulkanDevice/VulkanDevice.md) +- [VulkanCommandQueue](../VulkanCommandQueue/VulkanCommandQueue.md) +- [VulkanPipelineState](../VulkanPipelineState/VulkanPipelineState.md) +- [VulkanRenderPass](../VulkanRenderPass/VulkanRenderPass.md) +- [VulkanFramebuffer](../VulkanFramebuffer/VulkanFramebuffer.md) +- [RHICommandList](../../RHICommandList/RHICommandList.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/ExecuteCommandLists.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/ExecuteCommandLists.md new file mode 100644 index 00000000..49e8864a --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/ExecuteCommandLists.md @@ -0,0 +1,36 @@ +# VulkanCommandQueue::ExecuteCommandLists + +```cpp +void ExecuteCommandLists(uint32_t count, void** lists) override; +``` + +## 作用 + +提交一组 `VulkanCommandList` 到当前 `VkQueue` 执行。 + +## 前置条件 + +- 队列已经初始化 +- `lists` 中的命令列表已经完成录制并 `Close()` + +## 当前实现行为 + +- 会遍历输入数组,筛出有效的 `VkCommandBuffer` +- 用一个 `VkSubmitInfo` 提交全部命令缓冲 +- 提交后立即调用 `vkQueueWaitIdle()` +- 成功提交流程后 `m_currentFrame` 自增 + +## 注意事项 + +当前实现是同步提交模型,不是多帧并发的异步提交模型。 + +## 参数 + +- `count` - 输入命令列表数量 +- `lists` - 命令列表数组,元素应能向下转为 `VulkanCommandList` + +## 相关文档 + +- [VulkanCommandQueue](VulkanCommandQueue.md) +- [WaitForIdle](WaitForIdle.md) +- [VulkanCommandList](../VulkanCommandList/VulkanCommandList.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/GetCompletedValue.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/GetCompletedValue.md new file mode 100644 index 00000000..8f8b7740 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/GetCompletedValue.md @@ -0,0 +1,23 @@ +# VulkanCommandQueue::GetCompletedValue + +```cpp +uint64_t GetCompletedValue() override; +``` + +## 作用 + +返回当前队列记录的完成值。 + +## 当前实现行为 + +- 当前直接返回 `m_currentFrame` +- 这个值在 `ExecuteCommandLists()` 提交并 `WaitIdle()` 之后自增 + +## 解释 + +它表示的是“本地已完成的提交计数”,不是 Vulkan 驱动侧某个原生同步对象的完成值。 + +## 相关文档 + +- [VulkanCommandQueue](VulkanCommandQueue.md) +- [ExecuteCommandLists](ExecuteCommandLists.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/Initialize.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/Initialize.md new file mode 100644 index 00000000..791a1ff5 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/Initialize.md @@ -0,0 +1,30 @@ +# VulkanCommandQueue::Initialize + +```cpp +bool Initialize(VulkanDevice* device, CommandQueueType type); +``` + +## 作用 + +把命令队列对象绑定到 Vulkan 设备和一个抽象队列类型。 + +## 当前实现行为 + +- 要求 `device` 非空且 `device->GetGraphicsQueue()` 有效 +- 保存 `m_device` +- 把 `m_queue` 直接设为 `device->GetGraphicsQueue()` +- 保存 `m_type` + +## 重要限制 + +虽然方法接收 `CommandQueueType`,但当前底层总是使用 graphics queue,不会区分独立的 compute / copy queue。 + +## 返回值 + +- `true` - 初始化成功 +- `false` - 设备或原生队列无效 + +## 相关文档 + +- [VulkanCommandQueue](VulkanCommandQueue.md) +- [ExecuteCommandLists](ExecuteCommandLists.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/Signal.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/Signal.md new file mode 100644 index 00000000..1fd8f429 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/Signal.md @@ -0,0 +1,20 @@ +# VulkanCommandQueue::Signal + +```cpp +void Signal(RHIFence* fence, uint64_t value) override; +``` + +## 作用 + +向抽象 fence 写入一个完成值。 + +## 当前实现行为 + +- 当前不会向 Vulkan native fence 或 semaphore 发信号 +- 如果 `fence != nullptr`,只是转发调用 `fence->Signal(value)` + +## 相关文档 + +- [VulkanCommandQueue](VulkanCommandQueue.md) +- [Wait](Wait.md) +- [VulkanFence](../VulkanFence/VulkanFence.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/VulkanCommandQueue.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/VulkanCommandQueue.md new file mode 100644 index 00000000..f77d50c7 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/VulkanCommandQueue.md @@ -0,0 +1,120 @@ +# VulkanCommandQueue + +**命名空间**: `XCEngine::RHI` + +**类型**: `class` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanCommandQueue.h` + +**描述**: Vulkan 后端里的 `RHICommandQueue` 实现,负责把 `VulkanCommandList` 提交到 `VkQueue` 执行。 + +## 概览 + +在抽象层里,[RHICommandQueue](../../RHICommandQueue/RHICommandQueue.md) 代表“命令提交入口”。在 Vulkan 后端中,`VulkanCommandQueue` 把这个概念落到一个 `VkQueue` 上,并承担提交、等待空闲和轻量 fence 协调。 + +它的职责边界比较清晰: + +- 不负责录制命令,只负责提交已关闭的 [VulkanCommandList](../VulkanCommandList/VulkanCommandList.md) +- 不负责交换链图像获取,那属于 [VulkanSwapChain](../VulkanSwapChain/VulkanSwapChain.md) +- 不实现复杂调度、并发提交或跨队列同步 + +## 生命周期 + +推荐顺序是: + +1. 由 [VulkanDevice](../VulkanDevice/VulkanDevice.md) 创建队列 +2. 调用 `Initialize(VulkanDevice*, CommandQueueType)` +3. 多次 `ExecuteCommandLists()` +4. 退出前调用 `WaitForIdle()` +5. 最后 `Shutdown()` + +按当前实现,`Shutdown()` 只是清空内部句柄与帧计数,不会销毁 Vulkan device 本身。 + +## 当前实现的真实行为 + +### 队列类型与 native queue 的对应关系 + +- `Initialize(device, type)` 会保存 `type` +- 但实际拿到的 native queue 始终是 `device->GetGraphicsQueue()` + +这意味着当前 `CommandQueueType` 更像“抽象层标签”,不是严格映射到不同的 Vulkan queue family。即使创建的是 compute 或 copy 队列,底层当前仍然走 graphics queue。 + +### 提交行为 + +`ExecuteCommandLists()` 的实现流程是: + +1. 从传入列表里筛出有效的 `VkCommandBuffer` +2. 组装一个 `VkSubmitInfo` +3. 调用 `vkQueueSubmit()` +4. 立刻调用 `vkQueueWaitIdle()` +5. `m_currentFrame` 自增 + +这说明当前实现是同步提交模型,而不是高吞吐的异步帧管线模型。它更适合测试、原型和早期后端打通,不适合把它误解成“已经完成商业级多帧并发提交”。 + +### Fence 语义 + +- `Signal()` 只是转发到 `RHIFence::Signal(value)` +- `Wait()` 只是转发到 `RHIFence::Wait(value)` +- `GetCompletedValue()` 返回的是 `m_currentFrame` +- `WaitForPreviousFrame()` 当前是空实现 + +结合 [VulkanFence](../VulkanFence/VulkanFence.md) 的实现看,当前 fence 不是 Vulkan 原生 `VkFence` 时间线同步封装,而是一个轻量软件计数器模型。 + +## 线程语义 + +从当前源码看,`VulkanCommandQueue` 本身没有内部加锁。更安全的使用假设是: + +- 同一个队列对象由调用方串行使用 +- 命令列表关闭后再提交 +- 不要在多个线程上同时对同一个队列做提交与等待 + +商业引擎里真正复杂的多线程提交通常会放在 render scheduler 或 frame graph 层,而不是直接压在 queue 包装类本身。 + +## 设计取向 + +这个类的设计明显偏向“让抽象层测试先跑通”: + +- 好处是行为直接、调试容易、后端差异小 +- 代价是每次提交都会 `WaitIdle()`,吞吐量和 CPU/GPU 并行度都比较弱 + +如果把 Unity 作类比,它更像引擎内部一条被严格串行化的 backend submit lane,而不是已经具备 frame overlap、parallel submit 和 timeline semaphore 协调的成熟提交系统。 + +## 当前限制 + +- 当前所有队列类型都落到同一个 graphics queue +- `ExecuteCommandLists()` 提交后立即阻塞到空闲 +- `WaitForPreviousFrame()` 为空实现 +- `GetCompletedValue()` 代表的是本地提交计数,不是 Vulkan 驱动侧完成值 + +## 主要公开方法 + +- `bool Initialize(VulkanDevice* device, CommandQueueType type)` +- `void Shutdown()` +- `void ExecuteCommandLists(uint32_t count, void** lists)` +- `void Signal(RHIFence* fence, uint64_t value)` +- `void Wait(RHIFence* fence, uint64_t value)` +- `uint64_t GetCompletedValue()` +- `void WaitForIdle()` +- `CommandQueueType GetType() const` +- `uint64_t GetTimestampFrequency() const` +- `void* GetNativeHandle()` +- `void WaitForPreviousFrame()` +- `uint64_t GetCurrentFrame() const` + +## 相关测试与使用线索 + +- `tests/RHI/unit/test_command_queue.cpp` 覆盖了抽象命令队列的创建、提交、完成值与等待接口 +- `tests/RHI/unit/test_device.cpp` 会通过设备创建队列并验证返回值 +- `tests/RHI/integration/fixtures/RHIIntegrationFixture.cpp` 展示了队列与交换链、命令列表的组合使用 + +## 相关指南 + +- [Devices, Queues, Command Lists, And Resource Creation](../../../../_guides/RHI/Devices-Queues-CommandLists-And-Resource-Creation.md) + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [VulkanDevice](../VulkanDevice/VulkanDevice.md) +- [VulkanCommandList](../VulkanCommandList/VulkanCommandList.md) +- [VulkanFence](../VulkanFence/VulkanFence.md) +- [RHICommandQueue](../../RHICommandQueue/RHICommandQueue.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/Wait.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/Wait.md new file mode 100644 index 00000000..244e97f2 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/Wait.md @@ -0,0 +1,24 @@ +# VulkanCommandQueue::Wait + +```cpp +void Wait(RHIFence* fence, uint64_t value) override; +``` + +## 作用 + +等待抽象 fence 至少达到目标值。 + +## 当前实现行为 + +- 当前不会做 Vulkan queue 级别的原生等待 +- 如果 `fence != nullptr`,只是转发 `fence->Wait(value)` + +## 注意事项 + +结合当前 `VulkanFence` 的实现,这更接近软件计数器同步,而不是 GPU 真正阻塞等待。 + +## 相关文档 + +- [VulkanCommandQueue](VulkanCommandQueue.md) +- [Signal](Signal.md) +- [VulkanFence](../VulkanFence/VulkanFence.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/WaitForIdle.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/WaitForIdle.md new file mode 100644 index 00000000..4ccf4296 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommandQueue/WaitForIdle.md @@ -0,0 +1,24 @@ +# VulkanCommandQueue::WaitForIdle + +```cpp +void WaitForIdle() override; +``` + +## 作用 + +阻塞直到当前 `VkQueue` 空闲。 + +## 当前实现行为 + +- 如果 `m_queue` 有效,直接调用 `vkQueueWaitIdle(m_queue)` + +## 使用场景 + +- 交换链重建前 +- 截图或调试路径需要强制同步时 +- 关停设备或销毁依赖资源前 + +## 相关文档 + +- [VulkanCommandQueue](VulkanCommandQueue.md) +- [ExecuteCommandLists](ExecuteCommandLists.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanCommon/VulkanCommon.md b/docs/api/XCEngine/RHI/Vulkan/VulkanCommon/VulkanCommon.md new file mode 100644 index 00000000..054dc638 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanCommon/VulkanCommon.md @@ -0,0 +1,83 @@ +# VulkanCommon + +**命名空间**: `XCEngine::RHI` + +**类型**: `utility header` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanCommon.h` + +**描述**: Vulkan 后端共享的公共内联工具头,集中定义平台开关、字符串转换以及 RHI 枚举到 Vulkan 枚举的翻译函数。 + +## 概览 + +`VulkanCommon.h` 不是资源对象或系统类,而是整个 Vulkan backend 的基础工具层。它承担的职责包括: + +- 启用 `VK_USE_PLATFORM_WIN32_KHR` +- 引入 `` +- 提供窄字节 / 宽字节辅助转换 +- 提供 shader stage、格式、拓扑、采样、比较、混合、descriptor、load/store 等转换函数 + +几乎所有 Vulkan backend 类型都会直接或间接依赖这个头。 + +## 当前实现中包含的核心能力 + +### 字符串与 shader stage 辅助 + +- `NarrowAscii(const std::wstring&)` +- `WidenAscii(const char*)` +- `TryResolveShaderTypeFromTarget(const char* target, ShaderType& type)` + +这部分主要服务 shader 编译与 shader module 初始化路径。 + +### 格式与图像相关转换 + +- `ToVulkanFormat(Format)` +- `ToRHIFormat(VkFormat)` +- `GetFormatSize(Format)` +- `GetImageAspectMask(Format)` + +这部分直接影响 texture、resource view、render pass 和截图逻辑。 + +### 图形状态转换 + +文件中还包含大量 RHI 到 Vulkan 的枚举映射,例如: + +- primitive topology +- polygon mode +- cull mode +- front face +- compare op +- blend factor / blend op +- sampler filter / address mode +- descriptor type / shader stage flags +- attachment load / store op +- index type + +这些函数本质上是 Vulkan backend 的“词典层”。 + +## 设计取向 + +把 backend 共享的转换逻辑集中放在一个公共头里,是很常见的商业引擎做法: + +- 好处是翻译规则集中、复用高、后续修订不容易遗漏 +- 代价是这个头会变成很多 Vulkan 类型的基础依赖 + +## 当前限制 + +- 当前平台宏默认走 Win32 +- 这里只提供转换与辅助,不负责资源生命周期或错误恢复 +- 如果 RHI 枚举继续扩展,这里的映射函数也要同步补齐 + +## 典型使用位置 + +- [VulkanDevice](../VulkanDevice/VulkanDevice.md) +- [VulkanCommandList](../VulkanCommandList/VulkanCommandList.md) +- [VulkanPipelineState](../VulkanPipelineState/VulkanPipelineState.md) +- [VulkanResourceView](../VulkanResourceView/VulkanResourceView.md) +- [VulkanShaderCompiler](../VulkanShaderCompiler/VulkanShaderCompiler.md) + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [RHIEnums](../../RHIEnums/RHIEnums.md) +- [RHITypes](../../RHITypes/RHITypes.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDescriptorPool/VulkanDescriptorPool.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDescriptorPool/VulkanDescriptorPool.md new file mode 100644 index 00000000..3bb2ade1 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDescriptorPool/VulkanDescriptorPool.md @@ -0,0 +1,81 @@ +# VulkanDescriptorPool + +**命名空间**: `XCEngine::RHI` + +**类型**: `class` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanDescriptorPool.h` + +**描述**: Vulkan 后端里的 `RHIDescriptorPool` 实现,负责创建 `VkDescriptorPool`,并从中分配 `VulkanDescriptorSet`。 + +## 概览 + +`VulkanDescriptorPool` 是 descriptor set 的分配器。当前实现里,它主要解决两件事: + +- 按 heap 类型创建一个 `VkDescriptorPool` +- 根据传入 layout 即时创建 descriptor set layout,并分配一个 `VulkanDescriptorSet` + +## 当前实现的真实行为 + +### 支持的 pool 类型 + +`Initialize()` 当前只覆盖两类 `DescriptorHeapType`: + +- `CBV_SRV_UAV` +- `Sampler` + +其中: + +- `CBV_SRV_UAV` 会同时为 `UNIFORM_BUFFER`、`SAMPLED_IMAGE`、`STORAGE_IMAGE` 预留描述符容量 +- `Sampler` 只为 `VK_DESCRIPTOR_TYPE_SAMPLER` 预留容量 + +### 分配策略 + +`AllocateSet(layout)` 的当前流程是: + +1. 先根据 `DescriptorSetLayoutDesc` 临时构建一个 `VkDescriptorSetLayout` +2. 再从 pool 分配一个 `VkDescriptorSet` +3. 最后创建 `VulkanDescriptorSet` + +也就是说,当前 descriptor set layout 不是被统一缓存复用的,而是“分配一个 set,就顺手创建一份 layout”。 + +### 销毁策略 + +- `Shutdown()` 会清空已分配 set 列表,并销毁 `VkDescriptorPool` +- `FreeSet()` 会把目标 set 从列表中移除并 `delete` +- 真正的 descriptor set 与 descriptor set layout 释放,由 `VulkanDescriptorSet::Shutdown()` 完成 + +## 线程语义 + +没有内部锁。分配与释放应由调用方串行协调。 + +## 设计取向 + +当前实现优先的是“descriptor set 能快速用起来”,而不是“descriptor layout / pool 有完善的缓存和复用体系”: + +- 优点是实现简单,便于抽象层先跑通 +- 代价是 layout 创建频率高,资源复用策略比较初级 + +## 当前限制 + +- 当前只覆盖 `CBV_SRV_UAV` 与 `Sampler` 两类 pool +- 每次 `AllocateSet()` 都会新建一个 `VkDescriptorSetLayout` +- 没有更高级的池分段、碎片管理或 layout 缓存 + +## 主要公开方法 + +- `bool Initialize(VkDevice device, const DescriptorPoolDesc& desc)` +- `bool Initialize(const DescriptorPoolDesc& desc)` +- `void Shutdown()` +- `void* GetNativeHandle()` +- `uint32_t GetDescriptorCount() const` +- `DescriptorHeapType GetType() const` +- `RHIDescriptorSet* AllocateSet(const DescriptorSetLayoutDesc& layout)` +- `void FreeSet(RHIDescriptorSet* set)` + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [VulkanDescriptorSet](../VulkanDescriptorSet/VulkanDescriptorSet.md) +- [VulkanPipelineLayout](../VulkanPipelineLayout/VulkanPipelineLayout.md) +- [RHIDescriptorPool](../../RHIDescriptorPool/RHIDescriptorPool.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDescriptorSet/VulkanDescriptorSet.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDescriptorSet/VulkanDescriptorSet.md new file mode 100644 index 00000000..f09b5e5e --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDescriptorSet/VulkanDescriptorSet.md @@ -0,0 +1,109 @@ +# VulkanDescriptorSet + +**命名空间**: `XCEngine::RHI` + +**类型**: `class` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanDescriptorSet.h` + +**描述**: Vulkan 后端里的 `RHIDescriptorSet` 实现,封装 `VkDescriptorSet`,并提供 image、sampler 与常量缓冲更新逻辑。 + +## 概览 + +`VulkanDescriptorSet` 是当前 Vulkan 后端里真正承载资源绑定内容的对象。它既保存布局绑定信息,也负责把资源写入 `VkDescriptorSet`。 + +## 当前实现的真实行为 + +### 初始化 + +初始化时会保存: + +- 所属 `VulkanDescriptorPool` +- `VkDescriptorSetLayout` +- `VkDescriptorSet` +- 深拷贝后的 layout bindings +- binding 到索引的映射表 + +### `Bind()` / `Unbind()` + +这两个接口当前都是 no-op。真正把 descriptor set 送进命令缓冲的动作,发生在 [VulkanCommandList](../VulkanCommandList/VulkanCommandList.md) 的 `SetGraphicsDescriptorSets()` / `SetComputeDescriptorSets()` 中。 + +### 资源更新能力边界 + +`Update(offset, view)` 当前只处理 image 类描述符: + +- 需要 `VulkanResourceView` 持有有效 `VkImageView` +- 会按 binding 类型写入 sampled image 或 storage image + +它不负责一般 buffer SRV/UAV 的完整 typed/structured buffer 描述符体系。 + +`UpdateSampler(offset, sampler)` 当前处理 sampler 描述符: + +- 要求 binding 类型是 `DescriptorType::Sampler` +- 要求传入有效 `VulkanSampler` + +### 常量写入 + +`WriteConstant(binding, data, size, offset)` 是当前实现里最值得注意的部分: + +- 只对 `DescriptorType::CBV` 生效 +- 每个常量 binding 会维护一个 `ConstantBindingRecord` +- 当需要时,会动态创建一块 `VulkanBuffer` +- 这块 buffer 用 `VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT` 和 host-visible / host-coherent 内存创建 +- 然后把常量数据写进去,并更新 descriptor + +因此当前 CBV 路径并不是绑定一块外部统一管理的大常量缓冲,而是“descriptor set 自己为每个 binding 管一块小 buffer”。 + +### Dirty 标记 + +- `WriteConstant()` 会把 `m_constantDirty` 置为 `true` +- `MarkConstantClean()` 由外部显式调用清理标记 + +## 线程语义 + +没有内部锁。descriptor 更新应由调用方在安全时机串行完成,避免与命令录制并发修改同一个 set。 + +## 所有权与资源管理 + +- `VulkanDescriptorSet` 拥有自己的 `VkDescriptorSetLayout` +- 拥有 `VkDescriptorSet` +- 还可能拥有为常量 binding 动态分配的 `VulkanBuffer` +- `Shutdown()` 会释放 descriptor set、销毁 layout,并清空常量缓冲记录 + +## 设计取向 + +当前实现明显偏向“先把常见图像、采样器和 CBV 路径跑通”: + +- 优点是 descriptor set 能快速服务当前 graphics / compute 测试 +- 代价是 buffer 描述符体系、资源复用和常量缓冲管理都还比较朴素 + +## 当前限制 + +- `Bind()` / `Unbind()` 无实际行为 +- `Update()` 主要处理 image 描述符 +- `WriteConstant()` 为每个 CBV binding 动态维护小 buffer,不是成熟的统一常量分配器 + +## 主要公开方法 + +- `bool Initialize(VkDevice device, VulkanDescriptorPool* pool, VkDescriptorSetLayout layout, VkDescriptorSet descriptorSet, const DescriptorSetLayoutDesc& desc)` +- `void Shutdown()` +- `void Bind()` +- `void Unbind()` +- `void Update(uint32_t offset, RHIResourceView* view)` +- `void UpdateSampler(uint32_t offset, RHISampler* sampler)` +- `void WriteConstant(uint32_t binding, const void* data, size_t size, size_t offset = 0)` +- `uint32_t GetBindingCount() const` +- `const DescriptorSetLayoutBinding* GetBindings() const` +- `void* GetConstantBufferData()` +- `size_t GetConstantBufferSize() const` +- `bool IsConstantDirty() const` +- `void MarkConstantClean()` + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [VulkanDescriptorPool](../VulkanDescriptorPool/VulkanDescriptorPool.md) +- [VulkanSampler](../VulkanSampler/VulkanSampler.md) +- [VulkanResourceView](../VulkanResourceView/VulkanResourceView.md) +- [VulkanCommandList](../VulkanCommandList/VulkanCommandList.md) +- [RHIDescriptorSet](../../RHIDescriptorSet/RHIDescriptorSet.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateBuffer.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateBuffer.md new file mode 100644 index 00000000..e64b73cd --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateBuffer.md @@ -0,0 +1,36 @@ +# VulkanDevice::CreateBuffer + +```cpp +RHIBuffer* CreateBuffer(const BufferDesc& desc) override; +``` + +## 作用 + +创建一个 `VulkanBuffer`,并根据 `BufferDesc` 推导基础 `VkBufferUsageFlags`。 + +## 当前实现行为 + +- 一定会附加 `TRANSFER_DST` 和 `TRANSFER_SRC` +- 根据 `desc.bufferType` 决定附加 `INDEX_BUFFER`、`UNIFORM_BUFFER` 或 `VERTEX_BUFFER` +- 当前默认使用 `HOST_VISIBLE | HOST_COHERENT` 内存属性创建 buffer +- 创建失败时返回 `nullptr` + +## 参数 + +- `desc` - buffer 大小、步长和类型描述 + +## 返回值 + +- `RHIBuffer*` - 实际对象是 `VulkanBuffer` +- `nullptr` - 创建失败 + +## 设计说明 + +当前策略更偏“先易用、先可写”,而不是默认走 device-local 显存分层。 + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [VulkanBuffer](../VulkanBuffer/VulkanBuffer.md) +- [CreateVertexBufferView](CreateVertexBufferView.md) +- [CreateIndexBufferView](CreateIndexBufferView.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateCommandList.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateCommandList.md new file mode 100644 index 00000000..d01945ec --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateCommandList.md @@ -0,0 +1,30 @@ +# VulkanDevice::CreateCommandList + +```cpp +RHICommandList* CreateCommandList(const CommandListDesc& desc) override; +``` + +## 作用 + +创建一个 `VulkanCommandList`,用于录制图形或计算命令。 + +## 当前实现行为 + +- 当前实现并不使用 `desc` 里的细分字段 +- 总是创建一个 `VulkanCommandList` +- 内部会调用 `VulkanCommandList::Initialize(this)` +- 失败时返回 `nullptr` + +## 返回值 + +- `RHICommandList*` - 实际对象是 `VulkanCommandList` +- `nullptr` - 创建失败 + +## 注意事项 + +当前每个 `VulkanCommandList` 只持有一个 primary command buffer。 + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [VulkanCommandList](../VulkanCommandList/VulkanCommandList.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateCommandQueue.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateCommandQueue.md new file mode 100644 index 00000000..6a85821e --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateCommandQueue.md @@ -0,0 +1,25 @@ +# VulkanDevice::CreateCommandQueue + +```cpp +RHICommandQueue* CreateCommandQueue(const CommandQueueDesc& desc) override; +``` + +## 作用 + +创建一个 `VulkanCommandQueue`,作为命令提交入口。 + +## 当前实现行为 + +- 会把 `desc.queueType` 传给 `VulkanCommandQueue::Initialize(...)` +- 但当前 Vulkan 后端无论队列类型是什么,底层都仍然绑定到 graphics queue +- 创建失败返回 `nullptr` + +## 返回值 + +- `RHICommandQueue*` - 实际对象是 `VulkanCommandQueue` +- `nullptr` - 创建失败 + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [VulkanCommandQueue](../VulkanCommandQueue/VulkanCommandQueue.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateDepthStencilView.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateDepthStencilView.md new file mode 100644 index 00000000..d60649f1 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateDepthStencilView.md @@ -0,0 +1,21 @@ +# VulkanDevice::CreateDepthStencilView + +```cpp +RHIResourceView* CreateDepthStencilView(RHITexture* texture, const ResourceViewDesc& desc) override; +``` + +## 作用 + +为纹理创建 depth stencil view。 + +## 当前实现行为 + +- 实际对象是 `VulkanResourceView` +- 会调用 `InitializeAsDepthStencil(...)` +- 成功后持有深度/模板用途的 `VkImageView` + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [CreateTexture](CreateTexture.md) +- [VulkanResourceView](../VulkanResourceView/VulkanResourceView.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateDescriptorPool.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateDescriptorPool.md new file mode 100644 index 00000000..7f413b1b --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateDescriptorPool.md @@ -0,0 +1,22 @@ +# VulkanDevice::CreateDescriptorPool + +```cpp +RHIDescriptorPool* CreateDescriptorPool(const DescriptorPoolDesc& desc) override; +``` + +## 作用 + +创建 Vulkan descriptor pool。 + +## 当前实现行为 + +- 实际对象是 `VulkanDescriptorPool` +- 在初始化前会先设置 `SetDeviceOwner(this)` +- 再调用 `Initialize(m_device, desc)` +- 失败时返回 `nullptr` + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [VulkanDescriptorPool](../VulkanDescriptorPool/VulkanDescriptorPool.md) +- [CreateDescriptorSet](CreateDescriptorSet.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateDescriptorSet.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateDescriptorSet.md new file mode 100644 index 00000000..47f5db51 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateDescriptorSet.md @@ -0,0 +1,26 @@ +# VulkanDevice::CreateDescriptorSet + +```cpp +RHIDescriptorSet* CreateDescriptorSet(RHIDescriptorPool* pool, const DescriptorSetLayoutDesc& layout) override; +``` + +## 作用 + +从指定 descriptor pool 分配一个 descriptor set。 + +## 当前实现行为 + +- 当前只是做一层转发 +- 如果 `pool != nullptr`,直接调用 `pool->AllocateSet(layout)` +- 如果 `pool == nullptr`,返回 `nullptr` + +## 返回值 + +- `RHIDescriptorSet*` - 实际对象通常是 `VulkanDescriptorSet` +- `nullptr` - pool 为空或分配失败 + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [VulkanDescriptorPool](../VulkanDescriptorPool/VulkanDescriptorPool.md) +- [VulkanDescriptorSet](../VulkanDescriptorSet/VulkanDescriptorSet.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateFence.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateFence.md new file mode 100644 index 00000000..04d2f8fd --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateFence.md @@ -0,0 +1,19 @@ +# VulkanDevice::CreateFence + +```cpp +RHIFence* CreateFence(const FenceDesc& desc) override; +``` + +## 作用 + +创建 Vulkan 后端的抽象 fence 对象。 + +## 当前实现行为 + +- 当前直接返回 `new VulkanFence(desc.initialValue)` +- 不会创建原生 `VkFence` + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [VulkanFence](../VulkanFence/VulkanFence.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateFramebuffer.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateFramebuffer.md new file mode 100644 index 00000000..08e4d3ff --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateFramebuffer.md @@ -0,0 +1,21 @@ +# VulkanDevice::CreateFramebuffer + +```cpp +RHIFramebuffer* CreateFramebuffer(RHIRenderPass* renderPass, uint32_t width, uint32_t height, uint32_t colorAttachmentCount, RHIResourceView** colorAttachments, RHIResourceView* depthStencilAttachment) override; +``` + +## 作用 + +创建 Vulkan framebuffer。 + +## 当前实现行为 + +- 实际对象是 `VulkanFramebuffer` +- 调用 `Initialize(m_device, renderPass, width, height, colorAttachmentCount, colorAttachments, depthStencilAttachment)` +- 失败时返回 `nullptr` + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [VulkanFramebuffer](../VulkanFramebuffer/VulkanFramebuffer.md) +- [CreateRenderPass](CreateRenderPass.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateIndexBufferView.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateIndexBufferView.md new file mode 100644 index 00000000..0bc89747 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateIndexBufferView.md @@ -0,0 +1,21 @@ +# VulkanDevice::CreateIndexBufferView + +```cpp +RHIResourceView* CreateIndexBufferView(RHIBuffer* buffer, const ResourceViewDesc& desc) override; +``` + +## 作用 + +为指定 buffer 创建索引缓冲视图。 + +## 当前实现行为 + +- 实际对象是 `VulkanResourceView` +- 会调用 `InitializeAsIndexBuffer(...)` +- 视图里会保存索引格式和 buffer 偏移等元数据 + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [CreateBuffer](CreateBuffer.md) +- [VulkanResourceView](../VulkanResourceView/VulkanResourceView.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreatePipelineLayout.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreatePipelineLayout.md new file mode 100644 index 00000000..e91ae395 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreatePipelineLayout.md @@ -0,0 +1,25 @@ +# VulkanDevice::CreatePipelineLayout + +```cpp +RHIPipelineLayout* CreatePipelineLayout(const RHIPipelineLayoutDesc& desc) override; +``` + +## 作用 + +创建 Vulkan pipeline layout,把抽象 descriptor 布局翻译为原生 `VkPipelineLayout`。 + +## 当前实现行为 + +- 实际对象类型是 `VulkanPipelineLayout` +- 当前调用的是 `Initialize(m_device, desc)` 这条真实可用路径 +- 初始化失败返回 `nullptr` + +## 返回值 + +- `RHIPipelineLayout*` - 实际对象是 `VulkanPipelineLayout` +- `nullptr` - 创建失败 + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [VulkanPipelineLayout](../VulkanPipelineLayout/VulkanPipelineLayout.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreatePipelineState.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreatePipelineState.md new file mode 100644 index 00000000..c05c47fd --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreatePipelineState.md @@ -0,0 +1,26 @@ +# VulkanDevice::CreatePipelineState + +```cpp +RHIPipelineState* CreatePipelineState(const GraphicsPipelineDesc& desc) override; +``` + +## 作用 + +创建 Vulkan pipeline state 对象。 + +## 当前实现行为 + +- 实际对象类型是 `VulkanPipelineState` +- 内部立即调用 `VulkanPipelineState::Initialize(this, desc)` +- graphics 路径会在初始化阶段尝试建立图形管线 +- 失败时返回 `nullptr` + +## 返回值 + +- `RHIPipelineState*` - 实际对象是 `VulkanPipelineState` +- `nullptr` - 创建失败 + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [VulkanPipelineState](../VulkanPipelineState/VulkanPipelineState.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateRenderPass.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateRenderPass.md new file mode 100644 index 00000000..b21e57cf --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateRenderPass.md @@ -0,0 +1,21 @@ +# VulkanDevice::CreateRenderPass + +```cpp +RHIRenderPass* CreateRenderPass(uint32_t colorAttachmentCount, const AttachmentDesc* colorAttachments, const AttachmentDesc* depthStencilAttachment) override; +``` + +## 作用 + +创建 Vulkan render pass。 + +## 当前实现行为 + +- 实际对象是 `VulkanRenderPass` +- 调用 `Initialize(m_device, colorAttachmentCount, colorAttachments, depthStencilAttachment)` +- 失败时返回 `nullptr` + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [VulkanRenderPass](../VulkanRenderPass/VulkanRenderPass.md) +- [CreateFramebuffer](CreateFramebuffer.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateRenderTargetView.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateRenderTargetView.md new file mode 100644 index 00000000..e8c6bde6 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateRenderTargetView.md @@ -0,0 +1,21 @@ +# VulkanDevice::CreateRenderTargetView + +```cpp +RHIResourceView* CreateRenderTargetView(RHITexture* texture, const ResourceViewDesc& desc) override; +``` + +## 作用 + +为纹理创建 render target view。 + +## 当前实现行为 + +- 实际对象是 `VulkanResourceView` +- 会调用 `InitializeAsRenderTarget(...)` +- 成功后持有一个 `VkImageView` + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [CreateTexture](CreateTexture.md) +- [VulkanResourceView](../VulkanResourceView/VulkanResourceView.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateSampler.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateSampler.md new file mode 100644 index 00000000..c4946f0c --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateSampler.md @@ -0,0 +1,20 @@ +# VulkanDevice::CreateSampler + +```cpp +RHISampler* CreateSampler(const SamplerDesc& desc) override; +``` + +## 作用 + +创建 Vulkan sampler。 + +## 当前实现行为 + +- 实际对象是 `VulkanSampler` +- 调用 `Initialize(m_device, desc)` +- 失败时返回 `nullptr` + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [VulkanSampler](../VulkanSampler/VulkanSampler.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateShader.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateShader.md new file mode 100644 index 00000000..e49ce69b --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateShader.md @@ -0,0 +1,32 @@ +# VulkanDevice::CreateShader + +```cpp +RHIShader* CreateShader(const ShaderCompileDesc& desc) override; +``` + +## 作用 + +创建 Vulkan shader;如果输入不是原始 SPIR-V,会先经过 Vulkan shader 编译辅助流程。 + +## 当前实现行为 + +- 先构造 `VulkanShader` +- 调用 `CompileVulkanShader(desc, compiledShader, nullptr)` +- 再把编译产物中的 SPIR-V 交给 `VulkanShader::Compile(...)` +- 任一步失败都会删除对象并返回 `nullptr` + +## 返回值 + +- `RHIShader*` - 实际对象是 `VulkanShader` +- `nullptr` - 编译或 module 创建失败 + +## 注意事项 + +- 当前 Vulkan 后端支持 `GLSL` 和 `SPIR-V` +- 当前不支持直接用 HLSL 源码走 Vulkan 路径 + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [VulkanShader](../VulkanShader/VulkanShader.md) +- [VulkanShaderCompiler](../VulkanShaderCompiler/VulkanShaderCompiler.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateShaderResourceView.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateShaderResourceView.md new file mode 100644 index 00000000..5a2f2a0c --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateShaderResourceView.md @@ -0,0 +1,21 @@ +# VulkanDevice::CreateShaderResourceView + +```cpp +RHIResourceView* CreateShaderResourceView(RHITexture* texture, const ResourceViewDesc& desc) override; +``` + +## 作用 + +为纹理创建 shader resource view。 + +## 当前实现行为 + +- 实际对象是 `VulkanResourceView` +- 会调用 `InitializeAsShaderResource(...)` +- 当前 image view 路径主要覆盖单 mip、单 layer 的基础使用方式 + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [CreateTexture](CreateTexture.md) +- [VulkanResourceView](../VulkanResourceView/VulkanResourceView.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateSwapChain.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateSwapChain.md new file mode 100644 index 00000000..e629a654 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateSwapChain.md @@ -0,0 +1,32 @@ +# VulkanDevice::CreateSwapChain + +```cpp +RHISwapChain* CreateSwapChain(const SwapChainDesc& desc, RHICommandQueue* presentQueue) override; +``` + +## 作用 + +创建 `VulkanSwapChain`,把窗口句柄和呈现队列接入 Vulkan 呈现链路。 + +## 当前实现行为 + +- 会把 `presentQueue` 向下转型为 `VulkanCommandQueue` +- 会把 `desc.windowHandle` 解释为 `HWND__*` +- 内部调用 `VulkanSwapChain::Initialize(...)` +- 失败时返回 `nullptr` + +## 参数 + +- `desc` - 交换链描述,当前主要使用窗口句柄、宽高和 buffer count 语义 +- `presentQueue` - 呈现用命令队列;当前 Vulkan 后端仍然基于 graphics queue + +## 返回值 + +- `RHISwapChain*` - 实际对象是 `VulkanSwapChain` +- `nullptr` - 创建失败 + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [VulkanSwapChain](../VulkanSwapChain/VulkanSwapChain.md) +- [CreateCommandQueue](CreateCommandQueue.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateTexture.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateTexture.md new file mode 100644 index 00000000..06c482c3 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateTexture.md @@ -0,0 +1,46 @@ +# VulkanDevice::CreateTexture + +```cpp +RHITexture* CreateTexture(const TextureDesc& desc) override; +RHITexture* CreateTexture(const TextureDesc& desc, const void* initialData, size_t initialDataSize, uint32_t rowPitch = 0) override; +``` + +## 作用 + +创建 Vulkan 纹理;重载版本还会在创建后通过 staging buffer 上传初始数据。 + +## 前置条件 + +- `desc.width` 和 `desc.height` 必须非零 +- `desc.format` 必须能映射到有效 `VkFormat` + +## 当前实现行为 + +### 纯创建版本 + +- 创建自有 `VkImage` +- 会为图像附加当前后端需要的 usage 标志,例如 sampled、transfer、color/depth 或 storage +- 成功后返回 `VulkanTexture` + +### 带初始数据版本 + +- 先调用无初始数据版本创建纹理 +- 若 `initialData` 非空且 `initialDataSize > 0`,会创建 staging buffer 并执行上传 +- 上传成功后会把软件侧状态设置为 `ResourceStates::PixelShaderResource` + +## 返回值 + +- `RHITexture*` - 实际对象是 `VulkanTexture` +- `nullptr` - 创建或上传失败 + +## 注意事项 + +- 当前上传路径是同步录制并提交单次使用命令,不是异步资源导入系统 +- 纹理 view 需要后续再通过 `CreateRenderTargetView()`、`CreateShaderResourceView()` 等接口创建 + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [VulkanTexture](../VulkanTexture/VulkanTexture.md) +- [CreateRenderTargetView](CreateRenderTargetView.md) +- [CreateShaderResourceView](CreateShaderResourceView.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateUnorderedAccessView.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateUnorderedAccessView.md new file mode 100644 index 00000000..6e81bacb --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateUnorderedAccessView.md @@ -0,0 +1,21 @@ +# VulkanDevice::CreateUnorderedAccessView + +```cpp +RHIResourceView* CreateUnorderedAccessView(RHITexture* texture, const ResourceViewDesc& desc) override; +``` + +## 作用 + +为纹理创建 unordered access view。 + +## 当前实现行为 + +- 实际对象是 `VulkanResourceView` +- 会调用 `InitializeAsUnorderedAccess(...)` +- 当前主要服务 compute shader 对 storage image 的访问 + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [CreateTexture](CreateTexture.md) +- [VulkanResourceView](../VulkanResourceView/VulkanResourceView.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateVertexBufferView.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateVertexBufferView.md new file mode 100644 index 00000000..9e753d2b --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/CreateVertexBufferView.md @@ -0,0 +1,21 @@ +# VulkanDevice::CreateVertexBufferView + +```cpp +RHIResourceView* CreateVertexBufferView(RHIBuffer* buffer, const ResourceViewDesc& desc) override; +``` + +## 作用 + +为指定 buffer 创建顶点缓冲视图。 + +## 当前实现行为 + +- 实际对象是 `VulkanResourceView` +- 会调用 `InitializeAsVertexBuffer(...)` +- 当前不会创建 `VkBufferView`,而是保存 buffer 指针、偏移、大小和步长信息 + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [CreateBuffer](CreateBuffer.md) +- [VulkanResourceView](../VulkanResourceView/VulkanResourceView.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/FindMemoryType.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/FindMemoryType.md new file mode 100644 index 00000000..a34edf6b --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/FindMemoryType.md @@ -0,0 +1,33 @@ +# VulkanDevice::FindMemoryType + +```cpp +uint32_t FindMemoryType(uint32_t typeFilter, VkMemoryPropertyFlags properties) const; +``` + +## 作用 + +在当前物理设备的内存类型表里查找满足条件的内存类型索引。 + +## 当前实现行为 + +- 会遍历物理设备暴露的 memory types +- 要求索引命中 `typeFilter` +- 同时要求该类型包含调用方请求的 `properties` +- 找不到时返回 `UINT32_MAX` + +## 使用场景 + +- `VulkanBuffer` 分配内存 +- 纹理与 staging 资源分配内存 +- 截图 readback staging buffer 分配 + +## 返回值 + +- 有效索引 - 可直接写入 `VkMemoryAllocateInfo::memoryTypeIndex` +- `UINT32_MAX` - 没找到匹配项 + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [CreateBuffer](CreateBuffer.md) +- [CreateTexture](CreateTexture.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/Initialize.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/Initialize.md new file mode 100644 index 00000000..69c058f5 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/Initialize.md @@ -0,0 +1,41 @@ +# VulkanDevice::Initialize + +```cpp +bool Initialize(const RHIDeviceDesc& desc) override; +``` + +## 作用 + +初始化 Vulkan 后端设备根对象,建立 `VkInstance`、选择物理设备、创建逻辑设备和图形队列,并填充设备信息缓存。 + +## 前置条件 + +- 进程环境里能加载 Vulkan runtime +- 当前平台路径需要支持 Win32 surface 扩展 +- 如果对象已经初始化过,当前实现会直接返回 `true` + +## 当前实现行为 + +- 会先保存 `desc` +- 按顺序调用 `CreateInstance()`、`PickPhysicalDevice()`、`CreateLogicalDevice()`、`QueryDeviceInfo()` +- 任一步失败都会调用 `Shutdown()` 回滚,并返回 `false` +- `desc.enableDebugLayer` 和 `desc.enableGPUValidation` 当前不会真正启用 Vulkan validation layers + +## 参数 + +- `desc` - 设备初始化描述;当前会被保存,但其中调试层相关开关尚未真正接线 + +## 返回值 + +- `true` - 初始化完成,后续可以创建队列、命令列表、交换链与资源 +- `false` - 初始化失败,设备对象会尽量回滚到未初始化状态 + +## 线程语义 + +应在渲染初始化阶段由单线程调用,不要并发初始化同一个设备对象。 + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [Shutdown](Shutdown.md) +- [FindMemoryType](FindMemoryType.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/Shutdown.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/Shutdown.md new file mode 100644 index 00000000..67b6e640 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/Shutdown.md @@ -0,0 +1,29 @@ +# VulkanDevice::Shutdown + +```cpp +void Shutdown() override; +``` + +## 作用 + +释放 `VulkanDevice` 持有的 Vulkan 根对象,并把内部状态重置为未初始化。 + +## 当前实现行为 + +- 会销毁逻辑设备、实例以及相关缓存状态 +- 会清空图形队列句柄、队列族索引、设备信息和 capability 缓存 +- 析构函数也会调用 `Shutdown()` + +## 使用建议 + +- 在调用它之前,先销毁由该设备创建出来的队列、交换链、命令列表、资源和状态对象 +- 不要把它当成“热重载设备”的轻量操作,它属于完整关停路径 + +## 线程语义 + +应由调用方保证没有其他线程仍在使用该设备创建的对象。 + +## 相关文档 + +- [VulkanDevice](VulkanDevice.md) +- [Initialize](Initialize.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/VulkanDevice.md b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/VulkanDevice.md new file mode 100644 index 00000000..4aa35f6c --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanDevice/VulkanDevice.md @@ -0,0 +1,153 @@ +# VulkanDevice + +**命名空间**: `XCEngine::RHI` + +**类型**: `class` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanDevice.h` + +**描述**: Vulkan 后端里的 `RHIDevice` 实现,负责创建 `VkInstance`、选择物理设备、创建逻辑设备,并作为 Vulkan 资源工厂的根入口。 + +## 概览 + +如果把抽象层里的 [RHIDevice](../../RHIDevice/RHIDevice.md) 理解成“跨后端的设备契约”,那么 `VulkanDevice` 就是这份契约在 Vulkan 上的具体落地。 + +它承担三类职责: + +- 建立 Vulkan 运行时根对象:`VkInstance`、`VkPhysicalDevice`、`VkDevice`、图形队列与队列族索引。 +- 把 RHI 抽象描述翻译为 Vulkan 对象:buffer、texture、swap chain、pipeline、descriptor、render pass、framebuffer 等都从这里创建。 +- 提供 Vulkan 专属查询能力:例如 `GetInstance()`、`GetPhysicalDevice()`、`GetDevice()`、`GetGraphicsQueue()`、`FindMemoryType()`。 + +这类设计和商业引擎里的 backend device 很接近。上层系统不应直接依赖 Vulkan 原生对象做资源管理,而应把 `VulkanDevice` 当成 Vulkan 后端的“实现根”。 + +## 生命周期 + +推荐顺序是: + +1. 默认构造 `VulkanDevice` +2. 调用 `Initialize(const RHIDeviceDesc&)` +3. 通过设备创建队列、命令列表、交换链、资源与状态对象 +4. 先释放由设备创建出来的对象 +5. 最后调用 `Shutdown()` + +按 `engine/src/RHI/Vulkan/VulkanDevice.cpp` 的当前实现,`Initialize()` 的内部顺序固定为: + +1. `CreateInstance()` +2. `PickPhysicalDevice()` +3. `CreateLogicalDevice()` +4. `QueryDeviceInfo()` + +如果中途失败,会调用 `Shutdown()` 做回滚。析构函数也会调用 `Shutdown()`,因此“忘记显式关停”通常不会泄漏根对象,但工程上仍应把显式 `Shutdown()` 视为标准用法。 + +## 当前实现的真实行为 + +### 设备初始化与平台边界 + +- `CreateInstance()` 当前固定请求 `VK_KHR_SURFACE_EXTENSION_NAME` 和 `VK_KHR_WIN32_SURFACE_EXTENSION_NAME`。 +- 这说明当前公开实现是 Win32 路径,不是跨平台 surface 创建实现。 +- `RHIDeviceDesc` 里的 `enableDebugLayer` 和 `enableGPUValidation` 会被保存,但当前 `CreateInstance()` / `CreateLogicalDevice()` 并没有据此启用 Vulkan validation layers。 + +这点文档上必须讲清楚,因为接口形状看起来像“支持调试层开关”,但当前 Vulkan 实现并没有真正接线。 + +### 物理设备与队列选择 + +- `PickPhysicalDevice()` 会遍历物理设备,选择第一个拥有 `VK_QUEUE_GRAPHICS_BIT` 的设备。 +- 当前只记录一个 `m_graphicsQueueFamilyIndex`。 +- `CreateLogicalDevice()` 只创建一个队列,并从这个队列族取出一个图形队列。 + +因此当前实现更接近“单图形队列 backend”,而不是已经完整建好的多队列模型。即使 RHI 抽象里存在 `Direct / Compute / Copy` 等概念,Vulkan 后端目前也没有拆成独立 native queue。 + +### 资源工厂行为 + +- `CreateBuffer()` 默认使用 `VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT`。 +- 这意味着当前 buffer 创建策略偏向“先易用、先可写”,而不是默认走更激进的 device-local 显存路径。 +- `CreateTexture(const TextureDesc&)` 创建的是自有 `VkImage`,默认带 `TRANSFER_SRC`、`TRANSFER_DST`、`SAMPLED` 等 usage,并根据格式决定是否附加 color/depth/storage 用途。 +- `CreateTexture(..., initialData, ...)` 会先建纹理,再通过 staging buffer 上传,成功后把软件侧状态设为 `ResourceStates::PixelShaderResource`。 +- `CreateShader()` 不是直接从文本生成 `VkShaderModule`,而是先调用 [VulkanShaderCompiler](../VulkanShaderCompiler/VulkanShaderCompiler.md) 的编译流程得到 SPIR-V,再交给 [VulkanShader](../VulkanShader/VulkanShader.md) 创建 module。 + +## 设备信息与能力 + +- `GetCapabilities()` 返回 `RHICapabilities` +- `GetDeviceInfo()` 返回 `RHIDeviceInfo` +- `GetNativeDevice()` 返回 `VkDevice` +- `GetInstance()` / `GetPhysicalDevice()` / `GetGraphicsQueue()` 暴露 Vulkan 原生根对象 + +从 `QueryDeviceInfo()` 的实现看,设备名称、厂商和适配器信息会在初始化阶段写入 `m_deviceInfo`,供上层调试、日志和测试使用。 + +## 线程语义 + +从当前实现看,`VulkanDevice` 内部没有显式锁,也没有跨线程资源所有权协调逻辑。更稳妥的工程约束是: + +- 初始化与关停由单线程串行完成 +- 资源创建与销毁由调用方自行保证时序 +- 不要假设 `Create*()` 系列天然线程安全 + +这和商业引擎常见做法一致:设备对象通常是渲染基础设施的中心,但线程模型往往由更高层的 render graph、render thread 或 job system 决定,而不是由 backend device 自己兜底。 + +## 所有权与资源管理 + +- `Create*()` 系列大多返回裸指针,调用方负责后续 `Shutdown()` 与 `delete` +- `VulkanDevice` 不负责统一托管所有已创建对象 +- 交换链 back buffer、render pass、descriptor pool 等对象也遵循同样模式 + +这属于“轻量工厂 + 调用方负责生命周期”的设计,而不是 Unity 那种高度托管的资源对象模型。好处是 backend 更直白,代价是使用者必须严格控制销毁顺序。 + +## 设计取向 + +`VulkanDevice` 的设计明显偏向“先把抽象层打通,再逐步补强后端特性”: + +- 好处是 RHI 测试和跨后端样例可以较早跑起来 +- 代价是 Vulkan 专属能力目前只覆盖了最核心路径 +- 一些接口已经预留了成熟引擎会有的扩展点,例如调试层、GPU validation、多队列,但当前实现还没有全部兑现 + +如果你熟悉 Unity,可以把它类比成更靠近引擎内部 `GfxDevice` 的那层,而不是脚本层直接操作的 `Graphics` API。 + +## 当前限制 + +- 当前 surface 创建路径是 Win32 专属 +- 调试层与 GPU validation 开关尚未真正启用 +- 只选择第一个可用 graphics queue family +- 没有单独的 present / compute / copy native queue +- buffer 默认分配策略更偏 host-visible,而不是按资源用途做精细化显存分类 + +这些限制不会影响当前测试覆盖的基本图形与计算路径,但会影响后续性能调优和平台扩展。 + +## 主要公开方法 + +- `bool Initialize(const RHIDeviceDesc& desc)` +- `void Shutdown()` +- `RHIBuffer* CreateBuffer(const BufferDesc& desc)` +- `RHITexture* CreateTexture(const TextureDesc& desc)` +- `RHITexture* CreateTexture(const TextureDesc& desc, const void* initialData, size_t initialDataSize, uint32_t rowPitch = 0)` +- `RHISwapChain* CreateSwapChain(const SwapChainDesc& desc, RHICommandQueue* presentQueue)` +- `RHICommandList* CreateCommandList(const CommandListDesc& desc)` +- `RHICommandQueue* CreateCommandQueue(const CommandQueueDesc& desc)` +- `RHIShader* CreateShader(const ShaderCompileDesc& desc)` +- `RHIPipelineState* CreatePipelineState(const GraphicsPipelineDesc& desc)` +- `RHIPipelineLayout* CreatePipelineLayout(const RHIPipelineLayoutDesc& desc)` +- `RHIFence* CreateFence(const FenceDesc& desc)` +- `RHISampler* CreateSampler(const SamplerDesc& desc)` +- `RHIRenderPass* CreateRenderPass(...)` +- `RHIFramebuffer* CreateFramebuffer(...)` +- `RHIDescriptorPool* CreateDescriptorPool(const DescriptorPoolDesc& desc)` +- `RHIDescriptorSet* CreateDescriptorSet(RHIDescriptorPool* pool, const DescriptorSetLayoutDesc& layout)` + +## 相关测试与使用线索 + +- `tests/RHI/unit/test_factory.cpp` 覆盖了 Vulkan 设备创建入口 +- `tests/RHI/unit/test_device.cpp` 会通过抽象设备接口验证 `CreateCommandQueue()`、`CreateCommandList()`、资源与视图创建 +- `tests/RHI/unit/test_vulkan_graphics.cpp` 直接走 Vulkan 后端验证 shader、pipeline、texture copy 与 compute 路径 +- `tests/RHI/integration/fixtures/RHIIntegrationFixture.cpp` 展示了真实的设备、队列、交换链、命令列表初始化流程 + +## 相关指南 + +- [Devices, Queues, Command Lists, And Resource Creation](../../../../_guides/RHI/Devices-Queues-CommandLists-And-Resource-Creation.md) + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [RHIDevice](../../RHIDevice/RHIDevice.md) +- [VulkanCommandQueue](../VulkanCommandQueue/VulkanCommandQueue.md) +- [VulkanCommandList](../VulkanCommandList/VulkanCommandList.md) +- [VulkanSwapChain](../VulkanSwapChain/VulkanSwapChain.md) +- [VulkanShader](../VulkanShader/VulkanShader.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanFence/VulkanFence.md b/docs/api/XCEngine/RHI/Vulkan/VulkanFence/VulkanFence.md new file mode 100644 index 00000000..be488b0a --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanFence/VulkanFence.md @@ -0,0 +1,65 @@ +# VulkanFence + +**命名空间**: `XCEngine::RHI` + +**类型**: `class` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanFence.h` + +**描述**: Vulkan 后端里的 `RHIFence` 轻量实现,当前本质上是一个软件计数器,而不是原生 `VkFence` 封装。 + +## 概览 + +`VulkanFence` 的接口形状继承自抽象层 fence 契约,但当前实现非常轻: + +- 内部只保存 `uint64_t m_value` +- 不创建 `VkFence` +- 不等待 GPU 真正完成某条提交 + +## 当前实现的真实行为 + +- 构造时可以指定初始值 +- `Signal()` 会把值加一 +- `Signal(uint64_t value)` 会直接把值改成传入值 +- `Wait(uint64_t value)` 如果当前值更小,就把它提升到目标值 +- `GetCompletedValue()` 返回当前计数 +- `GetNativeHandle()` 返回 `&m_value` +- `Shutdown()` 是空实现 + +因此这里的 `Wait()` 不是阻塞等待 GPU 信号,而只是一个软件层面的“把值推进到至少等于目标值”。 + +## 与命令队列的关系 + +[VulkanCommandQueue](../VulkanCommandQueue/VulkanCommandQueue.md) 的 `Signal()` / `Wait()` 当前只是把调用转发到 `RHIFence`,并没有接入 Vulkan 的 native queue synchronization。 + +这意味着当前 fence 语义更接近“测试友好的抽象完成值”,而不是商业级引擎里用于 CPU/GPU 精确同步的 timeline fence。 + +## 线程语义 + +源码里没有原子操作和锁。不要把它当成高并发同步原语使用。 + +## 设计取向 + +这个实现显然是为了先把抽象层 fence 接口接通,方便测试与统一 API,而不是为了提供完整 Vulkan 同步系统。 + +## 当前限制 + +- 不是 `VkFence` +- 不代表 GPU 真正完成状态 +- `Wait()` 不阻塞 +- `GetNativeHandle()` 只是 `uint64_t` 地址 + +## 主要公开方法 + +- `void Shutdown()` +- `void Signal()` +- `void Signal(uint64_t value)` +- `void Wait(uint64_t value)` +- `uint64_t GetCompletedValue() const` +- `void* GetNativeHandle()` + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [VulkanCommandQueue](../VulkanCommandQueue/VulkanCommandQueue.md) +- [RHIFence](../../RHIFence/RHIFence.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetColorAttachmentCount.md b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetColorAttachmentCount.md new file mode 100644 index 00000000..9b1a0059 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetColorAttachmentCount.md @@ -0,0 +1,14 @@ +# VulkanFramebuffer::GetColorAttachmentCount + +```cpp +uint32_t GetColorAttachmentCount() const; +``` + +## 作用 + +返回当前缓存的颜色附件 view 数量。 + +## 相关文档 + +- [VulkanFramebuffer](VulkanFramebuffer.md) +- [GetColorAttachmentView](GetColorAttachmentView.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetColorAttachmentTexture.md b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetColorAttachmentTexture.md new file mode 100644 index 00000000..167eac77 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetColorAttachmentTexture.md @@ -0,0 +1,19 @@ +# VulkanFramebuffer::GetColorAttachmentTexture + +```cpp +VulkanTexture* GetColorAttachmentTexture(uint32_t index) const; +``` + +## 作用 + +按索引返回颜色附件 view 对应的纹理对象。 + +## 当前实现行为 + +- 会先通过 `GetColorAttachmentView(index)` 取 view +- 若 view 无效则返回 `nullptr` + +## 相关文档 + +- [VulkanFramebuffer](VulkanFramebuffer.md) +- [GetColorAttachmentView](GetColorAttachmentView.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetColorAttachmentView.md b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetColorAttachmentView.md new file mode 100644 index 00000000..b1156012 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetColorAttachmentView.md @@ -0,0 +1,18 @@ +# VulkanFramebuffer::GetColorAttachmentView + +```cpp +VulkanResourceView* GetColorAttachmentView(uint32_t index) const; +``` + +## 作用 + +按索引返回颜色附件 view。 + +## 当前实现行为 + +- 索引越界时返回 `nullptr` + +## 相关文档 + +- [VulkanFramebuffer](VulkanFramebuffer.md) +- [GetColorAttachmentTexture](GetColorAttachmentTexture.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetDepthStencilTexture.md b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetDepthStencilTexture.md new file mode 100644 index 00000000..41f6c3a8 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetDepthStencilTexture.md @@ -0,0 +1,18 @@ +# VulkanFramebuffer::GetDepthStencilTexture + +```cpp +VulkanTexture* GetDepthStencilTexture() const; +``` + +## 作用 + +返回深度模板 view 对应的纹理对象。 + +## 当前实现行为 + +- 若没有深度模板 view,返回 `nullptr` + +## 相关文档 + +- [VulkanFramebuffer](VulkanFramebuffer.md) +- [GetDepthStencilView](GetDepthStencilView.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetDepthStencilView.md b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetDepthStencilView.md new file mode 100644 index 00000000..4a39d060 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetDepthStencilView.md @@ -0,0 +1,14 @@ +# VulkanFramebuffer::GetDepthStencilView + +```cpp +VulkanResourceView* GetDepthStencilView() const; +``` + +## 作用 + +返回当前缓存的深度模板 view。 + +## 相关文档 + +- [VulkanFramebuffer](VulkanFramebuffer.md) +- [GetDepthStencilTexture](GetDepthStencilTexture.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetFramebuffer.md b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetFramebuffer.md new file mode 100644 index 00000000..3fc74f21 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetFramebuffer.md @@ -0,0 +1,14 @@ +# VulkanFramebuffer::GetFramebuffer + +```cpp +VkFramebuffer GetFramebuffer() const; +``` + +## 作用 + +返回真实的 native `VkFramebuffer`。 + +## 相关文档 + +- [VulkanFramebuffer](VulkanFramebuffer.md) +- [GetNativeHandle](GetNativeHandle.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetHeight.md b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetHeight.md new file mode 100644 index 00000000..b15a54c7 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetHeight.md @@ -0,0 +1,14 @@ +# VulkanFramebuffer::GetHeight + +```cpp +uint32_t GetHeight() const override; +``` + +## 作用 + +返回 framebuffer 高度。 + +## 相关文档 + +- [VulkanFramebuffer](VulkanFramebuffer.md) +- [GetWidth](GetWidth.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetNativeHandle.md b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetNativeHandle.md new file mode 100644 index 00000000..f8125dbf --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetNativeHandle.md @@ -0,0 +1,19 @@ +# VulkanFramebuffer::GetNativeHandle + +```cpp +void* GetNativeHandle() override; +``` + +## 作用 + +返回 native framebuffer 句柄。 + +## 当前实现行为 + +- 直接返回 `m_framebuffer` +- 实际类型是 `VkFramebuffer` + +## 相关文档 + +- [VulkanFramebuffer](VulkanFramebuffer.md) +- [GetFramebuffer](GetFramebuffer.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetRenderPass.md b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetRenderPass.md new file mode 100644 index 00000000..eaf91857 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetRenderPass.md @@ -0,0 +1,14 @@ +# VulkanFramebuffer::GetRenderPass + +```cpp +VulkanRenderPass* GetRenderPass() const; +``` + +## 作用 + +返回与当前 framebuffer 关联的 `VulkanRenderPass`。 + +## 相关文档 + +- [VulkanFramebuffer](VulkanFramebuffer.md) +- [VulkanRenderPass](../VulkanRenderPass/VulkanRenderPass.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetWidth.md b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetWidth.md new file mode 100644 index 00000000..3c36a620 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/GetWidth.md @@ -0,0 +1,14 @@ +# VulkanFramebuffer::GetWidth + +```cpp +uint32_t GetWidth() const override; +``` + +## 作用 + +返回 framebuffer 宽度。 + +## 相关文档 + +- [VulkanFramebuffer](VulkanFramebuffer.md) +- [GetHeight](GetHeight.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/Initialize.md b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/Initialize.md new file mode 100644 index 00000000..4f956571 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/Initialize.md @@ -0,0 +1,34 @@ +# VulkanFramebuffer::Initialize + +```cpp +bool Initialize(VkDevice device, RHIRenderPass* renderPass, uint32_t width, uint32_t height, + uint32_t colorAttachmentCount, RHIResourceView** colorAttachments, + RHIResourceView* depthStencilAttachment); +bool Initialize(RHIRenderPass* renderPass, uint32_t width, uint32_t height, + uint32_t colorAttachmentCount, RHIResourceView** colorAttachments, + RHIResourceView* depthStencilAttachment) override; +``` + +## 作用 + +初始化 Vulkan framebuffer,把 render pass 与一组 attachment views 绑定成 `VkFramebuffer`。 + +## 当前实现行为 + +### `Initialize(VkDevice, ...)` + +- 这是当前真正有效的初始化入口 +- 会严格校验 render pass、宽高、颜色附件数量和深度附件匹配关系 +- 要求所有 image views 都有效 +- 创建成功后缓存 render pass、附件 view 和尺寸信息 + +### `Initialize(...)` + +- 当前只是转发到 `Initialize(m_device, ...)` +- 如果对象尚未持有有效设备,这条路径本身没有独立初始化能力 + +## 相关文档 + +- [VulkanFramebuffer](VulkanFramebuffer.md) +- [Shutdown](Shutdown.md) +- [IsValid](IsValid.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/IsValid.md b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/IsValid.md new file mode 100644 index 00000000..0b172bfc --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/IsValid.md @@ -0,0 +1,18 @@ +# VulkanFramebuffer::IsValid + +```cpp +bool IsValid() const override; +``` + +## 作用 + +判断 framebuffer 是否已经拥有有效 native 对象。 + +## 当前实现行为 + +- 只通过 `m_framebuffer != VK_NULL_HANDLE` 判断 + +## 相关文档 + +- [VulkanFramebuffer](VulkanFramebuffer.md) +- [GetFramebuffer](GetFramebuffer.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/Shutdown.md b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/Shutdown.md new file mode 100644 index 00000000..31406405 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/Shutdown.md @@ -0,0 +1,19 @@ +# VulkanFramebuffer::Shutdown + +```cpp +void Shutdown() override; +``` + +## 作用 + +销毁当前 native framebuffer,并清空 attachment 缓存。 + +## 当前实现行为 + +- 会销毁 `VkFramebuffer` +- 清空 render pass 指针、尺寸、颜色附件数组和深度附件指针 + +## 相关文档 + +- [VulkanFramebuffer](VulkanFramebuffer.md) +- [Initialize](Initialize.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/VulkanFramebuffer.md b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/VulkanFramebuffer.md new file mode 100644 index 00000000..72f856b7 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanFramebuffer/VulkanFramebuffer.md @@ -0,0 +1,113 @@ +# VulkanFramebuffer + +**命名空间**: `XCEngine::RHI` + +**类型**: `class` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanFramebuffer.h` + +**描述**: Vulkan 后端里的 `RHIFramebuffer` 实现,负责把 render pass 与一组 image view 组合成 `VkFramebuffer`。 + +## 概览 + +`VulkanFramebuffer` 是 attachment 实例化后的绑定结果。它把: + +- 一个 [VulkanRenderPass](../VulkanRenderPass/VulkanRenderPass.md) +- 若干颜色附件 view +- 可选的深度模板附件 view + +组合成一个可被 `vkCmdBeginRenderPass()` 直接使用的原生 framebuffer。 + +## 生命周期 + +通常由 [VulkanDevice](../VulkanDevice/VulkanDevice.md) 创建: + +1. 准备 render pass +2. 准备对应的 `VulkanResourceView` +3. 调用 `CreateFramebuffer(...)` +4. 在命令列表里传给 `BeginRenderPass(...)` +5. 用完后 `Shutdown()` + +## 当前实现的真实行为 + +### 初始化校验很严格 + +`Initialize(...)` 会显式检查: + +- `VkDevice`、`renderPass`、`width`、`height` 是否有效 +- 如果 `colorAttachmentCount > 0`,`colorAttachments` 不能为 `nullptr` +- `colorAttachmentCount` 必须等于 render pass 的颜色附件数量 +- render pass 需要深度附件时,`depthStencilAttachment` 不能缺失 +- render pass 不需要深度附件时,也不能额外传深度附件 +- 每个附件 view 都必须存在有效 `VkImageView` + +这让 framebuffer 构造失败路径比较明确,也能减少“render pass 和 attachment 数量不匹配”的隐性错误。 + +### 所有权边界 + +- `VulkanFramebuffer` 自己拥有 `VkFramebuffer` +- 但颜色附件 view 和深度附件 view 只是借用指针 +- 它不拥有这些 view 对应的 texture + +这点很重要,因为 framebuffer 只是 attachment 组合,不是 attachment 资源的所有者。 + +### 便捷访问 + +除了基础的 `GetFramebuffer()` 之外,当前还提供: + +- `GetColorAttachmentView(index)` +- `GetDepthStencilView()` +- `GetColorAttachmentTexture(index)` +- `GetDepthStencilTexture()` + +这些 helper 对 backend 内部和测试代码都很方便,能快速从 framebuffer 反查 attachment 包装对象。 + +## 线程语义 + +当前没有内部同步。更稳妥的用法是: + +- 初始化后只读使用 +- 不要在命令列表仍持有它时并发销毁 framebuffer + +## 设计取向 + +这个类的设计很符合商业引擎 backend 的习惯: + +- framebuffer 是短到中等生命周期的原生绑定对象 +- 真正长期存在的是 texture / resource view +- framebuffer 负责验证 attachment 兼容性,但不接管资源所有权 + +## 当前限制 + +- 只处理单层 `layers = 1` 的 framebuffer 创建 +- attachment 兼容性主要依赖当前实现内的直接检查,不包含更复杂的 runtime 兼容缓存系统 + +## 主要公开方法 + +- `bool Initialize(VkDevice device, RHIRenderPass* renderPass, uint32_t width, uint32_t height, uint32_t colorAttachmentCount, RHIResourceView** colorAttachments, RHIResourceView* depthStencilAttachment)` +- `bool Initialize(RHIRenderPass* renderPass, uint32_t width, uint32_t height, uint32_t colorAttachmentCount, RHIResourceView** colorAttachments, RHIResourceView* depthStencilAttachment)` +- `void Shutdown()` +- `void* GetNativeHandle()` +- `uint32_t GetWidth() const` +- `uint32_t GetHeight() const` +- `bool IsValid() const` +- `VkFramebuffer GetFramebuffer() const` +- `VulkanRenderPass* GetRenderPass() const` +- `uint32_t GetColorAttachmentCount() const` +- `VulkanResourceView* GetColorAttachmentView(uint32_t index) const` +- `VulkanResourceView* GetDepthStencilView() const` +- `VulkanTexture* GetColorAttachmentTexture(uint32_t index) const` +- `VulkanTexture* GetDepthStencilTexture() const` + +## 相关测试与使用线索 + +- `tests/RHI/unit/test_vulkan_graphics.cpp` 直接验证了 framebuffer 与 render pass 组合后开始 render pass、清屏并写颜色的行为 +- `tests/RHI/unit/test_command_list.cpp` 也覆盖了抽象 framebuffer 路径 + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [VulkanRenderPass](../VulkanRenderPass/VulkanRenderPass.md) +- [VulkanResourceView](../VulkanResourceView/VulkanResourceView.md) +- [VulkanTexture](../VulkanTexture/VulkanTexture.md) +- [RHIFramebuffer](../../RHIFramebuffer/RHIFramebuffer.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/GetDesc.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/GetDesc.md new file mode 100644 index 00000000..73d4c32e --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/GetDesc.md @@ -0,0 +1,19 @@ +# VulkanPipelineLayout::GetDesc + +```cpp +const RHIPipelineLayoutDesc& GetDesc() const; +``` + +## 作用 + +返回当前缓存的抽象 pipeline layout 描述。 + +## 当前实现行为 + +- 返回的是初始化时保存或补全后的 `m_desc` +- 在扁平计数路径下,返回值可能已经被改写为合成后的 set layout 形式 + +## 相关文档 + +- [VulkanPipelineLayout](VulkanPipelineLayout.md) +- [UsesSetLayouts](UsesSetLayouts.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/GetNativeHandle.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/GetNativeHandle.md new file mode 100644 index 00000000..d5b38fe3 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/GetNativeHandle.md @@ -0,0 +1,19 @@ +# VulkanPipelineLayout::GetNativeHandle + +```cpp +void* GetNativeHandle() override; +``` + +## 作用 + +返回当前 native pipeline layout 句柄。 + +## 当前实现行为 + +- 直接返回 `m_pipelineLayout` +- 实际类型是 `VkPipelineLayout` + +## 相关文档 + +- [VulkanPipelineLayout](VulkanPipelineLayout.md) +- [GetPipelineLayout](GetPipelineLayout.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/GetPipelineLayout.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/GetPipelineLayout.md new file mode 100644 index 00000000..9bb4660e --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/GetPipelineLayout.md @@ -0,0 +1,19 @@ +# VulkanPipelineLayout::GetPipelineLayout + +```cpp +VkPipelineLayout GetPipelineLayout() const; +``` + +## 作用 + +返回当前 `VkPipelineLayout`。 + +## 使用场景 + +- graphics / compute pipeline 创建 +- command list 绑定 descriptor set 时需要 native pipeline layout + +## 相关文档 + +- [VulkanPipelineLayout](VulkanPipelineLayout.md) +- [GetNativeHandle](GetNativeHandle.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/Initialize.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/Initialize.md new file mode 100644 index 00000000..d3c2a82f --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/Initialize.md @@ -0,0 +1,37 @@ +# VulkanPipelineLayout::Initialize + +```cpp +bool Initialize(VkDevice device, const RHIPipelineLayoutDesc& desc); +bool Initialize(const RHIPipelineLayoutDesc& desc) override; +``` + +## 作用 + +初始化 Vulkan pipeline layout,把抽象 descriptor 布局转成 `VkDescriptorSetLayout` 和 `VkPipelineLayout`。 + +## 当前实现行为 + +### `Initialize(VkDevice, desc)` + +- 这是当前真正可用的初始化入口 +- 会先保存 `desc` +- 如果 `desc` 自带显式 set layouts,就走显式路径 +- 否则按 `constantBufferCount / textureCount / uavCount / samplerCount` 合成扁平 set layouts +- 随后创建所有 native `VkDescriptorSetLayout` +- 最后创建 `VkPipelineLayout` + +### `Initialize(desc)` + +- 当前实现直接返回 `false` +- 不会自动从别处推导 `VkDevice` + +## 返回值 + +- `true` - 初始化成功 +- `false` - 输入无效、native layout 创建失败,或调用了当前未接线的重载 + +## 相关文档 + +- [VulkanPipelineLayout](VulkanPipelineLayout.md) +- [Shutdown](Shutdown.md) +- [UsesSetLayouts](UsesSetLayouts.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/Shutdown.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/Shutdown.md new file mode 100644 index 00000000..4e2b7947 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/Shutdown.md @@ -0,0 +1,21 @@ +# VulkanPipelineLayout::Shutdown + +```cpp +void Shutdown() override; +``` + +## 作用 + +销毁当前 pipeline layout 及其内部创建的 set layouts。 + +## 当前实现行为 + +- 会先销毁 `VkPipelineLayout` +- 再逐个销毁 `m_nativeSetLayouts` +- 清空描述缓存和绑定缓存 +- 把设备句柄与内部状态重置为空 + +## 相关文档 + +- [VulkanPipelineLayout](VulkanPipelineLayout.md) +- [Initialize](Initialize.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/UsesSetLayouts.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/UsesSetLayouts.md new file mode 100644 index 00000000..53a47fe1 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/UsesSetLayouts.md @@ -0,0 +1,19 @@ +# VulkanPipelineLayout::UsesSetLayouts + +```cpp +bool UsesSetLayouts() const; +``` + +## 作用 + +判断当前 layout 描述是否以显式 set layout 形式存在。 + +## 当前实现行为 + +- 当 `m_desc.setLayoutCount > 0 && m_desc.setLayouts != nullptr` 时返回 `true` +- 这既可能来自调用方原始输入,也可能来自扁平计数路径合成后的结果 + +## 相关文档 + +- [VulkanPipelineLayout](VulkanPipelineLayout.md) +- [GetDesc](GetDesc.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/VulkanPipelineLayout.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/VulkanPipelineLayout.md new file mode 100644 index 00000000..3bb980e1 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineLayout/VulkanPipelineLayout.md @@ -0,0 +1,132 @@ +# VulkanPipelineLayout + +**命名空间**: `XCEngine::RHI` + +**类型**: `class` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanPipelineLayout.h` + +**描述**: Vulkan 后端里的 `RHIPipelineLayout` 实现,负责把抽象描述的 descriptor set layout 组织成原生 `VkDescriptorSetLayout` 与 `VkPipelineLayout`。 + +## 概览 + +`VulkanPipelineLayout` 是 descriptor 绑定模型和 pipeline 之间的桥梁。它决定了: + +- 一共有多少个 descriptor set +- 每个 set 里有哪些 binding +- 每个 binding 的类型、数量和 shader 可见性 + +如果说 [VulkanDescriptorSet](../VulkanDescriptorSet/VulkanDescriptorSet.md) 是“具体塞进去的数据”,那么 `VulkanPipelineLayout` 就是“这些数据应当按什么版式摆放”的版式定义。 + +## 生命周期 + +推荐方式是由 [VulkanDevice](../VulkanDevice/VulkanDevice.md) 调用 `CreatePipelineLayout()` 来创建,因为真正可用的初始化入口是: + +- `bool Initialize(VkDevice device, const RHIPipelineLayoutDesc& desc)` + +需要特别说明的是: + +- 抽象覆盖函数 `Initialize(const RHIPipelineLayoutDesc& desc)` 当前直接返回 `false` +- 也就是说,当前 Vulkan 后端要求调用方在初始化时显式提供 `VkDevice` + +这不是文档推测,而是当前实现的真实行为。 + +## 当前实现的真实行为 + +### 两种布局输入模式 + +当前实现支持两种构建路径: + +1. 显式 set layout 路径:`desc.setLayoutCount > 0 && desc.setLayouts != nullptr` +2. 扁平计数路径:根据 `constantBufferCount`、`textureCount`、`uavCount`、`samplerCount` 合成 set layout + +这对应两种工程风格: + +- 前者更接近 Vulkan 原生思路,调用方明确描述每个 set 的 binding +- 后者更像早期抽象 RHI 的简化模式,调用方只给出总数,backend 帮你合成布局 + +### 显式 set layout 路径 + +`PrepareExplicitLayouts()` 会: + +- 深拷贝每个 `DescriptorSetLayoutDesc` +- 深拷贝其中的 `DescriptorSetLayoutBinding` +- 顺便根据 binding 类型回填 `m_desc.constantBufferCount / textureCount / samplerCount / uavCount` + +这意味着 layout 描述在初始化后不会继续依赖外部传入的原始数组内存。 + +### 扁平计数路径 + +`PrepareFlatLayouts()` 会按下面顺序合成 synthetic set layout: + +1. CBV +2. SRV +3. UAV +4. Sampler + +每一种类型会生成一个独立 set。这个策略不是 Vulkan 唯一正确答案,但它让抽象层里基于“资源数量”描述布局的代码可以先跑起来。 + +### 原生对象创建 + +`CreateNativeSetLayouts()` 会: + +- 遍历每个 set layout +- 把抽象 binding 翻译成 `VkDescriptorSetLayoutBinding` +- 创建 `VkDescriptorSetLayout` +- 最终用这些 native set layout 创建 `VkPipelineLayout` + +成功后: + +- `GetNativeHandle()` 返回 `VkPipelineLayout` +- `GetPipelineLayout()` 返回同一个原生对象 + +## 线程语义 + +当前实现没有内部同步,也没有增量修改能力。更合适的用法是: + +- 构建期一次性初始化 +- 初始化后只读使用 +- 销毁前不再并发访问 + +## 所有权与资源管理 + +- `VulkanPipelineLayout` 拥有 `VkPipelineLayout` +- 同时拥有它内部创建出来的 `VkDescriptorSetLayout` +- `Shutdown()` 会先销毁 pipeline layout,再销毁 native set layouts,并清空复制出来的描述缓存 + +## 设计取向 + +这个类体现了当前 RHI 的一个重要设计目标:既兼容 Vulkan 风格的显式 set layout,也兼容更传统的“按资源数量声明布局”的抽象接口。 + +好处是抽象层迁移成本低;代价是 layout 组织方式还不是完全统一、完全收敛的最终形态。 + +如果用商业引擎视角理解,它更像“正在从泛化 RHI 向显式 descriptor set 模型过渡”的中间层。 + +## 当前限制 + +- `Initialize(const RHIPipelineLayoutDesc&)` 当前无效,真正可用的是带 `VkDevice` 的重载 +- 扁平计数模式会按固定顺序合成 set,灵活度有限 +- 不包含 push constant、descriptor indexing 等更高级 Vulkan layout 特性 + +## 主要公开方法 + +- `bool Initialize(VkDevice device, const RHIPipelineLayoutDesc& desc)` +- `bool Initialize(const RHIPipelineLayoutDesc& desc)` +- `void Shutdown()` +- `void* GetNativeHandle()` +- `VkPipelineLayout GetPipelineLayout() const` +- `const RHIPipelineLayoutDesc& GetDesc() const` +- `bool UsesSetLayouts() const` + +## 相关测试与使用线索 + +- `tests/RHI/unit/test_pipeline_layout.cpp` 会检查 pipeline layout 描述在各后端里的保留与可访问性 +- `tests/RHI/unit/test_compute.cpp`、`tests/RHI/unit/test_command_list.cpp` 会把 descriptor set 与 pipeline layout 组合到 compute / graphics 路径中 + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [VulkanPipelineState](../VulkanPipelineState/VulkanPipelineState.md) +- [VulkanDescriptorSet](../VulkanDescriptorSet/VulkanDescriptorSet.md) +- [VulkanDescriptorPool](../VulkanDescriptorPool/VulkanDescriptorPool.md) +- [RHIPipelineLayout](../../RHIPipelineLayout/RHIPipelineLayout.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/Bind.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/Bind.md new file mode 100644 index 00000000..f4de68d4 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/Bind.md @@ -0,0 +1,19 @@ +# VulkanPipelineState::Bind + +```cpp +void Bind() override; +``` + +## 作用 + +抽象接口上的绑定入口。 + +## 当前实现行为 + +- 当前是 no-op +- 真正的 pipeline 绑定发生在 `VulkanCommandList::Draw()`、`DrawIndexed()` 或 `Dispatch()` 内部 + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) +- [Unbind](Unbind.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/EnsureValid.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/EnsureValid.md new file mode 100644 index 00000000..bdc40cce --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/EnsureValid.md @@ -0,0 +1,25 @@ +# VulkanPipelineState::EnsureValid + +```cpp +void EnsureValid() override; +``` + +## 作用 + +确保当前 pipeline state 已拥有需要的 native pipeline。 + +## 当前实现行为 + +- 如果 `m_pipeline` 已存在,直接返回 +- 如果当前没有 compute shader,也直接返回 +- 否则调用内部 `CreateComputePipeline()` + +## 解释 + +这是当前 compute 路径延迟创建 native pipeline 的关键入口。 + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) +- [SetComputeShader](SetComputeShader.md) +- [IsValid](IsValid.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/GetComputeShader.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/GetComputeShader.md new file mode 100644 index 00000000..17446b42 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/GetComputeShader.md @@ -0,0 +1,14 @@ +# VulkanPipelineState::GetComputeShader + +```cpp +RHIShader* GetComputeShader() const override; +``` + +## 作用 + +返回当前绑定的 compute shader 指针。 + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) +- [SetComputeShader](SetComputeShader.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/GetHash.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/GetHash.md new file mode 100644 index 00000000..9564c623 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/GetHash.md @@ -0,0 +1,20 @@ +# VulkanPipelineState::GetHash + +```cpp +PipelineStateHash GetHash() const override; +``` + +## 作用 + +返回当前 pipeline state 的轻量 hash。 + +## 当前实现行为 + +- 当前只使用 `m_topologyType` +- 以及 `m_renderTargetCount` 和第一个 render target format +- 它不是完整的 pipeline cache key + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) +- [SetTopology](SetTopology.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/GetNativeHandle.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/GetNativeHandle.md new file mode 100644 index 00000000..6e907e30 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/GetNativeHandle.md @@ -0,0 +1,19 @@ +# VulkanPipelineState::GetNativeHandle + +```cpp +void* GetNativeHandle() override; +``` + +## 作用 + +返回当前 native pipeline 句柄。 + +## 当前实现行为 + +- 直接返回 `m_pipeline` +- 实际类型是 `VkPipeline` + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) +- [IsValid](IsValid.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/GetType.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/GetType.md new file mode 100644 index 00000000..ec2fd24e --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/GetType.md @@ -0,0 +1,19 @@ +# VulkanPipelineState::GetType + +```cpp +PipelineType GetType() const override; +``` + +## 作用 + +返回当前 pipeline state 的逻辑类型。 + +## 当前实现行为 + +- 只要 `HasComputeShader()` 为真,就返回 `PipelineType::Compute` +- 否则返回 `PipelineType::Graphics` + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) +- [HasComputeShader](HasComputeShader.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/HasComputeShader.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/HasComputeShader.md new file mode 100644 index 00000000..757283df --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/HasComputeShader.md @@ -0,0 +1,18 @@ +# VulkanPipelineState::HasComputeShader + +```cpp +bool HasComputeShader() const override; +``` + +## 作用 + +判断当前 pipeline state 是否持有 compute shader。 + +## 当前实现行为 + +- 当前仅通过 `m_computeShader != nullptr` 判断 + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) +- [SetComputeShader](SetComputeShader.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/Initialize.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/Initialize.md new file mode 100644 index 00000000..692ee045 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/Initialize.md @@ -0,0 +1,33 @@ +# VulkanPipelineState::Initialize + +```cpp +bool Initialize(VulkanDevice* device, const GraphicsPipelineDesc& desc); +``` + +## 作用 + +初始化 Vulkan pipeline state,并在 graphics 路径下尽量创建原生 graphics pipeline。 + +## 当前实现行为 + +- 要求 `device` 和 native `VkDevice` 有效 +- 先清空旧状态 +- 缓存输入布局、光栅化、混合、深度模板、拓扑、render target 格式和 sample count +- 调用内部 `EnsurePipelineLayout(desc)` +- 如果 `desc.vertexShader` 和 `desc.fragmentShader` 都没有有效 payload,会把对象标记为“已配置”,但不创建 graphics pipeline +- 若存在 shader payload,则当前必须满足: + - 仅有 1 个 render target + - render target format 有效 + - vertex 和 fragment shader 都有效 +- 满足条件后调用 `CreateGraphicsPipeline(desc)` + +## 返回值 + +- `true` - 初始化成功 +- `false` - 设备无效、layout 创建失败或 graphics pipeline 创建失败 + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) +- [EnsureValid](EnsureValid.md) +- [SetComputeShader](SetComputeShader.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/IsValid.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/IsValid.md new file mode 100644 index 00000000..c1bfbeb4 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/IsValid.md @@ -0,0 +1,20 @@ +# VulkanPipelineState::IsValid + +```cpp +bool IsValid() const override; +``` + +## 作用 + +判断当前 pipeline state 是否处于“已配置可用”状态。 + +## 当前实现行为 + +- 直接返回 `m_isConfigured` +- 它不严格等价于 native `VkPipeline` 已经创建 +- 尤其在 compute 路径里,native pipeline 可能要等 `EnsureValid()` 后才出现 + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) +- [EnsureValid](EnsureValid.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetBlendState.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetBlendState.md new file mode 100644 index 00000000..1c85bb53 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetBlendState.md @@ -0,0 +1,18 @@ +# VulkanPipelineState::SetBlendState + +```cpp +void SetBlendState(const BlendDesc& state) override; +``` + +## 作用 + +更新缓存的混合状态描述。 + +## 当前实现行为 + +- 仅更新 `m_blendDesc` +- 不会自动重建已有 native pipeline + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetComputeShader.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetComputeShader.md new file mode 100644 index 00000000..f69bf485 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetComputeShader.md @@ -0,0 +1,22 @@ +# VulkanPipelineState::SetComputeShader + +```cpp +void SetComputeShader(RHIShader* shader) override; +``` + +## 作用 + +为当前 pipeline state 指定 compute shader。 + +## 当前实现行为 + +- 如果当前已有 `m_pipeline`,会先销毁它 +- 保存新的 `m_computeShader` +- 当 `m_computeShader` 和 `m_pipelineLayout` 都有效时,把 `m_isConfigured` 置为 `true` +- 不会在这里直接创建 compute pipeline + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) +- [EnsureValid](EnsureValid.md) +- [HasComputeShader](HasComputeShader.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetDepthStencilState.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetDepthStencilState.md new file mode 100644 index 00000000..79b38363 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetDepthStencilState.md @@ -0,0 +1,18 @@ +# VulkanPipelineState::SetDepthStencilState + +```cpp +void SetDepthStencilState(const DepthStencilStateDesc& state) override; +``` + +## 作用 + +更新缓存的深度模板状态。 + +## 当前实现行为 + +- 仅更新 `m_depthStencilDesc` +- 不会立刻重建 native pipeline + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetInputLayout.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetInputLayout.md new file mode 100644 index 00000000..1a1157ed --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetInputLayout.md @@ -0,0 +1,19 @@ +# VulkanPipelineState::SetInputLayout + +```cpp +void SetInputLayout(const InputLayoutDesc& layout) override; +``` + +## 作用 + +更新缓存的输入布局描述。 + +## 当前实现行为 + +- 当前只是赋值给 `m_inputLayoutDesc` +- 不会立刻重建原生 pipeline + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) +- [Initialize](Initialize.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetRasterizerState.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetRasterizerState.md new file mode 100644 index 00000000..29a340f7 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetRasterizerState.md @@ -0,0 +1,19 @@ +# VulkanPipelineState::SetRasterizerState + +```cpp +void SetRasterizerState(const RasterizerDesc& state) override; +``` + +## 作用 + +更新缓存的光栅化状态描述。 + +## 当前实现行为 + +- 仅更新 `m_rasterizerDesc` +- 不会立即重建 graphics pipeline + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) +- [Initialize](Initialize.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetRenderTargetFormats.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetRenderTargetFormats.md new file mode 100644 index 00000000..f02154d2 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetRenderTargetFormats.md @@ -0,0 +1,25 @@ +# VulkanPipelineState::SetRenderTargetFormats + +```cpp +void SetRenderTargetFormats(uint32_t count, const uint32_t* formats, uint32_t depthFormat) override; +``` + +## 作用 + +更新缓存的颜色和深度附件格式。 + +## 当前实现行为 + +- 保存 `count` +- 保存 `depthFormat` +- 最多拷贝前 8 个颜色格式 +- 不会自动创建或重建 pipeline + +## 注意事项 + +当前 graphics pipeline 创建路径只支持 1 个 render target。 + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) +- [Initialize](Initialize.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetSampleCount.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetSampleCount.md new file mode 100644 index 00000000..6d501ee4 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetSampleCount.md @@ -0,0 +1,18 @@ +# VulkanPipelineState::SetSampleCount + +```cpp +void SetSampleCount(uint32_t count) override; +``` + +## 作用 + +更新缓存的采样数。 + +## 当前实现行为 + +- `count > 0` 时保存原值 +- 否则回退为 `1` + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetTopology.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetTopology.md new file mode 100644 index 00000000..518ca972 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/SetTopology.md @@ -0,0 +1,19 @@ +# VulkanPipelineState::SetTopology + +```cpp +void SetTopology(uint32_t topologyType) override; +``` + +## 作用 + +更新缓存的 primitive topology 类型。 + +## 当前实现行为 + +- 仅更新 `m_topologyType` +- `GetHash()` 会使用这个值参与轻量 hash + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) +- [GetHash](GetHash.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/Shutdown.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/Shutdown.md new file mode 100644 index 00000000..79292c9d --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/Shutdown.md @@ -0,0 +1,21 @@ +# VulkanPipelineState::Shutdown + +```cpp +void Shutdown() override; +``` + +## 作用 + +销毁当前 pipeline state 持有的 native 资源并重置内部状态。 + +## 当前实现行为 + +- 销毁 `VkPipeline` +- 如果存在内部创建的 `VkRenderPass`,也会销毁 +- 如果当前拥有 `VkPipelineLayout` 的所有权,会销毁它 +- 清空设备指针、compute shader 指针和配置标记 + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) +- [Initialize](Initialize.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/Unbind.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/Unbind.md new file mode 100644 index 00000000..1ee71cee --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/Unbind.md @@ -0,0 +1,18 @@ +# VulkanPipelineState::Unbind + +```cpp +void Unbind() override; +``` + +## 作用 + +抽象接口上的解绑入口。 + +## 当前实现行为 + +- 当前是 no-op + +## 相关文档 + +- [VulkanPipelineState](VulkanPipelineState.md) +- [Bind](Bind.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/VulkanPipelineState.md b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/VulkanPipelineState.md new file mode 100644 index 00000000..5c32f360 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanPipelineState/VulkanPipelineState.md @@ -0,0 +1,168 @@ +# VulkanPipelineState + +**命名空间**: `XCEngine::RHI` + +**类型**: `class` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanPipelineState.h` + +**描述**: Vulkan 后端里的 `RHIPipelineState` 实现,负责创建 graphics / compute pipeline,并保存与之相关的 layout、render target 格式和固定功能状态。 + +## 概览 + +`VulkanPipelineState` 是当前 Vulkan 后端里 draw / dispatch 能否真正执行的关键对象。 + +它承担两类职责: + +- 保存抽象层的 pipeline 描述,例如输入布局、光栅化、混合、深度模板、拓扑和 render target 格式 +- 在合适时机创建原生 `VkPipeline` + +但它不是一个完全成熟、完全统一的 PSO 系统。当前 graphics 和 compute 路径的成熟度并不一致,这一点文档必须明确写出来。 + +## 生命周期 + +常见用法有两种: + +### 图形管线 + +1. 构造 `VulkanPipelineState` +2. `Initialize(VulkanDevice*, const GraphicsPipelineDesc&)` +3. 录制阶段把它传给 [VulkanCommandList](../VulkanCommandList/VulkanCommandList.md) 的 `SetPipelineState()` +4. 不再使用时 `Shutdown()` + +### 计算管线 + +1. 初始化 pipeline state,让它至少拥有 pipeline layout +2. `SetComputeShader(RHIShader*)` +3. 在录制 `Dispatch()` 前由 `EnsureValid()` 延迟创建 compute pipeline + +## 当前实现的真实行为 + +### graphics 与 compute 的差异 + +按当前实现: + +- `Initialize()` 面向的是 `GraphicsPipelineDesc` +- 如果 `vertexShader` 和 `fragmentShader` 都没有有效 payload,`Initialize()` 仍可能把对象标记为 `m_isConfigured = true` +- graphics 路径要求: + - `renderTargetCount == 1` + - 第一项 render target format 有效 + - vertex shader 和 fragment shader 都存在 +- compute 路径不是在 `Initialize()` 里直接创建,而是走 `SetComputeShader()` + `EnsureValid()` + `CreateComputePipeline()` + +因此当前类名虽然叫 `PipelineState`,但本质上是“图形优先、计算补充”的实现。 + +### Pipeline Layout + +`EnsurePipelineLayout(desc)` 有两种行为: + +- 如果 `desc.pipelineLayout` 非空,直接借用外部 `VulkanPipelineLayout` +- 否则创建一个空的 `VkPipelineLayout` + +这解释了为什么 compute 路径能先有 pipeline layout,再延迟绑定 compute shader。 + +### Graphics Pipeline 创建 + +`CreateGraphicsPipeline()` 当前会: + +- 用 `CompileVulkanShader(...)` 把 `desc.vertexShader` / `desc.fragmentShader` 编译成 SPIR-V +- 临时创建两个 `VkShaderModule` +- 根据 render target / depth format 构造一个内部 `VkRenderPass` +- 再据此创建 graphics pipeline + +需要注意的是,当前这个 graphics pipeline 会自己生成一个内部 `VkRenderPass`。这和一些成熟引擎里把 render pass / framebuffer compatibility 单独抽出来统一管理的做法相比,还处于更简单直接的阶段。 + +### Compute Pipeline 创建 + +`CreateComputePipeline()` 当前要求: + +- `m_device` 有效 +- `m_pipelineLayout` 有效 +- `m_computeShader` 非空 +- `m_computeShader` 实际上是有效的 `VulkanShader` + +创建时会从 `VulkanShader` 里拿 `VkShaderModule` 与 entry point,然后调用 `vkCreateComputePipelines()`。 + +### `IsValid()` 与真实 native pipeline + +这是当前实现里最容易误解的一点: + +- `IsValid()` 返回的是 `m_isConfigured` +- 它不等价于“`m_pipeline != VK_NULL_HANDLE` 一定成立” + +尤其在 compute 路径里,pipeline 可能要等 `EnsureValid()` 之后才真正创建。因此把 `IsValid()` 理解成“配置状态可用”更准确,而不是“原生对象已经存在”。 + +### 其他行为 + +- `Bind()` / `Unbind()` 当前都是 no-op +- `GetHash()` 目前只用了拓扑和第一个 render target format 做轻量 hash +- `HasDepthStencilAttachment()` 只按 `m_depthStencilFormat` 是否为 `Unknown` 判断 + +## 线程语义 + +当前实现没有内部锁。更安全的工程约束是: + +- pipeline state 构建与修改在单线程完成 +- 构建完成后再交给录制线程使用 +- 不要在录制过程中并发修改同一个 pipeline state + +## 所有权与资源管理 + +- `VulkanPipelineState` 持有 `VkPipeline` +- 可能持有自建的 `VkPipelineLayout` +- graphics 路径还会持有内部创建的 `VkRenderPass` +- 如果借用了外部 `VulkanPipelineLayout`,则不会在自身 `Shutdown()` 中销毁它 + +## 设计取向 + +当前实现非常典型地体现了“先让 pipeline 概念在跨后端 RHI 里工作起来,再逐步收敛成更严谨的 Vulkan 语义”: + +- 优点是 graphics / compute 基本链路已经能跑 +- 代价是状态有效性、render pass 归属和 hash 策略仍较简化 + +这类设计在商业引擎重构早期很常见。真正成熟后,通常会继续把 pipeline cache、render pass 兼容性、shader reflection 和 descriptor layout 规则再往前推一层。 + +## 当前限制 + +- graphics 路径当前只支持一个 render target +- compute pipeline 为延迟创建模型 +- `IsValid()` 不严格等价于 native pipeline 已创建 +- `Bind()` / `Unbind()` 无实际行为 +- `GetHash()` 很简化,不能视为完整 pipeline cache key + +## 主要公开方法 + +- `bool Initialize(VulkanDevice* device, const GraphicsPipelineDesc& desc)` +- `void SetInputLayout(const InputLayoutDesc& layout)` +- `void SetRasterizerState(const RasterizerDesc& state)` +- `void SetBlendState(const BlendDesc& state)` +- `void SetDepthStencilState(const DepthStencilStateDesc& state)` +- `void SetTopology(uint32_t topologyType)` +- `void SetRenderTargetFormats(uint32_t count, const uint32_t* formats, uint32_t depthFormat)` +- `void SetSampleCount(uint32_t count)` +- `void SetComputeShader(RHIShader* shader)` +- `PipelineStateHash GetHash() const` +- `RHIShader* GetComputeShader() const` +- `bool HasComputeShader() const` +- `bool IsValid() const` +- `void EnsureValid()` +- `void Shutdown()` +- `void Bind()` +- `void Unbind()` +- `void* GetNativeHandle()` +- `PipelineType GetType() const` + +## 相关测试与使用线索 + +- `tests/RHI/unit/test_vulkan_graphics.cpp` 覆盖了 Vulkan graphics pipeline 与 compute dispatch 的真实创建路径 +- `tests/RHI/unit/test_compute.cpp` 会把 compute shader、pipeline layout 和 descriptor set 接起来验证计算路径 +- `tests/RHI/unit/test_command_list.cpp` 会通过抽象命令列表接口驱动 pipeline 绑定与 dispatch + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [VulkanShader](../VulkanShader/VulkanShader.md) +- [VulkanPipelineLayout](../VulkanPipelineLayout/VulkanPipelineLayout.md) +- [VulkanCommandList](../VulkanCommandList/VulkanCommandList.md) +- [VulkanRenderPass](../VulkanRenderPass/VulkanRenderPass.md) +- [RHIPipelineState](../../RHIPipelineState/RHIPipelineState.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/GetAttachmentCount.md b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/GetAttachmentCount.md new file mode 100644 index 00000000..48e19617 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/GetAttachmentCount.md @@ -0,0 +1,18 @@ +# VulkanRenderPass::GetAttachmentCount + +```cpp +uint32_t GetAttachmentCount() const; +``` + +## 作用 + +返回总附件数量。 + +## 当前实现行为 + +- 结果等于颜色附件数量加上可选的一个深度模板附件 + +## 相关文档 + +- [VulkanRenderPass](VulkanRenderPass.md) +- [HasDepthStencil](HasDepthStencil.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/GetColorAttachmentCount.md b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/GetColorAttachmentCount.md new file mode 100644 index 00000000..6876a75e --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/GetColorAttachmentCount.md @@ -0,0 +1,14 @@ +# VulkanRenderPass::GetColorAttachmentCount + +```cpp +uint32_t GetColorAttachmentCount() const override; +``` + +## 作用 + +返回 render pass 当前缓存的颜色附件数量。 + +## 相关文档 + +- [VulkanRenderPass](VulkanRenderPass.md) +- [GetColorAttachments](GetColorAttachments.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/GetColorAttachments.md b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/GetColorAttachments.md new file mode 100644 index 00000000..c51c209c --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/GetColorAttachments.md @@ -0,0 +1,19 @@ +# VulkanRenderPass::GetColorAttachments + +```cpp +const AttachmentDesc* GetColorAttachments() const override; +``` + +## 作用 + +返回颜色附件描述数组首地址。 + +## 当前实现行为 + +- 若内部数组为空,返回 `nullptr` +- 否则返回 `m_colorAttachments.data()` + +## 相关文档 + +- [VulkanRenderPass](VulkanRenderPass.md) +- [GetColorAttachmentCount](GetColorAttachmentCount.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/GetDepthStencilAttachment.md b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/GetDepthStencilAttachment.md new file mode 100644 index 00000000..8f745d1e --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/GetDepthStencilAttachment.md @@ -0,0 +1,19 @@ +# VulkanRenderPass::GetDepthStencilAttachment + +```cpp +const AttachmentDesc* GetDepthStencilAttachment() const override; +``` + +## 作用 + +返回深度模板附件描述。 + +## 当前实现行为 + +- 仅当 `m_hasDepthStencil` 为真时返回有效指针 +- 否则返回 `nullptr` + +## 相关文档 + +- [VulkanRenderPass](VulkanRenderPass.md) +- [HasDepthStencil](HasDepthStencil.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/GetNativeHandle.md b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/GetNativeHandle.md new file mode 100644 index 00000000..c4f16fa4 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/GetNativeHandle.md @@ -0,0 +1,19 @@ +# VulkanRenderPass::GetNativeHandle + +```cpp +void* GetNativeHandle() override; +``` + +## 作用 + +抽象接口上的 native handle 获取入口。 + +## 当前实现行为 + +- 当前固定返回 `nullptr` +- 如果需要真实 Vulkan render pass,应使用 [GetRenderPass](GetRenderPass.md) + +## 相关文档 + +- [VulkanRenderPass](VulkanRenderPass.md) +- [GetRenderPass](GetRenderPass.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/GetRenderPass.md b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/GetRenderPass.md new file mode 100644 index 00000000..11b33c66 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/GetRenderPass.md @@ -0,0 +1,14 @@ +# VulkanRenderPass::GetRenderPass + +```cpp +VkRenderPass GetRenderPass() const; +``` + +## 作用 + +返回真实的 native `VkRenderPass`。 + +## 相关文档 + +- [VulkanRenderPass](VulkanRenderPass.md) +- [GetNativeHandle](GetNativeHandle.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/HasDepthStencil.md b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/HasDepthStencil.md new file mode 100644 index 00000000..db685016 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/HasDepthStencil.md @@ -0,0 +1,18 @@ +# VulkanRenderPass::HasDepthStencil + +```cpp +bool HasDepthStencil() const; +``` + +## 作用 + +判断 render pass 是否带深度模板附件。 + +## 当前实现行为 + +- 直接返回 `m_hasDepthStencil` + +## 相关文档 + +- [VulkanRenderPass](VulkanRenderPass.md) +- [GetDepthStencilAttachment](GetDepthStencilAttachment.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/Initialize.md b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/Initialize.md new file mode 100644 index 00000000..262a3558 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/Initialize.md @@ -0,0 +1,31 @@ +# VulkanRenderPass::Initialize + +```cpp +bool Initialize(VkDevice device, uint32_t colorAttachmentCount, const AttachmentDesc* colorAttachments, + const AttachmentDesc* depthStencilAttachment); +bool Initialize(uint32_t colorAttachmentCount, const AttachmentDesc* colorAttachments, + const AttachmentDesc* depthStencilAttachment) override; +``` + +## 作用 + +初始化 Vulkan render pass。 + +## 当前实现行为 + +### `Initialize(VkDevice, ...)` + +- 这是当前真正可用的初始化入口 +- 会深拷贝颜色附件和可选深度模板附件描述 +- 构建一个单 subpass 的 `VkRenderPass` +- 任意格式无效或 native 创建失败时返回 `false` + +### `Initialize(...)` + +- 当前只是转发到 `Initialize(m_device, ...)` +- 如果对象尚未持有有效 `m_device`,这条路径没有独立补全能力 + +## 相关文档 + +- [VulkanRenderPass](VulkanRenderPass.md) +- [Shutdown](Shutdown.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/Shutdown.md b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/Shutdown.md new file mode 100644 index 00000000..6cfcab28 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/Shutdown.md @@ -0,0 +1,20 @@ +# VulkanRenderPass::Shutdown + +```cpp +void Shutdown() override; +``` + +## 作用 + +销毁 `VkRenderPass` 并清空附件描述缓存。 + +## 当前实现行为 + +- 若 `m_renderPass` 和 `m_device` 有效,会销毁 native render pass +- 清空颜色附件数组和深度模板附件缓存 +- 重置设备和状态字段 + +## 相关文档 + +- [VulkanRenderPass](VulkanRenderPass.md) +- [Initialize](Initialize.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/VulkanRenderPass.md b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/VulkanRenderPass.md new file mode 100644 index 00000000..2262cb10 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanRenderPass/VulkanRenderPass.md @@ -0,0 +1,121 @@ +# VulkanRenderPass + +**命名空间**: `XCEngine::RHI` + +**类型**: `class` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanRenderPass.h` + +**描述**: Vulkan 后端里的 `RHIRenderPass` 实现,负责把抽象 attachment 描述翻译为原生 `VkRenderPass`。 + +## 概览 + +`VulkanRenderPass` 对应 Vulkan 图形管线里的一个核心概念:attachment 如何被读取、清除、写入,以及 subpass 如何引用这些 attachment。 + +在当前引擎里,它主要承担: + +- 保存颜色附件和深度模板附件描述 +- 创建一个对应的 `VkRenderPass` +- 为 [VulkanFramebuffer](../VulkanFramebuffer/VulkanFramebuffer.md) 与 [VulkanCommandList](../VulkanCommandList/VulkanCommandList.md) 提供兼容性基础 + +## 生命周期 + +推荐用法是由 [VulkanDevice](../VulkanDevice/VulkanDevice.md) 创建: + +1. `CreateRenderPass(...)` +2. `Initialize(VkDevice, colorAttachmentCount, colorAttachments, depthStencilAttachment)` +3. 配合 framebuffer 使用 +4. `Shutdown()` + +析构函数会调用 `Shutdown()`。 + +## 当前实现的真实行为 + +### 附件描述会被深拷贝 + +初始化时: + +- `m_colorAttachments` 会复制传入的颜色附件数组 +- 如果存在深度模板附件,也会复制到 `m_depthStencilAttachment` + +这意味着 render pass 初始化完成后,不再依赖外部传入的附件描述内存。 + +### 当前只有一个 subpass + +`VulkanRenderPass` 当前实现只构建: + +- 一个 graphics subpass +- 颜色附件引用数组 +- 可选的一个深度模板附件引用 + +没有多 subpass、input attachment、subpass dependency 图等更复杂能力。 + +### layout 与 load/store 行为 + +- 颜色附件当前使用 `VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL` +- 深度模板附件当前使用 `VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL` +- `loadOp` / `storeOp`、`stencilLoadOp` / `stencilStoreOp` 会从抽象 `AttachmentDesc` 翻译而来 + +因此它确实在承担“把跨后端 attachment 契约翻译成 Vulkan render pass 语义”的工作。 + +### `GetNativeHandle()` 的特殊点 + +需要特别注意: + +- `GetNativeHandle()` 当前返回 `nullptr` +- 但类本身同时提供了 `GetRenderPass()`,可以取到真实的 `VkRenderPass` + +这说明抽象层统一的 `GetNativeHandle()` 约定在这里还没有完全接上。使用 Vulkan 特定能力时,应通过 `GetRenderPass()` 拿原生对象,而不是依赖 `GetNativeHandle()`。 + +## 线程语义 + +没有内部同步。更稳妥的约束是: + +- 初始化后只读使用 +- 不要在命令录制期间并发销毁 render pass + +## 所有权与资源管理 + +- `VulkanRenderPass` 拥有 `VkRenderPass` +- 拥有复制后的 attachment 描述 +- 不拥有真正的纹理或 image view,那属于 framebuffer 和 texture 体系 + +## 设计取向 + +当前实现明显是“先覆盖最常用的单 subpass 渲染场景”: + +- 优点是结构简单,足以支撑当前测试与基础图形路径 +- 代价是还没有进入 Vulkan render graph / subpass 优化那一层 + +对商业引擎来说,这是很正常的第一阶段。很多引擎也是先建立 attachment 契约和 framebuffer 兼容性,再考虑更复杂的 subpass 编排。 + +## 当前限制 + +- 只支持单 subpass +- 不支持更复杂的 subpass dependency / input attachment 场景 +- `GetNativeHandle()` 当前返回 `nullptr` + +## 主要公开方法 + +- `bool Initialize(VkDevice device, uint32_t colorAttachmentCount, const AttachmentDesc* colorAttachments, const AttachmentDesc* depthStencilAttachment)` +- `bool Initialize(uint32_t colorAttachmentCount, const AttachmentDesc* colorAttachments, const AttachmentDesc* depthStencilAttachment)` +- `void Shutdown()` +- `uint32_t GetColorAttachmentCount() const` +- `const AttachmentDesc* GetColorAttachments() const` +- `const AttachmentDesc* GetDepthStencilAttachment() const` +- `void* GetNativeHandle()` +- `VkRenderPass GetRenderPass() const` +- `uint32_t GetAttachmentCount() const` +- `bool HasDepthStencil() const` + +## 相关测试与使用线索 + +- `tests/RHI/unit/test_vulkan_graphics.cpp` 的 render pass / framebuffer / begin render pass 用例会直接验证这一套组合行为 +- `tests/RHI/unit/test_command_list.cpp` 会通过抽象接口驱动 render pass 相关录制流程 + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [VulkanFramebuffer](../VulkanFramebuffer/VulkanFramebuffer.md) +- [VulkanCommandList](../VulkanCommandList/VulkanCommandList.md) +- [RHIRenderPass](../../RHIRenderPass/RHIRenderPass.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanResourceView/VulkanResourceView.md b/docs/api/XCEngine/RHI/Vulkan/VulkanResourceView/VulkanResourceView.md new file mode 100644 index 00000000..033d2448 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanResourceView/VulkanResourceView.md @@ -0,0 +1,123 @@ +# VulkanResourceView + +**命名空间**: `XCEngine::RHI` + +**类型**: `class` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanResourceView.h` + +**描述**: Vulkan 后端里的 `RHIResourceView` 实现,用于把 texture 或 buffer 资源包装成 render target、depth stencil、SRV、UAV、vertex buffer、index buffer 等视图。 + +## 概览 + +`VulkanResourceView` 是 RHI 资源绑定模型与 Vulkan 资源访问模型之间的翻译层。 + +它覆盖两类完全不同的对象: + +- 图像视图:对应 `VkImageView` +- buffer 视图元数据:当前并不创建 `VkBufferView`,而是保存 buffer 指针、偏移、大小和步长 + +这点非常关键,因为名字里虽然都叫 “view”,但当前实现对 image 和 buffer 的处理深度并不相同。 + +## 当前实现的真实行为 + +### 图像类视图 + +以下初始化函数都会创建 `VkImageView`: + +- `InitializeAsRenderTarget(...)` +- `InitializeAsDepthStencil(...)` +- `InitializeAsShaderResource(...)` +- `InitializeAsUnorderedAccess(...)` + +共同特征是: + +- 视图类型由 `desc.dimension` 和纹理类型共同决定 +- 格式优先取 `desc.format`,否则回退到 texture 自身格式 +- `baseMipLevel = desc.mipLevel` +- `levelCount = 1` +- `layerCount = 1` + +也就是说,当前 image view 路径主要覆盖“单 mip、单 layer”的基础用法。 + +### buffer 类视图 + +以下初始化函数当前不会创建 `VkBufferView`: + +- `InitializeAsVertexBuffer(...)` +- `InitializeAsIndexBuffer(...)` + +它们只是记录: + +- `VulkanBuffer*` +- buffer 偏移 +- buffer 大小 +- stride +- 索引格式或缓冲区语义 + +真正录制时,命令列表会直接从这些元数据里取出 `VkBuffer` 做 `vkCmdBindVertexBuffers()` 或 `vkCmdBindIndexBuffer()`。 + +### `GetNativeHandle()` 的行为 + +- 如果存在 `VkImageView`,返回 image view +- 否则如果是 buffer 视图,则返回底层 `VkBuffer` + +所以这个接口返回的“native handle”并不是统一类型;具体解释依赖 view 类型。 + +## 有效性判断 + +`IsValid()` 的判断规则是: + +- vertex / index buffer 视图:要求 `m_buffer` 有效且底层 `VkBuffer` 有效 +- image 类视图:要求 `m_imageView` 有效 + +## 线程语义 + +当前没有内部同步。调用方应自己保证: + +- 视图生命周期不早于底层资源 +- 不要并发销毁仍在命令录制中使用的 view + +## 所有权与资源管理 + +- `VulkanResourceView` 拥有它自己创建的 `VkImageView` +- 不拥有底层 `VulkanTexture` 或 `VulkanBuffer` +- `Shutdown()` 会销毁 `VkImageView`,并清空借用的资源指针 + +## 设计取向 + +这个类体现了当前后端一个很务实的折中: + +- image 路径按 Vulkan 原生要求创建 `VkImageView` +- buffer 路径则先只保存绑定所需元数据,不额外引入 `VkBufferView` + +对当前测试和基础渲染路径来说,这足够工作;对更完整的 typed buffer / texel buffer 场景来说,还不算终态实现。 + +## 当前限制 + +- buffer 视图当前不创建 `VkBufferView` +- image view 当前只覆盖 `levelCount = 1`、`layerCount = 1` +- `GetNativeHandle()` 的返回语义依赖 view 类型 + +## 主要公开方法 + +- `bool InitializeAsRenderTarget(VkDevice device, VulkanTexture* texture, const ResourceViewDesc& desc)` +- `bool InitializeAsDepthStencil(VkDevice device, VulkanTexture* texture, const ResourceViewDesc& desc)` +- `bool InitializeAsShaderResource(VkDevice device, VulkanTexture* texture, const ResourceViewDesc& desc)` +- `bool InitializeAsUnorderedAccess(VkDevice device, VulkanTexture* texture, const ResourceViewDesc& desc)` +- `bool InitializeAsVertexBuffer(VulkanBuffer* buffer, const ResourceViewDesc& desc)` +- `bool InitializeAsIndexBuffer(VulkanBuffer* buffer, const ResourceViewDesc& desc)` +- `void Shutdown()` +- `void* GetNativeHandle()` +- `bool IsValid() const` +- `ResourceViewType GetViewType() const` +- `ResourceViewDimension GetDimension() const` +- `Format GetFormat() const` + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [VulkanTexture](../VulkanTexture/VulkanTexture.md) +- [VulkanBuffer](../VulkanBuffer/VulkanBuffer.md) +- [VulkanFramebuffer](../VulkanFramebuffer/VulkanFramebuffer.md) +- [RHIResourceView](../../RHIResourceView/RHIResourceView.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanSampler/VulkanSampler.md b/docs/api/XCEngine/RHI/Vulkan/VulkanSampler/VulkanSampler.md new file mode 100644 index 00000000..ce7c6fb0 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanSampler/VulkanSampler.md @@ -0,0 +1,65 @@ +# VulkanSampler + +**命名空间**: `XCEngine::RHI` + +**类型**: `class` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanSampler.h` + +**描述**: Vulkan 后端里的 `RHISampler` 实现,负责根据 `SamplerDesc` 创建 `VkSampler`。 + +## 概览 + +`VulkanSampler` 的职责很纯粹:把抽象采样状态翻译成一个原生 `VkSampler`,供 descriptor set 绑定使用。 + +## 当前实现的真实行为 + +- `Initialize(VkDevice, const SamplerDesc&)` 会把过滤模式、地址模式、LOD 偏移、各向异性和比较采样参数翻译成 `VkSamplerCreateInfo` +- 成功后创建并持有 `VkSampler` +- `Shutdown()` 负责销毁原生 sampler + +需要特别说明的几点: + +- `Bind(unit)` / `Unbind(unit)` 当前都是 no-op +- `GetID()` 当前恒返回 `0` +- `GetNativeHandle()` 返回的是 `&m_sampler`,也就是内部成员地址,而不是直接返回 `VkSampler` 值本身 + +因此在 Vulkan 后端里,真正有效的原生对象访问方式是 `GetSampler()`。 + +## 线程语义 + +没有内部同步。采样器通常应在初始化阶段创建完毕,运行时只读使用。 + +## 所有权与资源管理 + +- `VulkanSampler` 拥有 `VkSampler` +- 不拥有设备对象 + +## 设计取向 + +这个类属于非常典型的 backend thin wrapper: + +- 好处是采样状态和原生 sampler 生命周期被收口到一个地方 +- 代价是抽象层遗留的 `Bind()` / `Unbind()` / `GetID()` 在 Vulkan 路径里没有实际意义 + +## 当前限制 + +- `Bind()` / `Unbind()` 无效果 +- `GetID()` 无语义价值 +- `GetNativeHandle()` 返回的不是直接可用的 `VkSampler` 值 + +## 主要公开方法 + +- `bool Initialize(VkDevice device, const SamplerDesc& desc)` +- `void Shutdown()` +- `void Bind(unsigned int unit)` +- `void Unbind(unsigned int unit)` +- `void* GetNativeHandle()` +- `unsigned int GetID()` +- `VkSampler GetSampler() const` + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [VulkanDescriptorSet](../VulkanDescriptorSet/VulkanDescriptorSet.md) +- [RHISampler](../../RHISampler/RHISampler.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanScreenshot/VulkanScreenshot.md b/docs/api/XCEngine/RHI/Vulkan/VulkanScreenshot/VulkanScreenshot.md new file mode 100644 index 00000000..215e20e3 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanScreenshot/VulkanScreenshot.md @@ -0,0 +1,72 @@ +# VulkanScreenshot + +**命名空间**: `XCEngine::RHI` + +**类型**: `class` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanScreenshot.h` + +**描述**: Vulkan 后端里的 `RHIScreenshot` 实现,负责把当前交换链 back buffer 同步读回到 CPU,并写出 PPM 图像。 + +## 概览 + +`VulkanScreenshot` 是一个典型的工具型 backend 功能。它不是常规渲染管线的核心对象,而是为了测试、调试和结果验证,把当前 back buffer 读回磁盘。 + +## 当前实现的真实行为 + +`Capture(device, swapChain, filename)` 的当前流程是: + +1. 把 `RHIDevice` 向下转成 `VulkanDevice` +2. 从 `swapChain->GetCurrentBackBuffer()` 取得当前 `VulkanTexture` +3. 创建一块 host-visible / host-coherent staging buffer +4. 临时创建 command pool 和 command buffer +5. 把当前 back buffer 从 `PRESENT_SRC_KHR` 转到 `TRANSFER_SRC_OPTIMAL` +6. `vkCmdCopyImageToBuffer(...)` +7. 再把图像转回 `PRESENT_SRC_KHR` +8. 提交到 graphics queue,并立刻 `vkQueueWaitIdle()` +9. `vkMapMemory(...)` 读取 staging buffer +10. 以 `P6` PPM 格式把 RGB 写到文件 + +如果交换链格式是 `VK_FORMAT_B8G8R8A8_UNORM`,写文件前还会做 BGR 到 RGB 的通道调整。 + +## 输出格式 + +- 当前输出是二进制 PPM:`P6` +- 只写 RGB,不写 alpha + +这对自动化测试和简单截图验证很方便,但不属于面向最终用户的完整截图系统。 + +## 生命周期 + +- `Capture(...)` 是一次性调用 +- `Shutdown()` 当前为空实现 + +## 线程语义 + +这个功能会创建临时命令对象、提交命令并等待队列空闲,因此应视为同步、重操作,不适合在高频实时路径里滥用。 + +## 设计取向 + +当前实现明显偏向“测试可用、调试可用”: + +- 好处是逻辑直接,结果可靠,便于集成测试落盘比对 +- 代价是完全同步,会阻塞 graphics queue + +## 当前限制 + +- 只抓当前交换链 back buffer +- 读回过程同步并阻塞队列 +- 输出格式只有 PPM +- `Shutdown()` 无额外资源管理逻辑 + +## 主要公开方法 + +- `bool Capture(RHIDevice* device, RHISwapChain* swapChain, const char* filename)` +- `void Shutdown()` + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [VulkanDevice](../VulkanDevice/VulkanDevice.md) +- [VulkanSwapChain](../VulkanSwapChain/VulkanSwapChain.md) +- [RHIScreenshot](../../RHIScreenshot/RHIScreenshot.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanShader/Compile.md b/docs/api/XCEngine/RHI/Vulkan/VulkanShader/Compile.md new file mode 100644 index 00000000..63fd4bb0 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanShader/Compile.md @@ -0,0 +1,32 @@ +# VulkanShader::Compile + +```cpp +bool Compile(const void* sourceData, size_t sourceSize, const char* entryPoint, const char* target) override; +``` + +## 作用 + +从内存中的 SPIR-V 数据创建 `VkShaderModule`。 + +## 前置条件 + +- `sourceData` 非空 +- `sourceSize` 非零且能被 `sizeof(uint32_t)` 整除 +- 当前对象已经绑定有效 `VkDevice` + +## 当前实现行为 + +- 不会编译 GLSL/HLSL 文本 +- 只是把输入视为 SPIR-V word 流 +- 最终调用内部 `InitializeFromSpirvWords(...)` + +## 返回值 + +- `true` - shader module 创建成功 +- `false` - 输入非法或 module 创建失败 + +## 相关文档 + +- [VulkanShader](VulkanShader.md) +- [CompileFromFile](CompileFromFile.md) +- [VulkanShaderCompiler](../VulkanShaderCompiler/VulkanShaderCompiler.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanShader/CompileFromFile.md b/docs/api/XCEngine/RHI/Vulkan/VulkanShader/CompileFromFile.md new file mode 100644 index 00000000..12e007c7 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanShader/CompileFromFile.md @@ -0,0 +1,29 @@ +# VulkanShader::CompileFromFile + +```cpp +bool CompileFromFile(const wchar_t* filePath, const char* entryPoint, const char* target) override; +``` + +## 作用 + +从磁盘读取 SPIR-V 二进制文件,并据此创建 `VkShaderModule`。 + +## 当前实现行为 + +- 直接按二进制方式读取文件 +- 文件大小必须大于零,且必须按 4 字节对齐 +- 读入后会转发到 `Compile(...)` + +## 注意事项 + +这个接口当前针对的是 `.spv` 文件;如果你手上是 GLSL 文本文件,应先走 [CompileVulkanShader](../VulkanShaderCompiler/CompileVulkanShader.md) 路径。 + +## 返回值 + +- `true` - 读取并创建成功 +- `false` - 文件缺失、格式不对或 module 创建失败 + +## 相关文档 + +- [VulkanShader](VulkanShader.md) +- [Compile](Compile.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanShader/GetUniformInfo.md b/docs/api/XCEngine/RHI/Vulkan/VulkanShader/GetUniformInfo.md new file mode 100644 index 00000000..b273d739 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanShader/GetUniformInfo.md @@ -0,0 +1,24 @@ +# VulkanShader::GetUniformInfo + +```cpp +const UniformInfo* GetUniformInfo(const char* name) const override; +``` + +## 作用 + +按名称查找 shader 的 uniform 元信息。 + +## 当前实现行为 + +- 如果 `name == nullptr`,直接返回 `nullptr` +- 否则在线性遍历 `m_uniformInfos` 后返回匹配项 +- 但当前 Vulkan shader 实现并没有完整构建 uniform 反射数据,因此这个接口通常只能提供很有限的信息 + +## 返回值 + +- `const UniformInfo*` - 找到时返回对应记录 +- `nullptr` - 没找到或当前没有可用反射数据 + +## 相关文档 + +- [VulkanShader](VulkanShader.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanShader/Shutdown.md b/docs/api/XCEngine/RHI/Vulkan/VulkanShader/Shutdown.md new file mode 100644 index 00000000..f17924b4 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanShader/Shutdown.md @@ -0,0 +1,19 @@ +# VulkanShader::Shutdown + +```cpp +void Shutdown() override; +``` + +## 作用 + +销毁当前 `VkShaderModule`,并清空 shader 类型、入口点与反射缓存。 + +## 当前实现行为 + +- 如果 `m_shaderModule` 与 `m_device` 都有效,会调用 `vkDestroyShaderModule(...)` +- 随后把 module、type、entry point 和 `m_uniformInfos` 全部重置 + +## 相关文档 + +- [VulkanShader](VulkanShader.md) +- [Compile](Compile.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanShader/VulkanShader.md b/docs/api/XCEngine/RHI/Vulkan/VulkanShader/VulkanShader.md new file mode 100644 index 00000000..492cf3b4 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanShader/VulkanShader.md @@ -0,0 +1,121 @@ +# VulkanShader + +**命名空间**: `XCEngine::RHI` + +**类型**: `class` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanShader.h` + +**描述**: Vulkan 后端里的 `RHIShader` 实现,负责把 SPIR-V 数据包装成 `VkShaderModule`,并解析 shader stage 与入口点。 + +## 概览 + +`VulkanShader` 的职责很聚焦:它不是完整的“着色器编译系统”,而是 Vulkan shader module 的持有者。 + +它主要处理三件事: + +- 接收 SPIR-V 字节流或 `.spv` 文件 +- 从 SPIR-V 元数据或 target hint 推断 `ShaderType` +- 创建并持有 `VkShaderModule` + +真正负责把 GLSL 文本编译成 SPIR-V 的,是 [VulkanShaderCompiler](../VulkanShaderCompiler/VulkanShaderCompiler.md)。也就是说,这个类更接近“已编译 shader 对象”,而不是“编译器前端”。 + +## 生命周期 + +典型顺序是: + +1. 由 [VulkanDevice](../VulkanDevice/VulkanDevice.md) 创建 `VulkanShader` +2. 设备先把输入编译或整理为 SPIR-V +3. `Compile()` 或 `CompileFromFile()` 创建 `VkShaderModule` +4. pipeline state 在创建阶段引用该 shader +5. 不再使用时 `Shutdown()` + +析构函数会调用 `Shutdown()`。如果当前对象仍持有 `VkShaderModule`,`Shutdown()` 会调用 `vkDestroyShaderModule()` 释放原生资源。 + +## 当前实现的真实行为 + +### 输入格式 + +- `Compile(const void* sourceData, size_t sourceSize, ...)` 只接受 SPIR-V word 流 +- `CompileFromFile(...)` 也只接受二进制 `.spv` 文件 +- 如果输入不是 4 字节对齐的 SPIR-V payload,会直接失败 + +这点很重要:`VulkanShader` 本身不编译 GLSL/HLSL 文本。文本输入必须先经过 `VulkanShaderCompiler`。 + +### stage 与入口点解析 + +`InitializeFromSpirvWords()` 的行为是: + +- 先验证 SPIR-V magic number `0x07230203` +- 优先从 SPIR-V `OpEntryPoint` 指令里解析执行模型和入口点 +- 如果解析不到 stage,再退回 `targetHint` +- 入口点优先级为:`entryPointHint` > SPIR-V 模块里解析出的入口点 > `"main"` + +这意味着当前实现对标准 SPIR-V 模块相当友好,也允许调用方在必要时通过 hint 补足信息。 + +### Uniform 反射 + +- `GetUniformInfos()` 返回 `m_uniformInfos` +- `GetUniformInfo(name)` 只是在这个数组里线性查找 +- 但当前实现并没有完整的 Vulkan/SPIR-V 反射流程去填充这些 uniform 信息 + +因此从真实行为看,uniform 反射能力目前仍比较初级。不要把这个接口误解成已经等价于成熟商业引擎里的 shader reflection system。 + +## 线程语义 + +从源码看,`VulkanShader` 没有内部同步。更稳妥的约束是: + +- 创建、销毁和编译由调用方串行控制 +- 不要在多个线程上同时对同一个 `VulkanShader` 实例重复 `Compile()` + +## 所有权与资源管理 + +- `VulkanShader` 持有 `VkShaderModule` +- `SetDevice()` 只是写入设备句柄,不转移设备所有权 +- `GetNativeHandle()` 返回 `VkShaderModule` + +## 设计取向 + +把“文本编译”与“native module 持有”拆开,是比较合理的商业引擎设计: + +- 编译步骤通常依赖外部工具链、缓存或导入流程 +- runtime 持有对象则只需要稳定地包装 native handle + +这样做的好处是职责清晰,后续更容易插入 shader cache、离线编译或 asset import 管线;代价是使用者必须理解 `VulkanShader` 和 `VulkanShaderCompiler` 不是同一个层次的东西。 + +如果对照 Unity,可以把 `VulkanShader` 理解成更接近 backend 内部的编译后着色器句柄,而不是 Unity ShaderLab 那种同时承载 authoring、编译和运行时绑定的统一概念。 + +## 当前限制 + +- 只直接接受 SPIR-V 输入 +- 当前 uniform 反射信息基本没有真正建起来 +- 不包含 GLSL/HLSL 文本编译逻辑 +- 不负责 shader cache、变体管理或 asset 导入 + +## 主要公开方法 + +- `bool CompileFromFile(const wchar_t* filePath, const char* entryPoint, const char* target)` +- `bool Compile(const void* sourceData, size_t sourceSize, const char* entryPoint, const char* target)` +- `void Shutdown()` +- `ShaderType GetType() const` +- `bool IsValid() const` +- `void* GetNativeHandle()` +- `const std::vector& GetUniformInfos() const` +- `const UniformInfo* GetUniformInfo(const char* name) const` +- `void SetDevice(VkDevice device)` +- `VkShaderModule GetShaderModule() const` +- `const char* GetEntryPoint() const` + +## 相关测试与使用线索 + +- `tests/RHI/unit/test_shader.cpp` 覆盖了抽象 shader 创建、类型获取、native handle 与 shutdown 行为 +- `tests/RHI/unit/test_vulkan_graphics.cpp` 明确验证了从 SPIR-V、GLSL 源码和 GLSL 文件创建 Vulkan shader 的路径 +- `tests/RHI/unit/test_compute.cpp` 和 `tests/RHI/unit/test_command_list.cpp` 会把 compute shader 接入 pipeline 与 dispatch 流程 + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [VulkanDevice](../VulkanDevice/VulkanDevice.md) +- [VulkanShaderCompiler](../VulkanShaderCompiler/VulkanShaderCompiler.md) +- [VulkanPipelineState](../VulkanPipelineState/VulkanPipelineState.md) +- [RHIShader](../../RHIShader/RHIShader.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanShaderCompiler/CompileVulkanShader.md b/docs/api/XCEngine/RHI/Vulkan/VulkanShaderCompiler/CompileVulkanShader.md new file mode 100644 index 00000000..9ebe3334 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanShaderCompiler/CompileVulkanShader.md @@ -0,0 +1,44 @@ +# CompileVulkanShader + +```cpp +bool CompileVulkanShader(const ShaderCompileDesc& desc, + VulkanCompiledShader& outShader, + std::string* errorMessage = nullptr); +``` + +## 作用 + +把 `ShaderCompileDesc` 转换成 Vulkan 可消费的 `VulkanCompiledShader`。 + +## 当前实现行为 + +- 如果输入是 SPIR-V,会直接读取或拷贝 payload,并校验 magic header +- 如果输入被识别为 HLSL,会直接失败 +- 否则按 GLSL 处理: + - 解析 shader stage + - 注入宏 + - 写临时文件 + - 调用 `glslangValidator.exe` + - 读取生成的 `.spv` + +## 参数 + +- `desc` - shader 编译描述 +- `outShader` - 成功时写入 SPIR-V、stage 和入口点 +- `errorMessage` - 可选错误输出 + +## 返回值 + +- `true` - 编译或整理成功 +- `false` - 输入无效、工具链缺失或编译失败 + +## 重要限制 + +- 当前不支持 HLSL 输入 +- GLSL 路径依赖外部 `glslangValidator.exe` + +## 相关文档 + +- [VulkanShaderCompiler](VulkanShaderCompiler.md) +- [VulkanShader](../VulkanShader/VulkanShader.md) +- [VulkanDevice::CreateShader](../VulkanDevice/CreateShader.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanShaderCompiler/VulkanShaderCompiler.md b/docs/api/XCEngine/RHI/Vulkan/VulkanShaderCompiler/VulkanShaderCompiler.md new file mode 100644 index 00000000..862b19e0 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanShaderCompiler/VulkanShaderCompiler.md @@ -0,0 +1,167 @@ +# VulkanShaderCompiler + +**命名空间**: `XCEngine::RHI` + +**类型**: `utility functions` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanShaderCompiler.h` + +**描述**: Vulkan shader 编译辅助入口,负责把 GLSL 或 SPIR-V 输入整理为 `VulkanCompiledShader`,供 `VulkanDevice` / `VulkanShader` 后续创建原生 `VkShaderModule`。 + +## 概览 + +`VulkanShaderCompiler` 不是类,而是一组围绕 `CompileVulkanShader(...)` 组织起来的辅助逻辑。它的定位很明确: + +- 接受 `ShaderCompileDesc` +- 区分输入到底是 SPIR-V、GLSL 还是 HLSL +- 对 GLSL 走外部 `glslangValidator.exe` +- 产出 `VulkanCompiledShader` + +输出结构 `VulkanCompiledShader` 里包含: + +- `spirvWords` +- `type` +- `entryPoint` + +这让上层可以把“文本编译”与“native module 创建”拆开,符合商业引擎里常见的 shader toolchain 分层方式。 + +## 当前实现的真实行为 + +### 输入源判断 + +`CompileVulkanShader(...)` 会按下面顺序处理输入: + +1. 如果没有 `source` 也没有 `fileName`,直接失败 +2. 如果判断为 SPIR-V 输入,直接读取或拷贝 payload +3. 如果判断为 HLSL 输入,直接失败 +4. 否则按 GLSL 文本处理 + +其中: + +- `sourceLanguage == ShaderLanguage::SPIRV` 或文件扩展名为 `.spv`,会被视为 SPIR-V +- `sourceLanguage == ShaderLanguage::HLSL` 或文件扩展名为 `.hlsl`,会被视为 HLSL + +当前错误信息写得很明确:Vulkan 后端目前支持 `GLSL` 或 `SPIR-V`,不支持 `HLSL source`。 + +### SPIR-V 路径 + +- 可以直接接收内存中的 SPIR-V bytes +- 也可以从 `.spv` 文件读取 +- 会检查 payload 是否是 4 字节对齐 +- 会检查 magic header 是否有效 +- 会尝试从 SPIR-V 元数据里解析 shader stage 和入口点 + +这条路径最接近商业引擎里的离线编译产物接入方式,也是当前最稳定、最可控的 Vulkan shader 输入方式。 + +### GLSL 路径 + +如果输入是 GLSL,当前流程是: + +1. 从内存或文件读入 GLSL 文本 +2. 根据 `profile`、文件扩展名或源码内容推断 shader stage +3. 把 `ShaderCompileMacro` 变成 `#define` 注入源码 +4. 在系统临时目录写出临时 GLSL 文件与临时 `.spv` 输出路径 +5. 定位 `glslangValidator.exe` +6. 通过 `CreateProcessW` 启动外部编译进程 +7. 读取生成的 `.spv` +8. 删除临时文件 + +这说明当前实现是“运行时壳调用外部编译器”,不是内嵌 glslang 库,也不是引擎资产管线的离线缓存编译器。 + +### shader stage 推断 + +当前 GLSL stage 解析优先级是: + +1. `desc.profile` +2. 文件扩展名 +3. 源码特征 + +源码特征推断里,当前会用一些启发式规则,例如: + +- 出现 `local_size_x`、`gl_GlobalInvocationID`、`imageStore`、`imageLoad`,倾向判定为 compute +- 出现 `gl_Position`,倾向判定为 vertex +- 出现 `gl_FragCoord`、`gl_FragDepth`、`fragColor`,倾向判定为 fragment + +这很实用,但本质上仍是启发式判断。最稳妥的工程用法依旧是显式给出正确 `profile` 或使用语义明确的文件扩展名。 + +### `glslangValidator.exe` 查找顺序 + +当前查找顺序是: + +1. `VULKAN_SDK/Bin/glslangValidator.exe` +2. `D:/VulkanSDK/*/Bin/glslangValidator.exe` +3. `PATH` 里的 `glslangValidator.exe` + +如果找不到,会返回错误信息,提示安装 Vulkan SDK 或把工具加到 `PATH`。 + +### 宏注入 + +`ShaderCompileMacro` 会被转成 `#define NAME VALUE` 形式插入源码: + +- 如果源码以 `#version` 开头,会把宏块插到 `#version` 之后 +- 否则直接插到文件最前面 + +这符合 GLSL 的常见使用习惯,也便于未来和材质关键字、shader variant 系统对接。 + +## 生命周期与适用场景 + +`CompileVulkanShader(...)` 本身是一次性函数式调用,没有持久对象状态。更适合以下场景: + +- 运行时测试直接从内存字符串生成 shader +- 工具链尚未完整搭好之前的临时编译方案 +- 把已有 `.spv` 产物接入 Vulkan backend + +如果未来要做商业级内容管线,通常会把更多工作前移到导入阶段或构建阶段,而不是每次运行时都启动外部编译器。 + +## 线程语义 + +函数内部不维护全局共享状态,但会创建临时文件并启动外部进程。工程上仍建议: + +- 把同一批 shader 编译任务放到明确的工具线程或资源导入线程管理 +- 不要假设它是零成本调用 + +## 设计取向 + +当前实现的优点是非常务实: + +- 不依赖复杂的内部编译器接入 +- 可直接复用 Vulkan SDK 现成工具链 +- 易于被单元测试和集成测试驱动 + +代价也很明确: + +- 依赖外部 `glslangValidator.exe` +- 运行时编译会产生进程启动与临时文件开销 +- HLSL 路径尚未打通 + +如果对照 Unity,这一层更像引擎内部 shader import / translation 工具链的雏形,而不是成熟的、跨平台统一的 shader authoring system。 + +## 当前限制 + +- 只支持 GLSL 与 SPIR-V 输入 +- 当前不支持 HLSL 输入 +- GLSL 编译依赖外部 `glslangValidator.exe` +- shader stage 推断部分依赖启发式规则 +- 不负责 shader cache、变体数据库、平台批量离线编译 + +## 公开入口 + +- `struct VulkanCompiledShader` +- `bool CompileVulkanShader(const ShaderCompileDesc& desc, VulkanCompiledShader& outShader, std::string* errorMessage = nullptr)` + +## 相关测试与使用线索 + +- `tests/RHI/unit/test_shader.cpp` 覆盖了抽象 shader 编译入口 +- `tests/RHI/unit/test_vulkan_graphics.cpp` 明确验证了: + - 从 SPIR-V 创建有效 compute shader + - 从 GLSL 源码创建有效 vertex shader + - 从 GLSL 文件创建有效 vertex shader + - 从 GLSL 源码自动推断 compute shader +- `tests/RHI/integration/triangle`、`quad`、`sphere`、`backpack` 的构建脚本都会查找 `glslangValidator` + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [VulkanDevice](../VulkanDevice/VulkanDevice.md) +- [VulkanShader](../VulkanShader/VulkanShader.md) +- [RHIShader](../../RHIShader/RHIShader.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanSwapChain/AcquireNextImage.md b/docs/api/XCEngine/RHI/Vulkan/VulkanSwapChain/AcquireNextImage.md new file mode 100644 index 00000000..cb14cba2 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanSwapChain/AcquireNextImage.md @@ -0,0 +1,31 @@ +# VulkanSwapChain::AcquireNextImage + +```cpp +bool AcquireNextImage(); +``` + +## 作用 + +获取下一张可用的交换链图像,并更新当前 back buffer 索引。 + +## 当前实现行为 + +- 每次调用都会临时创建一个 `VkFence` +- 调用 `vkAcquireNextImageKHR(...)` +- 若结果为 `VK_SUCCESS` 或 `VK_SUBOPTIMAL_KHR`,会等待 fence 完成 +- 等待结束后销毁该 fence,并返回 `true` + +## 影响 + +这是一条同步 acquire 路径,适合当前测试和基础渲染链路,但不是更成熟的常驻同步对象方案。 + +## 返回值 + +- `true` - 成功拿到图像 +- `false` - acquire 失败 + +## 相关文档 + +- [VulkanSwapChain](VulkanSwapChain.md) +- [GetCurrentBackBuffer](GetCurrentBackBuffer.md) +- [Present](Present.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanSwapChain/GetCurrentBackBuffer.md b/docs/api/XCEngine/RHI/Vulkan/VulkanSwapChain/GetCurrentBackBuffer.md new file mode 100644 index 00000000..185a649a --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanSwapChain/GetCurrentBackBuffer.md @@ -0,0 +1,24 @@ +# VulkanSwapChain::GetCurrentBackBuffer + +```cpp +RHITexture* GetCurrentBackBuffer() override; +``` + +## 作用 + +返回当前交换链图像对应的 `VulkanTexture` 包装对象。 + +## 当前实现行为 + +- 根据 `m_currentImageIndex` 从 `m_backBuffers` 里取对象 +- 索引越界时返回 `nullptr` + +## 注意事项 + +返回的是借用指针,生命周期受交换链及其重建过程影响。 + +## 相关文档 + +- [VulkanSwapChain](VulkanSwapChain.md) +- [AcquireNextImage](AcquireNextImage.md) +- [Resize](Resize.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanSwapChain/Initialize.md b/docs/api/XCEngine/RHI/Vulkan/VulkanSwapChain/Initialize.md new file mode 100644 index 00000000..a1a9280c --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanSwapChain/Initialize.md @@ -0,0 +1,30 @@ +# VulkanSwapChain::Initialize + +```cpp +bool Initialize(VulkanDevice* device, VulkanCommandQueue* presentQueue, HWND__* window, uint32_t width, uint32_t height); +``` + +## 作用 + +初始化 Vulkan 交换链对象,创建 surface 并建立 swap chain 资源。 + +## 前置条件 + +- `device`、`presentQueue`、`window` 都必须有效 + +## 当前实现行为 + +- 保存设备、呈现队列、窗口句柄和目标宽高 +- 先调用 `CreateSurface(window)` +- 再调用 `CreateSwapChainResources()` +- 任一步失败返回 `false` + +## 注意事项 + +当前实现是 Win32 surface 路径,窗口句柄按 `HWND__*` 解释。 + +## 相关文档 + +- [VulkanSwapChain](VulkanSwapChain.md) +- [AcquireNextImage](AcquireNextImage.md) +- [Present](Present.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanSwapChain/Present.md b/docs/api/XCEngine/RHI/Vulkan/VulkanSwapChain/Present.md new file mode 100644 index 00000000..4251aa41 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanSwapChain/Present.md @@ -0,0 +1,25 @@ +# VulkanSwapChain::Present + +```cpp +void Present(uint32_t syncInterval = 1, uint32_t flags = 0) override; +``` + +## 作用 + +把当前 back buffer 提交给窗口系统显示。 + +## 当前实现行为 + +- 如果呈现队列或 swap chain 无效,直接返回 +- 组装 `VkPresentInfoKHR` +- 调用 `vkQueuePresentKHR(...)` +- `syncInterval` 和 `flags` 当前被显式忽略 + +## 注意事项 + +不要把 `syncInterval` 视为当前 Vulkan 后端已经实现的垂直同步控制接口。 + +## 相关文档 + +- [VulkanSwapChain](VulkanSwapChain.md) +- [AcquireNextImage](AcquireNextImage.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanSwapChain/Resize.md b/docs/api/XCEngine/RHI/Vulkan/VulkanSwapChain/Resize.md new file mode 100644 index 00000000..c4a6288b --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanSwapChain/Resize.md @@ -0,0 +1,24 @@ +# VulkanSwapChain::Resize + +```cpp +void Resize(uint32_t width, uint32_t height) override; +``` + +## 作用 + +按新尺寸重建交换链资源。 + +## 当前实现行为 + +- 先更新 `m_width` 和 `m_height` +- 调用 `DestroySwapChainResources()` +- 再调用 `CreateSwapChainResources()` + +## 注意事项 + +这是完整销毁再重建路径。调用前应由外部保证 GPU 不再使用旧 back buffer 资源。 + +## 相关文档 + +- [VulkanSwapChain](VulkanSwapChain.md) +- [GetCurrentBackBuffer](GetCurrentBackBuffer.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanSwapChain/VulkanSwapChain.md b/docs/api/XCEngine/RHI/Vulkan/VulkanSwapChain/VulkanSwapChain.md new file mode 100644 index 00000000..9f8e865d --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanSwapChain/VulkanSwapChain.md @@ -0,0 +1,153 @@ +# VulkanSwapChain + +**命名空间**: `XCEngine::RHI` + +**类型**: `class` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanSwapChain.h` + +**描述**: Vulkan 后端里的 `RHISwapChain` 实现,负责创建 Win32 surface、`VkSwapchainKHR` 以及与之对应的 back buffer 包装对象。 + +## 概览 + +`VulkanSwapChain` 把窗口系统的呈现链路接入 RHI。它的定位不是“普通纹理容器”,而是 backend 和平台窗口之间的桥梁: + +- 把 `HWND` 变成 `VkSurfaceKHR` +- 按 surface 能力创建 `VkSwapchainKHR` +- 把每个交换链图像包装成 `VulkanTexture` +- 管理当前 back buffer 索引,并负责 `AcquireNextImage()` 与 `Present()` + +这和商业引擎里的 game view / player window backbuffer 管线很像。用户通常不会手写 Vulkan 的 surface 和 swapchain 管理代码,而是通过引擎封装拿到“当前 back buffer”。 + +## 生命周期 + +典型顺序是: + +1. 由 [VulkanDevice](../VulkanDevice/VulkanDevice.md) 创建交换链 +2. `Initialize(device, presentQueue, window, width, height)` +3. 每帧开始时先 `AcquireNextImage()` +4. 通过 `GetCurrentBackBuffer()` 取得当前 back buffer +5. 渲染完成后调用 `Present()` +6. 窗口尺寸变化时调用 `Resize()` +7. 退出时调用 `Shutdown()` + +按当前集成测试的真实用法,Vulkan 路径会在每帧 `BeginRender()` 阶段显式调用 `AcquireNextImage()`,然后再根据 `GetCurrentBackBufferIndex()` 设置 render target。 + +## 当前实现的真实行为 + +### 平台与 surface + +- `CreateSurface()` 当前固定走 `VkWin32SurfaceCreateInfoKHR` +- 输入窗口类型是 `HWND__*` +- 这说明当前公开实现是 Win32 专属窗口路径 + +如果未来要支持 Linux、Android 或 macOS,需要从这里扩展不同平台的 surface 创建分支。 + +### 格式与 present mode 选择 + +`CreateSwapChainResources()` 的当前策略是: + +- 优先 `VK_FORMAT_R8G8B8A8_UNORM` +- 如果没有,再尝试 `VK_FORMAT_B8G8R8A8_UNORM` +- present mode 默认 `VK_PRESENT_MODE_FIFO_KHR` +- 如果支持 `VK_PRESENT_MODE_MAILBOX_KHR`,则优先切到 mailbox + +这属于比较务实的商业引擎默认策略:先保证兼容性,再尽量选更合适的格式与呈现模式。 + +### 使用标志与图像数量 + +- 当前明确要求 surface 支持 `VK_IMAGE_USAGE_TRANSFER_DST_BIT` 和 `VK_IMAGE_USAGE_TRANSFER_SRC_BIT` +- 交换链图像 usage 被设置为 `COLOR_ATTACHMENT | TRANSFER_DST | TRANSFER_SRC` +- 图像数量至少取 `max(2, minImageCount)` + +之所以要求 `TRANSFER_SRC` / `TRANSFER_DST`,是因为当前后端和测试路径会对 back buffer 做截图、拷贝和清图相关操作。 + +### back buffer 包装 + +- `vkGetSwapchainImagesKHR()` 拿到原生 `VkImage` +- 每个图像都会被包装成一个 `std::unique_ptr` +- 这些 `VulkanTexture` 是交换链图像视图下的包装对象,不拥有交换链本身 + +也就是说,`m_backBuffers` 拥有的是“引擎侧纹理包装对象”,不是底层 swapchain image 的独立所有权。真正的原生图像生命周期仍跟着 `VkSwapchainKHR` 走。 + +### 图像获取与呈现 + +- `AcquireNextImage()` 当前每次都会临时创建一个 `VkFence` +- 调用 `vkAcquireNextImageKHR(...)` +- 成功或 `VK_SUBOPTIMAL_KHR` 时,会立刻 `vkWaitForFences(...)`,然后销毁该 fence +- `Present()` 直接调用 `vkQueuePresentKHR(...)` +- `Present(syncInterval, flags)` 中的 `syncInterval` 和 `flags` 当前被忽略 + +因此当前实现不是“高性能、低开销的常驻同步对象模型”,而是偏同步、偏直接的早期 backend 实现。 + +### Resize 行为 + +- `Resize(width, height)` 会先更新宽高 +- 然后销毁旧 swap chain 资源 +- 再重新 `CreateSwapChainResources()` + +这是一条标准的重建路径,但当前没有更细粒度的旧资源迁移或帧内重建协调逻辑,调用方应自己保证 Resize 时机安全。 + +## 线程语义 + +从实现看,`VulkanSwapChain` 没有内部锁。更可靠的工程约束是: + +- 图像获取、呈现和 resize 由渲染主线程或 render thread 串行完成 +- 不要并发调用 `AcquireNextImage()` 与 `Present()` +- 不要在重建交换链的同时继续持有旧 back buffer 做录制 + +## 所有权与资源管理 + +- `VulkanSwapChain` 拥有 `VkSurfaceKHR` +- `VulkanSwapChain` 拥有 `VkSwapchainKHR` +- `VulkanSwapChain` 拥有 `m_backBuffers` 这些 `VulkanTexture` 包装对象 +- `GetCurrentBackBuffer()` 返回借用指针,不转移所有权 + +## 设计取向 + +这个类的设计优先级很明确: + +- 先把 RHI 的窗口呈现路径打通 +- 先满足截图、拷贝、集成测试所需的 back buffer 使用方式 +- 先用最直白的 acquire / present 流程保证正确性 + +它更像“商业引擎里已经能支撑编辑器窗口与测试样例的第一版 swapchain backend”,而不是已经把多帧同步、最小化重建抖动和 frame pacing 全部打磨完成的终态实现。 + +如果拿 Unity 做类比,可以把它理解成支撑 Game View / Player Backbuffer 的底层后端对象,而不是一个面向业务脚本开放的独立图像 API。 + +## 当前限制 + +- 当前只支持 Win32 surface +- `AcquireNextImage()` 每次临时创建并等待 fence +- `Present()` 忽略 `syncInterval` 和 `flags` +- 没有显式暴露更复杂的 per-frame semaphore/fence 复用模型 +- Resize 是销毁并整体重建,不包含更高级的平滑切换策略 + +## 主要公开方法 + +- `bool Initialize(VulkanDevice* device, VulkanCommandQueue* presentQueue, HWND__* window, uint32_t width, uint32_t height)` +- `bool AcquireNextImage()` +- `void Shutdown()` +- `uint32_t GetCurrentBackBufferIndex() const` +- `RHITexture* GetCurrentBackBuffer()` +- `void Present(uint32_t syncInterval = 1, uint32_t flags = 0)` +- `void Resize(uint32_t width, uint32_t height)` +- `void* GetNativeHandle()` + +## 相关测试与使用线索 + +- `tests/RHI/integration/fixtures/RHIIntegrationFixture.cpp` 在 Vulkan 分支里每帧显式调用 `AcquireNextImage()` +- `tests/RHI/integration/quad`、`triangle`、`sphere`、`backpack` 等集成用例都会经过交换链呈现路径 +- `tests/RHI/unit/test_vulkan_graphics.cpp` 也间接依赖 Vulkan 纹理与图形输出链路 + +## 相关指南 + +- [Devices, Queues, Command Lists, And Resource Creation](../../../../_guides/RHI/Devices-Queues-CommandLists-And-Resource-Creation.md) + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [VulkanDevice](../VulkanDevice/VulkanDevice.md) +- [VulkanCommandQueue](../VulkanCommandQueue/VulkanCommandQueue.md) +- [VulkanTexture](../VulkanTexture/VulkanTexture.md) +- [RHISwapChain](../../RHISwapChain/RHISwapChain.md) diff --git a/docs/api/XCEngine/RHI/Vulkan/VulkanTexture/VulkanTexture.md b/docs/api/XCEngine/RHI/Vulkan/VulkanTexture/VulkanTexture.md new file mode 100644 index 00000000..9435a3a9 --- /dev/null +++ b/docs/api/XCEngine/RHI/Vulkan/VulkanTexture/VulkanTexture.md @@ -0,0 +1,112 @@ +# VulkanTexture + +**命名空间**: `XCEngine::RHI` + +**类型**: `class` + +**头文件**: `XCEngine/RHI/Vulkan/VulkanTexture.h` + +**描述**: Vulkan 后端里的 `RHITexture` 实现,封装 `VkImage`、可选的 `VkDeviceMemory` 以及软件侧资源状态。 + +## 概览 + +`VulkanTexture` 的核心职责是持有一张 Vulkan 图像,并把它暴露成统一的 RHI 纹理对象。 + +当前实现明确分成两种来源: + +- 交换链图像包装:`InitializeSwapChainImage(...)` +- 自有图像包装:`InitializeOwnedImage(...)` + +## 生命周期 + +### 交换链图像 + +- 由 [VulkanSwapChain](../VulkanSwapChain/VulkanSwapChain.md) 创建包装对象 +- 不拥有底层 `VkImage` +- 交换链重建时一起销毁包装对象 + +### 自有图像 + +- 通常由 [VulkanDevice](../VulkanDevice/VulkanDevice.md) 创建 +- 持有 `VkImage` 和 `VkDeviceMemory` +- `Shutdown()` 时释放原生资源 + +## 当前实现的真实行为 + +### 两条初始化路径 + +`InitializeSwapChainImage(...)` 会: + +- 记录 `VkImage` +- 宽高固定为 2D 图像语义 +- `m_ownsImage = false` +- 初始状态设为 `ResourceStates::Common` + +`InitializeOwnedImage(...)` 会: + +- 要求 `device`、`image`、`memory` 都有效 +- 记录宽高深度、mip 数、格式和纹理类型 +- `m_ownsImage = true` + +### 资源销毁行为 + +`Shutdown()` 当前逻辑是: + +- 如果 `m_ownsImage` 为真,则销毁 `VkImage` +- 只要 `m_memory` 有效,就释放 `VkDeviceMemory` +- 最后把尺寸、格式、状态和句柄全部清零 + +因此交换链图像包装对象不会错误销毁 swapchain image,本地创建的 owned image 才会真正释放原生图像。 + +### 状态跟踪 + +- `GetState()` / `SetState()` 维护的是软件侧 `ResourceStates` +- Vulkan 驱动本身并不会替你保存这个高层状态语义 +- 命令列表和设备会基于这份状态去决定 barrier / layout 转换 + +## 线程语义 + +没有内部同步。调用方应自己保证: + +- 状态修改与命令录制时序一致 +- 不要并发销毁正在被 view 或 command list 使用的 texture + +## 设计取向 + +把“交换链图像包装”和“自有图像”统一进一个类型,是比较实用的 backend 设计: + +- 上层大部分代码可以统一按 `RHITexture` 使用 +- backend 仍然保留了是否拥有原生图像的真实差异 + +## 当前限制 + +- 当前类型本身不管理 `VkImageView` +- barrier 状态是软件侧记录 +- 交换链图像与自有图像的能力边界需要调用方通过 `OwnsImage()` / `IsSwapChainImage()` 理解清楚 + +## 主要公开方法 + +- `bool InitializeSwapChainImage(...)` +- `bool InitializeOwnedImage(...)` +- `void Shutdown()` +- `uint32_t GetWidth() const` +- `uint32_t GetHeight() const` +- `uint32_t GetDepth() const` +- `uint32_t GetMipLevels() const` +- `Format GetFormat() const` +- `TextureType GetTextureType() const` +- `ResourceStates GetState() const` +- `void SetState(ResourceStates state)` +- `void* GetNativeHandle()` +- `VkImage GetImage() const` +- `VkDeviceMemory GetMemory() const` +- `VkFormat GetVkFormat() const` +- `bool OwnsImage() const` +- `bool IsSwapChainImage() const` + +## 相关文档 + +- [Vulkan](../Vulkan.md) +- [VulkanSwapChain](../VulkanSwapChain/VulkanSwapChain.md) +- [VulkanResourceView](../VulkanResourceView/VulkanResourceView.md) +- [RHITexture](../../RHITexture/RHITexture.md) diff --git a/docs/api/XCEngine/Rendering/CameraRenderRequest/CameraRenderRequest.md b/docs/api/XCEngine/Rendering/CameraRenderRequest/CameraRenderRequest.md new file mode 100644 index 00000000..8bccbe93 --- /dev/null +++ b/docs/api/XCEngine/Rendering/CameraRenderRequest/CameraRenderRequest.md @@ -0,0 +1,52 @@ +# CameraRenderRequest + +**命名空间**: `XCEngine::Rendering` + +**类型**: `struct` + +**头文件**: `XCEngine/Rendering/CameraRenderRequest.h` + +**描述**: 把一次“用哪台相机、在什么上下文、向哪个目标表面渲染”的请求打包成显式数据对象。 + +## 概览 + +`CameraRenderRequest` 是 `CameraRenderer` 和 `SceneRenderer` 之间的请求载体。它不负责自己执行渲染,而是把这一帧需要的最小输入集中起来: + +- `scene` 指向要提取可见物体的场景。 +- `camera` 指向本次渲染使用的相机组件。 +- `context` 持有当前帧要用的 RHI 设备、命令队列和命令列表。 +- `surface` 描述渲染目标尺寸、附件和状态切换要求。 +- `cameraDepth` 保存请求排序时要用的深度值。 +- `clearFlags` 指定这台相机希望如何清理目标表面。 + +这种“显式请求对象”设计和商业引擎里常见的 render request / render view 思路一致。好处是相机选择、排序、目标表面分配和真正 draw call 执行可以解耦,而不是把所有逻辑都塞进一个大函数里。 + +## 数据契约 + +| 字段 | 说明 | +|------|------| +| `scene` | 不能为 `nullptr`,否则当前请求无效。 | +| `camera` | 不能为 `nullptr`,通常由 `SceneRenderer` 自动挑选,或由调用方显式覆盖。 | +| `context` | 必须通过 [RenderContext::IsValid](../RenderContext/IsValid.md) 校验。 | +| `surface` | 保存目标尺寸与附件描述;当前 `IsValid()` 不检查它是否完整。 | +| `cameraDepth` | 主要用于多相机请求排序,`SceneRenderer` 会按它从小到大排序。 | +| `clearFlags` | 当前会在提交前直接写入 `RenderSceneData::cameraData.clearFlags`。 | + +## 当前实现边界 + +- `IsValid()` 只检查 `scene`、`camera` 和 `context`,不会验证 `surface` 是否真正挂了颜色或深度附件。 +- `cameraDepth` 只是排序辅助值,当前 `CameraRenderer` 自身并不会拿它做额外逻辑。 +- `clearFlags` 会覆盖提取阶段得到的 `cameraData.clearFlags`,因此请求对象是当前这条链路里更高优先级的输入。 + +## 公开成员 + +| 成员 | 说明 | +|------|------| +| [IsValid](IsValid.md) | 检查这份请求是否满足最基本的提交流程前提。 | + +## 相关文档 + +- [CameraRenderer](../CameraRenderer/CameraRenderer.md) +- [SceneRenderer](../SceneRenderer/SceneRenderer.md) +- [RenderContext](../RenderContext/RenderContext.md) +- [RenderSurface](../RenderSurface/RenderSurface.md) diff --git a/docs/api/XCEngine/Rendering/CameraRenderRequest/IsValid.md b/docs/api/XCEngine/Rendering/CameraRenderRequest/IsValid.md new file mode 100644 index 00000000..95294524 --- /dev/null +++ b/docs/api/XCEngine/Rendering/CameraRenderRequest/IsValid.md @@ -0,0 +1,48 @@ +# CameraRenderRequest::IsValid + +**命名空间**: `XCEngine::Rendering` + +**类型**: `method` + +**头文件**: `XCEngine/Rendering/CameraRenderRequest.h` + +## 签名 + +```cpp +bool IsValid() const +``` + +## 作用 + +检查当前请求是否至少具备“可以进入相机渲染流程”的基本条件。 + +## 当前实现行为 + +按头文件内联实现,当前只检查三件事: + +```cpp +return scene != nullptr && + camera != nullptr && + context.IsValid(); +``` + +这意味着: + +- `surface` 不参与校验。 +- `cameraDepth` 和 `clearFlags` 也不参与校验。 +- 只要 `RenderContext` 无效,整个请求就会被 `CameraRenderer::Render()` 直接拒绝。 + +## 返回值 + +- 返回 `true`:`scene`、`camera` 非空,且 `context` 通过校验。 +- 返回 `false`:至少有一个基础条件不满足。 + +## 使用建议 + +- 这只是“最小可提交”校验,不等价于“渲染一定成功”。 +- 如果调用方自己构造请求,仍然应该保证 `surface` 尺寸、附件和状态切换配置合理。 + +## 相关文档 + +- [CameraRenderRequest](CameraRenderRequest.md) +- [CameraRenderer::Render](../CameraRenderer/Render.md) diff --git a/docs/api/XCEngine/Rendering/CameraRenderer/CameraRenderer.md b/docs/api/XCEngine/Rendering/CameraRenderer/CameraRenderer.md new file mode 100644 index 00000000..e4d665a5 --- /dev/null +++ b/docs/api/XCEngine/Rendering/CameraRenderer/CameraRenderer.md @@ -0,0 +1,65 @@ +# CameraRenderer + +**命名空间**: `XCEngine::Rendering` + +**类型**: `class` + +**头文件**: `XCEngine/Rendering/CameraRenderer.h` + +**描述**: 面向单个相机请求的轻量渲染执行器,负责提取该相机视角下的场景数据并交给当前管线。 + +## 概览 + +`CameraRenderer` 可以理解成当前渲染层里的“单相机提交器”。它不负责决定要渲染哪些相机,也不负责管理 swap chain,而是聚焦在一件事上: + +1. 校验 [CameraRenderRequest](../CameraRenderRequest/CameraRenderRequest.md)。 +2. 用 `RenderSceneExtractor` 从场景中抽取该相机看到的数据。 +3. 把结果交给当前 `RenderPipeline`。 + +这和很多商业引擎里“scene renderer 负责组织 camera list,camera renderer 负责执行单 camera pass”的分层很接近。这样做的好处是未来要扩展多相机、离屏目标、编辑器预览窗口时,不必把所有逻辑堆在同一个类里。 + +## 生命周期 + +- 默认构造会自动创建 `Pipelines::BuiltinForwardPipeline`。 +- 传入自定义管线构造时,如果传的是空 `unique_ptr`,当前实现也会回退到默认前向管线。 +- 析构时如果当前管线存在,会显式调用 `Shutdown()`。 +- [SetPipeline](SetPipeline.md) 在替换管线前也会先对旧管线执行 `Shutdown()`。 + +## 所有权 + +- `CameraRenderer` 通过 `std::unique_ptr` 独占持有当前管线。 +- 调用方一旦把管线传给构造函数或 [SetPipeline](SetPipeline.md),所有权就转移给 `CameraRenderer`。 + +## 线程语义 + +- 当前实现没有内部锁。 +- `Render()`、`SetPipeline()` 和析构都假定由渲染主线程或拥有明确时序保证的调用点执行。 +- 不应在一个线程渲染的同时,另一个线程替换或销毁管线。 + +## 当前实现边界 + +- `Render()` 内部使用 `ExtractForCamera()`,因此它只处理单相机场景提取。 +- 如果提取后 `sceneData.HasCamera()` 为假,即使请求对象本身有效,也会返回 `false`。 +- 当前不会在 `Render()` 里调用 `Initialize()`;默认前向管线如何初始化,取决于具体管线自身实现。 + +## 公开方法 + +| 方法 | 说明 | +|------|------| +| [Constructor](Constructor.md) | 创建相机渲染器,并建立默认或注入的管线。 | +| [Destructor](Destructor.md) | 关闭当前管线。 | +| [SetPipeline](SetPipeline.md) | 替换当前渲染管线。 | +| [GetPipeline](GetPipeline.md) | 读取当前持有的管线裸指针。 | +| [Render](Render.md) | 执行一次单相机渲染请求。 | + +## 真实使用位置 + +- `SceneRenderer` 当前把多相机流程拆成多个 `CameraRenderRequest` 后,逐个交给 `CameraRenderer`。 +- `tests/Rendering/unit/test_camera_scene_renderer.cpp` 验证了相机覆盖、清屏标志传递、管线替换和析构关停行为。 + +## 相关文档 + +- [CameraRenderRequest](../CameraRenderRequest/CameraRenderRequest.md) +- [SceneRenderer](../SceneRenderer/SceneRenderer.md) +- [RenderPipeline](../RenderPipeline/RenderPipeline.md) +- [Scene Extraction And Builtin Forward Pipeline](../../../_guides/Rendering/Scene-Extraction-And-Builtin-Forward-Pipeline.md) diff --git a/docs/api/XCEngine/Rendering/CameraRenderer/Constructor.md b/docs/api/XCEngine/Rendering/CameraRenderer/Constructor.md new file mode 100644 index 00000000..7e6ffebe --- /dev/null +++ b/docs/api/XCEngine/Rendering/CameraRenderer/Constructor.md @@ -0,0 +1,39 @@ +# CameraRenderer::Constructor + +**命名空间**: `XCEngine::Rendering` + +**类型**: `constructor` + +**头文件**: `XCEngine/Rendering/CameraRenderer.h` + +## 签名 + +```cpp +CameraRenderer(); +explicit CameraRenderer(std::unique_ptr pipeline); +``` + +## 作用 + +创建一个可执行单相机渲染的 `CameraRenderer`,并为它准备当前要使用的渲染管线。 + +## 当前实现行为 + +- 默认构造:直接创建 `Pipelines::BuiltinForwardPipeline`。 +- 注入构造:优先接管调用方传入的管线。 +- 如果注入构造拿到的是空 `unique_ptr`,当前实现会回退成默认的 `BuiltinForwardPipeline`,而不是让对象进入“无管线”状态。 + +## 所有权 + +- 第二个重载会接管 `pipeline` 的所有权。 +- 调用结束后,原来的 `unique_ptr` 会被移动为空。 + +## 使用建议 + +- 如果你只是想沿用引擎当前默认渲染路径,直接用默认构造。 +- 如果你要插入测试管线、调试管线或自定义前向/延迟管线,用注入构造更合适。 + +## 相关文档 + +- [CameraRenderer](CameraRenderer.md) +- [CameraRenderer::SetPipeline](SetPipeline.md) diff --git a/docs/api/XCEngine/Rendering/CameraRenderer/Destructor.md b/docs/api/XCEngine/Rendering/CameraRenderer/Destructor.md new file mode 100644 index 00000000..0822a7e0 --- /dev/null +++ b/docs/api/XCEngine/Rendering/CameraRenderer/Destructor.md @@ -0,0 +1,36 @@ +# CameraRenderer::~CameraRenderer + +**命名空间**: `XCEngine::Rendering` + +**类型**: `destructor` + +**头文件**: `XCEngine/Rendering/CameraRenderer.h` + +## 签名 + +```cpp +~CameraRenderer(); +``` + +## 作用 + +在对象销毁前关闭当前持有的渲染管线。 + +## 当前实现行为 + +- 如果 `m_pipeline` 非空,析构函数会调用一次 `m_pipeline->Shutdown()`。 +- 之后由 `std::unique_ptr` 自身负责释放管线对象内存。 + +## 设计含义 + +这说明当前渲染层把“释放 GPU 侧状态”视为管线对象自己的职责,而不是单纯依赖 C++ 析构。这样能让 `RenderPipeline` 把资源回收逻辑集中在 `Shutdown()` 中,也便于替换管线时复用同一条关停路径。 + +## 注意事项 + +- 由于没有加锁,不应在别的线程仍然使用当前管线时销毁 `CameraRenderer`。 +- 如果你在生命周期中途就要切换管线,优先调用 [SetPipeline](SetPipeline.md),不要等到析构时再被动释放。 + +## 相关文档 + +- [CameraRenderer](CameraRenderer.md) +- [CameraRenderer::SetPipeline](SetPipeline.md) diff --git a/docs/api/XCEngine/Rendering/CameraRenderer/GetPipeline.md b/docs/api/XCEngine/Rendering/CameraRenderer/GetPipeline.md new file mode 100644 index 00000000..54d2afb5 --- /dev/null +++ b/docs/api/XCEngine/Rendering/CameraRenderer/GetPipeline.md @@ -0,0 +1,37 @@ +# CameraRenderer::GetPipeline + +**命名空间**: `XCEngine::Rendering` + +**类型**: `method` + +**头文件**: `XCEngine/Rendering/CameraRenderer.h` + +## 签名 + +```cpp +RenderPipeline* GetPipeline() const; +``` + +## 作用 + +返回当前持有的渲染管线裸指针,便于外部查询当前绑定的是哪条管线。 + +## 当前实现行为 + +- 这是头文件内联访问器,直接返回 `m_pipeline.get()`。 +- 不转移所有权,也不增加生命周期保证。 + +## 返回值 + +- 返回当前管线的裸指针。 +- 理论上可能为 `nullptr`,但按当前构造和 `SetPipeline()` 的策略,正常路径下通常总会有一条默认管线。 + +## 注意事项 + +- 不要在外部缓存这个指针并假设它长期有效;`SetPipeline()` 后它可能立刻失效。 +- 如果只是要替换管线,应使用 [SetPipeline](SetPipeline.md),不要手动管理这个裸指针。 + +## 相关文档 + +- [CameraRenderer](CameraRenderer.md) +- [CameraRenderer::SetPipeline](SetPipeline.md) diff --git a/docs/api/XCEngine/Rendering/CameraRenderer/Render.md b/docs/api/XCEngine/Rendering/CameraRenderer/Render.md new file mode 100644 index 00000000..391d898c --- /dev/null +++ b/docs/api/XCEngine/Rendering/CameraRenderer/Render.md @@ -0,0 +1,65 @@ +# CameraRenderer::Render + +**命名空间**: `XCEngine::Rendering` + +**类型**: `method` + +**头文件**: `XCEngine/Rendering/CameraRenderer.h` + +## 签名 + +```cpp +bool Render(const CameraRenderRequest& request); +``` + +## 作用 + +执行一次单相机渲染请求。 + +## 当前实现流程 + +按 `engine/src/Rendering/CameraRenderer.cpp`,当前流程固定为: + +1. 如果 `request.IsValid()` 为假,返回 `false`。 +2. 如果当前没有管线,返回 `false`。 +3. 调用 `m_sceneExtractor.ExtractForCamera(*request.scene, *request.camera, request.surface.GetWidth(), request.surface.GetHeight())` 提取场景数据。 +4. 如果提取结果 `sceneData.HasCamera()` 为假,返回 `false`。 +5. 用 `request.clearFlags` 覆盖 `sceneData.cameraData.clearFlags`。 +6. 调用 `m_pipeline->Render(request.context, request.surface, sceneData)`,并把结果直接返回。 + +## 参数 + +| 参数 | 说明 | +|------|------| +| `request` | 本次相机渲染的完整输入。 | + +## 返回值 + +- 返回 `true`:请求通过校验,提取到有效相机数据,且当前管线 `Render()` 返回成功。 +- 返回 `false`:请求无效、管线为空、提取失败,或管线执行失败。 + +## 关键语义 + +- 当前实现会信任请求里的 `camera`,不再重新挑选最高深度主相机。 +- `surface` 的宽高会直接传给场景提取器,用来生成相机视口数据。 +- `clearFlags` 以请求对象为准,因此外部调度器可以统一覆盖某次渲染的清理策略。 + +## 最小可置信示例 + +```cpp +CameraRenderRequest request; +request.scene = &scene; +request.camera = camera; +request.context = context; +request.surface = RenderSurface(1280, 720); +request.clearFlags = RenderClearFlags::All; + +CameraRenderer renderer; +const bool ok = renderer.Render(request); +``` + +## 相关文档 + +- [CameraRenderRequest](../CameraRenderRequest/CameraRenderRequest.md) +- [RenderSceneExtractor](../RenderSceneExtractor/RenderSceneExtractor.md) +- [RenderPipeline::Render](../RenderPipeline/Render.md) diff --git a/docs/api/XCEngine/Rendering/CameraRenderer/SetPipeline.md b/docs/api/XCEngine/Rendering/CameraRenderer/SetPipeline.md new file mode 100644 index 00000000..a3426294 --- /dev/null +++ b/docs/api/XCEngine/Rendering/CameraRenderer/SetPipeline.md @@ -0,0 +1,46 @@ +# CameraRenderer::SetPipeline + +**命名空间**: `XCEngine::Rendering` + +**类型**: `method` + +**头文件**: `XCEngine/Rendering/CameraRenderer.h` + +## 签名 + +```cpp +void SetPipeline(std::unique_ptr pipeline); +``` + +## 作用 + +替换 `CameraRenderer` 当前持有的渲染管线。 + +## 当前实现行为 + +按 `engine/src/Rendering/CameraRenderer.cpp` 的实现,替换流程是: + +1. 如果旧管线存在,先调用旧管线的 `Shutdown()`。 +2. 用传入的 `unique_ptr` 覆盖当前管线。 +3. 如果新指针为空,再自动回退成 `Pipelines::BuiltinForwardPipeline`。 + +## 参数 + +| 参数 | 说明 | +|------|------| +| `pipeline` | 新的渲染管线所有权。可以为空;为空时会自动回退到默认前向管线。 | + +## 副作用 + +- 会主动关闭旧管线,而不是简单替换指针。 +- 传入空指针并不会让渲染器失效;当前实现选择“总有一条默认管线可用”。 + +## 使用建议 + +- 如果你在测试里注入 mock pipeline,这个接口是最合适的切换点。 +- 如果新旧管线有共享的 GPU 资源管理需求,当前实现没有做迁移与热切换,只是单纯关旧建新。 + +## 相关文档 + +- [CameraRenderer](CameraRenderer.md) +- [CameraRenderer::GetPipeline](GetPipeline.md) diff --git a/docs/api/XCEngine/Rendering/RenderMaterialUtility/ApplyMaterialRenderState.md b/docs/api/XCEngine/Rendering/RenderMaterialUtility/ApplyMaterialRenderState.md new file mode 100644 index 00000000..77fc0867 --- /dev/null +++ b/docs/api/XCEngine/Rendering/RenderMaterialUtility/ApplyMaterialRenderState.md @@ -0,0 +1,50 @@ +# ApplyMaterialRenderState + +**命名空间**: `XCEngine::Rendering` + +**类型**: `function` + +**头文件**: `XCEngine/Rendering/RenderMaterialUtility.h` + +## 签名 + +```cpp +void ApplyMaterialRenderState( + const Resources::Material* material, + RHI::GraphicsPipelineDesc& pipelineDesc); +``` + +## 作用 + +把材质对应的栅格化、混合和深度状态一次性写入 `GraphicsPipelineDesc`。 + +## 当前实现行为 + +当前实现非常直接: + +```cpp +pipelineDesc.rasterizerState = BuildRasterizerState(material); +pipelineDesc.blendState = BuildBlendState(material); +pipelineDesc.depthStencilState = BuildDepthStencilState(material); +``` + +也就是说,这个函数本身不加任何额外策略,只是统一调用三组状态构建函数。 + +## 参数 + +| 参数 | 说明 | +|------|------| +| `material` | 材质,可为空。 | +| `pipelineDesc` | 待写入的图形管线描述。 | + +## 适用场景 + +- 在 builtin forward pipeline 组装 draw call 或 PSO 描述时,把材质 render state 映射成后端无关结构。 +- 在未来要做状态缓存时,也适合作为统一的预处理入口。 + +## 相关文档 + +- [RenderMaterialUtility](RenderMaterialUtility.md) +- [BuildRasterizerState](BuildRasterizerState.md) +- [BuildBlendState](BuildBlendState.md) +- [BuildDepthStencilState](BuildDepthStencilState.md) diff --git a/docs/api/XCEngine/Rendering/RenderMaterialUtility/BuildBlendState.md b/docs/api/XCEngine/Rendering/RenderMaterialUtility/BuildBlendState.md new file mode 100644 index 00000000..ab80031f --- /dev/null +++ b/docs/api/XCEngine/Rendering/RenderMaterialUtility/BuildBlendState.md @@ -0,0 +1,32 @@ +# BuildBlendState + +**命名空间**: `XCEngine::Rendering` + +**类型**: `function` + +**头文件**: `XCEngine/Rendering/RenderMaterialUtility.h` + +## 签名 + +```cpp +RHI::BlendDesc BuildBlendState(const Resources::Material* material); +``` + +## 作用 + +从材质的混合配置构建 RHI 侧 `BlendDesc`。 + +## 当前实现行为 + +- `material == nullptr` 时返回零初始化的 `BlendDesc`。 +- 有材质时,会把 `blendEnable`、颜色/Alpha 的源因子、目标因子、混合操作以及 `colorWriteMask` 全部映射到 RHI 描述。 + +## 注意事项 + +- 当前映射完全依赖 `MaterialRenderState`,不会做额外策略补丁。 +- 如果调用方传空材质,得到的是“无显式混合配置”的默认描述,而不是一套行业标准透明配置。 + +## 相关文档 + +- [BuildDepthStencilState](BuildDepthStencilState.md) +- [ApplyMaterialRenderState](ApplyMaterialRenderState.md) diff --git a/docs/api/XCEngine/Rendering/RenderMaterialUtility/BuildDepthStencilState.md b/docs/api/XCEngine/Rendering/RenderMaterialUtility/BuildDepthStencilState.md new file mode 100644 index 00000000..fdbf231a --- /dev/null +++ b/docs/api/XCEngine/Rendering/RenderMaterialUtility/BuildDepthStencilState.md @@ -0,0 +1,37 @@ +# BuildDepthStencilState + +**命名空间**: `XCEngine::Rendering` + +**类型**: `function` + +**头文件**: `XCEngine/Rendering/RenderMaterialUtility.h` + +## 签名 + +```cpp +RHI::DepthStencilStateDesc BuildDepthStencilState(const Resources::Material* material); +``` + +## 作用 + +从材质构建深度/模板状态描述。 + +## 当前实现行为 + +默认值为: + +- `depthTestEnable = true` +- `depthWriteEnable = true` +- `depthFunc = Less` +- `stencilEnable = false` + +如果 `material != nullptr`,会用材质的 `depthTestEnable`、`depthWriteEnable` 和 `depthFunc` 覆盖对应字段。当前没有从材质暴露模板状态细节。 + +## 设计含义 + +当前实现强调“默认可用的基础深度语义”,还不是完整的 render state authoring 系统。对一个仍在演进中的引擎来说,这样的默认值足以支撑基础前向渲染,但文档里必须明确它还没覆盖完整模板工作流。 + +## 相关文档 + +- [BuildBlendState](BuildBlendState.md) +- [ApplyMaterialRenderState](ApplyMaterialRenderState.md) diff --git a/docs/api/XCEngine/Rendering/RenderMaterialUtility/BuildRasterizerState.md b/docs/api/XCEngine/Rendering/RenderMaterialUtility/BuildRasterizerState.md new file mode 100644 index 00000000..514c0203 --- /dev/null +++ b/docs/api/XCEngine/Rendering/RenderMaterialUtility/BuildRasterizerState.md @@ -0,0 +1,37 @@ +# BuildRasterizerState + +**命名空间**: `XCEngine::Rendering` + +**类型**: `function` + +**头文件**: `XCEngine/Rendering/RenderMaterialUtility.h` + +## 签名 + +```cpp +RHI::RasterizerDesc BuildRasterizerState(const Resources::Material* material); +``` + +## 作用 + +把材质的栅格化相关设置翻译成 RHI 侧的 `RasterizerDesc`。 + +## 当前实现行为 + +默认值为: + +- `fillMode = Solid` +- `cullMode = None` +- `frontFace = CounterClockwise` +- `depthClipEnable = true` + +如果 `material != nullptr`,当前只会用材质里的 `renderState.cullMode` 覆盖 `cullMode`;其他字段仍保持默认值。 + +## 设计含义 + +这说明当前材质系统对栅格化状态的暴露还比较克制,主要先解决剔除模式映射,尚未扩展到 fill mode 或 front face 的材质级可配置。 + +## 相关文档 + +- [ApplyMaterialRenderState](ApplyMaterialRenderState.md) +- [BuildBlendState](BuildBlendState.md) diff --git a/docs/api/XCEngine/Rendering/RenderMaterialUtility/IsTransparentRenderQueue.md b/docs/api/XCEngine/Rendering/RenderMaterialUtility/IsTransparentRenderQueue.md new file mode 100644 index 00000000..0de84b84 --- /dev/null +++ b/docs/api/XCEngine/Rendering/RenderMaterialUtility/IsTransparentRenderQueue.md @@ -0,0 +1,37 @@ +# IsTransparentRenderQueue + +**命名空间**: `XCEngine::Rendering` + +**类型**: `function` + +**头文件**: `XCEngine/Rendering/RenderMaterialUtility.h` + +## 签名 + +```cpp +bool IsTransparentRenderQueue(Core::int32 renderQueue); +``` + +## 作用 + +判断一个 queue 是否属于透明物体区间。 + +## 当前实现行为 + +当前规则非常直接: + +```cpp +return renderQueue >= + static_cast(Resources::MaterialRenderQueue::Transparent); +``` + +也就是说,`Transparent` 及其之后的 queue 都会被视为透明队列。 + +## 用途 + +`RenderSceneExtractor` 当前就依赖这条规则,把不透明物体做前到后排序,把透明物体做后到前排序。 + +## 相关文档 + +- [ResolveMaterialRenderQueue](ResolveMaterialRenderQueue.md) +- [RenderSceneExtractor](../RenderSceneExtractor/Extract.md) diff --git a/docs/api/XCEngine/Rendering/RenderMaterialUtility/MatchesBuiltinPass.md b/docs/api/XCEngine/Rendering/RenderMaterialUtility/MatchesBuiltinPass.md new file mode 100644 index 00000000..064740f4 --- /dev/null +++ b/docs/api/XCEngine/Rendering/RenderMaterialUtility/MatchesBuiltinPass.md @@ -0,0 +1,41 @@ +# MatchesBuiltinPass + +**命名空间**: `XCEngine::Rendering` + +**类型**: `function` + +**头文件**: `XCEngine/Rendering/RenderMaterialUtility.h` + +## 签名 + +```cpp +bool MatchesBuiltinPass(const Resources::Material* material, BuiltinMaterialPass pass); +``` + +## 作用 + +判断材质是否匹配当前内建渲染通道。 + +## 当前实现行为 + +当前只对 `BuiltinMaterialPass::Forward` 做了明确逻辑: + +- 如果 `material == nullptr`,直接返回 `true`。 +- 先检查 `material->GetShaderPass()`。 +- 再检查 `material->GetTag("LightMode")`。 +- 这两个字段只要非空且不属于 `forward / forwardbase / forwardlit / forwardonly`,就返回 `false`。 +- 两边都通过时返回 `true`。 + +## 设计含义 + +这是一套偏宽松的前向通道匹配策略。它允许: + +- 完全没写 pass 元数据的简单材质先跑起来。 +- 使用不同命名习惯但语义接近的前向 pass 被统一接纳。 + +代价是当前还谈不上完整的多 pass 调度系统,更接近“builtin forward pipeline 的白名单过滤器”。 + +## 相关文档 + +- [RenderMaterialUtility](RenderMaterialUtility.md) +- [ResolveMaterial](ResolveMaterial.md) diff --git a/docs/api/XCEngine/Rendering/RenderMaterialUtility/RenderMaterialUtility.md b/docs/api/XCEngine/Rendering/RenderMaterialUtility/RenderMaterialUtility.md new file mode 100644 index 00000000..4c64c57d --- /dev/null +++ b/docs/api/XCEngine/Rendering/RenderMaterialUtility/RenderMaterialUtility.md @@ -0,0 +1,76 @@ +# RenderMaterialUtility + +**命名空间**: `XCEngine::Rendering` + +**类型**: `utility header` + +**头文件**: `XCEngine/Rendering/RenderMaterialUtility.h` + +**描述**: 把 `Material` 的渲染语义翻译成当前渲染层和 RHI 能直接消费的选择规则与状态描述。 + +## 概览 + +`RenderMaterialUtility.h` 不是一个运行时对象,而是一组内联工具函数与辅助枚举。它解决的是“材质资源层”和“实际绘制层”之间的翻译问题: + +- 先决定这次绘制到底用哪份 `Material`。 +- 再判断这份材质是否属于当前内建 pass。 +- 然后把材质里的 render state 翻译成 RHI 描述结构。 + +这类 utility header 在商业引擎里很常见,因为材质解析、render queue 判定、RHI 状态映射本质上都是无状态规则,不值得再包成有生命周期的服务对象。 + +## 公开概念 + +### BuiltinMaterialPass + +当前只定义了一个内建 pass: + +| 枚举值 | 说明 | +|------|------| +| `BuiltinMaterialPass::Forward` | 表示默认前向绘制通道。 | + +### 当前前向 pass 识别规则 + +按 `MatchesBuiltinPass()` 当前实现,以下值会被视为前向 pass: + +- 空字符串 +- `forward` +- `forwardbase` +- `forwardlit` +- `forwardonly` + +比较前会先做 `Trim().ToLower()` 归一化,并同时检查 `GetShaderPass()` 与 `GetTag("LightMode")`。 + +## 设计要点 + +- 材质选择逻辑单独抽出来,可以让 `RenderSceneExtractor` 和具体管线共用同一套规则。 +- render queue 和透明度判定放在这里,可以保证排序语义不散落在多个调用点。 +- RHI 状态构建函数把资源层枚举翻译成后端无关描述,这比直接在管线里读 `Material` 细节更干净。 + +## 当前实现边界 + +- 只覆盖当前引擎已有的 `MaterialRenderState` 字段,不负责 shader variant、keyword 或多 pass 编排。 +- 默认值是“可用但保守”的最小实现,例如栅格化默认 `CullMode::None`、深度默认开启且比较函数为 `Less`。 +- `MatchesBuiltinPass(nullptr, ...)` 当前返回 `true`,这意味着“没有材质”在 pass 过滤阶段不会被拦掉。 + +## 公开函数 + +| 函数 | 说明 | +|------|------| +| [ResolveMaterial](ResolveMaterial.md) | 按当前约定解析可见物体实际使用的材质。 | +| [ResolveMaterialRenderQueue](ResolveMaterialRenderQueue.md) | 读取材质 render queue,空材质时回退到 `Geometry`。 | +| [IsTransparentRenderQueue](IsTransparentRenderQueue.md) | 判断一个 queue 是否属于透明区间。 | +| [MatchesBuiltinPass](MatchesBuiltinPass.md) | 判断材质是否匹配当前内建 pass。 | +| [BuildRasterizerState](BuildRasterizerState.md) | 从材质构建栅格化状态。 | +| [BuildBlendState](BuildBlendState.md) | 从材质构建混合状态。 | +| [BuildDepthStencilState](BuildDepthStencilState.md) | 从材质构建深度模板状态。 | +| [ApplyMaterialRenderState](ApplyMaterialRenderState.md) | 一次性把材质状态写入 `GraphicsPipelineDesc`。 | + +## 其他辅助函数 + +头文件里还提供了 `ToRHICullMode`、`ToRHIComparisonFunc`、`ToRHIBlendFactor`、`ToRHIBlendOp`、`MaterialRenderStateHash` 等内联辅助工具。它们主要服务于状态映射与缓存键构建,当前更适合被视为实现支撑件,而不是高层调用入口。 + +## 相关文档 + +- [RenderSceneExtractor](../RenderSceneExtractor/RenderSceneExtractor.md) +- [VisibleRenderObject](../VisibleRenderObject/VisibleRenderObject.md) +- [BuiltinForwardPipeline](../Pipelines/BuiltinForwardPipeline/BuiltinForwardPipeline.md) diff --git a/docs/api/XCEngine/Rendering/RenderMaterialUtility/ResolveMaterial.md b/docs/api/XCEngine/Rendering/RenderMaterialUtility/ResolveMaterial.md new file mode 100644 index 00000000..00f1f772 --- /dev/null +++ b/docs/api/XCEngine/Rendering/RenderMaterialUtility/ResolveMaterial.md @@ -0,0 +1,57 @@ +# ResolveMaterial + +**命名空间**: `XCEngine::Rendering` + +**类型**: `function` + +**头文件**: `XCEngine/Rendering/RenderMaterialUtility.h` + +## 签名 + +```cpp +const Resources::Material* ResolveMaterial( + const Components::MeshRendererComponent* meshRenderer, + const Resources::Mesh* mesh, + Core::uint32 materialIndex); + +const Resources::Material* ResolveMaterial(const VisibleRenderItem& visibleItem); +``` + +## 作用 + +根据 `MeshRendererComponent`、`Mesh` 和 section/material 索引,解析本次绘制真正应当使用的材质。 + +## 当前实现行为 + +三参数重载当前按以下顺序回退: + +1. `meshRenderer` 的 `materialIndex` 槽位。 +2. `mesh` 自带材质数组的 `materialIndex` 槽位。 +3. `meshRenderer` 的第 0 个材质。 +4. `mesh` 的第 0 个材质。 +5. 全部都没有则返回 `nullptr`。 + +`VisibleRenderItem` 重载会先看 `visibleItem.material`;只有它为空时,才走上面的回退链。 + +## 设计含义 + +这是一种偏商业引擎的“组件覆盖优先,资源默认值兜底”策略: + +- `MeshRendererComponent` 代表场景实例级覆盖。 +- `Mesh` 自带材质更像资源默认值。 +- `VisibleRenderItem.material` 则是提取阶段已经确认好的最终覆盖结果。 + +## 返回值 + +- 返回解析到的 `Material*`。 +- 如果所有来源都没有材质,返回 `nullptr`。 + +## 注意事项 + +- 返回空材质不一定会导致后续流程中断;当前很多工具函数会对空材质提供默认行为。 +- 这套规则是当前实现契约,未来如果引擎引入 submesh override stack,解析优先级可能扩展。 + +## 相关文档 + +- [RenderMaterialUtility](RenderMaterialUtility.md) +- [MatchesBuiltinPass](MatchesBuiltinPass.md) diff --git a/docs/api/XCEngine/Rendering/RenderMaterialUtility/ResolveMaterialRenderQueue.md b/docs/api/XCEngine/Rendering/RenderMaterialUtility/ResolveMaterialRenderQueue.md new file mode 100644 index 00000000..2faf5e47 --- /dev/null +++ b/docs/api/XCEngine/Rendering/RenderMaterialUtility/ResolveMaterialRenderQueue.md @@ -0,0 +1,31 @@ +# ResolveMaterialRenderQueue + +**命名空间**: `XCEngine::Rendering` + +**类型**: `function` + +**头文件**: `XCEngine/Rendering/RenderMaterialUtility.h` + +## 签名 + +```cpp +Core::int32 ResolveMaterialRenderQueue(const Resources::Material* material); +``` + +## 作用 + +读取材质的 render queue;如果没有材质,则回退到默认的几何队列。 + +## 当前实现行为 + +- `material != nullptr` 时返回 `material->GetRenderQueue()`。 +- `material == nullptr` 时返回 `MaterialRenderQueue::Geometry`。 + +## 设计意义 + +这让“无材质物体”仍然可以参与当前排序流程,而不是在 queue 判定阶段立刻失去语义。 + +## 相关文档 + +- [IsTransparentRenderQueue](IsTransparentRenderQueue.md) +- [ResolveMaterial](ResolveMaterial.md) diff --git a/docs/api/XCEngine/Rendering/Rendering.md b/docs/api/XCEngine/Rendering/Rendering.md index e4fd5230..12164186 100644 --- a/docs/api/XCEngine/Rendering/Rendering.md +++ b/docs/api/XCEngine/Rendering/Rendering.md @@ -4,66 +4,43 @@ **类型**: `module` -**描述**: 提供场景提取、渲染表面描述、渲染管线抽象、GPU 资源缓存和内建前向渲染实现。 +**描述**: 提供场景提取、相机渲染请求、渲染目标表面、渲染管线抽象和内建前向渲染实现。 -## 概述 +## 概览 -当前 `XCEngine::Rendering` 的公开接口可以按一条很清晰的链路来理解: +当前 `XCEngine::Rendering` 可以按一条比较清楚的链路理解: -1. [SceneRenderer](SceneRenderer/SceneRenderer.md) 接收场景、相机覆盖、RHI 上下文和目标表面。 -2. [RenderSceneExtractor](RenderSceneExtractor/RenderSceneExtractor.md) 把 `Scene` 里的相机和可渲染物体整理成 `RenderSceneData`。 -3. [RenderSurface](RenderSurface/RenderSurface.md) 描述当前帧要往哪里渲染,以及渲染前后资源状态怎么切换。 -4. [RenderPipeline](RenderPipeline/RenderPipeline.md) 负责真正把 `RenderSceneData` 变成 draw call。 -5. [Pipelines::BuiltinForwardPipeline](Pipelines/BuiltinForwardPipeline/BuiltinForwardPipeline.md) 是当前默认的具体管线实现。 -6. [RenderResourceCache](RenderResourceCache/RenderResourceCache.md) 在渲染时把 `Mesh` / `Texture` 上传成 RHI 资源并缓存。 +1. [SceneRenderer](SceneRenderer/SceneRenderer.md) 负责多相机请求组织与排序。 +2. [CameraRenderRequest](CameraRenderRequest/CameraRenderRequest.md) 把单次相机渲染的输入打包成显式请求。 +3. [CameraRenderer](CameraRenderer/CameraRenderer.md) 负责执行单相机渲染。 +4. [RenderSceneExtractor](RenderSceneExtractor/RenderSceneExtractor.md) 从场景中抽取当前相机可见的数据。 +5. [RenderSurface](RenderSurface/RenderSurface.md) 描述渲染目标、附件与状态切换。 +6. [RenderPipeline](RenderPipeline/RenderPipeline.md) 定义真正执行绘制的后端无关接口。 +7. [Pipelines::BuiltinForwardPipeline](Pipelines/BuiltinForwardPipeline/BuiltinForwardPipeline.md) 是当前默认管线实现。 -这个分层思路和很多商业引擎的渲染架构是同一路数: - -- 场景系统负责维护对象和组件。 -- 渲染系统先做“提取”与“整理”。 -- 管线层再决定真正的绘制策略。 - -它和 Unity SRP、Unreal 渲染前的数据提取阶段相比还很轻量,但方向是对的。 - -## 当前实现成熟度 - -当前模块已经可以支撑基础前向渲染链路,但还明显不是完整渲染框架: - -- `SceneRenderer + BuiltinForwardPipeline` 已经有集成测试覆盖,能渲染纹理四边形和 backpack 场景。 -- `RenderSceneExtractor` 已经能选择相机并收集激活的 mesh 对象。 -- `RenderSurface` 已经能描述颜色/深度附件、清屏色覆盖和自动状态切换。 -- `RenderResourceCache` 已经能上传基础网格和 `RGBA8` 纹理。 - -但当前也有一组必须诚实写清楚的限制: - -- `RenderSceneExtractor` 当前不做视锥裁剪、遮挡裁剪或排序。 -- `MeshRendererComponent` 的 `renderLayer`、`castShadows`、`receiveShadows` 当前不会影响提取结果和绘制行为。 -- `RenderResourceCache` 以资源裸指针为 key,不跟踪资源内容变更,也不是线程安全的。 -- `RenderPipelineAsset` 只是抽象工厂入口,当前没有公开的具体 asset 类型。 -- `BuiltinForwardPipeline` 当前只覆盖非常基础的单通道前向贴图绘制。 +这类“请求组织层 -> 提取层 -> 管线执行层”的拆分,与商业引擎里常见的 camera rendering architecture 很接近。它的优势是未来要扩展更多相机类型、离屏渲染目标或替换整个管线时,不必把所有逻辑塞进一个大类里。 ## 设计要点 -- 把“场景提取”和“渲染执行”分开,是为了给未来的排序、裁剪、批处理和多管线扩展留空间。 -- `RenderSurface` 把 framebuffer 目标和状态切换要求抽象出来,避免管线直接依赖 swap chain 细节。 -- `RenderPipeline` / `RenderPipelineAsset` 的存在,说明这套接口是按“未来可以替换渲染管线”的方向设计的,而不是把 draw 逻辑硬编码在场景类里。 -- `RenderResourceCache` 把运行时 GPU 上传集中到渲染层处理,避免场景对象直接持有 RHI 对象。 +- 把多相机调度和单相机执行拆开,便于排序和后续扩展。 +- 场景提取与真正绘制分层,给可见性、排序和批处理预留演进空间。 +- `RenderMaterialUtility` 统一承担材质解析、render queue 判定和 RHI 状态翻译,避免这些规则散落在多个调用点。 +- `RenderSurface` 把目标尺寸、附件和状态切换要求显式化,减少管线对具体平台窗口细节的直接依赖。 -## 测试覆盖 +## 当前实现边界 -当前能看到的直接覆盖包括: - -- `tests/Rendering/unit/test_render_scene_extractor.cpp` -- `tests/Rendering/integration/textured_quad_scene/main.cpp` -- `tests/Rendering/integration/backpack_scene/main.cpp` -- `tests/Components/test_mesh_render_components.cpp` - -这说明“场景提取 + 默认前向渲染 + mesh 组件序列化”已经有基本验证,但资源缓存和管线细节仍缺少更细的单元测试。 +- 当前默认路径仍然是轻量级内建前向渲染,而不是完整 SRP 或延迟渲染框架。 +- `CameraRenderer` 当前只负责单相机;多相机排序仍由 `SceneRenderer` 组织。 +- `RenderSceneExtractor` 已支持基本的相机选择、可见项收集和 render queue 排序,但还没有完整视锥裁剪、遮挡裁剪和高级批处理。 +- 材质状态映射目前足够支撑基础前向绘制,但还谈不上完整商业引擎材质系统。 ## 头文件 +- [CameraRenderRequest](CameraRenderRequest/CameraRenderRequest.md) - `CameraRenderRequest.h` +- [CameraRenderer](CameraRenderer/CameraRenderer.md) - `CameraRenderer.h` - [RenderCameraData](RenderCameraData/RenderCameraData.md) - `RenderCameraData.h` - [RenderContext](RenderContext/RenderContext.md) - `RenderContext.h` +- [RenderMaterialUtility](RenderMaterialUtility/RenderMaterialUtility.md) - `RenderMaterialUtility.h` - [RenderPipeline](RenderPipeline/RenderPipeline.md) - `RenderPipeline.h` - [RenderPipelineAsset](RenderPipelineAsset/RenderPipelineAsset.md) - `RenderPipelineAsset.h` - [RenderResourceCache](RenderResourceCache/RenderResourceCache.md) - `RenderResourceCache.h` @@ -75,14 +52,12 @@ ## 相关指南 -- [Scene Extraction And Builtin Forward Pipeline](../../_guides/Rendering/Scene-Extraction-And-Builtin-Forward-Pipeline.md) - 解释为什么渲染要先做 scene extraction,再交给 builtin forward pipeline 执行,以及当前实现和商业引擎常见设计相比还差什么。 +- [Scene Extraction And Builtin Forward Pipeline](../../_guides/Rendering/Scene-Extraction-And-Builtin-Forward-Pipeline.md) - 解释场景提取、相机请求和内建前向管线之间的当前协作关系。 ## 相关文档 - [Scene](../Scene/Scene.md) - [Components](../Components/Components.md) -- [MeshFilterComponent](../Components/MeshFilterComponent/MeshFilterComponent.md) -- [MeshRendererComponent](../Components/MeshRendererComponent/MeshRendererComponent.md) - [RHI](../RHI/RHI.md) - [上级目录](../XCEngine.md) - [API 总索引](../../main.md) diff --git a/docs/api/_guides/RHI/Devices-Queues-CommandLists-And-Resource-Creation.md b/docs/api/_guides/RHI/Devices-Queues-CommandLists-And-Resource-Creation.md new file mode 100644 index 00000000..fbc4244a --- /dev/null +++ b/docs/api/_guides/RHI/Devices-Queues-CommandLists-And-Resource-Creation.md @@ -0,0 +1,236 @@ +# Devices, Queues, Command Lists, And Resource Creation + +## 这篇指南解决什么问题 + +如果只看 `RHI` 目录下的类型名,很容易知道“有设备、有队列、有命令列表”,但不容易知道: + +- 当前真实初始化顺序是什么 +- 哪些对象负责创建,哪些对象负责提交 +- 生命周期应该怎么收尾 +- 这层抽象和 Unity、Unreal、原生图形 API 分别是什么关系 + +这篇指南专门把这些问题讲清楚。 + +## 先建立正确心智模型 + +`XCEngine::RHI` 不是最终给游戏逻辑直接使用的渲染 API,它是更靠近后端实现的一层基础渲染抽象。 + +更准确地说: + +- 它比 Unity 常见 gameplay 层接触到的渲染接口更底层。 +- 它比原生 D3D12 / OpenGL / Vulkan API 更统一。 +- 它更像商业引擎内部的 render backend layer。 + +如果拿成熟引擎做类比: + +- 和 Unity 的关系:更接近 SRP / 图形后端内部会接触的那一层,而不是 MonoBehaviour 侧的普通渲染入口。 +- 和 Unreal 的关系:更接近低层 RHI 的思路。 + +这么设计的好处是: + +- 后端 bring-up 更直接 +- 图形测试可以绕开更高层 renderer,直接验证抽象层 +- 上层 renderer 有明确的后端适配边界 + +代价是: + +- 使用显式、样板多 +- 生命周期管理要求更严格 +- 当前还会看到一部分后端痕迹和未完全收敛的接口 + +## 当前最真实的使用路径 + +按源码和测试总结,当前推荐按下面顺序理解: + +1. 用 [RHIFactory](../../XCEngine/RHI/RHIFactory/RHIFactory.md) 选择后端并创建 [RHIDevice](../../XCEngine/RHI/RHIDevice/RHIDevice.md)。 +2. 调用 `device->Initialize()` 初始化设备。 +3. 读取 `GetCapabilities()` / `GetDeviceInfo()` 决定可用路径。 +4. 通过 `device` 创建 [RHICommandQueue](../../XCEngine/RHI/RHICommandQueue/RHICommandQueue.md)。 +5. 通过 `device` 创建 [RHICommandList](../../XCEngine/RHI/RHICommandList/RHICommandList.md)。 +6. 通过 `device` 创建 buffer、texture、resource view、render pass、framebuffer、descriptor pool / set、pipeline state 等对象。 +7. 在 command list 上 `Reset()` 后录制命令,再 `Close()`。 +8. 通过 queue 提交命令并用 fence 同步。 +9. 对所有对象执行 `Shutdown()`,最后 `delete`。 + +## 一个最小化示意流程 + +下面这段更接近“当前抽象层的使用骨架”,不是完整 renderer: + +```cpp +using namespace XCEngine::RHI; + +RHIDevice* device = RHIFactory::CreateRHIDevice(RHIType::D3D12); +if (device == nullptr) { + return; +} + +RHIDeviceDesc deviceDesc = {}; +deviceDesc.enableDebugLayer = true; + +if (!device->Initialize(deviceDesc)) { + delete device; + return; +} + +CommandQueueDesc queueDesc = {}; +queueDesc.queueType = static_cast(CommandQueueType::Direct); +RHICommandQueue* queue = device->CreateCommandQueue(queueDesc); + +CommandListDesc cmdDesc = {}; +cmdDesc.commandListType = static_cast(CommandQueueType::Direct); +RHICommandList* cmd = device->CreateCommandList(cmdDesc); + +BufferDesc vbDesc = {}; +vbDesc.size = 1024; +vbDesc.stride = sizeof(float) * 8; +vbDesc.bufferType = static_cast(BufferType::Vertex); +RHIBuffer* vertexBuffer = device->CreateBuffer(vbDesc); + +cmd->Reset(); +cmd->SetPrimitiveTopology(PrimitiveTopology::TriangleList); +cmd->Close(); + +vertexBuffer->Shutdown(); +delete vertexBuffer; +cmd->Shutdown(); +delete cmd; +queue->Shutdown(); +delete queue; +device->Shutdown(); +delete device; +``` + +这里最值得注意的是最后那段清理代码。当前 `RHI` 层不是自动 RAII 托管风格,而是显式关闭、显式释放。 + +## 为什么 `RHIDevice` 会这么“大” + +初看 `RHIDevice` 很容易觉得它过于庞大,因为它几乎包揽了所有对象创建: + +- 资源 +- 队列和命令列表 +- shader / pipeline +- descriptor pool / set +- render pass / framebuffer +- resource view + +但这其实很符合低层图形后端的发展路径。因为这些对象本来就都依赖同一套 native device / context / backend state,把创建权集中到设备上有几个直接好处: + +- 上层只依赖一个统一入口 +- 设备能力与对象创建天然放在一起 +- 后端实现更容易把 native handle、allocator、capabilities 串起来 + +以后如果引擎演进到更成熟阶段,可以再考虑拆分 allocator、descriptor manager、pipeline cache 等子系统;但在当前阶段,这种集中式设备接口是务实的。 + +## `RHICommandQueue` 和 `RHICommandList` 应该怎么分工理解 + +### `RHICommandList` + +负责“录制要做什么”。 + +它当前可以记录: + +- barrier +- render pass +- resource binding +- draw / draw indexed +- dispatch +- clear +- copy + +### `RHICommandQueue` + +负责“把录制好的东西交给 GPU 执行,并管理同步”。 + +它当前还暴露了: + +- fence signal / wait +- idle 等待 +- frame index +- timestamp frequency + +这和显式图形 API 的常规心智模型一致。 + +## 需要提前知道的几个实现事实 + +### 1. 所有权是裸指针 + +当前工厂和设备的大部分创建接口都返回裸指针。测试中普遍采用: + +1. 创建 +2. 使用 +3. `Shutdown()` +4. `delete` + +不要把这层接口自动代入 `shared_ptr` / `unique_ptr` 语义。 + +### 2. 很多描述符字段不是强类型枚举字段 + +例如 `BufferDesc::bufferType`、`TextureDesc::format`、`CommandQueueDesc::queueType` 都是整数类型。正确写法通常需要: + +```cpp +desc.queueType = static_cast(CommandQueueType::Direct); +``` + +### 3. `RHIFactory` 的后端选择受编译开关影响 + +当前真实情况是: + +- `D3D12` 总能创建 +- `OpenGL` 受 `XCENGINE_SUPPORT_OPENGL` 控制 +- `Vulkan` 受 `XCENGINE_SUPPORT_VULKAN` 控制 +- `Metal` 当前返回 `nullptr` + +### 4. 抽象层并没有完全抹平后端差异 + +例如: + +- `RHITypes.h` 里仍能看到 `RootSignatureDesc`、`DescriptorHeapDesc` 这类 D3D12 命名 +- `RHICommandList` 同时保留 render pass 路径和 `SetRenderTargets()` 路径 +- `RHICommandQueue::ExecuteCommandLists()` 仍是 `void**` + +正确的工程心态不是要求它现在就绝对纯净,而是接受它正处在“可用、可扩展、逐步收敛”的阶段。 + +## 和 Unity 风格设计该怎么对应 + +如果你更熟悉 Unity,需要避免一个常见误区:不要把这层直接理解成“Unity 的 public rendering API”。 + +更准确的对应关系是: + +- Unity gameplay / Component 层 + 对应 XCEngine 更高层的 `Rendering`、组件系统和未来的 renderer 封装 +- Unity 底层图形设备 / SRP 内部命令缓冲 + 才更接近当前 `RHI` + +这种设计的工程收益是: + +- renderer 能做更细粒度控制 +- 后端替换成本更低 +- 图形测试不需要依赖完整场景系统 + +## 常见误用 + +### 忘记 `Shutdown()` + +当前很多对象不能只靠析构做资源回收,至少从测试约定看不应该这么用。 + +### 把所有 `RHIType` 都当成可用后端 + +`Metal` 目前不是可创建后端,`OpenGL` / `Vulkan` 也不是所有构建都可用。 + +### 把 `RHITypes` 当成纯中立 ABI + +它是 C++ 内部描述符集合,不是稳定二进制协议。 + +### 以为 `RHICommandList` 已经完全采用单一抽象范式 + +当前它混合了多种录制路径和状态绑定思路,阅读具体页面时要按“实现事实”理解。 + +## 从这里继续读什么 + +- [RHI](../../XCEngine/RHI/RHI.md) +- [RHIFactory](../../XCEngine/RHI/RHIFactory/RHIFactory.md) +- [RHIDevice](../../XCEngine/RHI/RHIDevice/RHIDevice.md) +- [RHICommandQueue](../../XCEngine/RHI/RHICommandQueue/RHICommandQueue.md) +- [RHICommandList](../../XCEngine/RHI/RHICommandList/RHICommandList.md) +- [RHITypes](../../XCEngine/RHI/RHITypes/RHITypes.md) +- [RHIEnums](../../XCEngine/RHI/RHIEnums/RHIEnums.md) diff --git a/docs/api/_meta/rebuild-status.md b/docs/api/_meta/rebuild-status.md index b6119aa6..fc654a38 100644 --- a/docs/api/_meta/rebuild-status.md +++ b/docs/api/_meta/rebuild-status.md @@ -1,16 +1,16 @@ # API 文档重构状态 -**生成时间**: `2026-03-28 02:28:02` +**生成时间**: `2026-03-28 15:13:19` **来源**: `docs/api/_tools/audit_api_docs.py` ## 摘要 -- Markdown 页面数(全部): `2756` -- Markdown 页面数(canonical): `2736` +- Markdown 页面数(全部): `2881` +- Markdown 页面数(canonical): `2860` - Public headers 数: `227` -- 有效头文件引用数(全部): `216` -- 有效头文件引用数(canonical): `216` +- 有效头文件引用数(全部): `227` +- 有效头文件引用数(canonical): `227` - 无效头文件引用数: `0` - 失效 `.md` 链接数: `0` - 非 `.md` 相对链接数: `0` @@ -21,8 +21,8 @@ - Canonical 根目录: `XCEngine` - 源码目录节点数: `29` -- 已生成目录总览页节点数: `27` -- 缺失目录总览页节点数: `2` +- 已生成目录总览页节点数: `29` +- 缺失目录总览页节点数: `0` - 支撑目录: `_meta, _tools` ## 模块覆盖 @@ -37,36 +37,17 @@ | `Memory` | `5` | `5` | `0` | | `Platform` | `11` | `11` | `0` | | `RHI` | `87` | `87` | `0` | -| `Rendering` | `13` | `10` | `3` | +| `Rendering` | `13` | `13` | `0` | | `Resources` | `13` | `13` | `0` | -| `Scene` | `3` | `2` | `1` | -| `Scripting` | `7` | `0` | `7` | +| `Scene` | `3` | `3` | `0` | +| `Scripting` | `7` | `7` | `0` | | `Threading` | `10` | `10` | `0` | ## 元信息覆盖 | 字段 | 页面数 | |------|--------| -| `命名空间` | `325` | -| `类型` | `325` | -| `描述` | `325` | -| `头文件` | `216` | - -## 缺失的平行目录总览页 - -- `XCEngine/Scripting` -- `XCEngine/Scripting/Mono` - -## 未覆盖的 public headers - -- `XCEngine/Rendering/CameraRenderRequest.h` -- `XCEngine/Rendering/CameraRenderer.h` -- `XCEngine/Rendering/RenderMaterialUtility.h` -- `XCEngine/Scene/SceneRuntime.h` -- `XCEngine/Scripting/IScriptRuntime.h` -- `XCEngine/Scripting/Mono/MonoScriptRuntime.h` -- `XCEngine/Scripting/NullScriptRuntime.h` -- `XCEngine/Scripting/ScriptComponent.h` -- `XCEngine/Scripting/ScriptEngine.h` -- `XCEngine/Scripting/ScriptField.h` -- `XCEngine/Scripting/ScriptFieldStorage.h` +| `命名空间` | `449` | +| `类型` | `449` | +| `描述` | `344` | +| `头文件` | `332` | diff --git a/docs/plan/Renderer模块设计与实现.md b/docs/plan/Renderer模块设计与实现.md new file mode 100644 index 00000000..a7adea43 --- /dev/null +++ b/docs/plan/Renderer模块设计与实现.md @@ -0,0 +1,556 @@ +# Renderer模块设计与实现 + +## 1. 背景 + +XCEngine 当前已经完成了较为可用的 RHI 抽象层,且已经具备: + +- `Scene + GameObject + Component` 基础场景模型 +- `CameraComponent` / `LightComponent` 等基础组件 +- `Mesh` / `Material` / `Texture` / `Shader` 等资源类型 +- D3D12 / OpenGL 双后端 RHI 抽象与测试体系 + +下一阶段不应该继续封闭式打磨 RHI,而应该在 RHI 之上正式建立 **Renderer 模块**。 + +这里的 Renderer 模块不是“最终形态的 SRP”,而是: + +- 先建立一层 **原生渲染运行时** +- 先让场景对象能够以正式渲染链路被绘制 +- 同时在设计上预留未来 **C# Scriptable Render Pipeline(SRP)** 的接入点 + +也就是说,当前阶段的正确目标不是直接实现 Unity 的 URP/HDRP,而是先建立一套 **与 Unity 渲染架构方向一致的原生基础层**,后续让 C# SRP 驱动它。 + +--- + +## 2. 设计目标 + +Renderer 模块的目标分为两层: + +### 2.1 当前阶段目标 + +先完成一套最小但完整的原生渲染链路: + +- 从 `Scene` 中提取可渲染对象 +- 通过 `Camera` 构建视图与投影数据 +- 通过 `Material` / `Mesh` / `Texture` 构建 GPU 绘制数据 +- 在 RHI 之上完成正式的 frame 渲染 +- 支持 swapchain 输出与离屏输出 +- 建立独立于 editor 的渲染宿主模型 + +### 2.2 面向未来 C# SRP 的目标 + +当前阶段的实现必须为后续演进预留稳定边界: + +- 未来允许用 C# 定义 `RenderPipelineAsset` / `RenderPipeline` +- 未来允许用 C# 组织 render pass +- 未来允许 editor `SceneView` / `GameView` 通过同一套 renderer 输出 +- 未来允许 C# 脚本控制 camera 渲染、pass 排序、目标输出与 command buffer + +因此,当前阶段的原生 Renderer 不能做成一个写死的“大一统内建渲染函数”,而应该一开始就具备“可被上层 pipeline 驱动”的结构。 + +--- + +## 3. 与 Unity 渲染架构的对应关系 + +当前建议的路线与 Unity 的总体方向是对齐的,但要注意分层位置。 + +### 3.1 推荐分层 + +```text +Scene / Components / Resources + ↓ +Renderer 模块(原生渲染运行时) + ↓ +未来 C# SRP 层(脚本化渲染管线) + ↓ +RHI 抽象层 + ↓ +D3D12 / OpenGL / Vulkan 后端 +``` + +### 3.2 各层职责 + +#### Scene / Components / Resources + +负责描述“要渲染什么”,例如: + +- 场景对象 +- 相机 +- 灯光 +- 网格 +- 材质 +- 贴图 + +这一层不应该直接持有后端 API 对象。 + +#### Renderer 模块(本阶段核心) + +负责描述“如何从场景变成 draw call”,例如: + +- 渲染对象抽取 +- 可见性裁剪 +- GPU 资源缓存 +- camera frame 数据组织 +- render target / depth target 管理 +- render pass 调度 +- 内建前向管线 + +这一层是未来 C# SRP 的原生支撑层。 + +#### 未来 C# SRP 层 + +负责描述“以脚本方式控制渲染流程”,例如: + +- `RenderPipelineAsset` +- `RenderPipeline` +- `ScriptableRenderContext` +- `CommandBuffer` +- `RenderPassEvent` +- pass 注入与重排 + +这一层不应该直接绕过 Renderer 模块去操作后端 API。 + +#### RHI 抽象层 + +负责统一 GPU 接口与资源对象,是渲染系统的执行后端,而不是场景渲染逻辑本身。 + +### 3.3 与 Unity 的概念映射 + +| Unity 概念 | XCEngine 当前/规划对应 | +|---|---| +| `Camera` | `CameraComponent` | +| `Light` | `LightComponent` | +| `MeshFilter` | 计划新增 `MeshFilterComponent` | +| `MeshRenderer` | 计划新增 `MeshRendererComponent` | +| `RenderPipelineAsset` | 未来 Renderer 模块上的 pipeline asset 抽象 | +| `RenderPipeline` | 未来 Renderer 模块上的 pipeline 实例抽象 | +| `ScriptableRenderContext` | 未来 Renderer 模块对脚本暴露的原生 render context | +| `CommandBuffer` | 未来 Renderer 模块对脚本暴露的命令缓冲抽象 | +| `GraphicsDevice` / native render backend | 当前 RHI + 后端实现 | + +结论是: + +- **方向上符合 Unity 渲染架构** +- **当前阶段实现的应是 Unity 渲染体系中的原生底座** +- **而不是直接跳到最终的脚本化 SRP** + +--- + +## 4. 核心设计原则 + +### 4.1 先建立原生渲染运行时,再开放脚本化管线 + +如果现在直接做 C# SRP,而原生 Renderer 边界还不存在,后续会出现: + +- C# API 直接耦合 RHI +- editor viewport 与 runtime camera 逻辑混杂 +- 资源对象与 GPU 对象生命周期混乱 + +因此必须先收敛原生 Renderer 模块。 + +### 4.2 Scene 层只描述逻辑对象,不持有后端对象 + +`GameObject`、`Component`、`Mesh`、`Material` 等对象只能描述逻辑与资源,不应该直接持有 D3D12/OpenGL 私有对象。 + +GPU 对象应由 Renderer 内部缓存层负责创建和复用。 + +### 4.3 editor 只是渲染宿主,不是渲染逻辑本体 + +`GameView` / `SceneView` 最终只是 Renderer 的输出宿主。 + +Renderer 本身必须先支持: + +- 输出到 swapchain +- 输出到离屏纹理 + +然后 editor 再把离屏纹理接进 ImGui 面板。 + +### 4.4 为未来 SRP 预留 pipeline 抽象 + +即使第一阶段先做内建前向渲染,也不应该把逻辑写死成单一 `SceneRenderer::DrawEverything()`。 + +应该从一开始就保留: + +- `RenderPipeline` +- `RenderPipelineAsset` +- `RenderContext` +- camera 列表驱动 +- pass 分阶段执行 + +这样未来 C# 只是在这个原生结构上做绑定,而不是重做一遍架构。 + +### 4.5 测试体系与渲染层分离 + +`tests/RHI/` 继续只验证 RHI。 + +Renderer 模块应建立自己的测试体系: + +- `tests/Rendering/unit/` +- `tests/Rendering/integration/` + +这样职责边界才清晰。 + +--- + +## 5. 模块划分建议 + +建议新增 `Rendering` 模块,作为场景与 RHI 之间的正式中间层。 + +### 5.1 推荐目录结构 + +```text +engine/ +├── include/XCEngine/Rendering/ +│ ├── RenderSurface.h +│ ├── RenderContext.h +│ ├── RenderPipeline.h +│ ├── RenderPipelineAsset.h +│ ├── SceneRenderer.h +│ ├── RenderSceneExtractor.h +│ ├── RenderCameraData.h +│ ├── VisibleRenderObject.h +│ ├── RenderResourceCache.h +│ └── Pipelines/ +│ └── BuiltinForwardPipeline.h +└── src/Rendering/ + ├── RenderSurface.cpp + ├── SceneRenderer.cpp + ├── RenderSceneExtractor.cpp + ├── RenderResourceCache.cpp + └── Pipelines/ + └── BuiltinForwardPipeline.cpp +``` + +### 5.2 组件层建议 + +为了尽可能对齐 Unity,而不是做一个临时过渡方案,建议直接采用: + +- `MeshFilterComponent` +- `MeshRendererComponent` + +其中: + +#### `MeshFilterComponent` + +负责“这个对象使用哪一个 mesh”: + +- `ResourceHandle` + +#### `MeshRendererComponent` + +负责“这个对象如何被渲染”: + +- 材质数组 +- cast shadow / receive shadow +- render queue / layer / enable 状态 +- 未来可扩展 light probe / motion vector / static batching 标记 + +这样做的好处是: + +- 更贴近 Unity 的对象模型 +- 更容易映射未来 C# API +- 更容易在 editor Inspector 中呈现 +- 更容易为 `SkinnedMeshRenderer`、`SpriteRenderer` 等后续组件扩展留位置 + +### 5.3 Renderer 内部运行时对象 + +#### `RenderSurface` + +统一表示渲染输出目标: + +- 交换链输出 +- 离屏 color/depth 输出 +- editor viewport 输出 + +#### `RenderSceneExtractor` + +负责从 `Scene` 中提取本帧可渲染对象: + +- mesh +- material +- transform +- bounds +- render state + +#### `RenderResourceCache` + +负责把资源模块对象转成 GPU 可用对象: + +- mesh -> vertex/index buffer +- texture -> RHI texture / resource view +- material -> descriptor set / uniform buffer / pipeline key +- shader pass -> pipeline state + +#### `RenderContext` + +作为原生渲染执行上下文,未来用于承接脚本化 pipeline 的调度。 + +它应封装: + +- 当前 frame 的 command list +- render target 设置 +- clear / draw / submit +- camera 相关渲染上下文 + +#### `RenderPipeline` + +用于抽象具体渲染流程。 + +第一阶段只有一个原生内建实现: + +- `BuiltinForwardPipeline` + +未来再开放: + +- native 可切换 pipeline +- C# 绑定的 scriptable pipeline + +--- + +## 6. 第一阶段实现边界 + +第一阶段只做最小可用链路,不做“大而全”。 + +### 6.1 第一阶段要做 + +- `Rendering` 模块骨架 +- `MeshFilterComponent` / `MeshRendererComponent` +- `RenderSurface` +- `RenderSceneExtractor` +- `RenderResourceCache` +- `SceneRenderer` +- `BuiltinForwardPipeline` +- 单 camera +- 单方向的 opaque forward 渲染 +- 深度测试与深度写入 +- 交换链输出 +- 离屏输出 + +### 6.2 第一阶段先不做 + +- 阴影 +- 后处理 +- 延迟渲染 +- 完整 PBR +- render graph +- C# SRP 真正落地 +- editor viewport 完整交互 +- 多 camera 叠加 + +### 6.3 第一阶段材质能力建议 + +建议先支持两档: + +1. `UnlitTexture` +2. `SimpleLit` + +其中: + +- `UnlitTexture` 用于先打通最小链路 +- `SimpleLit` 用于验证灯光、法线与材质基础通路 + +--- + +## 7. 面向未来 C# SRP 的预留设计 + +虽然第一阶段先做原生内建渲染,但必须提前约束下面这些方向。 + +### 7.1 先定义 pipeline 边界,再定义内建实现 + +正确顺序应当是: + +1. 先定义 `RenderPipeline` 抽象 +2. 再实现 `BuiltinForwardPipeline` +3. 后续 C# SRP 只是在这个边界上做脚本绑定 + +而不是: + +1. 先写死一个 `SceneRenderer` +2. 以后再强行拆成 pipeline + +第二种方式后续返工会很大。 + +### 7.2 Renderer 模块应向未来脚本层暴露的概念 + +当前阶段不一定全部实现,但结构上要留位置: + +- `RenderPipelineAsset` +- `RenderPipeline` +- `RenderContext` +- `CullingResults` +- `DrawingSettings` +- `FilteringSettings` +- `ShaderTag` +- `CommandBuffer` +- `RendererList` + +这些概念不一定要立刻与 Unity 一字不差,但应该在职责上能对应上。 + +### 7.3 材质与 Shader 资产模型不能停留在“单 shader 文件 + 属性包” + +未来做 SRP 时,shader pass 选择、render queue、tag、render state 都是必要能力。 + +因此当前阶段即使先不全量实现,也不能把资产模型彻底锁死在过于简单的结构上。 + +这一点单独列为 issue。 + +--- + +## 8. 分阶段推进建议 + +### 阶段 A:Renderer v0 骨架 + +目标: + +- 建立 `Rendering` 模块 +- 建立 `MeshFilterComponent` / `MeshRendererComponent` +- 建立 `RenderSurface` +- 建立 `BuiltinForwardPipeline` + +验收: + +- 可以通过 Renderer 正式绘制一个 textured quad 场景 +- 输出到 swapchain +- 输出到离屏 RT + +### 阶段 B:真实资源场景接入 + +目标: + +- 接入 mesh / texture / material 资源模块 +- 跑通 `backpack` 这样的真实模型场景 + +验收: + +- 真实 obj 资源经资源模块导入后可通过 Renderer 正式绘制 +- D3D12 / OpenGL 双后端结果一致 + +### 阶段 C:基础光照 + +目标: + +- 接入 `LightComponent` +- 跑通最基础的单方向光前向渲染 + +验收: + +- `sphere` / `backpack` 存在正确基础明暗 +- 材质参数与法线链路可验证 + +### 阶段 D:pipeline 抽象显式化 + +目标: + +- 把内建前向渲染切到 `RenderPipeline` 抽象之下 +- 支持 camera 列表驱动 +- 为未来 C# SRP 绑定准备原生接口 + +验收: + +- 原生内建 pipeline 通过统一接口驱动 +- renderer 不再依赖单一路径写死执行 + +### 阶段 E:editor viewport 接入 + +目标: + +- `SceneView` / `GameView` 使用 Renderer 的离屏输出 + +验收: + +- editor 面板只是渲染宿主 +- 不额外复制一套渲染逻辑 + +### 阶段 F:C# SRP 桥接 + +目标: + +- 在既有 Renderer 模块基础上绑定脚本化 pipeline + +验收: + +- C# 可以控制 camera 渲染流程 +- 原生 Renderer 继续负责底层资源、上下文与执行 + +--- + +## 9. 测试体系建议 + +Renderer 模块需要独立测试体系。 + +### 9.1 单元测试 + +建议放在: + +- `tests/Rendering/unit/` + +测试内容: + +- render object 抽取 +- material 参数打包 +- pipeline key 构建 +- GPU cache 命中与失效 +- render surface 创建与 resize + +### 9.2 集成测试 + +建议放在: + +- `tests/Rendering/integration/` + +建议场景: + +1. `textured_quad_scene` +2. `backpack_scene` +3. `lit_sphere_scene` + +仍然维持当前 RHI 抽象测试的好习惯: + +- 一场景一张 `GT.ppm` +- D3D12 / OpenGL 都与同一张 GT 比对 + +### 9.3 与 RHI 测试的关系 + +`tests/RHI/` 继续用于验证: + +- API 抽象正确性 +- 后端行为一致性 +- 资源 / 命令 /格式映射等底层问题 + +`tests/Rendering/` 则验证: + +- 场景渲染链路 +- 组件与资源到渲染结果的闭环 + +--- + +## 10. 当前已识别的不适配问题 + +以下问题不适合直接塞进本设计文档正文实现里,而应该独立跟踪: + +1. `Scene / Components` 层还没有 `MeshFilter / MeshRenderer` 抽象 +2. `Editor` 还没有 viewport 的离屏渲染宿主接入层 +3. `Material / Shader` 资产模型还不足以支撑未来 SRP 的 pass/tag 语义 + +对应 issue: + +- `docs/issues/Renderer模块_Scene层缺少MeshFilter与MeshRenderer抽象.md` +- `docs/issues/Renderer模块_EditorViewport缺少RenderSurface接入层.md` +- `docs/issues/Renderer模块_Material与Shader资产模型暂不满足SRP演进需求.md` + +--- + +## 11. 结论 + +当前 Renderer 阶段的正确方向是: + +- 在 RHI 之上建立 **原生渲染运行时** +- 用它先承接基础前向渲染 +- 同时提前为未来 **C# SRP** 留出清晰接口 + +因此,下一阶段的 Renderer 规划如果按本文执行,是与 Unity 渲染架构方向相容的,而且比“先做一个临时内建 renderer,后面再拆”更稳。 + +一句话概括: + +- **现在做的是 Unity 式渲染体系的原生底座** +- **以后在这个底座之上接 C# SRP** + diff --git a/docs/plan/Unity绝区零开发文档还原版.md b/docs/plan/Unity绝区零开发文档还原版.md new file mode 100644 index 00000000..0f1ce005 --- /dev/null +++ b/docs/plan/Unity绝区零开发文档还原版.md @@ -0,0 +1,1377 @@ +# Unity《绝区零》开发文档还原版 + +更新时间:2026-03-26 +分析对象:`D:\Program Files\ZenlessZoneZero Game` +文档性质:基于安装目录、版本清单、日志、元数据字符串和原生插件信息的“开发细节还原”。 +方法边界:本文不是源码审计,也不是反编译报告;凡是直接由文件、日志、版本信息证明的内容,标为“可确认”;凡是由多个证据合成出来的工程判断,标为“高概率推断”。 + +## 0. 为什么这份文档值得写 + +只看安装目录,很多人最多能得出“这是个 Unity 游戏”。但《绝区零》这个客户端的目录信息量其实非常大,已经足够暴露出: + +1. 它的引擎基底是哪一代 Unity LTS。 +2. 它是不是 IL2CPP、是不是重度原生插件化。 +3. 它的渲染层是不是 SRP 风格、有没有现代 PC 图形能力栈。 +4. 它是不是靠 Addressables/AssetBundle 直出,还是有独立的内容块分发系统。 +5. 它的资源是不是按业务模块分包,尤其是主线、教程、活动、卡池、视频表现。 +6. 它有没有成熟的内部工具链,例如世界图、镜头序列、预加载配置、棋盘玩法插件、体素相关工具等。 +7. 它的平台层是不是已经和 WebView、SDK、ABTest、翻译热更、遥测、Crash、保护驱动深度耦合。 + +换句话说,这个目录足够说明它不是“Unity 默认工作流做出来的大包”,而是一套建立在 Unity 之上的产品化工程栈。 + +## 1. 执行摘要 + +先把最重要的结论放前面: + +### 1.1 可确认结论 + +1. PC 客户端使用 **Unity 2019.4.40 LTS**。 +2. 脚本后端是 **IL2CPP**,不是 Mono。 +3. 客户端重度依赖原生插件,接入了 Wwise、CRI Mana、KCP、WebView/CEF、遥测、Crash、反作弊/保护等多个子系统。 +4. 资源分发不是简单的 Unity Bundle 直发,而是 **`.blk` 块资源 + `.usm` 视频资源 + `.pck` 音频资源 + 独立版本清单** 的多通道体系。 +5. `file_category_launcher` 证明客户端把大量视频媒体资源明确映射到业务分类号,说明启动器/内容系统在“剧情页、教程、活动、卡池、登录页、章节视频”等层面做了分包设计。 +6. 元数据中可直接看到 `NapResources`、`ScriptConfig`、`JsonBytes`、`WorldGraph`、`NapCameraSequence`、`ChessboardPlugin`、`VoxelArray`、`MeshStreamingBuildStates` 等命名,说明工具链深度很高。 + +### 1.2 高概率推断 + +1. Windows 版本的主渲染后端大概率是 **D3D12 优先**,但 Vulkan 代码路径被完整编入并维护。 +2. 项目在 Unity 之上实现了 **自定义 SRP 风格渲染管线**,而不是纯 Built-in Render Pipeline。 +3. 项目内部存在 **ECS 风格运行时框架** 或至少采用 ECS 命名和句柄系统,但未必等于 Unity 官方 DOTS。 +4. `data_version` 很像独立于大资源通道之外的 **小型高频热更通道**。 +5. 当前启动器显式面向用户或内容侧暴露的“分包单元”主要集中在视频媒体层,而大体量内容层走块资源系统。 + +## 2. 调查方法与证据来源 + +本次还原主要依赖以下几个证据面: + +### 2.1 二进制与根目录结构 + +根目录存在的关键文件包括: + +- `ZenlessZoneZero.exe` +- `UnityPlayer.dll` +- `GameAssembly.dll` +- `nvngx_dlss.dll` +- `nvngx_dlssg.dll` +- `sl.dlss.dll` +- `sl.reflex.dll` +- `amd_fidelityfx_upscaler_dx12.dll` +- `amd_fidelityfx_framegeneration_dx12.dll` +- `telemetry.dll` +- `Astrolabe.dll` +- `HoYoKProtect.sys` +- `mhypbase.dll` +- `config.ini` +- `version_info` +- `file_category_launcher` + +只看这一层已经可以初步判断: + +1. 这是标准 Unity Windows 原生壳 + IL2CPP 业务层。 +2. 这是面向现代 PC 图形能力的版本,而不是纯移动移植壳。 +3. 平台层明显带有米哈游的完整发行/SDK/安全/运维组件。 + +### 2.2 StreamingAssets 与 Persistent 目录 + +关键目录: + +- `ZenlessZoneZero_Data\StreamingAssets` +- `ZenlessZoneZero_Data\Persistent` +- `ZenlessZoneZero_Data\Persistent\LogDir` + +这些目录提供了最重要的资源与热更证据。 + +### 2.3 IL2CPP 元数据 + +关键文件: + +- `ZenlessZoneZero_Data\il2cpp_data\Metadata\global-metadata.dat` + +虽然没有源码,但 metadata 中残留了大量: + +- 场景名 +- 资源路径 +- 类型名 +- 配置资产名 +- 内部工具类名 +- 某些运行时系统的符号 + +这是还原内部工程结构的核心来源之一。 + +### 2.4 运行日志 + +关键目录: + +- `ZenlessZoneZero_Data\Persistent\LogDir` + +日志直接暴露了: + +- 场景切换链路 +- SDK 初始化链路 +- WebView 初始化方式 +- ABTest 地址 +- 多语言翻译热更 URL +- 部分渲染和运行时开关 +- 资源系统的异常与配置信息 + +## 3. 引擎与运行时层 + +### 3.1 引擎版本与脚本后端 + +可确认事实: + +- `ZenlessZoneZero.exe` 文件版本:`2019.4.40.14369230` +- `UnityPlayer.dll` 文件版本:`2019.4.40.14369230` +- 存在 `GameAssembly.dll` +- 存在 `ZenlessZoneZero_Data\il2cpp_data\Metadata\global-metadata.dat` + +这说明: + +1. 引擎版本是 **Unity 2019.4.40 LTS**。 +2. 脚本后端是 **IL2CPP**。 +3. 项目不是 HotReload/C# Mono 为主的轻量工程,而是完整 AOT 化的大型正式版客户端。 + +### 3.2 启动配置 + +`boot.config` 中至少可以确认: + +- `wait-for-native-debugger=0` +- `vr-enabled=0` +- `hdr-display-enabled=0` +- `single-instance=` + +这些信息本身不惊人,但结合整个项目体量,它反映的是: + +1. 客户端使用标准 Unity 启动流程,但做了平台化的参数控制。 +2. HDR 至少在当前这份启动配置中没有默认开启。 +3. VR 不是目标运行模式。 + +### 3.3 当前版本与渠道 + +直接来自 `config.ini` 与 `version_info`: + +- `game_version=2.7.0` +- `channel=1` +- `sub_channel=1` +- `cps=mihoyo` +- `version_info = CNPRODWin2.7.0` + +最稳妥的结论是: + +- 当前安装目录对应 **国服 Windows 正式环境 2.7.0**。 + +之前日志痕迹还显示过 2026-03-24 左右从 `CNPRODWin2.6.0` 升级到 `CNPRODWin2.7.0` 的过程,因此这份安装目录并不是“首包静态镜像”,而是经历过真实更新链路的客户端。 + +### 3.4 基础框架命名 + +元数据与日志中反复出现: + +- `MoleMole.*` +- `Foundation.*` +- `MiHoYo.SDK.*` + +这说明 Unity 只是底座,业务层上面还有一层相当厚的内部基础框架。 + +### 3.5 场景结构 + +从 metadata 中可直接提取出的场景: + +- `Assets/Scenes/Logic/FrontendGame.unity` +- `Assets/Scenes/Logic/Launcher.unity` +- `Assets/Scenes/Logic/Real_ECS.unity` +- `Assets/Scenes/Login/Login_MainCityWorkshop.unity` +- `Assets/Scenes/Scene_Dev/DevLevel.unity` + +可推断的工程含义: + +1. `Launcher` 与 `FrontendGame` 分开,说明启动入口和主要业务逻辑不是单场景一把梭。 +2. `Real_ECS` 是非常强的内部命名证据,说明存在面向实体系统或 ECS 风格的逻辑分层。 +3. `DevLevel` 说明正式构建中仍残留研发/验证用场景引用。 +4. `Login_MainCityWorkshop` 暗示登录链路、主城演出和专门的场景工作流紧密相关。 + +### 3.6 是否存在 ECS 风格运行时 + +当前可确认的证据: + +- 场景名包含 `Real_ECS` +- metadata 中出现 `EntityHandle` +- metadata 中出现 `ListEntityHandle` + +高概率判断: + +- 项目内存在一套 **ECS 风格或实体句柄驱动的运行时框架**。 + +需要谨慎的点: + +- 这不能直接等同为 Unity DOTS/Entities Package。 +- 更可能是米哈游内部的“实体句柄 + 数据驱动系统 + 运行时图”式框架。 + +## 4. 渲染与图形后端 + +### 4.1 为什么可以判断不是纯 Built-in RP + +日志和元数据中能看到以下关键证据: + +- `UnityEngine.Rendering.RenderPipelineManager:DoRenderLoop_Internal` +- `disableSRPHelper:0` +- `disableSRPInstancing:0` +- `disableAsyncSRPSubmit:0` +- `ShaderCustomData 无效配置路径 ...` + +如果只是普通 Built-in 渲染项目,这几个特征同时出现的概率很低。它们组合起来,更像: + +1. 项目基于 Unity 的 RenderPipeline 管理链运行。 +2. 团队实现了自己的 SRP 风格辅助层。 +3. Shader 数据和配置路径不是全靠 Unity 默认材质面板,而是有单独配置系统。 + +### 4.2 现代图形特性开关 + +日志中可见: + +- `disableRayTracing:0` +- `disableMeshLet:0` +- `disableAsyncUploadJob:0` +- `disableFlatbufferNativeArrayOpt:0` +- `disableVKPSOJob:0` +- `enablePhyManagerJob:0` + +这些开关说明的不是“这些功能一定默认打开”,而是: + +1. 这些能力在工程层面被明确纳入了可控项。 +2. 团队在渲染/资源/原生数据层做过较多开关治理。 +3. PC 版至少在架构层已经考虑过 Ray Tracing、MeshLet、异步上传、Vulkan PSO 作业化等问题。 + +### 4.3 PC 原生图形能力栈 + +根目录的原生 DLL 明确显示接入了: + +- NVIDIA DLSS +- DLSS Frame Generation +- NVIDIA Reflex +- NIS +- AMD FSR / FidelityFX Upscaler +- AMD Frame Generation +- AMD AGS + +这组 DLL 几乎可以直接说明: + +- 这是一个认真做 PC 高端显示链路适配的版本,而不是随便把移动端资源抬到 PC。 + +### 4.4 Vulkan 证据 + +在 `GameAssembly.dll` 中可检索到大量 Vulkan 相关字符串,包括 `vkCreate*` 系列与 PSO/交换链相关内容。再结合日志中出现的 `disableVKPSOJob`,可得出比较稳的推断: + +- Vulkan 路径被完整编入并维护。 + +更进一步的工程判断: + +- Windows 正式服的大概率主力图形后端仍是 D3D12,Vulkan 更像兼容、实验或特定平台路径,但不是“没写完的残留代码”。 + +### 4.5 对渲染架构的整体推断 + +高概率架构如下: + +1. Unity 2019 LTS 提供平台与底层渲染承载。 +2. 项目在其上实现自定义 SRP 风格框架。 +3. Shader 管线、预热、配置、特效和材质属性存在独立数据层。 +4. PC 版本在原生层桥接 DLSS/FG/Reflex/FSR 等现代能力。 +5. Vulkan 与 D3D12 两条路径至少在代码层被同时维护。 + +## 5. 资源组织、版本清单与热更体系 + +这是这份安装目录里信息量最大的一层,也是最能体现“工程成熟度”的部分。 + +### 5.1 StreamingAssets 顶层结构 + +`ZenlessZoneZero_Data\StreamingAssets` 下可见: + +- `Blocks` +- `Video` +- `Audio` +- `MiHoYoSDKRes` +- `APMConfig.json` +- `res_version` +- `data_version` +- `audio_version` +- `res_revision` +- `data_revision` +- `audio_revision` +- `silence_version` +- `silence_revision` + +这套命名非常像独立于 Unity 默认资源系统之外的发行系统。尤其是 `*_version` 与 `*_revision` 双文件模式,典型用于: + +1. 比较本地与远端版本。 +2. 决定差量下载。 +3. 区分资源通道。 +4. 支持启动器或游戏内更新器。 + +### 5.2 StreamingAssets 实体资源体量 + +从实际目录统计得到: + +| 类别 | 数量 | 体积 | +| --- | --- | --- | +| `Blocks` | 8276 | 45.182 GB | +| `Video` | 1991 | 13.343 GB | +| `Audio` | 94 | 6.705 GB | + +这一层已经能看出几个非常重要的结论: + +1. 真正的大头不是音频,而是 **块资源 + 视频资源**。 +2. 视频资源占比极大,这说明项目对视频表现依赖远高于普通 Unity 游戏。 +3. 音频在安装目录内不是全部内容,完整音频清单还要看 `audio_version`。 + +### 5.3 `res_version`:主资源通道 + +对 `ZenlessZoneZero_Data\StreamingAssets\res_version` 的结构化解析结果: + +- 文件数:`10246` +- 总体积:`58.352 GB` +- 顶层前缀分布: + - `Blocks`:`8255` + - `Video`:`1991` +- 带 `packages` 字段的条目数:`1991` +- 不带 `packages` 字段的条目数:`8255` + +这说明: + +1. 主资源清单只维护两类核心资源:`Blocks` 与 `Video`。 +2. 当前版本中,**所有显式带业务包号的条目正好等于视频条目数**。 +3. 块资源没有在这个清单层直接暴露业务包号,而是以内容块形式存在。 + +这其实非常关键,因为它说明资源系统分成了两层: + +- 一层是“面向分发和业务管理”的视频媒体包。 +- 另一层是“面向运行时加载”的哈希块/内容块系统。 + +### 5.4 `res_version` 的 tag 组合 + +`res_version` 中的 tag 组合分布如下: + +| tag 组合 | 数量 | +| --- | --- | +| `3` | 7731 | +| `3,5` | 1905 | +| `2` | 504 | +| `2,5` | 58 | +| `1,5` | 28 | +| `1` | 18 | +| `` | 2 | + +目前还不能精确破译 `1/2/3/5` 的语义,但可以做比较稳的工程推断: + +1. tag 不是简单的布尔开关,而是资源层级/安装阶段/下载策略的编码。 +2. 视频经常与 `5` 联动,说明 `5` 高概率和“视频媒体分发层”或某类可选分包策略有关。 +3. 大多数主资源是 `3`,说明 `3` 很可能是当前正式主内容层。 +4. 少量 `1` 和 `2` 更像首包/基础包/过渡层,或者历史分层残留。 + +### 5.5 `data_version`:小型数据通道 + +对 `data_version` 的解析结果: + +- 文件数:`21` +- 总体积:`0.173 GB` +- 路径全部位于:`Blocks/Data/*.blk` + +抽样可见条目示例: + +- `Blocks/Data/3749079225.blk` +- `Blocks/Data/632827999.blk` +- `Blocks/Data/2397209110.blk` +- `Blocks/Data/297117219.blk` +- `Blocks/Data/133733816.blk` + +以及 tag 组合里同时出现了 `1`、`2`、`3` 和空值。 + +这层非常像: + +- **独立于大资源通道之外的小体量配置/逻辑/表格数据热更层。** + +这种拆法的工程意义非常大: + +1. 可以高频更新小量关键数据。 +2. 不需要动 58GB 的主资源清单。 +3. 可以缩短更新链路与校验时间。 +4. 对长线运营版本非常友好。 + +### 5.6 `audio_version`:音频完整包与最小安装包分离 + +对 `audio_version` 的解析结果: + +- 文件数:`271` +- 总体积:`17.426 GB` +- 前缀分布: + - `Audio/Windows/Full`:`270` + - `Audio/Windows/Min`:`1` +- tag 组合分布: + - `3,4`:`270` + - `1,4`:`1` + +这几乎可以直接翻译成工程现实: + +1. 音频资源被拆成 **完整音频包** 与 **最小启动音频包**。 +2. `Minimum.pck` 是最小安装音频集。 +3. 大量的正式语音、环境、SFX、流式音频都位于 `Full` 层。 + +从目录结构还能看到 `Full` 下存在语言目录: + +- `Cn` +- `En` +- `Jp` +- `Kr` + +这意味着: + +- 国际化语音不是单独打补丁凑出来的,而是版本体系天然支持的一级资源维度。 + +### 5.7 `silence_version`:存在但当前为空 + +对 `silence_version` 解析结果: + +- 文件数:`0` +- 总体积:`0` + +这说明“silence”这一通道在当前版本中是预留态或暂未启用态。它可能意味着: + +1. 曾经设计过静默下载/静默资源层。 +2. 该版本没有启用。 +3. 或者仅保留了协议/版本结构,但无实际内容。 + +### 5.8 `.blk` 的工程含义 + +虽然目前没有真正解开 `.blk` 内部格式,但从目录结构和清单行为已经能判断: + +1. `.blk` 不是随意命名的一堆松散文件,而是项目主内容承载格式。 +2. 它大概率用于封装游戏运行时真正的大宗资源。 +3. 它和 Unity 默认 AssetBundle 的“直接暴露路径”风格不同,更像内容块或资源块系统。 +4. 这类设计通常对应更好的: + - 断点续传 + - 差量校验 + - 合并更新 + - CDN 分发 + - 运行时缓存与淘汰 + +### 5.9 Persistent 目录揭示客户端下载后的二次落地 + +`ZenlessZoneZero_Data\Persistent` 中可以看到: + +- `Blocks` +- `Audio` +- `Video` +- `Bundles` +- `LogDir` +- `SDKCaches` + +已知统计结果: + +| 类别 | 数量 | 体积 | +| --- | --- | --- | +| `Persistent\Blocks` | 49 | 0.241 GB | +| `Persistent\Audio` | 2 | 0.053 GB | +| `Persistent\Video` | 8 | 0.268 GB | +| `Persistent\Bundles` | 0 | 空 | + +这个现象说明: + +1. 客户端确实支持安装后继续获取和缓存资源。 +2. 缓存形态延续了 `Blocks/Audio/Video` 三通道设计。 +3. `Bundles` 在当前版本里不是核心载体,至少不是主要的实际补丁落地点。 + +### 5.10 为什么说这不是普通 Addressables 项目 + +能看到 `AssetBundle` 相关词不代表它就一定以 Unity Addressables 作为主分发层。相反,从当前目录结构看,更强的证据是: + +1. 主清单完全自定义:`res_version` / `data_version` / `audio_version`。 +2. 主格式是 `.blk` / `.usm` / `.pck`,不是直接暴露的 bundle 目录。 +3. Persistent 落地也延续这一结构。 +4. 业务分类文件单独维护:`file_category_launcher`。 + +更稳妥的判断是: + +- 项目就算内部某处仍可能使用 AssetBundle,也已经被一层更上位的 **自研发行/热更/分包系统** 包住了。 + +## 6. `file_category_launcher` 暴露出的业务分包体系 + +这是本次调查里最有价值的文件之一。它的每一行都把一个具体资源文件映射到一个业务分类号,例如: + +- `Launch/CutScene_StandbyVideo.usm -> 30400` +- `LoginBangumi/Ad_01_mux.usm -> 30500` +- `Battle/TutorialAvatarVideo1011_1.usm -> 31002` +- `Gacha/Gacha_Anbi.usm -> 40100` + +这意味着客户端不是把所有视频混成一个大仓,而是显式把它们挂到业务包上。 + +### 6.1 高频分类号统计 + +当前提取到的高频分类号如下: + +| 分类号 | 数量 | +| --- | --- | +| `20101` | 487 | +| `20103` | 156 | +| `31002` | 131 | +| `31008` | 105 | +| `30600` | 89 | +| `30800` | 66 | +| `31006` | 62 | +| `20207` | 53 | +| `31003` | 47 | +| `31001` | 45 | +| `72001` | 38 | +| `30200` | 36 | +| `31004` | 32 | +| `10115` | 28 | +| `31007` | 26 | +| `30500` | 25 | +| `40100` | 24 | +| `20102` | 23 | +| `10100` | 20 | +| `30700` | 20 | + +高频号本身就能说明: + +1. Hollow / Transfer / Tutorial / Activity / Gacha / DailyChallenge 这些系统在视频资源层都有显式分包。 +2. 客户端大量内容是“带业务标签的媒体资源”,而不是统一的大资源堆。 +3. 教学内容资源规模远超一般游戏,说明项目在“系统教学可视化”上投入很大。 + +### 6.2 明确可识别的分类号 + +#### `30400`:启动与 Logo + +示例: + +- `Video/HD/Launch/CutScene_StandbyVideo.usm` +- `Video/HD/Launch/LogoPerform_CHS.usm` + +这层就是首启或启动页表现资源。 + +#### `30500`:登录电视/广告素材 + +示例: + +- `Video/HD/LoginBangumi/Ad_01_mux.usm` +- `Video/HD/LoginBangumi/TV_TurnOff.usm` + +说明登录页的电视播放内容完全走独立资源包。 + +#### `20101`:Hollow 主体资源 + +示例: + +- `Video/HD/Hollow/Event/General/HollowToBattleBangboo.usm` +- `Video/HD/Hollow/AnimFlow/Black_Switch.usm` +- `Video/HD/Hollow/Avatar/Chat/EventVideoAnbi_Chat.usm` + +它不是单一功能点,而是一个很大的 Hollow 相关表现集合。 + +#### `20102`:Hollow 背景包 + +示例: + +- `Video/HD/Hollow/Background/Boss/ChallengeDeadEndButcherBackground.usm` +- `Video/HD/Hollow/Background/Metro/MetroBackground.usm` + +说明 Hollow 的背景表现还被单独拆层。 + +#### `20103`:Transfer / 切换层 / 假加载 + +示例: + +- `Video/HD/Transfer/General/TransferBattleFakeLoading.usm` +- `Video/HD/Transfer/General/BattleToHollowLoading.usm` +- `Video/HD/Transfer/General/TransferNoiseLoading.usm` + +这体现出项目把“切换体验”和“加载包装”当成独立表现系统处理。 + +#### `30200`:Inter-Knot / 站内帖子视频 + +示例: + +- `Video/HD/InterKnotPost/InterKnotPostVid_1020.usm` +- `Video/HD/InterKnotPost/InterKnotPostVid_11004.usm` + +这说明“站内内容流/帖子视频”不是脚本临时拼接,而是有独立媒体层。 + +#### `30600`:武器或装备展示视频 + +示例: + +- `Video/HD/Weapon/WeaponSpecialVideo_ZhenZhen.usm` +- `Video/HD/Weapon/Weapon_A_1011.usm` + +这说明装备/武器系统有专门的视频包装资源,不是仅靠模型转台或 UI 动画。 + +#### `30700`:日常挑战/训练房 + +示例: + +- `Video/HD/DailyChallenge/DailyChallengePageBg.usm` +- `Video/HD/DailyChallenge/TrainningRoomLayerLoop.usm` + +说明日常挑战体系具备独立的背景/流程媒体资源。 + +#### `31001`:基础战斗教学 + +示例: + +- `TutorialAidAttack_*` +- `TutorialBattleBase.usm` +- `TutorialBeHit.usm` +- `TutorialCounter.usm` +- `TutorialEnemyInformation.usm` + +说明基础战斗教学不靠文字说明,而是媒体资源驱动。 + +#### `31002`:角色专属教学 + +示例: + +- `TutorialAvatarVideo1011_1.usm` +- `TutorialAvatarVideo1031_2.usm` +- `TutorialAvatarVideo1521_3.usm` + +这里数量高达 131,说明很多角色都有自己的动作/机制演示视频。 + +#### `31003`:邦布/特殊玩法教学 + +示例: + +- `Tutorial_BangbooInLevel_1_1.usm` +- `ActivityBattle_StylishMode_Banyue_001.usm` + +#### `31004`:棋盘/空洞/特殊规则教学 + +示例: + +- `ChessboardChapter25_Tutorial_1.usm` +- `ChessboardGame_Tutorial_1.usm` +- `Hollow/TutorialHollowRechallenge.usm` + +#### `31006`:主城/线索/系统教学 + +示例: + +- `TutorialMaincityVideo02.usm` +- `LimboClueSystem_Clue.usm` +- `LimboClueSystem_SpecialArea.usm` + +#### `31007`:额外教学/修复性内容集合 + +示例: + +- `FishMasterColorBlock_1.usm` +- `Hollow/ClassicMovement.usm` +- `TutorialDataFix1.usm` + +#### `31008`:活动机制/特殊战斗教学 + +示例: + +- `Activity/MazingerGoldenBomb_Ability_01.usm` +- `TutorialEtherBarrier_01.usm` +- `Tutorial_ActivityBattle_1.usm` + +这一组说明活动玩法经常伴随独立教学视频包。 + +#### `40100`:角色卡池展示 + +示例: + +- `Video/HD/Gacha/Gacha_Anbi.usm` +- `Video/HD/Gacha/Gacha_Anton.usm` +- `Video/HD/Gacha/Gacha_Ben.usm` + +#### `40300`:卡池通用 OP/通用基底 + +示例: + +- `Video/HD/Gacha/Gacha_Bangboo_Default.usm` +- `Video/HD/Gacha/Gacha_OP_1.usm` +- `Video/HD/Gacha/Gacha_OP_1_Base.usm` + +说明卡池展示分成“角色个体资源”和“通用演出基底”。 + +#### `50300`:街机/小游戏体系 + +示例: + +- `Video/HD/Arcade/ArcadeScreen/ArcadeCompanionIntro_1.usm` +- `Video/HD/Arcade/ArcadeScreen/ArcadeHoundStart.usm` +- `Video/HD/Arcade/ArcadeScreen/ArcadeMach25Intro_1.usm` + +#### `72001`:影院活动 + +示例: + +- `Video/HD/ActivityCinema/CinemaFilm_10_Openning.usm` +- `Video/HD/ActivityCinema/CinemaFilm_11_Playing.usm` + +#### `72104`:机甲活动 + +示例: + +- `ActivityNewMecha_MoveTutorial1.usm` +- `ActivityNewMecha_MoveTutorial8.usm` + +#### `72106`:联机合作活动 + +示例: + +- `Activity/Coop/CoopMatchingBackground_1.usm` +- `Activity/Coop/CoopMatchingBackground_10.usm` + +### 6.3 主线章节媒体包的强证据 + +以下分类号和路径对应关系非常明确: + +| 分类号 | 典型路径 | 还原结论 | +| --- | --- | --- | +| `30101002` | `MainStory/PageVideo/Chapter02/*` | 主线第 2 章页面视频包 | +| `30101004` | `MainStory/PageVideo/Chapter03/*` | 主线第 3 章页面视频包 | +| `30101005` | `MainStory/PageVideo/Chapter04/*` | 主线第 4 章页面视频包 | +| `30101008` | `MainStory/PageVideo/Chapter06/*` | 主线第 6 章页面视频包 | +| `30101009` | `MainStory/PageVideo/Chapter07/*` | 主线第 7 章页面视频包 | + +这说明媒体资源至少在主线页面层已经按章节分包。它的工程价值包括: + +1. 控制首包体积。 +2. 便于预下载未上线章节媒体。 +3. 允许某章节内容独立更新。 +4. 运营与版本管理更清晰。 + +### 6.4 `101xx` 看起来像“流程章节/过场编号包” + +提取到的样本如下: + +- `10100 -> Procedure/C000_*` +- `10105 -> Procedure/C040_*` +- `10106 -> Procedure/C050_*` +- `10110 -> Procedure/C210_*` +- `10111 -> Procedure/C220_*` +- `10112 -> Procedure/C230_*` +- `10113 -> Procedure/C240_*` +- `10114 -> Procedure/C250_*` +- `10115 -> Procedure/C260_*` +- `10117 -> Procedure/C280_*` + +这说明项目的流程过场视频很可能按内部章节/节点编号系统单独打包。 + +### 6.5 这一层最关键的工程判断 + +`file_category_launcher` 最重要的意义不在于“知道几个包号”,而在于它证明了: + +1. 启动器或资源系统不是只认文件哈希,它同时认业务语义。 +2. 客户端内容至少在媒体层已经高度产品化,能按玩法、章节、活动、卡池拆分。 +3. 视频表现资源不是附属物,而是主流程中的一等资源。 + +## 7. 音频、视频与表现系统 + +### 7.1 音频:Wwise 已深入到时间轴/表现层 + +音频侧有几个强证据: + +- `AkSoundEngine.dll` +- `AkMotion.dll` +- `AkWaapiClient.dll` +- metadata 中出现 `MoleMole.Timeline.WwiseAudioTrack` +- 日志中出现 Wwise 生命周期记录 + +这比“项目用了 Wwise”更进一步。它说明: + +1. 音频被集成到了表现/Timeline 系统里。 +2. 团队可能使用 Wwise 管理大量复杂 BGM、事件、流式音频和演出同步。 +3. Unity Timeline 或其自定义扩展在音频上有专门轨道。 + +### 7.2 视频:CRI Mana 不是点缀,而是核心表现依赖 + +视频侧证据: + +- `cri_mana_vpx.dll` +- `cri_ware_unity.dll` +- 资源中存在 1991 个 `.usm` + +从文件类别看,视频被用于: + +1. 启动 Logo +2. 登录页电视/广告 +3. 场景切换和假加载 +4. Hollow 与主城表现 +5. 卡池角色展示 +6. 主线章节页面视频 +7. 街机活动 +8. 联机活动 +9. 角色/机制教学 + +这说明项目的视频依赖不是边角料,而是 UI 包装、流程演出和玩法教学的重要构成部分。 + +### 7.3 表现工具链命名 + +metadata 中可以看到: + +- `NapCameraSequence` +- `NapCameraSequenceHandle` +- `Assets/NapResources/Data/ScriptConfig/Perform/LevelPerformConfig.asset` +- `Assets/NapResources/Data/ScriptConfig/Camera/ConfigFocusCamera.asset` +- `Assets/NapResources/Data/ScriptConfig/AnimatorStateLength/ConfigAnimatorStateLength.asset` +- `Assets/NapResources/Data/ScriptConfig/Comic/BubbleResources` +- `Assets/NapResources/Data/ScriptConfig/Photo/FrameOuter` +- `Assets/NapResources/Data/ScriptConfig/Photo/FramePhoto` + +这说明表现系统至少包含: + +1. 自定义镜头序列。 +2. 关卡表现配置。 +3. 相机聚焦配置。 +4. 动画状态长度或状态时序配置。 +5. 漫画泡泡、摄影框架等特殊 UI/叙事表现资源。 + +## 8. SDK、WebView、ABTest、运维与安全层 + +### 8.1 WebView/CEF 证据非常扎实 + +定位到的相关文件: + +- `ZenlessZoneZero_Data\Plugins\x86_64\zf_cef.dll` +- `ZenlessZoneZero_Data\Plugins\x86_64\ZFGameBrowser.exe` +- `ZenlessZoneZero_Data\Plugins\x86_64\ZFEmbedWeb.dll` +- `ZenlessZoneZero_Data\Plugins\x86_64\ZFProxyWeb.dll` + +其中 `zf_cef.dll` 版本是: + +- `100.0.24+g0783cf8+chromium-100.0.4896.127` + +这说明客户端带的是一套比较完整的桌面嵌入浏览器栈,而不是随手塞个系统 WebView。 + +### 8.2 日志中的 WebView 初始化链 + +最新日志中可以直接看到: + +- `PreLoadSWURL: https://sdk.mihoyo.com/sw.html?...` +- `Init with offScreen: False` +- `InitUI with offScreen: False` +- `mihoyosdk webview created: ...` +- `web view render method: box config use optimization! request ab` +- `read ab test config from combo config` +- `read webview render method scene: MiHoYo.SDK.WebViewRenderMethodScene` +- `Get ABTest: plat - https://data-abtest-api.mihoyo.com/...` + +这几行直接暴露出: + +1. SDK WebView 不是固定策略,而是可走 ABTest 分流。 +2. WebView 的渲染方式可以由服务端配置决定。 +3. WebView 和 Native UI 栈之间存在完整事件交互。 + +### 8.3 多语言翻译热更 + +日志中还能看到: + +- `Request to set language:zh-cn` +- `Update region translation resources:zh-cn` +- `regionTranslationVersionCheck URL:https://webstatic.mihoyo.com/admin/mi18n/...-version.json` + +这说明: + +1. 本地语言资源之外,还有在线翻译资源更新链。 +2. 多语言文本并非完全固化在客户端包内。 +3. 运营层可以对区域文本进行版本化更新。 + +### 8.4 遥测与 Crash 体系 + +日志与文件显示存在: + +- `telemetry.dll` +- `APMCrashReporter` +- `MiHoYoSDKUploader.dll` +- `TelemetryInterface path:...\SDKCaches` +- `InitCrashSDKConfig` + +这基本可以判断: + +1. 客户端具备成熟的异常与性能/行为上报链路。 +2. `SDKCaches` 不只是 SDK 静态文件目录,还是部分运行时缓存和上报链路落地点。 +3. 客户端是围绕长线在线运营构建的,不是离线单机式打包。 + +### 8.5 安全与保护层 + +根目录存在: + +- `HoYoKProtect.sys` +- `mhypbase.dll` +- `Astrolabe.dll` + +这说明正式版客户端带有较明确的保护/反作弊/底层守护组件。对工程层的意义是: + +1. 引擎层与平台层不是纯用户态逻辑。 +2. 正式发行链路包含安全侧部署。 +3. 构建和安装流程考虑过驱动/保护组件的分发。 + +## 9. 内部工具链与数据驱动架构 + +这是最能说明“这不是普通 Unity 项目”的部分。 + +### 9.1 `NapResources`:统一资源命名空间 + +metadata 中反复出现 `Assets/NapResources/...`。这说明: + +1. 团队维护了一套统一的资源命名空间,而不是让资源散落在各个场景和 prefab 里。 +2. 很多系统都围绕 `NapResources` 组织,说明它更像项目级资源根,而不是临时目录。 +3. 命名上 `nap` 与 `nap_cn`、日志中的 `bundle_id=nap_cn` 彼此呼应,说明这不是无关命名。 + +### 9.2 ScriptConfig 根目录样本 + +从 metadata 中提取到的 `ScriptConfig` 根包括: + +- `Activity/ActivityLiveHouse` +- `Activity/ConfigHotPotFoodAssets.asset` +- `Activity/ConfigHotPotForceFields.asset` +- `AnimatorStateLength/ConfigAnimatorStateLength.asset` +- `AttackPropertys/AttackPropertyLibrary.asset` +- `Audio/BasePaths` +- `Camera/ConfigFocusCamera.asset` +- `Camera/Library` +- `Camera/Photo` +- `Camera/PhotoWall` +- `Comic/BubbleResources` +- `Comic/ImgStyle` +- `EtherEyes/ConfigEtherEyes.asset` +- `Level/LevelAddonConfig.asset` +- `LevelNpcGroupData/BladeIllusionNPCDisplayConfig.asset` +- `MaterialPropertyModifier/AutoGen` +- `Perform/LevelPerformConfig.asset` +- `Preload/PreloadLevelConfig.asset` +- `Preload/PreloadUIAssetsConfig.asset` +- `PreloadConfig/PreloadStreamingGameConfig.asset` +- `Preload/ShaderVariantCollection-` +- `ScreenEffects/AutoGen` +- `ShaderCustom/` +- `UI/ConfigUIActivityRhythmClick.asset` +- `UI/ConfigUIUrbanMap.asset` + +这几乎把项目的工程气质说透了: + +1. 活动不是脚本散件,而是有独立配置资产。 +2. 相机、摄影、漫画泡泡、音频路径、材质属性修改、屏幕特效都经过工具化配置。 +3. `AutoGen` 目录表明不少配置是自动生成的,而不是纯手工维护。 +4. `Preload*` 与 `ShaderVariantCollection` 显示预加载和 Shader 变体治理已经进入正式管线。 + +### 9.3 JsonBytes 根目录样本 + +从 metadata 中提取到的 `JsonBytes` 根包括: + +- `ArcadeGame/Cp` +- `AreaData` +- `ChessboardPlugin` +- `HollowEntity` +- `LevelWorld` +- `NewAbility` + +这说明项目存在明确的“编辑器数据 -> 字节化运行时数据”路径。其工程含义: + +1. 运行时不会只依赖 Unity 原生反射式序列化。 +2. 很多系统用的是更轻、更可控的数据载入路径。 +3. Hollow、能力系统、关卡世界、棋盘玩法等核心模块都被放进了这一层。 + +### 9.4 MessagePack 的直接证据 + +metadata 中直接出现: + +- `MessagePack.Resolvers.DynamicUnionResolver` +- `MessagePack.Resolvers.DynamicContractlessObjectResolver` +- `MessagePack.Resolvers.DynamicEnumResolver` +- `MessagePack.Resolvers.DynamicObjectResolver` + +这几乎可以确认: + +- 项目在运行时或工具链的某一层明确使用了 **MessagePack**。 + +这和 `JsonBytes`、`EntityHandle`、`WorldGraph` 放在一起,很像典型的大项目数据链: + +1. 编辑器阶段维护结构化对象。 +2. 构建阶段导出字节化数据。 +3. 运行时以句柄、图结构、表结构快速加载。 + +### 9.5 世界/流程/玩法工具链痕迹 + +metadata 中能够看到的一些极有信息量的名字: + +- `WorldGraph` +- `Assets/NapResources/Data/WorldGraph/Bytes` +- `node_config.bytes` +- `ChessboardPlugin` +- `ChessboardPluginInnerWorldConverter` +- `VoxelArray` +- `Assets/Code/Logic/Data/ScriptObject/Stage/MonoZone3D/Terrain/VoxelArray/UpdateVoxelArrayForOverlay.compute` +- `Assets/Code/Logic/Data/ScriptObject/Stage/MonoZone3D/Terrain/VoxelArray/VoxelArrayForOverlayDebugDisplay.mat` + +这几条证据背后的工程信息非常多: + +1. `WorldGraph` 表明世界/流程/节点关系很可能不是硬编码,而是图配置驱动。 +2. `node_config.bytes` 说明图配置会烘焙成运行时字节数据。 +3. `ChessboardPlugin` 说明棋盘/网格玩法不是零散逻辑,而是插件化模块。 +4. `ChessboardPluginInnerWorldConverter` 暗示棋盘玩法与关卡真实世界之间有转换层。 +5. `VoxelArray` 与相关 compute/material 名称说明至少存在某类基于体素或覆盖层的空间数据处理与可视化手段。 + +### 9.6 预加载、Shader 变体与 Mesh Streaming + +metadata 中还可以直接看到: + +- `PreloadStreamingGameConfig` +- `PreloadUIAssetsConfig` +- `PreloadLevelConfig.asset` +- `ShaderVariantCollection` +- `MeshStreamingBuildStates` +- `Assets/Editor Default Resources/MeshStreamingBuildStates` +- `MeshStreamingRoot` + +这说明项目已经把以下问题工具化处理: + +1. 游戏流式预加载。 +2. UI 资源预加载。 +3. Shader 变体收集和预热。 +4. Mesh Streaming 的构建状态管理。 + +这一点非常重要,因为很多 Unity 项目到后期才会被这些问题反噬,而《绝区零》从安装目录上看已经把它们纳入正式流程。 + +### 9.7 镜头、表现与关卡表现配置 + +直接证据包括: + +- `NapCameraSequence` +- `NapCameraSequenceHandle` +- `LevelPerformConfig.asset` +- `ConfigFocusCamera.asset` + +这说明: + +1. 镜头系统不是零碎 Timeline 片段堆出来的,而是存在独立序列抽象。 +2. 关卡表现可能通过配置驱动,而不是仅靠场景对象硬连。 +3. 镜头和关卡表现有机会在构建阶段被烘焙、索引和统一管理。 + +### 9.8 `Redmoon` 痕迹 + +metadata 中能看到: + +- `Redmoon_Android_Source` +- `Redmoon_IOS_Source` +- `Redmoon_Android_NetRes` +- `Redmoon_IOS_NetRes` +- `Redmoon_Android_Preload` +- `Redmoon_IOS_Preload` +- `__RedmoonCoroutines__` +- `__RedmoonGlobals__` + +当前不能精确确认 `Redmoon` 是什么,但比较稳的判断是: + +1. 它与跨平台资源构建、预加载或网络资源体系相关。 +2. 它不是 PC 独占的临时名,而是面向 Android/iOS 的通用构建概念。 +3. 这再次说明整个项目是多平台共享大部分工具链的工程,而不是 PC 版临时分支。 + +## 10. 从这些痕迹反推研发组织方式 + +虽然目录不会直接写“团队怎么分工”,但它会留下很明显的工程组织痕迹。 + +### 10.1 图形/引擎侧 + +能推断至少有人持续负责: + +- 渲染管线维护 +- SRP 相关系统 +- 原生图形能力接入 +- D3D12/Vulkan 路径维护 +- PSO/Shader/Mesh Streaming/预加载等性能议题 + +### 10.2 资源与构建侧 + +能推断至少有人持续负责: + +- 块资源打包与校验 +- 视频资源与业务分包映射 +- 音频语言包与最小包策略 +- 版本清单生成 +- Revision/version 体系 +- Persistent 落地与更新器行为 + +### 10.3 工具链侧 + +能推断至少有人持续负责: + +- ScriptConfig 资产规范 +- JsonBytes/MessagePack 导出 +- 世界图/棋盘插件/能力系统配置导出 +- 预加载配置和 Mesh Streaming 构建状态 +- 相机与表现系统工具 + +### 10.4 平台与运营侧 + +能推断至少有人持续负责: + +- SDK 接入 +- WebView 与 Native UI 栈 +- ABTest 平台对接 +- 文本翻译热更 +- Telemetry/Crash 链路 +- 安全/保护组件集成 + +换句话说,这个客户端从目录侧看,是一支分工比较清晰的大型团队产物,而不是少量程序维护的 Unity 项目。 + +## 11. 结合日志还原一次运行链路 + +最新日志片段可以串出一条很像正式版真实运行流程的链: + +1. `Startup RegisterInputSystem.` +2. `HTTP interceptors initialized` +3. `CreateMainCityClientServerManager.OnCreate` +4. 语言与地域翻译资源初始化。 +5. `LoadSceneGame` +6. `loaded addtiveScene` +7. `Load scene finish` +8. `OnAllLoadingFadeOut` +9. `EnterScene` +10. `SceneSwitch ... 完成切换` +11. `SDKInit` +12. `Set Game Version: CNPRODWin2.7.0` +13. `InitSDK Success` +14. `PreLoadSWURL: https://sdk.mihoyo.com/sw.html?...` +15. `mihoyosdk webview created` +16. 读取 WebView ABTest 配置。 + +这说明客户端启动顺序大概是: + +1. 引擎和输入系统起起来。 +2. 网络拦截器与客户端管理器先初始化。 +3. 场景切换到主流程。 +4. 之后再完成 SDK 与 WebView 链路。 + +这里特别值得注意的是: + +- `CreateMainCityClientServerManager.OnCreate` + +这条日志说明“主城客户端-服务端管理器”这种概念在架构上是显式存在的。换句话说,主城逻辑并不是简单本地场景,而是带有明确联机/协议/状态管理边界的系统。 + +## 12. 目前最值得相信的总体开发画像 + +综合全部证据,我对《绝区零》开发形态的还原如下: + +### 12.1 引擎画像 + +- Unity 2019 LTS 作为底座。 +- IL2CPP 作为正式版运行时。 +- 上层存在重度自研基础框架。 + +### 12.2 渲染画像 + +- 自定义 SRP 风格渲染框架。 +- PC 原生高端特性接入完整。 +- D3D12 很可能是主后端,Vulkan 被完整保留。 + +### 12.3 资源画像 + +- 主资源走块化分发。 +- 视频是业务分包核心资源。 +- 音频有最小包和完整包。 +- 存在小体量独立数据热更通道。 + +### 12.4 工具链画像 + +- 强配置驱动。 +- 强字节化数据导出。 +- 世界图、棋盘玩法、镜头序列、体素/覆盖层、预加载、Mesh Streaming 等都有工具化痕迹。 + +### 12.5 运营画像 + +- SDK、WebView、ABTest、翻译热更、遥测、Crash、保护都深度集成。 +- 明显是长线在线运营产品,而不是一次性交付的客户端。 + +## 13. 还不能下死结论的部分 + +下面这些点我认为目前还不能写成铁事实: + +1. `Real_ECS` 是否对应完整 ECS Runtime,还是内部一套混合架构场景名。 +2. `.blk` 内部是否封装 Unity AssetBundle、定制归档、压缩块索引,还是多种资源混合容器。 +3. `res_version`/`audio_version` 中 tag `1/2/3/4/5` 的精确定义。 +4. `Redmoon` 的确切职责边界。 +5. Vulkan 在 Windows 正式服中的启用策略。 + +## 14. 下一步继续深挖应该怎么做 + +如果继续往下做,我建议按以下顺序: + +### 14.1 最高优先级:解 `.blk` + +这是整个资源系统最关键的黑箱。只要把 `.blk` 文件头、索引、压缩方式、内容类型摸清,就能把: + +- 资源粒度 +- 依赖组织 +- 是否有 bundle 内嵌 +- 更新策略 +- 缓存策略 + +大幅说透。 + +### 14.2 第二优先级:把分类号表彻底补完 + +当前已经识别出大量分类号,但还可以继续做成完整索引,尤其是: + +- 主线章节包全表 +- 各活动包全表 +- 各系统教学包全表 +- 各卡池通用与角色专属媒体表 + +### 14.3 第三优先级:继续抽日志和 metadata + +重点继续找: + +- SRP 初始化链 +- ShaderCustomData 的实际配置路径 +- Vulkan/D3D12 选择逻辑 +- KCP/网络管理器更多细节 +- Hollow / WorldGraph / LevelWorld / NewAbility 的更多类型名 + +### 14.4 第四优先级:针对 Persistent 做版本前后对比 + +如果能抓到一次完整更新前后 Persistent 的变化,就能更准确地反推: + +- 哪些资源是首包内置 +- 哪些资源是首次进入某系统才下载 +- 哪些资源是活动时再拉取 +- 哪些资源会被清理或覆盖 + +## 15. 最终结论 + +如果只从安装目录出发,我对《绝区零》开发形态的最终判断是: + +- 它是一个建立在 Unity 2019 LTS 之上的、重度工程化的大型在线游戏客户端。 +- Unity 在这里主要提供平台底座和基础生产力,而不是全部开发方式。 +- 真正决定它产品形态的,是叠在 Unity 上面的那一层: + - 自定义渲染与图形接入 + - 自定义资源分发与版本系统 + - 强配置、强字节化的数据管线 + - 丰富的视频表现资源体系 + - SDK/WebView/ABTest/遥测/安全等长线运营基础设施 + +如果让我用一句话概括这次调查结果: + +**《绝区零》不是“用 Unity 做出来的一个游戏”,而是“用 Unity 作为底座承载的一整套产品化引擎栈”。** + +## 16. 附录:本轮调查中最关键的直接证据索引 + +为方便后续继续深挖,先把最关键的直接证据列在这里: + +### 16.1 版本与引擎 + +- `ZenlessZoneZero.exe -> 2019.4.40.14369230` +- `UnityPlayer.dll -> 2019.4.40.14369230` +- `config.ini -> game_version=2.7.0` +- `version_info -> CNPRODWin2.7.0` + +### 16.2 WebView/中间件 + +- `zf_cef.dll -> 100.0.24+g0783cf8+chromium-100.0.4896.127` +- `ZFGameBrowser.exe` +- `ZFEmbedWeb.dll` +- `ZFProxyWeb.dll` +- `AkSoundEngine.dll` +- `cri_ware_unity.dll` +- `kcp.dll` + +### 16.3 场景与工具链 + +- `Assets/Scenes/Logic/FrontendGame.unity` +- `Assets/Scenes/Logic/Launcher.unity` +- `Assets/Scenes/Logic/Real_ECS.unity` +- `Assets/Scenes/Login/Login_MainCityWorkshop.unity` +- `Assets/Scenes/Scene_Dev/DevLevel.unity` +- `Assets/NapResources/Data/ScriptConfig/...` +- `Assets/NapResources/Data/JsonBytes/...` +- `WorldGraph` +- `NapCameraSequence` +- `ChessboardPlugin` +- `VoxelArray` +- `MeshStreamingBuildStates` +- `PreloadStreamingGameConfig` +- `PreloadUIAssetsConfig` + +### 16.4 资源与版本系统 + +- `ZenlessZoneZero_Data\StreamingAssets\res_version` +- `ZenlessZoneZero_Data\StreamingAssets\data_version` +- `ZenlessZoneZero_Data\StreamingAssets\audio_version` +- `file_category_launcher` +- `ZenlessZoneZero_Data\Persistent\Blocks` +- `ZenlessZoneZero_Data\Persistent\Audio` +- `ZenlessZoneZero_Data\Persistent\Video` + +### 16.5 关键日志线索 + +- `CreateMainCityClientServerManager.OnCreate` +- `LoadSceneGame` +- `SceneSwitch 完成切换` +- `SDKInit` +- `InitSDK Success` +- `PreLoadSWURL: https://sdk.mihoyo.com/sw.html?...` +- `Get ABTest: plat - https://data-abtest-api.mihoyo.com/...` +- `regionTranslationVersionCheck URL:https://webstatic.mihoyo.com/admin/mi18n/...` + +## 17. 继续深挖:`.blk` 文件头的新增发现 + +这是在文档主体写完之后继续向下钻出来的新证据,价值很高。 + +### 17.1 `.blk` 不是裸 `UnityFS` + +我直接读取了两个 `.blk` 的前 96 个字节: + +- `ZenlessZoneZero_Data\StreamingAssets\Blocks\1000337454.blk` +- `ZenlessZoneZero_Data\StreamingAssets\Blocks\Data\3749079225.blk` + +两者的共同特征都是: + +- 文件头前 4 字节为 `6D 68 79 31` +- 对应 ASCII 即:`mhy1` + +这说明: + +- `.blk` 至少在容器头层不是裸露的 Unity 资源格式,而是 **米哈游自定义的 `mhy1` 容器头**。 + +这条证据非常关键,因为它把判断从“像自定义块格式”推进到了“文件头层面已经确认是自定义容器”。 + +### 17.2 主内容块里能看到 Unity 资源痕迹,但被包在 `mhy1` 容器里 + +对主内容块快速做可打印字符串扫描时,可以看到: + +- `archive:/CAB-85ea42baeef21686dd408a87d00e9877.res` +- `archive:/CAB-b6525d3ab1c368cdf59db6b227027457.res` +- `archive:/CAB-48c29ccf0721f09a645bfcc0401e0446.res` +- `1437729915099733045.bund` + +这里的 `CAB-...` 形式非常像 Unity 资源系统内部常见的 archive / CAB 命名痕迹。这带来一个更精细的判断: + +1. `.blk` 外层不是 UnityFS。 +2. 但 `.blk` 内部很可能封装了 Unity 资源对象、Unity archive,或者与 Unity bundle 体系相邻的资源块。 +3. 换句话说,**`.blk` 更像“米哈游自定义外层容器 + Unity 资源载荷”**,而不是完全脱离 Unity 资源生态的全新格式。 + +### 17.3 `data_version` 对应的数据块表现不同 + +对 `Blocks\Data\3749079225.blk` 做同类扫描时: + +- 同样有 `mhy1` 文件头。 +- 但没有快速扫到明显的 `UnityFS` 或 `CAB-` 字样。 + +这意味着两种可能: + +1. `Blocks/Data` 通道里的负载和主内容块不同,可能更偏配置/表数据/序列化数据。 +2. `Blocks/Data` 使用了不同的压缩、加密或布局方式,导致字符串特征更少。 + +这和前面基于 `data_version` 得出的判断是相互印证的: + +- `Blocks/Data` 很可能确实不是普通美术资源大块,而是更偏轻量逻辑数据通道。 + +### 17.4 现阶段关于 `.blk` 最稳妥的结论 + +截至目前,我认为最稳妥的描述是: + +- `.blk` 是 **带 `mhy1` 文件头的自定义内容块容器**。 +- 主内容块内部至少包含与 Unity archive / CAB 命名体系相关的资源载荷。 +- `Blocks` 与 `Blocks/Data` 很可能共用同一外层容器协议,但内部负载类型不完全相同。 + +这比“可能是自定义块格式”更进一步,已经接近可以围绕文件头和偏移去继续逆向解析了。 diff --git a/docs/issues/C#脚本系统_Editor前置缺口.md b/docs/used/C#脚本系统_Editor前置缺口.md similarity index 100% rename from docs/issues/C#脚本系统_Editor前置缺口.md rename to docs/used/C#脚本系统_Editor前置缺口.md diff --git a/docs/plan/D3D12后端测试设计.md b/docs/used/D3D12后端测试设计.md similarity index 100% rename from docs/plan/D3D12后端测试设计.md rename to docs/used/D3D12后端测试设计.md diff --git a/docs/plan/Editor设计与实现.md b/docs/used/Editor设计与实现.md similarity index 100% rename from docs/plan/Editor设计与实现.md rename to docs/used/Editor设计与实现.md diff --git a/docs/plan/OpenGL后端测试设计.md b/docs/used/OpenGL后端测试设计.md similarity index 100% rename from docs/plan/OpenGL后端测试设计.md rename to docs/used/OpenGL后端测试设计.md diff --git a/docs/plan/OpenGL测试实施计划.md b/docs/used/OpenGL测试实施计划.md similarity index 100% rename from docs/plan/OpenGL测试实施计划.md rename to docs/used/OpenGL测试实施计划.md diff --git a/docs/issues/RHI_OpenGL_State_Not_Applied.md b/docs/used/RHI_OpenGL_State_Not_Applied.md similarity index 100% rename from docs/issues/RHI_OpenGL_State_Not_Applied.md rename to docs/used/RHI_OpenGL_State_Not_Applied.md diff --git a/docs/plan/RHI抽象层设计与实现.md b/docs/used/RHI抽象层设计与实现.md similarity index 100% rename from docs/plan/RHI抽象层设计与实现.md rename to docs/used/RHI抽象层设计与实现.md diff --git a/docs/used/Renderer模块_EditorViewport缺少RenderSurface接入层3.27.md b/docs/used/Renderer模块_EditorViewport缺少RenderSurface接入层3.27.md new file mode 100644 index 00000000..d365743e --- /dev/null +++ b/docs/used/Renderer模块_EditorViewport缺少RenderSurface接入层3.27.md @@ -0,0 +1,120 @@ +# Renderer模块 EditorViewport缺少RenderSurface接入层 + +## 1. 问题定义 + +当前 editor 已经有: + +- `GameViewPanel` +- `SceneViewPanel` + +但二者目前仍然是空面板,尚未形成真正的 viewport 渲染宿主。 + +这意味着 Renderer 即使在 runtime 侧建立起来,editor 侧也还没有标准方式去承接: + +- 离屏 color/depth 输出 +- viewport resize +- 渲染结果贴到 ImGui 面板 + +--- + +## 2. 当前现状 + +当前 `GameViewPanel::Render()` 与 `SceneViewPanel::Render()` 仅创建面板窗口,本身没有: + +- 离屏渲染目标 +- 渲染尺寸管理 +- RHI / Renderer 级渲染输出对象 +- 纹理到 ImGui 的桥接 + +也就是说,editor 当前只有“面板外壳”,还没有“渲染宿主层”。 + +--- + +## 3. 为什么这不应该反向污染 Renderer 设计 + +这个问题很容易走偏成下面这种错误路线: + +- 先把 renderer 直接写进 editor 面板逻辑 +- `SceneView` 一套渲染逻辑 +- `GameView` 一套渲染逻辑 +- runtime 又一套渲染逻辑 + +这会导致: + +- 渲染逻辑重复 +- editor 与 runtime 耦合 +- 后续 C# SRP 难以统一接管 + +因此正确思路不是“先让面板自己画”,而是: + +1. Renderer 模块先支持统一的 `RenderSurface` +2. editor viewport 只作为 `RenderSurface` 的宿主与展示层 + +--- + +## 4. 建议方案 + +### 4.1 先在 Renderer 模块建立 `RenderSurface` + +`RenderSurface` 应统一描述: + +- swapchain 输出 +- 离屏 color / depth 目标 +- viewport 尺寸 +- resize 行为 + +### 4.2 editor 侧建立 viewport host 层 + +editor 侧后续应新增一层专门承接: + +- 面板尺寸变化 +- 请求 Renderer 重建或 resize `RenderSurface` +- 把结果纹理显示到 ImGui + +而不是把渲染实现直接塞进面板类。 + +### 4.3 `SceneView` 与 `GameView` 应共享同一套 Renderer 输出机制 + +区别只在于: + +- `GameView` 使用 runtime camera +- `SceneView` 使用 editor 自有 camera / gizmo / overlay + +但底层渲染输出机制应一致。 + +--- + +## 5. 与未来 Unity 风格演进的关系 + +未来如果要做接近 Unity 的 editor 与 SRP 体系,这一层非常关键。 + +因为 Unity 的: + +- Game 视图 +- Scene 视图 +- Camera 预览 + +本质上都不是复制多套渲染器,而是在同一渲染体系上挂不同宿主与附加绘制。 + +XCEngine 也应遵循同样思路。 + +--- + +## 6. 验收标准 + +完成后至少应满足: + +1. Renderer 能输出到离屏 `RenderSurface` +2. `GameView` 能显示 renderer 的离屏结果 +3. `SceneView` 能显示 renderer 的离屏结果 +4. viewport resize 不需要复制新的渲染逻辑 +5. runtime 与 editor 共用同一套渲染宿主接口 + +--- + +## 7. 优先级 + +中到高。 + +它不是 Renderer v0 的第一步实现内容,但必须在 renderer 基础链路稳定后尽快接上,否则 editor 渲染体系会被迫走临时方案。 + diff --git a/docs/used/Renderer模块_Material与Shader资产模型暂不满足SRP演进需求.md b/docs/used/Renderer模块_Material与Shader资产模型暂不满足SRP演进需求.md new file mode 100644 index 00000000..d4d40812 --- /dev/null +++ b/docs/used/Renderer模块_Material与Shader资产模型暂不满足SRP演进需求.md @@ -0,0 +1,146 @@ +# Renderer模块 Material与Shader资产模型暂不满足SRP演进需求 + +## 1. 问题定义 + +当前资源层已经具备: + +- `Material` +- `Shader` +- `Texture` + +但现有模型仍然偏“最小资源容器”,尚不足以直接承接未来 Unity 风格 Renderer / SRP 的完整需求。 + +当前最典型的问题是: + +- `Shader` 更像“单个 stage shader 资源” +- `Material` 更像“shader 引用 + 属性包” +- 资产层缺少 pass / tag / render state / render queue 语义 + +--- + +## 2. 当前现状 + +从现有实现看: + +### `Shader` + +当前 `Shader` 资源主要描述: + +- shader type +- shader language +- source / compiled binary +- uniforms / attributes + +这更接近“单个 shader stage 对象”,而不是面向渲染管线选择的 shader asset。 + +### `Material` + +当前 `Material` 资源主要描述: + +- 一个 `Shader` 引用 +- 属性表 +- 纹理绑定表 + +当前 `MaterialLoader` 也只解析最基础的 `"shader"` 字段。 + +--- + +## 3. 为什么这会影响未来 Renderer / SRP + +在未来的 Unity 风格渲染体系中,Renderer / SRP 至少需要下列能力: + +- 根据 shader pass/tag 选择绘制路径 +- 区分 opaque / transparent / shadow caster / depth only 等 pass +- 用 render queue 控制排序层级 +- 用 render state 描述 cull / blend / ztest / zwrite +- 为后续 keyword / variant 留空间 + +如果材质 / shader 资产模型长期停留在当前结构,会导致: + +- 内建 forward 渲染可以临时跑起来 +- 但未来一旦上 SRP,就必须大规模重构资源资产模型 + +这会影响: + +- Renderer +- Material 资源格式 +- Shader 导入格式 +- editor 材质面板 +- 未来 C# SRP 的 pass 选择逻辑 + +--- + +## 4. 建议方向 + +### 4.1 不要让 `Shader` 永远停留在“单 stage 资源” + +后续建议演进到更面向渲染管线的概念,例如: + +- `ShaderAsset` +- `ShaderPass` +- 每个 pass 包含 vertex / fragment 等 stage 组合 +- 每个 pass 具备 tag 与 render state 描述 + +### 4.2 `Material` 应逐步获得 renderer 需要的元数据 + +后续建议补充: + +- render queue +- pass 相关 tag / override +- render state override +- shader keyword / variant 预留位 + +### 4.3 第一阶段可以先不一次性做全 + +但即使第一阶段只做 `UnlitTexture` / `SimpleLit`,也建议: + +- 不把格式彻底写死成只有 `"shader"` 这一个入口 +- 为 future pass/tag 结构预留升级路径 + +换句话说: + +- 当前阶段可以简化实现 +- 但不能封死演进路线 + +--- + +## 5. 与 Unity 风格的关系 + +未来如果要在 C# 层做接近 Unity 的 SRP,shader pass 选择是核心能力之一。 + +例如: + +- `ShaderTagId` +- `DrawingSettings` +- `FilteringSettings` +- renderer list / pass filtering + +这些能力都要求材质与 shader 资产层至少能表达“pass/tag/state”。 + +因此,这个问题虽然不一定是 Renderer v0 第一周就要全量解决,但必须在设计阶段明确记录。 + +--- + +## 6. 建议验收标准 + +进入下一阶段时,至少应达到以下其中一档: + +### 档位 A:最小可演进 + +- 明确存在“shader pass”概念 +- 材质资产格式有升级空间 +- 内建 pipeline 能按 pass 选择绘制 + +### 档位 B:更接近 SRP + +- 具备 `pass + tag + render state + queue` +- 为 future keyword / variant 留接口 + +--- + +## 7. 优先级 + +中到高。 + +它不一定阻塞 Renderer v0 的第一步落地,但如果完全忽略,未来做 C# SRP 时会出现明显返工。 + diff --git a/docs/used/Renderer模块_Scene层缺少MeshFilter与MeshRenderer抽象3.27.md b/docs/used/Renderer模块_Scene层缺少MeshFilter与MeshRenderer抽象3.27.md new file mode 100644 index 00000000..8e15d817 --- /dev/null +++ b/docs/used/Renderer模块_Scene层缺少MeshFilter与MeshRenderer抽象3.27.md @@ -0,0 +1,129 @@ +# Renderer模块 Scene层缺少MeshFilter与MeshRenderer抽象 + +## 1. 问题定义 + +当前工程已经具备: + +- `GameObject` +- `Component` +- `Scene` +- `CameraComponent` +- `LightComponent` + +但仍然缺少最关键的可渲染组件抽象: + +- `MeshFilterComponent` +- `MeshRendererComponent` + +这会导致 Renderer 模块无法以“正式场景组件”的方式承接渲染对象。 + +--- + +## 2. 当前现状 + +从当前代码看: + +- `GameObject` 已经支持通用组件挂载 +- `Scene` 的序列化 / 反序列化已经依赖 `ComponentFactoryRegistry` +- `ComponentFactoryRegistry` 当前只注册了 `Camera`、`Light`、`AudioSource`、`AudioListener` + +也就是说,场景层已经具备“扩展组件”的框架,但还没有真正承接渲染对象的组件类型。 + +--- + +## 3. 为什么这是 Renderer 阶段必须先补的缺口 + +如果没有正式的可渲染组件,Renderer 会被迫依赖以下临时做法: + +- 在测试里手工拼 mesh/material/transform +- 在 Renderer 内部写死资源路径或对象查找逻辑 +- 把“场景对象”和“渲染对象”分裂成两套平行系统 + +这会直接破坏后续目标: + +- 不利于 editor Inspector 展示 +- 不利于场景序列化 +- 不利于未来 C# API 对齐 Unity +- 不利于未来引入 `SkinnedMeshRenderer`、`SpriteRenderer` 等扩展 + +--- + +## 4. 与 Unity 风格的关系 + +如果未来要模仿 Unity 做 C# SRP,那么场景组件模型最好一开始就尽量贴近 Unity。 + +因此建议不是只加一个大而全的 `MeshRendererComponent`,而是直接采用: + +- `MeshFilterComponent`:持有 mesh +- `MeshRendererComponent`:持有材质和渲染状态 + +这样更容易在未来映射到: + +- C# `MeshFilter` +- C# `MeshRenderer` +- Inspector 上的分离展示 +- 脚本对 mesh / material 的分别访问 + +--- + +## 5. 建议方案 + +### 5.1 新增组件 + +#### `MeshFilterComponent` + +最小建议字段: + +- `ResourceHandle m_mesh` + +#### `MeshRendererComponent` + +最小建议字段: + +- 材质数组 +- `enabled` +- `castShadows` +- `receiveShadows` +- `renderLayer` + +### 5.2 注册到 `ComponentFactoryRegistry` + +这样场景文件才能: + +- 正确反序列化 +- 在 editor 中按组件类型恢复 +- 为未来脚本与 Inspector 留入口 + +### 5.3 Renderer 只从组件层抽取渲染对象 + +Renderer 不应自行维护另一套“逻辑对象 -> 渲染对象”的临时注册表作为长期方案。 + +正确方式应是: + +- `Scene` +- `GameObject` +- `MeshFilterComponent` +- `MeshRendererComponent` + +共同构成 Renderer 的输入源。 + +--- + +## 6. 验收标准 + +完成后至少应满足: + +1. 场景可正式挂载 mesh 渲染对象 +2. `Scene` 序列化 / 反序列化可恢复对应组件 +3. Renderer 可以直接从场景中提取可渲染对象 +4. editor 后续可以直接复用同一套组件数据 +5. 后续 C# API 可以平滑映射到 Unity 风格组件模型 + +--- + +## 7. 优先级 + +高。 + +这是 Renderer 模块正式落地前必须解决的前置缺口。 + diff --git a/docs/plan/XCEngine渲染引擎架构设计.md b/docs/used/XCEngine渲染引擎架构设计.md similarity index 100% rename from docs/plan/XCEngine渲染引擎架构设计.md rename to docs/used/XCEngine渲染引擎架构设计.md diff --git a/docs/plan/XCGameEngine架构设计.md b/docs/used/XCGameEngine架构设计.md similarity index 100% rename from docs/plan/XCGameEngine架构设计.md rename to docs/used/XCGameEngine架构设计.md diff --git a/docs/plan/仿Unity RHI架构设计.md b/docs/used/仿Unity RHI架构设计.md similarity index 100% rename from docs/plan/仿Unity RHI架构设计.md rename to docs/used/仿Unity RHI架构设计.md diff --git a/docs/plan/第三阶段计划.md b/docs/used/第三阶段计划.md similarity index 100% rename from docs/plan/第三阶段计划.md rename to docs/used/第三阶段计划.md diff --git a/docs/plan/第二阶段计划.md b/docs/used/第二阶段计划.md similarity index 100% rename from docs/plan/第二阶段计划.md rename to docs/used/第二阶段计划.md diff --git a/editor/caidan.png b/editor/caidan.png new file mode 100644 index 00000000..f0aa5ba9 Binary files /dev/null and b/editor/caidan.png differ diff --git a/editor/color.png b/editor/color.png new file mode 100644 index 00000000..b466e5db Binary files /dev/null and b/editor/color.png differ diff --git a/editor/color_xc.png b/editor/color_xc.png new file mode 100644 index 00000000..37295f40 Binary files /dev/null and b/editor/color_xc.png differ diff --git a/editor/resources/Icons/scene_icon.png b/editor/resources/Icons/scene_icon.png index df418d09..b9760f6d 100644 Binary files a/editor/resources/Icons/scene_icon.png and b/editor/resources/Icons/scene_icon.png differ diff --git a/editor/src/Actions/HierarchyActionRouter.h b/editor/src/Actions/HierarchyActionRouter.h index 1aac0e2d..486badcb 100644 --- a/editor/src/Actions/HierarchyActionRouter.h +++ b/editor/src/Actions/HierarchyActionRouter.h @@ -200,7 +200,7 @@ inline void DrawHierarchyBackgroundContextPopup(IEditorContext& context, UI::Def } inline void DrawHierarchyContextActions(IEditorContext& context, ::XCEngine::Components::GameObject* gameObject) { - if (UI::DrawMenuScope("Create", [&]() { + if (UI::DrawPopupSubmenuScope("Create", [&]() { DrawHierarchyCreateActions(context, gameObject); })) { } diff --git a/editor/src/Actions/ProjectActionRouter.h b/editor/src/Actions/ProjectActionRouter.h index 5a3a0461..b2a48bcc 100644 --- a/editor/src/Actions/ProjectActionRouter.h +++ b/editor/src/Actions/ProjectActionRouter.h @@ -31,34 +31,14 @@ inline bool IsProjectAssetBeingDragged(const AssetItemPtr& item) { return item != nullptr && draggedPath != nullptr && item->fullPath == draggedPath; } -inline std::string AcceptProjectAssetDropPayload(const AssetItemPtr& targetFolder) { - if (!targetFolder || !targetFolder->isFolder || !ImGui::BeginDragDropTarget()) { - return {}; - } - - std::string draggedPath; - if (const ImGuiPayload* payload = ImGui::AcceptDragDropPayload(ProjectAssetPayloadType())) { - const char* payloadPath = static_cast(payload->Data); - if (payloadPath) { - draggedPath = payloadPath; - } - } - ImGui::EndDragDropTarget(); - return draggedPath; -} - inline bool BeginProjectAssetDrag(const AssetItemPtr& item, UI::AssetIconKind iconKind) { - if (!item || item->fullPath.empty() || !ImGui::BeginDragDropSource(ImGuiDragDropFlags_None)) { + if (!item || item->fullPath.empty() || !ImGui::BeginDragDropSource(ImGuiDragDropFlags_SourceNoPreviewTooltip)) { return false; } + (void)iconKind; ImGui::SetDragDropPayload(ProjectAssetPayloadType(), item->fullPath.c_str(), item->fullPath.length() + 1); - ImVec2 previewMin = ImGui::GetMousePos(); - const ImVec2 previewSize = UI::AssetDragPreviewSize(); - ImVec2 previewMax = ImVec2(previewMin.x + previewSize.x, previewMin.y + previewSize.y); - UI::DrawAssetIcon(ImGui::GetForegroundDrawList(), previewMin, previewMax, iconKind); - ImGui::EndDragDropSource(); return true; } @@ -82,8 +62,11 @@ inline bool DrawProjectNavigateBackAction(IProjectManager& projectManager) { return true; } -inline void HandleProjectBackgroundPrimaryClick(IProjectManager& projectManager) { - if (ImGui::IsWindowHovered() && ImGui::IsMouseClicked(0) && !ImGui::IsAnyItemHovered()) { +template +inline void HandleProjectBackgroundPrimaryClick( + IProjectManager& projectManager, + const UI::InlineTextEditState& renameState) { + if (ImGui::IsWindowHovered() && ImGui::IsMouseClicked(0) && !ImGui::IsAnyItemHovered() && !renameState.IsActive()) { projectManager.ClearSelection(); } } @@ -133,52 +116,19 @@ inline void DrawProjectAssetContextActions(IEditorContext& context, const AssetI }); } -template -inline void DrawProjectEmptyContextActions(UI::TextInputPopupState& createFolderDialog) { - DrawMenuAction(MakeCreateFolderAction(), [&]() { - createFolderDialog.RequestOpen("NewFolder"); - }); -} - -template +template inline void DrawProjectEmptyContextPopup( UI::DeferredPopupState& emptyContextMenu, - UI::TextInputPopupState& createFolderDialog) { + CreateFolderFn&& createFolder) { emptyContextMenu.ConsumeOpenRequest("EmptyContextMenu"); if (!UI::BeginPopup("EmptyContextMenu")) { return; } - DrawProjectEmptyContextActions(createFolderDialog); - UI::EndPopup(); -} - -template -inline void DrawProjectCreateFolderDialog(IEditorContext& context, UI::TextInputPopupState& createFolderDialog) { - createFolderDialog.ConsumeOpenRequest("Create Folder"); - - if (!UI::BeginModalPopup("Create Folder")) { - return; - } - - ImGui::InputText("Name", createFolderDialog.Buffer(), createFolderDialog.BufferSize()); - ImGui::Separator(); - - switch (UI::DrawDialogActionRow("Create", "Cancel", !createFolderDialog.Empty())) { - case UI::DialogActionResult::Primary: - if (Commands::CreateFolder(context.GetProjectManager(), createFolderDialog.Buffer())) { - createFolderDialog.Clear(); - ImGui::CloseCurrentPopup(); - } - break; - case UI::DialogActionResult::Secondary: - createFolderDialog.Clear(); - ImGui::CloseCurrentPopup(); - break; - case UI::DialogActionResult::None: - break; - } + DrawMenuAction(MakeCreateFolderAction(), [&]() { + createFolder(); + }); UI::EndPopup(); } diff --git a/editor/src/Commands/ProjectCommands.h b/editor/src/Commands/ProjectCommands.h index 13e0dfa0..979f0b32 100644 --- a/editor/src/Commands/ProjectCommands.h +++ b/editor/src/Commands/ProjectCommands.h @@ -11,6 +11,8 @@ #include "Utils/FileDialogUtils.h" #include "Utils/ProjectFileUtils.h" +#include +#include #include #include @@ -18,6 +20,36 @@ namespace XCEngine { namespace Editor { namespace Commands { +namespace detail { + +inline std::wstring MakeProjectPathKey(const std::filesystem::path& path) { + std::wstring key = path.lexically_normal().native(); + std::replace(key.begin(), key.end(), L'/', L'\\'); + std::transform(key.begin(), key.end(), key.begin(), [](wchar_t ch) { + return static_cast(std::towlower(ch)); + }); + + while (key.size() > 1 && (key.back() == L'\\' || key.back() == L'/')) { + key.pop_back(); + } + return key; +} + +inline bool IsSameOrDescendantProjectPath(const std::filesystem::path& path, const std::filesystem::path& root) { + const std::wstring pathKey = MakeProjectPathKey(path); + std::wstring rootKey = MakeProjectPathKey(root); + if (pathKey == rootKey) { + return true; + } + + if (!rootKey.empty() && rootKey.back() != L'\\') { + rootKey.push_back(L'\\'); + } + return pathKey.rfind(rootKey, 0) == 0; +} + +} // namespace detail + inline bool CanOpenAsset(const AssetItemPtr& item) { return item != nullptr && (item->isFolder || item->type == "Scene"); } @@ -35,13 +67,12 @@ inline bool OpenAsset(IEditorContext& context, const AssetItemPtr& item) { return LoadScene(context, item->fullPath); } -inline bool CreateFolder(IProjectManager& projectManager, const std::string& name) { +inline AssetItemPtr CreateFolder(IProjectManager& projectManager, const std::string& name) { if (name.empty()) { - return false; + return nullptr; } - projectManager.CreateFolder(name); - return true; + return projectManager.CreateFolder(name); } inline bool DeleteAsset(IProjectManager& projectManager, const std::string& fullPath) { @@ -60,7 +91,7 @@ inline bool DeleteAsset(IProjectManager& projectManager, const AssetItemPtr& ite return DeleteAsset(projectManager, item->fullPath); } -inline bool MoveAssetToFolder( +inline bool CanMoveAssetToFolder( IProjectManager& projectManager, const std::string& sourceFullPath, const AssetItemPtr& targetFolder) { @@ -68,13 +99,68 @@ inline bool MoveAssetToFolder( return false; } - if (sourceFullPath == targetFolder->fullPath) { + const AssetItemPtr rootFolder = projectManager.GetRootFolder(); + if (!rootFolder) { + return false; + } + + namespace fs = std::filesystem; + try { + const fs::path sourcePath = fs::path(sourceFullPath); + const fs::path destFolderPath = fs::path(targetFolder->fullPath); + const fs::path rootPath = fs::path(rootFolder->fullPath); + + if (!fs::exists(sourcePath) || !fs::exists(destFolderPath) || !fs::is_directory(destFolderPath)) { + return false; + } + if (!detail::IsSameOrDescendantProjectPath(sourcePath, rootPath) || + !detail::IsSameOrDescendantProjectPath(destFolderPath, rootPath)) { + return false; + } + if (detail::MakeProjectPathKey(sourcePath) == detail::MakeProjectPathKey(rootPath)) { + return false; + } + if (fs::is_directory(sourcePath) && detail::IsSameOrDescendantProjectPath(destFolderPath, sourcePath)) { + return false; + } + + const fs::path destPath = destFolderPath / sourcePath.filename(); + if (detail::MakeProjectPathKey(destPath) == detail::MakeProjectPathKey(sourcePath) || fs::exists(destPath)) { + return false; + } + return true; + } catch (...) { + return false; + } +} + +inline bool MoveAssetToFolder( + IProjectManager& projectManager, + const std::string& sourceFullPath, + const AssetItemPtr& targetFolder) { + if (!CanMoveAssetToFolder(projectManager, sourceFullPath, targetFolder)) { return false; } return projectManager.MoveItem(sourceFullPath, targetFolder->fullPath); } +inline bool RenameAsset(IProjectManager& projectManager, const std::string& sourceFullPath, const std::string& newName) { + if (sourceFullPath.empty() || newName.empty()) { + return false; + } + + return projectManager.RenameItem(sourceFullPath, newName); +} + +inline bool RenameAsset(IProjectManager& projectManager, const AssetItemPtr& item, const std::string& newName) { + if (!item) { + return false; + } + + return RenameAsset(projectManager, item->fullPath, newName); +} + inline std::string BuildProjectFallbackScenePath(const std::string& projectPath) { return (std::filesystem::path(projectPath) / "Assets" / "Scenes" / "Main.xc").string(); } diff --git a/editor/src/Core/IProjectManager.h b/editor/src/Core/IProjectManager.h index d967e85b..7e192541 100644 --- a/editor/src/Core/IProjectManager.h +++ b/editor/src/Core/IProjectManager.h @@ -35,9 +35,10 @@ public: virtual void Initialize(const std::string& projectPath) = 0; virtual void RefreshCurrentFolder() = 0; - virtual void CreateFolder(const std::string& name) = 0; + virtual AssetItemPtr CreateFolder(const std::string& name) = 0; virtual bool DeleteItem(const std::string& fullPath) = 0; virtual bool MoveItem(const std::string& sourceFullPath, const std::string& destFolderFullPath) = 0; + virtual bool RenameItem(const std::string& sourceFullPath, const std::string& newName) = 0; virtual const std::string& GetProjectPath() const = 0; }; diff --git a/editor/src/Managers/ProjectManager.h b/editor/src/Managers/ProjectManager.h index 39e4dc84..1602cd08 100644 --- a/editor/src/Managers/ProjectManager.h +++ b/editor/src/Managers/ProjectManager.h @@ -34,9 +34,10 @@ public: void Initialize(const std::string& projectPath) override; void RefreshCurrentFolder() override; - void CreateFolder(const std::string& name) override; + AssetItemPtr CreateFolder(const std::string& name) override; bool DeleteItem(const std::string& fullPath) override; bool MoveItem(const std::string& sourceFullPath, const std::string& destFolderFullPath) override; + bool RenameItem(const std::string& sourceFullPath, const std::string& newName) override; const std::string& GetProjectPath() const override { return m_projectPath; } diff --git a/editor/src/UI/BuiltInIcons.cpp b/editor/src/UI/BuiltInIcons.cpp index b40056f0..f17d5cd1 100644 --- a/editor/src/UI/BuiltInIcons.cpp +++ b/editor/src/UI/BuiltInIcons.cpp @@ -6,9 +6,13 @@ #include #include +#include #include #include +#include #include +#include +#include #include #include @@ -36,12 +40,26 @@ struct BuiltInTexture { struct BuiltInIconState { ImGuiBackendBridge* backend = nullptr; + ID3D12Device* device = nullptr; + ID3D12CommandQueue* commandQueue = nullptr; BuiltInTexture folder; BuiltInTexture gameObject; + BuiltInTexture scene; + struct CachedAssetPreview { + BuiltInTexture texture; + bool loadAttempted = false; + int lastUsedFrame = -1; + }; + std::unordered_map assetPreviews; + int lastPreviewBudgetFrame = -1; + int previewLoadsThisFrame = 0; }; BuiltInIconState g_icons; +constexpr size_t kMaxCachedAssetPreviews = 40; +constexpr int kMaxPreviewLoadsPerFrame = 2; + std::filesystem::path ResolveFolderIconPath() { const std::filesystem::path exeDir(Platform::GetExecutableDirectoryUtf8()); return (exeDir / ".." / ".." / "resources" / "Icons" / "folder_icon.png").lexically_normal(); @@ -52,6 +70,33 @@ std::filesystem::path ResolveGameObjectIconPath() { return (exeDir / ".." / ".." / "resources" / "Icons" / "gameobject_icon.png").lexically_normal(); } +std::filesystem::path ResolveSceneIconPath() { + const std::filesystem::path exeDir(Platform::GetExecutableDirectoryUtf8()); + return (exeDir / ".." / ".." / "resources" / "Icons" / "scene_icon.png").lexically_normal(); +} + +std::string MakeAssetPreviewKey(const std::string& filePath) { + std::wstring key = std::filesystem::path(Platform::Utf8ToWide(filePath)).lexically_normal().generic_wstring(); + std::transform(key.begin(), key.end(), key.begin(), ::towlower); + return Platform::WideToUtf8(key); +} + +bool ReadFileBytes(const std::filesystem::path& filePath, std::vector& bytes) { + std::ifstream stream(filePath, std::ios::binary | std::ios::ate); + if (!stream.is_open()) { + return false; + } + + const std::streamsize size = stream.tellg(); + if (size <= 0) { + return false; + } + + bytes.resize(static_cast(size)); + stream.seekg(0, std::ios::beg); + return stream.read(reinterpret_cast(bytes.data()), size).good(); +} + void ResetTexture(BuiltInTexture& texture) { if (g_icons.backend && texture.cpuHandle.ptr != 0) { g_icons.backend->FreeTextureDescriptor(texture.cpuHandle, texture.gpuHandle); @@ -65,6 +110,13 @@ void ResetTexture(BuiltInTexture& texture) { texture.height = 0; } +void ResetAssetPreviewCache() { + for (auto& entry : g_icons.assetPreviews) { + ResetTexture(entry.second.texture); + } + g_icons.assetPreviews.clear(); +} + bool WaitForQueueIdle(ID3D12Device* device, ID3D12CommandQueue* commandQueue) { if (!device || !commandQueue) { return false; @@ -109,10 +161,21 @@ bool LoadTextureFromFile( return false; } + std::vector fileData; + if (!ReadFileBytes(filePath, fileData)) { + return false; + } + int width = 0; int height = 0; int channels = 0; - stbi_uc* pixels = stbi_load(filePath.string().c_str(), &width, &height, &channels, STBI_rgb_alpha); + stbi_uc* pixels = stbi_load_from_memory( + fileData.data(), + static_cast(fileData.size()), + &width, + &height, + &channels, + STBI_rgb_alpha); if (!pixels || width <= 0 || height <= 0) { if (pixels) { stbi_image_free(pixels); @@ -328,6 +391,76 @@ void DrawBuiltInFileIcon(ImDrawList* drawList, const ImVec2& min, const ImVec2& drawList->AddLine(foldA, foldB, lineColor); } +BuiltInIconState::CachedAssetPreview* GetOrCreateAssetPreview(const std::string& filePath) { + if (!g_icons.backend || !g_icons.device || !g_icons.commandQueue || filePath.empty()) { + return nullptr; + } + + const std::string key = MakeAssetPreviewKey(filePath); + auto [it, inserted] = g_icons.assetPreviews.try_emplace(key); + BuiltInIconState::CachedAssetPreview& preview = it->second; + preview.lastUsedFrame = ImGui::GetFrameCount(); + + if (!inserted && !std::filesystem::exists(std::filesystem::path(Platform::Utf8ToWide(filePath)))) { + ResetTexture(preview.texture); + preview.loadAttempted = true; + return &preview; + } + + if (preview.texture.IsValid() || preview.loadAttempted) { + return &preview; + } + + const int frame = ImGui::GetFrameCount(); + if (g_icons.lastPreviewBudgetFrame != frame) { + g_icons.lastPreviewBudgetFrame = frame; + g_icons.previewLoadsThisFrame = 0; + } + if (g_icons.previewLoadsThisFrame >= kMaxPreviewLoadsPerFrame) { + return &preview; + } + + preview.loadAttempted = true; + ++g_icons.previewLoadsThisFrame; + LoadTextureFromFile( + *g_icons.backend, + g_icons.device, + g_icons.commandQueue, + std::filesystem::path(Platform::Utf8ToWide(filePath)), + preview.texture); + return &preview; +} + +void PruneAssetPreviewCache() { + if (g_icons.assetPreviews.size() <= kMaxCachedAssetPreviews) { + return; + } + + std::vector> candidates; + candidates.reserve(g_icons.assetPreviews.size()); + for (const auto& entry : g_icons.assetPreviews) { + candidates.emplace_back(entry.first, entry.second.lastUsedFrame); + } + + std::sort( + candidates.begin(), + candidates.end(), + [](const auto& lhs, const auto& rhs) { + return lhs.second < rhs.second; + }); + + size_t removeCount = g_icons.assetPreviews.size() - kMaxCachedAssetPreviews; + for (size_t i = 0; i < removeCount && i < candidates.size(); ++i) { + auto it = g_icons.assetPreviews.find(candidates[i].first); + if (it == g_icons.assetPreviews.end()) { + continue; + } + + ResetTexture(it->second.texture); + g_icons.assetPreviews.erase(it); + } +} + } // namespace void InitializeBuiltInIcons( @@ -336,14 +469,23 @@ void InitializeBuiltInIcons( ID3D12CommandQueue* commandQueue) { ShutdownBuiltInIcons(); g_icons.backend = &backend; + g_icons.device = device; + g_icons.commandQueue = commandQueue; LoadTextureFromFile(backend, device, commandQueue, ResolveFolderIconPath(), g_icons.folder); LoadTextureFromFile(backend, device, commandQueue, ResolveGameObjectIconPath(), g_icons.gameObject); + LoadTextureFromFile(backend, device, commandQueue, ResolveSceneIconPath(), g_icons.scene); } void ShutdownBuiltInIcons() { + ResetAssetPreviewCache(); ResetTexture(g_icons.folder); ResetTexture(g_icons.gameObject); + ResetTexture(g_icons.scene); g_icons.backend = nullptr; + g_icons.device = nullptr; + g_icons.commandQueue = nullptr; + g_icons.lastPreviewBudgetFrame = -1; + g_icons.previewLoadsThisFrame = 0; } void DrawAssetIcon(ImDrawList* drawList, const ImVec2& min, const ImVec2& max, AssetIconKind kind) { @@ -367,9 +509,34 @@ void DrawAssetIcon(ImDrawList* drawList, const ImVec2& min, const ImVec2& max, A return; } + if (kind == AssetIconKind::Scene) { + if (g_icons.scene.IsValid()) { + DrawTextureIcon(drawList, g_icons.scene, min, max); + return; + } + + DrawBuiltInFileIcon(drawList, min, max); + return; + } + DrawBuiltInFileIcon(drawList, min, max); } +bool DrawTextureAssetPreview( + ImDrawList* drawList, + const ImVec2& min, + const ImVec2& max, + const std::string& filePath) { + BuiltInIconState::CachedAssetPreview* preview = GetOrCreateAssetPreview(filePath); + if (!preview || !preview->texture.IsValid()) { + return false; + } + + DrawTextureIcon(drawList, preview->texture, min, max); + PruneAssetPreviewCache(); + return true; +} + } // namespace UI } // namespace Editor } // namespace XCEngine diff --git a/editor/src/UI/BuiltInIcons.h b/editor/src/UI/BuiltInIcons.h index c6f515de..e99e58f4 100644 --- a/editor/src/UI/BuiltInIcons.h +++ b/editor/src/UI/BuiltInIcons.h @@ -1,6 +1,7 @@ #pragma once #include +#include struct ID3D12Device; struct ID3D12CommandQueue; @@ -14,7 +15,8 @@ class ImGuiBackendBridge; enum class AssetIconKind { Folder, File, - GameObject + GameObject, + Scene }; void InitializeBuiltInIcons( @@ -25,6 +27,11 @@ void InitializeBuiltInIcons( void ShutdownBuiltInIcons(); void DrawAssetIcon(ImDrawList* drawList, const ImVec2& min, const ImVec2& max, AssetIconKind kind); +bool DrawTextureAssetPreview( + ImDrawList* drawList, + const ImVec2& min, + const ImVec2& max, + const std::string& filePath); } // namespace UI } // namespace Editor diff --git a/editor/src/UI/ColorPicker.h b/editor/src/UI/ColorPicker.h index 5ba2b2a5..2567c908 100644 --- a/editor/src/UI/ColorPicker.h +++ b/editor/src/UI/ColorPicker.h @@ -89,6 +89,18 @@ inline float ColorPickerInputWidth() { return 62.0f; } +inline float ColorPickerChannelLabelWidth() { + return 12.0f; +} + +inline float ColorPickerHexLabelWidth() { + return 84.0f; +} + +inline float ColorPickerFieldSpacing() { + return 8.0f; +} + inline float ColorPickerCloseButtonSize() { return 18.0f; } @@ -137,6 +149,10 @@ inline ImVec4 ColorPickerBorderColor() { return ImVec4(0.15f, 0.15f, 0.15f, 1.0f); } +inline float ColorPickerPopupRounding() { + return 3.0f; +} + inline ImVec4 ColorPickerPreviewBorderColor() { return ImVec4(0.12f, 0.12f, 0.12f, 1.0f); } @@ -550,14 +566,15 @@ inline bool DrawChannelGradientSlider( } inline bool DrawChannelRow(const char* label, int componentIndex, ColorPickerState& state, float rowWidth) { - constexpr float labelWidth = 14.0f; - constexpr float spacing = 8.0f; + const float labelWidth = ColorPickerChannelLabelWidth(); + const float spacing = ColorPickerFieldSpacing(); const float inputWidth = ColorPickerInputWidth(); const float sliderWidth = ImMax(rowWidth - labelWidth - spacing - inputWidth - spacing, 60.0f); + const float rowStartX = ImGui::GetCursorPosX(); ImGui::AlignTextToFramePadding(); ImGui::TextUnformatted(label); - ImGui::SameLine(0.0f, spacing); + ImGui::SameLine(rowStartX + labelWidth + spacing, 0.0f); ImGui::PushID(label); float& value = state.color[componentIndex]; @@ -577,14 +594,15 @@ inline bool DrawChannelRow(const char* label, int componentIndex, ColorPickerSta } inline bool DrawAlphaRow(ColorPickerState& state, float rowWidth) { - constexpr float labelWidth = 14.0f; - constexpr float spacing = 8.0f; + const float labelWidth = ColorPickerChannelLabelWidth(); + const float spacing = ColorPickerFieldSpacing(); const float inputWidth = ColorPickerInputWidth(); const float sliderWidth = ImMax(rowWidth - labelWidth - spacing - inputWidth - spacing, 60.0f); + const float rowStartX = ImGui::GetCursorPosX(); ImGui::AlignTextToFramePadding(); ImGui::TextUnformatted("A"); - ImGui::SameLine(0.0f, spacing); + ImGui::SameLine(rowStartX + labelWidth + spacing, 0.0f); ImGui::PushID("Alpha"); const ImVec4 startColor(state.color[0], state.color[1], state.color[2], 0.0f); @@ -607,15 +625,19 @@ inline bool DrawAlphaRow(ColorPickerState& state, float rowWidth) { } inline bool DrawHexRow(ColorPickerState& state, float rowWidth) { + const float labelWidth = ColorPickerHexLabelWidth(); + const float spacing = ColorPickerFieldSpacing(); + const float rowStartX = ImGui::GetCursorPosX(); + ImGui::AlignTextToFramePadding(); ImGui::TextUnformatted("Hexadecimal"); - ImGui::SameLine(0.0f, 8.0f); + ImGui::SameLine(rowStartX + labelWidth + spacing, 0.0f); if (!state.hexEditing) { FormatHexBuffer(state); } - ImGui::SetNextItemWidth(ImMax(rowWidth - ImGui::CalcTextSize("Hexadecimal").x - 8.0f, 40.0f)); + ImGui::SetNextItemWidth(ImMax(rowWidth - labelWidth - spacing, 40.0f)); const bool edited = ImGui::InputText( "##hex", state.hexBuffer, @@ -660,10 +682,11 @@ inline bool DrawCloseButton(const char* id, const ImVec2& size) { inline bool DrawUnityColorPickerPopup(const char* popupId, ColorPickerState& state, bool includeAlpha) { const float headerHeight = ColorPickerHeaderHeight(); const float bodyPadding = ColorPickerBodyPadding(); + const float popupRounding = ColorPickerPopupRounding(); ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0.0f, 0.0f)); - ImGui::PushStyleVar(ImGuiStyleVar_PopupRounding, 3.0f); - ImGui::PushStyleVar(ImGuiStyleVar_PopupBorderSize, 1.0f); + ImGui::PushStyleVar(ImGuiStyleVar_PopupRounding, popupRounding); + ImGui::PushStyleVar(ImGuiStyleVar_PopupBorderSize, PopupWindowBorderSize()); ImGui::PushStyleColor(ImGuiCol_PopupBg, ColorPickerBodyColor()); ImGui::PushStyleColor(ImGuiCol_Border, ColorPickerBorderColor()); @@ -685,15 +708,16 @@ inline bool DrawUnityColorPickerPopup(const char* popupId, ColorPickerState& sta const ImVec2 windowPos = ImGui::GetWindowPos(); const ImVec2 windowSize = ImGui::GetWindowSize(); const ImVec2 windowMax(windowPos.x + windowSize.x, windowPos.y + windowSize.y); - drawList->AddRectFilled(windowPos, windowMax, ImGui::GetColorU32(ColorPickerBodyColor()), 3.0f); + drawList->AddRectFilled(windowPos, windowMax, ImGui::GetColorU32(ColorPickerBodyColor()), popupRounding); drawList->AddRectFilled( windowPos, ImVec2(windowMax.x, windowPos.y + headerHeight), ImGui::GetColorU32(ColorPickerHeaderColor()), - 3.0f, + popupRounding, ImDrawFlags_RoundCornersTop); - drawList->AddRect(windowPos, windowMax, ImGui::GetColorU32(ColorPickerBorderColor()), 3.0f); - drawList->AddText(ImVec2(windowPos.x + 10.0f, windowPos.y + 8.0f), IM_COL32(255, 255, 255, 255), "Color"); + drawList->AddRect(windowPos, windowMax, ImGui::GetColorU32(ColorPickerBorderColor()), popupRounding); + const float titleY = windowPos.y + (headerHeight - ImGui::GetTextLineHeight()) * 0.5f - 1.0f; + drawList->AddText(ImVec2(windowPos.x + 10.0f, titleY), IM_COL32(255, 255, 255, 255), "Color"); const float closeButtonSize = ColorPickerCloseButtonSize(); ImGui::SetCursorPos(ImVec2(windowSize.x - closeButtonSize - 4.0f, 5.0f)); diff --git a/editor/src/UI/Core.h b/editor/src/UI/Core.h index 82dab6f3..2f24bfb7 100644 --- a/editor/src/UI/Core.h +++ b/editor/src/UI/Core.h @@ -108,12 +108,11 @@ inline void PopPopupWindowChrome() { } inline void PushComboPopupWindowChrome() { - const ImVec4 borderColor = ImGui::GetStyleColorVec4(ImGuiCol_Border); ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ComboPopupWindowPadding()); ImGui::PushStyleVar(ImGuiStyleVar_PopupRounding, ComboPopupRounding()); ImGui::PushStyleVar(ImGuiStyleVar_PopupBorderSize, ComboPopupBorderSize()); ImGui::PushStyleColor(ImGuiCol_PopupBg, ComboPopupBackgroundColor()); - ImGui::PushStyleColor(ImGuiCol_Border, borderColor); + ImGui::PushStyleColor(ImGuiCol_Border, PopupBorderColor()); } inline void PopComboPopupWindowChrome() { diff --git a/editor/src/UI/PropertyLayout.h b/editor/src/UI/PropertyLayout.h index bae55e4f..cb266c10 100644 --- a/editor/src/UI/PropertyLayout.h +++ b/editor/src/UI/PropertyLayout.h @@ -15,6 +15,7 @@ struct PropertyLayoutSpec { float controlColumnStart = InspectorPropertyControlColumnStart(); float labelControlGap = InspectorPropertyLabelControlGap(); float controlTrailingInset = InspectorPropertyControlTrailingInset(); + float minimumRowHeight = 0.0f; }; struct PropertyLayoutMetrics { @@ -32,6 +33,15 @@ inline PropertyLayoutSpec MakePropertyLayout() { return PropertyLayoutSpec{}; } +inline float CalcPropertyRowHeightForFramePadding(const ImVec2& framePadding) { + return ImGui::GetFontSize() + framePadding.y * 2.0f + ControlRowHeightOffset(); +} + +inline PropertyLayoutSpec WithMinimumRowHeight(PropertyLayoutSpec spec, float minimumRowHeight) { + spec.minimumRowHeight = std::max(spec.minimumRowHeight, minimumRowHeight); + return spec; +} + inline void PushPropertyLayoutStyles() { ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ControlFramePadding()); } @@ -58,6 +68,15 @@ inline void AlignPropertyControlToRight( } } +inline void AlignPropertyControlVertically( + const PropertyLayoutMetrics& layout, + float height) { + const float offset = std::max((layout.rowHeight - height) * 0.5f, 0.0f); + if (offset > 0.0f) { + ImGui::SetCursorPosY(layout.cursorPos.y + offset); + } +} + template inline auto DrawPropertyRow( const char* label, @@ -72,7 +91,9 @@ inline auto DrawPropertyRow( const ImVec2 rowCursorPos = ImGui::GetCursorPos(); const ImVec2 rowScreenPos = ImGui::GetCursorScreenPos(); const float rowWidth = std::max(ImGui::GetContentRegionAvail().x, 1.0f); - const float rowHeight = ImGui::GetFrameHeight() + ControlRowHeightOffset(); + const float rowHeight = std::max( + ImGui::GetFrameHeight() + ControlRowHeightOffset(), + spec.minimumRowHeight); const float labelInset = std::max(spec.labelInset, 0.0f); const float controlColumnStart = std::clamp( std::max(spec.controlColumnStart, 0.0f), diff --git a/editor/src/UI/StyleTokens.h b/editor/src/UI/StyleTokens.h index ccb56fba..5bce5594 100644 --- a/editor/src/UI/StyleTokens.h +++ b/editor/src/UI/StyleTokens.h @@ -118,6 +118,14 @@ inline ImVec2 ControlFramePadding() { return ImVec2(3.0f, 0.0f); } +inline ImVec2 ScalarControlFramePadding() { + return ImVec2(3.0f, 2.0f); +} + +inline float CompactIndicatorSize() { + return 18.0f; +} + inline float ControlRowHeightOffset() { return 1.0f; } @@ -138,12 +146,16 @@ inline float SliderValueFieldWidth() { return 64.0f; } +inline float ComboPreviewHeightOffset() { + return -2.0f; +} + inline float LinearSliderTrackThickness() { - return 2.0f; + return 3.0f; } inline float LinearSliderGrabRadius() { - return 5.0f; + return 6.0f; } inline float LinearSliderHorizontalPadding() { @@ -381,19 +393,43 @@ inline ImVec2 InspectorActionButtonPadding() { } inline ImVec2 PopupWindowPadding() { - return ImVec2(12.0f, 10.0f); + return ImVec2(10.0f, 0.0f); } inline ImVec2 ComboPopupWindowPadding() { - return ImVec2(6.0f, 1.0f); + return ImVec2(5.0f, 0.0f); } inline ImVec2 ComboPopupItemSpacing() { return ImVec2(0.0f, 0.0f); } +inline ImVec4 MenuSurfaceColor() { + return ImVec4(0.98f, 0.98f, 0.98f, 1.0f); +} + +inline ImVec4 MenuSurfaceHoverColor() { + return ImVec4(0.97f, 0.97f, 0.97f, 1.0f); +} + +inline ImVec4 MenuSurfaceActiveColor() { + return ImVec4(0.955f, 0.955f, 0.955f, 1.0f); +} + +inline ImVec4 MenuBorderColor() { + return ImVec4(0.84f, 0.84f, 0.84f, 1.0f); +} + +inline ImVec4 MenuTextColor() { + return ImVec4(0.16f, 0.16f, 0.16f, 1.0f); +} + +inline ImVec4 MenuTextDisabledColor() { + return ImVec4(0.47f, 0.47f, 0.47f, 1.0f); +} + inline float ComboPopupRounding() { - return 1.0f; + return 3.0f; } inline float ComboPopupBorderSize() { @@ -401,15 +437,15 @@ inline float ComboPopupBorderSize() { } inline ImVec4 ComboPopupBackgroundColor() { - return ImVec4(1.0f, 1.0f, 1.0f, 1.0f); + return MenuSurfaceColor(); } inline ImVec4 ComboPopupTextColor() { - return ImVec4(0.14f, 0.14f, 0.14f, 1.0f); + return MenuTextColor(); } inline ImVec4 ComboPopupTextDisabledColor() { - return ImVec4(0.55f, 0.55f, 0.55f, 1.0f); + return MenuTextDisabledColor(); } inline ImVec4 ComboPopupItemColor() { @@ -417,27 +453,39 @@ inline ImVec4 ComboPopupItemColor() { } inline ImVec4 ComboPopupItemHoveredColor() { - return ImVec4(0.0f, 0.0f, 0.0f, 0.045f); + return MenuSurfaceHoverColor(); } inline ImVec4 ComboPopupItemActiveColor() { - return ImVec4(0.0f, 0.0f, 0.0f, 0.08f); + return MenuSurfaceActiveColor(); } inline ImVec4 ComboPopupCheckMarkColor() { - return ImVec4(0.20f, 0.20f, 0.20f, 1.0f); + return MenuTextColor(); } inline float PopupWindowRounding() { - return 5.0f; + return 3.0f; } inline float PopupWindowBorderSize() { - return 0.0f; + return 1.0f; } inline float PopupFrameRounding() { - return 4.0f; + return 3.0f; +} + +inline float PopupSubmenuArrowExtent() { + return 8.0f; +} + +inline float PopupSubmenuArrowTrailingInset() { + return 8.0f; +} + +inline float PopupSubmenuOpenOffsetX() { + return 0.0f; } inline float PopupFrameBorderSize() { @@ -445,19 +493,19 @@ inline float PopupFrameBorderSize() { } inline ImVec4 PopupBackgroundColor() { - return ImVec4(1.0f, 1.0f, 1.0f, 1.0f); + return MenuSurfaceColor(); } inline ImVec4 PopupBorderColor() { - return ImVec4(0.0f, 0.0f, 0.0f, 0.10f); + return MenuBorderColor(); } inline ImVec4 PopupTextColor() { - return ImVec4(0.14f, 0.14f, 0.14f, 1.0f); + return MenuTextColor(); } inline ImVec4 PopupTextDisabledColor() { - return ImVec4(0.55f, 0.55f, 0.55f, 1.0f); + return MenuTextDisabledColor(); } inline ImVec4 PopupItemColor() { @@ -465,39 +513,39 @@ inline ImVec4 PopupItemColor() { } inline ImVec4 PopupItemHoveredColor() { - return ImVec4(0.0f, 0.0f, 0.0f, 0.06f); + return MenuSurfaceHoverColor(); } inline ImVec4 PopupItemActiveColor() { - return ImVec4(0.0f, 0.0f, 0.0f, 0.10f); + return MenuSurfaceActiveColor(); } inline ImVec4 PopupFrameColor() { - return ImVec4(1.0f, 1.0f, 1.0f, 1.0f); + return MenuSurfaceColor(); } inline ImVec4 PopupFrameHoveredColor() { - return ImVec4(0.965f, 0.965f, 0.965f, 1.0f); + return MenuSurfaceHoverColor(); } inline ImVec4 PopupFrameActiveColor() { - return ImVec4(0.94f, 0.94f, 0.94f, 1.0f); + return MenuSurfaceActiveColor(); } inline ImVec4 PopupButtonColor() { - return ImVec4(0.95f, 0.95f, 0.95f, 1.0f); + return MenuSurfaceColor(); } inline ImVec4 PopupButtonHoveredColor() { - return ImVec4(0.90f, 0.90f, 0.90f, 1.0f); + return MenuSurfaceHoverColor(); } inline ImVec4 PopupButtonActiveColor() { - return ImVec4(0.86f, 0.86f, 0.86f, 1.0f); + return MenuSurfaceActiveColor(); } inline ImVec4 PopupCheckMarkColor() { - return ImVec4(0.20f, 0.20f, 0.20f, 1.0f); + return MenuTextColor(); } inline ImVec2 AssetTileSize() { @@ -556,14 +604,22 @@ inline ImVec2 AssetTileIconSize() { return ImVec2(32.0f, 24.0f); } -inline ImVec2 FolderAssetTileIconSize() { +inline ImVec2 ProjectAssetTileIconSize() { return ImVec2(72.0f, 72.0f); } -inline ImVec2 FolderAssetTileIconOffset() { +inline ImVec2 ProjectAssetTileIconOffset() { return ImVec2(0.0f, 2.0f); } +inline ImVec2 FolderAssetTileIconSize() { + return ProjectAssetTileIconSize(); +} + +inline ImVec2 FolderAssetTileIconOffset() { + return ProjectAssetTileIconOffset(); +} + inline float AssetTileIconTextGap() { return 4.0f; } diff --git a/editor/src/UI/Widgets.h b/editor/src/UI/Widgets.h index 7e25126f..58d440d3 100644 --- a/editor/src/UI/Widgets.h +++ b/editor/src/UI/Widgets.h @@ -22,6 +22,8 @@ struct AssetTileResult { bool hovered = false; ImVec2 min = ImVec2(0.0f, 0.0f); ImVec2 max = ImVec2(0.0f, 0.0f); + ImVec2 labelMin = ImVec2(0.0f, 0.0f); + ImVec2 labelMax = ImVec2(0.0f, 0.0f); }; struct AssetTileOptions { @@ -30,6 +32,7 @@ struct AssetTileOptions { ImVec2 iconSize = AssetTileIconSize(); bool drawIdleFrame = true; bool drawSelectionBorder = true; + bool drawLabel = true; }; enum class DialogActionResult { @@ -79,6 +82,77 @@ inline bool DrawMenuScope(const char* label, DrawContentFn&& drawContent) { return true; } +template +inline bool DrawPopupSubmenuScope(const char* label, DrawContentFn&& drawContent) { + if (!label || label[0] == '\0') { + return false; + } + + ImGui::PushID(label); + const char* popupId = "##PopupSubmenu"; + const ImVec2 labelSize = ImGui::CalcTextSize(label); + const ImVec2 rowPos = ImGui::GetCursorScreenPos(); + const float rowHeight = labelSize.y; + const float rowWidth = ImMax(ImGui::GetContentRegionAvail().x, 1.0f); + const bool popupOpen = ImGui::IsPopupOpen(popupId); + + if (ImGui::Selectable( + "##PopupSubmenuRow", + popupOpen, + ImGuiSelectableFlags_NoAutoClosePopups, + ImVec2(rowWidth, rowHeight))) { + ImGui::OpenPopup(popupId); + } + + const bool hovered = ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenBlockedByPopup); + if (hovered && !popupOpen) { + ImGui::OpenPopup(popupId); + } + + const ImVec2 itemMin = ImGui::GetItemRectMin(); + const ImVec2 itemMax = ImGui::GetItemRectMax(); + const ImVec2 parentWindowPos = ImGui::GetWindowPos(); + const ImVec2 parentWindowSize = ImGui::GetWindowSize(); + const float parentWindowRight = parentWindowPos.x + parentWindowSize.x; + const float itemHeight = itemMax.y - itemMin.y; + ImDrawList* drawList = ImGui::GetWindowDrawList(); + drawList->AddText( + ImVec2(itemMin.x + ImGui::GetStyle().FramePadding.x, itemMin.y + (itemHeight - labelSize.y) * 0.5f), + ImGui::GetColorU32(ImGuiCol_Text), + label); + + const float arrowExtent = PopupSubmenuArrowExtent(); + const float arrowCenterX = itemMax.x - PopupSubmenuArrowTrailingInset() - arrowExtent * 0.5f; + const float arrowCenterY = (itemMin.y + itemMax.y) * 0.5f; + drawList->AddTriangleFilled( + ImVec2(arrowCenterX - arrowExtent * 0.30f, arrowCenterY - arrowExtent * 0.50f), + ImVec2(arrowCenterX - arrowExtent * 0.30f, arrowCenterY + arrowExtent * 0.50f), + ImVec2(arrowCenterX + arrowExtent * 0.50f, arrowCenterY), + ImGui::GetColorU32(ImGuiCol_Text)); + + ImGui::SetNextWindowPos( + ImVec2(parentWindowRight + PopupSubmenuOpenOffsetX(), rowPos.y - PopupWindowPadding().y), + ImGuiCond_Always); + const bool open = BeginPopup( + popupId, + ImGuiWindowFlags_NoMove | + ImGuiWindowFlags_NoResize | + ImGuiWindowFlags_NoSavedSettings); + if (!open) { + ImGui::PopID(); + return false; + } + + drawContent(); + const bool popupHovered = ImGui::IsWindowHovered(ImGuiHoveredFlags_AllowWhenBlockedByPopup); + if (!hovered && !popupHovered && !ImGui::IsWindowAppearing()) { + ImGui::CloseCurrentPopup(); + } + EndPopup(); + ImGui::PopID(); + return true; +} + template inline bool DrawMenuCommand(const MenuCommand& command, ExecuteFn&& execute) { if (command.kind == MenuCommandKind::Separator) { @@ -285,8 +359,8 @@ inline AssetTileResult DrawAssetTile( drawList->AddRect(min, max, ImGui::GetColorU32(AssetTileIdleBorderColor()), AssetTileRounding()); } - if (hovered || selected) { - drawList->AddRectFilled(min, max, ImGui::GetColorU32(selected ? AssetTileSelectedFillColor() : AssetTileHoverFillColor()), AssetTileRounding()); + if (selected) { + drawList->AddRectFilled(min, max, ImGui::GetColorU32(AssetTileSelectedFillColor()), AssetTileRounding()); } if (selected && options.drawSelectionBorder) { drawList->AddRect(min, max, ImGui::GetColorU32(AssetTileSelectedBorderColor()), AssetTileRounding()); @@ -302,14 +376,19 @@ inline AssetTileResult DrawAssetTile( drawIcon(drawList, iconMin, iconMax); const ImVec2 textPadding = AssetTileTextPadding(); - const float textAreaWidth = tileSize.x - textPadding.x * 2.0f; - const float centeredTextX = min.x + textPadding.x + std::max(0.0f, (textAreaWidth - textSize.x) * 0.5f); - const float textY = max.y - textSize.y - AssetTileTextPadding().y; - ImGui::PushClipRect(ImVec2(min.x + textPadding.x, min.y), ImVec2(max.x - textPadding.x, max.y), true); - drawList->AddText(ImVec2(centeredTextX, textY), ImGui::GetColorU32(AssetTileTextColor(selected)), label); - ImGui::PopClipRect(); + const float labelHeight = ImGui::GetFrameHeight(); + const ImVec2 labelMin(min.x + textPadding.x, max.y - labelHeight - textPadding.y * 0.5f); + const ImVec2 labelMax(max.x - textPadding.x, labelMin.y + labelHeight); + if (options.drawLabel) { + const float textAreaWidth = labelMax.x - labelMin.x; + const float centeredTextX = labelMin.x + std::max(0.0f, (textAreaWidth - textSize.x) * 0.5f); + const float textY = labelMin.y + (labelHeight - textSize.y) * 0.5f; + ImGui::PushClipRect(labelMin, labelMax, true); + drawList->AddText(ImVec2(centeredTextX, textY), ImGui::GetColorU32(AssetTileTextColor(selected)), label); + ImGui::PopClipRect(); + } - return AssetTileResult{ clicked, contextRequested, openRequested, hovered, min, max }; + return AssetTileResult{ clicked, contextRequested, openRequested, hovered, min, max, labelMin, labelMax }; } template diff --git a/editor/src/panels/ProjectPanel.cpp b/editor/src/panels/ProjectPanel.cpp index f7b86791..50e58cf2 100644 --- a/editor/src/panels/ProjectPanel.cpp +++ b/editor/src/panels/ProjectPanel.cpp @@ -33,6 +33,49 @@ void DrawProjectFolderTreePrefix(const UI::TreeNodePrefixContext& context) { UI::AssetIconKind::Folder); } +UI::AssetIconKind ResolveProjectAssetIconKind(const AssetItemPtr& item) { + if (!item) { + return UI::AssetIconKind::File; + } + + if (item->isFolder) { + return UI::AssetIconKind::Folder; + } + + if (item->type == "Scene") { + return UI::AssetIconKind::Scene; + } + + return UI::AssetIconKind::File; +} + +std::string GetProjectAssetDisplayName(const AssetItemPtr& item) { + if (!item) { + return {}; + } + + if (item->isFolder) { + return item->name; + } + + const size_t extensionPos = item->name.find_last_of('.'); + if (extensionPos == std::string::npos || extensionPos == 0) { + return item->name; + } + + return item->name.substr(0, extensionPos); +} + +UI::AssetTileOptions MakeProjectAssetTileOptions() { + UI::AssetTileOptions options; + options.drawIdleFrame = false; + options.drawSelectionBorder = false; + options.iconOffset = UI::ProjectAssetTileIconOffset(); + options.iconSize = UI::ProjectAssetTileIconSize(); + + return options; +} + } // namespace ProjectPanel::ProjectPanel() : Panel("Project") { @@ -42,6 +85,97 @@ void ProjectPanel::Initialize(const std::string& projectPath) { m_context->GetProjectManager().Initialize(projectPath); } +void ProjectPanel::BeginAssetDragDropFrame() { + m_assetDragDropState.Reset(); + if (const char* draggedPath = Actions::GetDraggedProjectAssetPath()) { + m_assetDragDropState.dragging = true; + m_assetDragDropState.sourcePath = draggedPath; + } +} + +void ProjectPanel::RegisterFolderDropTarget(IProjectManager& manager, const AssetItemPtr& folder) { + if (!m_assetDragDropState.dragging || !folder || !folder->isFolder || !ImGui::BeginDragDropTarget()) { + return; + } + + const ImGuiPayload* payload = ImGui::GetDragDropPayload(); + if (!payload || !payload->IsDataType(Actions::ProjectAssetPayloadType())) { + ImGui::EndDragDropTarget(); + return; + } + + m_assetDragDropState.hoveredTarget = true; + const bool canDrop = Commands::CanMoveAssetToFolder(manager, m_assetDragDropState.sourcePath, folder); + if (canDrop) { + m_assetDragDropState.hoveredValidTarget = true; + if (const ImGuiPayload* accepted = ImGui::AcceptDragDropPayload( + Actions::ProjectAssetPayloadType(), + ImGuiDragDropFlags_AcceptNoDrawDefaultRect)) + { + if (accepted->Delivery) { + m_assetDragDropState.deliveredSourcePath = m_assetDragDropState.sourcePath; + m_assetDragDropState.deliveredTarget = folder; + } + } + } + + ImGui::EndDragDropTarget(); +} + +void ProjectPanel::FinalizeAssetDragDrop(IProjectManager& manager) { + if (m_assetDragDropState.dragging) { + ImGui::SetMouseCursor( + m_assetDragDropState.hoveredValidTarget ? ImGuiMouseCursor_Arrow : ImGuiMouseCursor_NotAllowed); + } + + if (!m_assetDragDropState.deliveredSourcePath.empty() && m_assetDragDropState.deliveredTarget) { + Commands::MoveAssetToFolder( + manager, + m_assetDragDropState.deliveredSourcePath, + m_assetDragDropState.deliveredTarget); + } +} + +void ProjectPanel::BeginRename(const AssetItemPtr& item) { + if (!item) { + CancelRename(); + return; + } + + m_renameState.Begin(item->fullPath, GetProjectAssetDisplayName(item).c_str()); +} + +bool ProjectPanel::CommitRename(IProjectManager& manager) { + if (!m_renameState.IsActive()) { + return false; + } + + const std::string sourcePath = m_renameState.Item(); + std::string currentDisplayName; + for (const auto& item : manager.GetCurrentItems()) { + if (item && item->fullPath == sourcePath) { + currentDisplayName = GetProjectAssetDisplayName(item); + break; + } + } + + if (!currentDisplayName.empty() && currentDisplayName == m_renameState.Buffer()) { + CancelRename(); + return true; + } + + if (!Commands::RenameAsset(manager, sourcePath, m_renameState.Buffer())) { + return false; + } + + CancelRename(); + return true; +} + +void ProjectPanel::CancelRename() { + m_renameState.Cancel(); +} + void ProjectPanel::Render() { UI::PanelWindowScope panel(m_name.c_str()); if (!panel.IsOpen()) { @@ -51,6 +185,7 @@ void ProjectPanel::Render() { Actions::ObserveFocusedActionRoute(*m_context, EditorActionRoute::Project); auto& manager = m_context->GetProjectManager(); + BeginAssetDragDropFrame(); RenderToolbar(); ImGui::PushStyleColor(ImGuiCol_ChildBg, UI::ProjectBrowserSurfaceColor()); @@ -78,7 +213,7 @@ void ProjectPanel::Render() { ImGui::SameLine(0.0f, 0.0f); RenderBrowserPane(manager); - Actions::DrawProjectCreateFolderDialog(*m_context, m_createFolderDialog); + FinalizeAssetDragDrop(manager); ImGui::PopStyleColor(); } @@ -174,6 +309,8 @@ void ProjectPanel::RenderFolderTreeNode( folder->name.c_str(), nodeDefinition); + RegisterFolderDropTarget(manager, folder); + if (node.open) { for (const auto& child : folder->children) { if (!child || !child->isFolder) { @@ -199,9 +336,12 @@ void ProjectPanel::RenderBrowserPane(IProjectManager& manager) { std::vector visibleItems; const auto& items = manager.GetCurrentItems(); const std::string search = m_searchBuffer; + if (m_renameState.IsActive() && manager.FindCurrentItemIndex(m_renameState.Item()) < 0) { + CancelRename(); + } visibleItems.reserve(items.size()); for (const auto& item : items) { - if (MatchesSearch(item, search)) { + if ((m_renameState.IsActive() && item && item->fullPath == m_renameState.Item()) || MatchesSearch(item, search)) { visibleItems.push_back(item); } } @@ -231,9 +371,6 @@ void ProjectPanel::RenderBrowserPane(IProjectManager& manager) { AssetItemPtr pendingSelection; AssetItemPtr pendingContextTarget; AssetItemPtr pendingOpenTarget; - AssetItemPtr pendingMoveTarget; - std::string pendingMoveSourcePath; - const std::string selectedItemPath = manager.GetSelectedItemPath(); for (int visibleIndex = 0; visibleIndex < static_cast(visibleItems.size()); ++visibleIndex) { if (visibleIndex > 0 && visibleIndex % columns != 0) { @@ -248,11 +385,6 @@ void ProjectPanel::RenderBrowserPane(IProjectManager& manager) { if (interaction.contextRequested) { pendingContextTarget = item; } - if (!interaction.droppedSourcePath.empty()) { - pendingMoveSourcePath = interaction.droppedSourcePath; - pendingMoveTarget = item; - break; - } if (interaction.openRequested) { pendingOpenTarget = item; break; @@ -265,22 +397,23 @@ void ProjectPanel::RenderBrowserPane(IProjectManager& manager) { "No assets match the current search"); } - Actions::HandleProjectBackgroundPrimaryClick(manager); + Actions::HandleProjectBackgroundPrimaryClick(manager, m_renameState); if (pendingSelection) { manager.SetSelectedItem(pendingSelection); } if (pendingContextTarget) { Actions::HandleProjectItemContextRequest(manager, pendingContextTarget, m_itemContextMenu); } - if (!pendingMoveSourcePath.empty() && pendingMoveTarget) { - Commands::MoveAssetToFolder(manager, pendingMoveSourcePath, pendingMoveTarget); - } if (pendingOpenTarget) { Actions::OpenProjectAsset(*m_context, pendingOpenTarget); } Actions::DrawProjectItemContextPopup(*m_context, m_itemContextMenu); Actions::RequestProjectEmptyContextPopup(m_emptyContextMenu); - Actions::DrawProjectEmptyContextPopup(m_emptyContextMenu, m_createFolderDialog); + Actions::DrawProjectEmptyContextPopup(m_emptyContextMenu, [&]() { + if (AssetItemPtr createdFolder = Commands::CreateFolder(manager, "New Folder")) { + BeginRename(createdFolder); + } + }); ImGui::EndChild(); ImGui::EndChild(); @@ -305,7 +438,7 @@ void ProjectPanel::RenderBrowserHeader(IProjectManager& manager) { const float startY = ImGui::GetCursorPosY(); const float availableHeight = ImGui::GetContentRegionAvail().y; if (availableHeight > rowHeight) { - ImGui::SetCursorPosY(startY + (availableHeight - rowHeight) * 0.5f); + ImGui::SetCursorPosY(startY + (availableHeight - rowHeight) * 0.5f - 1.0f); } UI::DrawToolbarBreadcrumbs( @@ -326,40 +459,65 @@ ProjectPanel::AssetItemInteraction ProjectPanel::RenderAssetItem(const AssetItem AssetItemInteraction interaction; ImGui::PushID(item ? item->fullPath.c_str() : "ProjectItem"); - const bool isDraggingThisItem = Actions::IsProjectAssetBeingDragged(item); - const UI::AssetIconKind iconKind = item->isFolder ? UI::AssetIconKind::Folder : UI::AssetIconKind::File; - UI::AssetTileOptions tileOptions; - tileOptions.drawIdleFrame = false; - tileOptions.drawSelectionBorder = false; - if (item->isFolder) { - tileOptions.iconOffset = UI::FolderAssetTileIconOffset(); - tileOptions.iconSize = UI::FolderAssetTileIconSize(); - } + const bool isRenaming = item && m_renameState.IsEditing(item->fullPath); + const bool isDraggingThisItem = !isRenaming && Actions::IsProjectAssetBeingDragged(item); + const UI::AssetIconKind iconKind = ResolveProjectAssetIconKind(item); + const std::string displayName = GetProjectAssetDisplayName(item); + UI::AssetTileOptions tileOptions = MakeProjectAssetTileOptions(); + tileOptions.drawLabel = !isRenaming; const UI::AssetTileResult tile = UI::DrawAssetTile( - item->name.c_str(), + displayName.c_str(), isSelected, isDraggingThisItem, [&](ImDrawList* drawList, const ImVec2& iconMin, const ImVec2& iconMax) { + if (item && item->type == "Texture" && + UI::DrawTextureAssetPreview(drawList, iconMin, iconMax, item->fullPath)) { + return; + } UI::DrawAssetIcon(drawList, iconMin, iconMax, iconKind); }, tileOptions); - if (tile.clicked) { - interaction.clicked = true; + if (isRenaming) { + const ImVec2 restoreCursor = ImGui::GetCursorPos(); + ImGui::SetCursorScreenPos(tile.labelMin); + ImGui::SetNextItemWidth(tile.labelMax.x - tile.labelMin.x); + if (m_renameState.ConsumeFocusRequest()) { + ImGui::SetKeyboardFocusHere(); + } + + const bool submitted = ImGui::InputText( + "##Rename", + m_renameState.Buffer(), + m_renameState.BufferSize(), + ImGuiInputTextFlags_EnterReturnsTrue | ImGuiInputTextFlags_AutoSelectAll); + const bool cancelRequested = ImGui::IsItemActive() && ImGui::IsKeyPressed(ImGuiKey_Escape); + const bool deactivated = ImGui::IsItemDeactivated(); + ImGui::SetCursorPos(restoreCursor); + + if (cancelRequested) { + CancelRename(); + } else if (submitted || deactivated) { + CommitRename(m_context->GetProjectManager()); + } + } else { + if (tile.clicked) { + interaction.clicked = true; + } + + if (tile.contextRequested) { + interaction.contextRequested = true; + } + + RegisterFolderDropTarget(m_context->GetProjectManager(), item); + Actions::BeginProjectAssetDrag(item, iconKind); + + if (tile.openRequested) { + interaction.openRequested = true; + } } - if (tile.contextRequested) { - interaction.contextRequested = true; - } - - interaction.droppedSourcePath = Actions::AcceptProjectAssetDropPayload(item); - Actions::BeginProjectAssetDrag(item, iconKind); - - if (tile.openRequested) { - interaction.openRequested = true; - } - ImGui::PopID(); return interaction; } diff --git a/editor/src/panels/ProjectPanel.h b/editor/src/panels/ProjectPanel.h index 3410801f..65e3067c 100644 --- a/editor/src/panels/ProjectPanel.h +++ b/editor/src/panels/ProjectPanel.h @@ -15,13 +15,36 @@ public: void Initialize(const std::string& projectPath); private: + struct AssetDragDropState { + bool dragging = false; + bool hoveredTarget = false; + bool hoveredValidTarget = false; + std::string sourcePath; + std::string deliveredSourcePath; + AssetItemPtr deliveredTarget; + + void Reset() { + dragging = false; + hoveredTarget = false; + hoveredValidTarget = false; + sourcePath.clear(); + deliveredSourcePath.clear(); + deliveredTarget.reset(); + } + }; + struct AssetItemInteraction { bool clicked = false; bool contextRequested = false; bool openRequested = false; - std::string droppedSourcePath; }; + void BeginAssetDragDropFrame(); + void RegisterFolderDropTarget(IProjectManager& manager, const AssetItemPtr& folder); + void FinalizeAssetDragDrop(IProjectManager& manager); + void BeginRename(const AssetItemPtr& item); + bool CommitRename(IProjectManager& manager); + void CancelRename(); void RenderToolbar(); void RenderFolderTreePane(IProjectManager& manager); void RenderFolderTreeNode(IProjectManager& manager, const AssetItemPtr& folder, const std::string& currentFolderPath); @@ -34,9 +57,10 @@ private: char m_searchBuffer[256] = ""; float m_navigationWidth = UI::ProjectNavigationDefaultWidth(); UI::TreeViewState m_folderTreeState; - UI::TextInputPopupState<256> m_createFolderDialog; + UI::InlineTextEditState m_renameState; UI::DeferredPopupState m_emptyContextMenu; UI::TargetedPopupState m_itemContextMenu; + AssetDragDropState m_assetDragDropState; }; } diff --git a/editor/unity_grid.png b/editor/unity_grid.png new file mode 100644 index 00000000..65b5742f Binary files /dev/null and b/editor/unity_grid.png differ diff --git a/engine/include/XCEngine/RHI/D3D12/D3D12Texture.h b/engine/include/XCEngine/RHI/D3D12/D3D12Texture.h index 01579de2..2a08bff1 100644 --- a/engine/include/XCEngine/RHI/D3D12/D3D12Texture.h +++ b/engine/include/XCEngine/RHI/D3D12/D3D12Texture.h @@ -28,10 +28,10 @@ public: ID3D12Resource* GetResource() const { return m_resource.Get(); } D3D12_RESOURCE_DESC GetDesc() const { return m_resource->GetDesc(); } - uint32_t GetWidth() const override { return static_cast(GetDesc().Width); } - uint32_t GetHeight() const override { return GetDesc().Height; } - uint32_t GetDepth() const override { return GetDesc().DepthOrArraySize; } - uint32_t GetMipLevels() const override { return GetDesc().MipLevels; } + uint32_t GetWidth() const override { return m_resource ? static_cast(GetDesc().Width) : 0; } + uint32_t GetHeight() const override { return m_resource ? GetDesc().Height : 0; } + uint32_t GetDepth() const override { return m_resource ? GetDesc().DepthOrArraySize : 0; } + uint32_t GetMipLevels() const override { return m_resource ? GetDesc().MipLevels : 0; } void* GetNativeHandle() override { return m_resource.Get(); } ResourceStates GetState() const override { return m_state; } @@ -43,22 +43,19 @@ public: const std::string& GetName() const override { return m_name; } void SetName(const std::string& name) override { m_name = name; } - uint32_t GetArraySize() const { return GetDesc().DepthOrArraySize; } - Format GetFormat() const override { return FromD3D12(GetDesc().Format); } - TextureType GetTextureType() const override { - switch (GetDesc().Dimension) { - case D3D12_RESOURCE_DIMENSION_TEXTURE1D: return TextureType::Texture1D; - case D3D12_RESOURCE_DIMENSION_TEXTURE2D: return TextureType::Texture2D; - case D3D12_RESOURCE_DIMENSION_TEXTURE3D: return TextureType::Texture3D; - default: return TextureType::Texture2D; - } - } + uint32_t GetArraySize() const { return m_resource ? GetDesc().DepthOrArraySize : 0; } + Format GetFormat() const override { return m_format != Format::Unknown ? m_format : (m_resource ? FromD3D12(GetDesc().Format) : Format::Unknown); } + TextureType GetTextureType() const override { return m_textureType; } + void SetFormat(Format format) { m_format = format; } + void SetTextureType(TextureType type) { m_textureType = type; } bool OwnsResource() const { return m_ownsResource; } private: ComPtr m_resource; ResourceStates m_state = ResourceStates::Common; + Format m_format = Format::Unknown; + TextureType m_textureType = TextureType::Texture2D; std::string m_name; bool m_ownsResource = false; }; diff --git a/engine/include/XCEngine/RHI/OpenGL/OpenGLCommandQueue.h b/engine/include/XCEngine/RHI/OpenGL/OpenGLCommandQueue.h index c8a2227b..0179d84c 100644 --- a/engine/include/XCEngine/RHI/OpenGL/OpenGLCommandQueue.h +++ b/engine/include/XCEngine/RHI/OpenGL/OpenGLCommandQueue.h @@ -21,7 +21,7 @@ public: CommandQueueType GetType() const override { return CommandQueueType::Direct; } uint64_t GetTimestampFrequency() const override; - void* GetNativeHandle() override { return nullptr; } + void* GetNativeHandle() override { return this; } void WaitForPreviousFrame() override {} uint64_t GetCurrentFrame() const override { return 0; } }; diff --git a/engine/src/Core/Math/Quaternion.cpp b/engine/src/Core/Math/Quaternion.cpp index 435ebd2d..3b0189d0 100644 --- a/engine/src/Core/Math/Quaternion.cpp +++ b/engine/src/Core/Math/Quaternion.cpp @@ -161,7 +161,7 @@ Vector3 Quaternion::ToEulerAngles() const { float cosyCosp = 1.0f - 2.0f * (y * y + z * z); float yaw = std::atan2(sinyCosp, cosyCosp); - return Vector3(pitch, yaw, roll); + return Vector3(roll, pitch, yaw); } Matrix4 Quaternion::ToMatrix4x4() const { diff --git a/engine/src/RHI/D3D12/D3D12Device.cpp b/engine/src/RHI/D3D12/D3D12Device.cpp index 4f6507e6..46ab47d3 100644 --- a/engine/src/RHI/D3D12/D3D12Device.cpp +++ b/engine/src/RHI/D3D12/D3D12Device.cpp @@ -17,6 +17,7 @@ #include "XCEngine/RHI/D3D12/D3D12ResourceView.h" #include "XCEngine/RHI/D3D12/D3D12RenderPass.h" #include "XCEngine/RHI/D3D12/D3D12Framebuffer.h" +#include #include #include #include @@ -83,6 +84,75 @@ uint32_t GetFormatBytesPerPixel(Format format) { } } +TextureType ResolveTextureType(uint32_t rawType) { + return static_cast(rawType); +} + +uint16_t ResolveDepthOrArraySize(const TextureDesc& desc, TextureType textureType) { + switch (textureType) { + case TextureType::Texture3D: + return static_cast(std::max(desc.depth, 1)); + case TextureType::Texture2DArray: + return static_cast(std::max(desc.arraySize, 1)); + case TextureType::TextureCube: + case TextureType::TextureCubeArray: + return static_cast(std::max(desc.arraySize, 6)); + default: + return 1; + } +} + +std::string ShaderModelToString(D3D_SHADER_MODEL shaderModel) { + switch (shaderModel) { + case D3D_SHADER_MODEL_6_7: return "6.7"; + case D3D_SHADER_MODEL_6_6: return "6.6"; + case D3D_SHADER_MODEL_6_5: return "6.5"; + case D3D_SHADER_MODEL_6_4: return "6.4"; + case D3D_SHADER_MODEL_6_3: return "6.3"; + case D3D_SHADER_MODEL_6_2: return "6.2"; + case D3D_SHADER_MODEL_6_1: return "6.1"; + case D3D_SHADER_MODEL_6_0: return "6.0"; + case D3D_SHADER_MODEL_5_1: return "5.1"; + default: return {}; + } +} + +D3D12_RTV_DIMENSION ResolveRTVDimension(const ResourceViewDesc& desc, TextureType textureType) { + switch (desc.dimension) { + case ResourceViewDimension::Texture1D: + return D3D12_RTV_DIMENSION_TEXTURE1D; + case ResourceViewDimension::Texture1DArray: + return D3D12_RTV_DIMENSION_TEXTURE1DARRAY; + case ResourceViewDimension::Texture2DArray: + case ResourceViewDimension::TextureCube: + case ResourceViewDimension::TextureCubeArray: + return D3D12_RTV_DIMENSION_TEXTURE2DARRAY; + case ResourceViewDimension::Texture3D: + return D3D12_RTV_DIMENSION_TEXTURE3D; + case ResourceViewDimension::Texture2DMS: + return D3D12_RTV_DIMENSION_TEXTURE2DMS; + case ResourceViewDimension::Texture2DMSArray: + return D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY; + case ResourceViewDimension::Unknown: + break; + default: + return D3D12_RTV_DIMENSION_TEXTURE2D; + } + + switch (textureType) { + case TextureType::Texture1D: + return D3D12_RTV_DIMENSION_TEXTURE1D; + case TextureType::Texture2DArray: + case TextureType::TextureCube: + case TextureType::TextureCubeArray: + return D3D12_RTV_DIMENSION_TEXTURE2DARRAY; + case TextureType::Texture3D: + return D3D12_RTV_DIMENSION_TEXTURE3D; + default: + return D3D12_RTV_DIMENSION_TEXTURE2D; + } +} + } // namespace D3D12Device::D3D12Device() @@ -226,6 +296,28 @@ void D3D12Device::QueryAdapterInfo() { m_capabilities.bSupportsConservativeRasterization = options.ConservativeRasterizationTier != D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED; } + m_capabilities.bSupportsComputeShaders = true; + + D3D12_FEATURE_DATA_SHADER_MODEL shaderModel = {}; + const D3D_SHADER_MODEL shaderModelCandidates[] = { + D3D_SHADER_MODEL_6_7, + D3D_SHADER_MODEL_6_6, + D3D_SHADER_MODEL_6_5, + D3D_SHADER_MODEL_6_4, + D3D_SHADER_MODEL_6_3, + D3D_SHADER_MODEL_6_2, + D3D_SHADER_MODEL_6_1, + D3D_SHADER_MODEL_6_0, + D3D_SHADER_MODEL_5_1 + }; + for (D3D_SHADER_MODEL candidate : shaderModelCandidates) { + shaderModel.HighestShaderModel = candidate; + if (SUCCEEDED(m_device->CheckFeatureSupport(D3D12_FEATURE_SHADER_MODEL, &shaderModel, sizeof(shaderModel)))) { + m_capabilities.shaderModel = ShaderModelToString(shaderModel.HighestShaderModel); + break; + } + } + D3D12_FEATURE_DATA_D3D12_OPTIONS3 options3 = {}; if (SUCCEEDED(m_device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS3, &options3, sizeof(options3)))) { } @@ -321,33 +413,35 @@ RHIBuffer* D3D12Device::CreateBuffer(const BufferDesc& desc) { RHITexture* D3D12Device::CreateTexture(const TextureDesc& desc) { auto* texture = new D3D12Texture(); D3D12_RESOURCE_DESC d3d12Desc = {}; - - d3d12Desc.Dimension = ToD3D12(static_cast(desc.textureType)); - + + const TextureType textureType = ResolveTextureType(desc.textureType); + const Format format = static_cast(desc.format); + const bool isDepthFormat = format == Format::D24_UNorm_S8_UInt || + format == Format::D32_Float || + format == Format::D16_UNorm; + + d3d12Desc.Dimension = ToD3D12(textureType); d3d12Desc.Width = desc.width; d3d12Desc.Height = desc.height; - d3d12Desc.DepthOrArraySize = desc.depth > 0 ? desc.depth : 1; + d3d12Desc.DepthOrArraySize = ResolveDepthOrArraySize(desc, textureType); d3d12Desc.MipLevels = desc.mipLevels > 0 ? desc.mipLevels : 1; - d3d12Desc.Format = ToD3D12(static_cast(desc.format)); + d3d12Desc.Format = ToD3D12(format); d3d12Desc.SampleDesc.Count = desc.sampleCount > 0 ? desc.sampleCount : 1; d3d12Desc.SampleDesc.Quality = desc.sampleQuality; d3d12Desc.Flags = static_cast(desc.flags); - - Format format = static_cast(desc.format); - if (format == Format::D24_UNorm_S8_UInt || format == Format::D32_Float || - format == Format::D16_UNorm) { + + if (isDepthFormat) { d3d12Desc.Flags |= D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL; } else if (d3d12Desc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE2D && desc.width > 0 && desc.height > 0) { d3d12Desc.Flags |= D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET; } d3d12Desc.Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN; - const bool isDepthFormat = format == Format::D24_UNorm_S8_UInt || - format == Format::D32_Float || - format == Format::D16_UNorm; const D3D12_RESOURCE_STATES initialState = isDepthFormat ? D3D12_RESOURCE_STATE_DEPTH_WRITE : D3D12_RESOURCE_STATE_COMMON; if (texture->Initialize(m_device.Get(), d3d12Desc, initialState)) { + texture->SetFormat(format); + texture->SetTextureType(textureType); if (isDepthFormat) { texture->SetState(ResourceStates::DepthWrite); } @@ -700,8 +794,23 @@ RHIResourceView* D3D12Device::CreateRenderTargetView(RHITexture* texture, const } D3D12_RENDER_TARGET_VIEW_DESC rtvDesc = {}; - rtvDesc.Format = ToD3D12(static_cast(desc.format)); - rtvDesc.ViewDimension = D3D12_RTV_DIMENSION_TEXTURE2D; + const Format format = desc.format != 0 ? static_cast(desc.format) : texture->GetFormat(); + const TextureType textureType = texture->GetTextureType(); + rtvDesc.Format = ToD3D12(format); + rtvDesc.ViewDimension = ResolveRTVDimension(desc, textureType); + if (rtvDesc.ViewDimension == D3D12_RTV_DIMENSION_TEXTURE2DARRAY) { + rtvDesc.Texture2DArray.MipSlice = desc.mipLevel; + rtvDesc.Texture2DArray.FirstArraySlice = desc.firstArraySlice; + rtvDesc.Texture2DArray.ArraySize = desc.arraySize > 0 ? desc.arraySize : 1; + rtvDesc.Texture2DArray.PlaneSlice = desc.planeSlice; + } else if (rtvDesc.ViewDimension == D3D12_RTV_DIMENSION_TEXTURE3D) { + rtvDesc.Texture3D.MipSlice = desc.mipLevel; + rtvDesc.Texture3D.FirstWSlice = desc.firstArraySlice; + rtvDesc.Texture3D.WSize = desc.arraySize > 0 ? desc.arraySize : 1; + } else { + rtvDesc.Texture2D.MipSlice = desc.mipLevel; + rtvDesc.Texture2D.PlaneSlice = desc.planeSlice; + } auto heap = std::make_unique(); if (!heap->Initialize(m_device.Get(), DescriptorHeapType::RTV, 1, false)) { diff --git a/engine/src/RHI/D3D12/D3D12ResourceView.cpp b/engine/src/RHI/D3D12/D3D12ResourceView.cpp index 6c61590f..67937ba2 100644 --- a/engine/src/RHI/D3D12/D3D12ResourceView.cpp +++ b/engine/src/RHI/D3D12/D3D12ResourceView.cpp @@ -5,6 +5,63 @@ namespace XCEngine { namespace RHI { +namespace { + +ResourceViewDimension ToResourceViewDimension(D3D12_RTV_DIMENSION dimension) { + switch (dimension) { + case D3D12_RTV_DIMENSION_TEXTURE1D: return ResourceViewDimension::Texture1D; + case D3D12_RTV_DIMENSION_TEXTURE1DARRAY: return ResourceViewDimension::Texture1DArray; + case D3D12_RTV_DIMENSION_TEXTURE2D: return ResourceViewDimension::Texture2D; + case D3D12_RTV_DIMENSION_TEXTURE2DARRAY: return ResourceViewDimension::Texture2DArray; + case D3D12_RTV_DIMENSION_TEXTURE2DMS: return ResourceViewDimension::Texture2DMS; + case D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY: return ResourceViewDimension::Texture2DMSArray; + case D3D12_RTV_DIMENSION_TEXTURE3D: return ResourceViewDimension::Texture3D; + default: return ResourceViewDimension::Unknown; + } +} + +ResourceViewDimension ToResourceViewDimension(D3D12_DSV_DIMENSION dimension) { + switch (dimension) { + case D3D12_DSV_DIMENSION_TEXTURE1D: return ResourceViewDimension::Texture1D; + case D3D12_DSV_DIMENSION_TEXTURE1DARRAY: return ResourceViewDimension::Texture1DArray; + case D3D12_DSV_DIMENSION_TEXTURE2D: return ResourceViewDimension::Texture2D; + case D3D12_DSV_DIMENSION_TEXTURE2DARRAY: return ResourceViewDimension::Texture2DArray; + case D3D12_DSV_DIMENSION_TEXTURE2DMS: return ResourceViewDimension::Texture2DMS; + case D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY: return ResourceViewDimension::Texture2DMSArray; + default: return ResourceViewDimension::Unknown; + } +} + +ResourceViewDimension ToResourceViewDimension(D3D12_SRV_DIMENSION dimension) { + switch (dimension) { + case D3D12_SRV_DIMENSION_TEXTURE1D: return ResourceViewDimension::Texture1D; + case D3D12_SRV_DIMENSION_TEXTURE1DARRAY: return ResourceViewDimension::Texture1DArray; + case D3D12_SRV_DIMENSION_TEXTURE2D: return ResourceViewDimension::Texture2D; + case D3D12_SRV_DIMENSION_TEXTURE2DARRAY: return ResourceViewDimension::Texture2DArray; + case D3D12_SRV_DIMENSION_TEXTURE2DMS: return ResourceViewDimension::Texture2DMS; + case D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY: return ResourceViewDimension::Texture2DMSArray; + case D3D12_SRV_DIMENSION_TEXTURE3D: return ResourceViewDimension::Texture3D; + case D3D12_SRV_DIMENSION_TEXTURECUBE: return ResourceViewDimension::TextureCube; + case D3D12_SRV_DIMENSION_TEXTURECUBEARRAY: return ResourceViewDimension::TextureCubeArray; + case D3D12_SRV_DIMENSION_BUFFER: return ResourceViewDimension::Buffer; + default: return ResourceViewDimension::Unknown; + } +} + +ResourceViewDimension ToResourceViewDimension(D3D12_UAV_DIMENSION dimension) { + switch (dimension) { + case D3D12_UAV_DIMENSION_TEXTURE1D: return ResourceViewDimension::Texture1D; + case D3D12_UAV_DIMENSION_TEXTURE1DARRAY: return ResourceViewDimension::Texture1DArray; + case D3D12_UAV_DIMENSION_TEXTURE2D: return ResourceViewDimension::Texture2D; + case D3D12_UAV_DIMENSION_TEXTURE2DARRAY: return ResourceViewDimension::Texture2DArray; + case D3D12_UAV_DIMENSION_TEXTURE3D: return ResourceViewDimension::Texture3D; + case D3D12_UAV_DIMENSION_BUFFER: return ResourceViewDimension::Buffer; + default: return ResourceViewDimension::Unknown; + } +} + +} // namespace + D3D12ResourceView::D3D12ResourceView() : m_viewType(ResourceViewType::ShaderResource) , m_format(Format::Unknown) @@ -63,8 +120,8 @@ void D3D12ResourceView::InitializeAsRenderTarget(ID3D12Device* device, ID3D12Res const D3D12_RENDER_TARGET_VIEW_DESC* desc, D3D12DescriptorHeap* heap, uint32_t slotIndex) { m_viewType = ResourceViewType::RenderTarget; - m_format = desc ? static_cast(desc->Format) : Format::Unknown; - m_dimension = ResourceViewDimension::Texture2D; + m_format = desc ? FromD3D12(desc->Format) : Format::Unknown; + m_dimension = desc ? ToResourceViewDimension(desc->ViewDimension) : ResourceViewDimension::Unknown; m_resource = resource; m_heap = heap; m_slotIndex = slotIndex; @@ -78,8 +135,8 @@ void D3D12ResourceView::InitializeAsDepthStencil(ID3D12Device* device, ID3D12Res const D3D12_DEPTH_STENCIL_VIEW_DESC* desc, D3D12DescriptorHeap* heap, uint32_t slotIndex) { m_viewType = ResourceViewType::DepthStencil; - m_format = desc ? static_cast(desc->Format) : Format::Unknown; - m_dimension = ResourceViewDimension::Texture2D; + m_format = desc ? FromD3D12(desc->Format) : Format::Unknown; + m_dimension = desc ? ToResourceViewDimension(desc->ViewDimension) : ResourceViewDimension::Unknown; m_resource = resource; m_heap = heap; m_slotIndex = slotIndex; @@ -93,8 +150,8 @@ void D3D12ResourceView::InitializeAsShaderResource(ID3D12Device* device, ID3D12R const D3D12_SHADER_RESOURCE_VIEW_DESC* desc, D3D12DescriptorHeap* heap, uint32_t slotIndex) { m_viewType = ResourceViewType::ShaderResource; - m_format = desc ? static_cast(desc->Format) : Format::Unknown; - m_dimension = desc ? static_cast(desc->ViewDimension) : ResourceViewDimension::Unknown; + m_format = desc ? FromD3D12(desc->Format) : Format::Unknown; + m_dimension = desc ? ToResourceViewDimension(desc->ViewDimension) : ResourceViewDimension::Unknown; m_resource = resource; m_heap = heap; m_slotIndex = slotIndex; @@ -108,8 +165,8 @@ void D3D12ResourceView::InitializeAsUnorderedAccess(ID3D12Device* device, ID3D12 const D3D12_UNORDERED_ACCESS_VIEW_DESC* desc, D3D12DescriptorHeap* heap, uint32_t slotIndex) { m_viewType = ResourceViewType::UnorderedAccess; - m_format = desc ? static_cast(desc->Format) : Format::Unknown; - m_dimension = desc ? static_cast(desc->ViewDimension) : ResourceViewDimension::Unknown; + m_format = desc ? FromD3D12(desc->Format) : Format::Unknown; + m_dimension = desc ? ToResourceViewDimension(desc->ViewDimension) : ResourceViewDimension::Unknown; m_resource = resource; m_heap = heap; m_slotIndex = slotIndex; diff --git a/engine/src/RHI/D3D12/D3D12Texture.cpp b/engine/src/RHI/D3D12/D3D12Texture.cpp index c085da52..374d800e 100644 --- a/engine/src/RHI/D3D12/D3D12Texture.cpp +++ b/engine/src/RHI/D3D12/D3D12Texture.cpp @@ -33,12 +33,41 @@ bool D3D12Texture::Initialize(ID3D12Device* device, const D3D12_RESOURCE_DESC& d return false; } + m_format = FromD3D12(desc.Format); + switch (desc.Dimension) { + case D3D12_RESOURCE_DIMENSION_TEXTURE1D: + m_textureType = TextureType::Texture1D; + break; + case D3D12_RESOURCE_DIMENSION_TEXTURE3D: + m_textureType = TextureType::Texture3D; + break; + case D3D12_RESOURCE_DIMENSION_TEXTURE2D: + default: + m_textureType = TextureType::Texture2D; + break; + } m_ownsResource = true; return true; } bool D3D12Texture::InitializeFromExisting(ID3D12Resource* resource, bool ownsResource) { m_resource = resource; + if (m_resource) { + const D3D12_RESOURCE_DESC desc = m_resource->GetDesc(); + m_format = FromD3D12(desc.Format); + switch (desc.Dimension) { + case D3D12_RESOURCE_DIMENSION_TEXTURE1D: + m_textureType = TextureType::Texture1D; + break; + case D3D12_RESOURCE_DIMENSION_TEXTURE3D: + m_textureType = TextureType::Texture3D; + break; + case D3D12_RESOURCE_DIMENSION_TEXTURE2D: + default: + m_textureType = TextureType::Texture2D; + break; + } + } m_ownsResource = ownsResource; return true; } @@ -76,6 +105,8 @@ bool D3D12Texture::InitializeFromData(ID3D12Device* device, ID3D12GraphicsComman return false; } m_ownsResource = true; + m_format = FromD3D12(format); + m_textureType = TextureType::Texture2D; textureDesc = m_resource->GetDesc(); UINT64 memorySizeUsed = 0; @@ -184,13 +215,22 @@ bool D3D12Texture::InitializeDepthStencil(ID3D12Device* device, uint32_t width, IID_PPV_ARGS(&m_resource) ); - return SUCCEEDED(hResult); + if (SUCCEEDED(hResult)) { + m_format = FromD3D12(format); + m_textureType = TextureType::Texture2D; + m_ownsResource = true; + return true; + } + + return false; } void D3D12Texture::Shutdown() { - if (m_ownsResource) { - m_resource.Reset(); - } + m_resource.Reset(); + m_state = ResourceStates::Common; + m_format = Format::Unknown; + m_textureType = TextureType::Texture2D; + m_ownsResource = false; } } // namespace RHI diff --git a/engine/src/RHI/OpenGL/OpenGLDevice.cpp b/engine/src/RHI/OpenGL/OpenGLDevice.cpp index a16fc9f4..324ee82f 100644 --- a/engine/src/RHI/OpenGL/OpenGLDevice.cpp +++ b/engine/src/RHI/OpenGL/OpenGLDevice.cpp @@ -24,6 +24,8 @@ #include "XCEngine/RHI/OpenGL/OpenGLDescriptorSet.h" #include "XCEngine/RHI/OpenGL/OpenGLPipelineLayout.h" #include "XCEngine/Debug/Logger.h" +#include +#include typedef const char* (WINAPI* PFNWGLGETEXTENSIONSSTRINGARBPROC)(HDC hdc); typedef BOOL (WINAPI* PFNWGLCHOOSEPIXELFORMATARBPROC)(HDC hdc, const int* piAttribIList, const FLOAT* pfAttribFList, UINT nMaxFormats, int* piFormats, UINT* nNumFormats); @@ -55,6 +57,76 @@ std::string NarrowAscii(const std::wstring& value) { return result; } +TextureType ResolveTextureType(uint32_t rawType) { + return static_cast(rawType); +} + +int ResolveTextureDepth(const TextureDesc& desc, TextureType textureType) { + switch (textureType) { + case TextureType::Texture3D: + return static_cast(desc.depth > 0 ? desc.depth : 1); + case TextureType::Texture2DArray: + return static_cast(desc.arraySize > 0 ? desc.arraySize : 1); + case TextureType::TextureCube: + case TextureType::TextureCubeArray: + return static_cast(desc.arraySize > 0 ? desc.arraySize : 6); + default: + return static_cast(desc.depth > 0 ? desc.depth : 1); + } +} + +std::string ToLowerAscii(std::string value) { + std::transform(value.begin(), value.end(), value.begin(), [](unsigned char ch) { + return static_cast(std::tolower(ch)); + }); + return value; +} + +uint32_t DetectVendorId(const char* vendor) { + const std::string lowerVendor = ToLowerAscii(vendor != nullptr ? vendor : ""); + if (lowerVendor.find("nvidia") != std::string::npos) { + return 0x10DE; + } + if (lowerVendor.find("amd") != std::string::npos || lowerVendor.find("ati") != std::string::npos) { + return 0x1002; + } + if (lowerVendor.find("intel") != std::string::npos) { + return 0x8086; + } + if (lowerVendor.find("microsoft") != std::string::npos) { + return 0x1414; + } + return 1; +} + +uint32_t HashRendererId(const char* renderer) { + const char* value = renderer != nullptr ? renderer : ""; + uint32_t hash = 2166136261u; + while (*value != '\0') { + hash ^= static_cast(*value++); + hash *= 16777619u; + } + return hash == 0 ? 1u : hash; +} + +bool IsSoftwareRenderer(const char* vendor, const char* renderer) { + const std::string lowerVendor = ToLowerAscii(vendor != nullptr ? vendor : ""); + const std::string lowerRenderer = ToLowerAscii(renderer != nullptr ? renderer : ""); + return lowerVendor.find("microsoft") != std::string::npos || + lowerRenderer.find("gdi generic") != std::string::npos || + lowerRenderer.find("software") != std::string::npos || + lowerRenderer.find("llvmpipe") != std::string::npos; +} + +uint64_t QuerySharedSystemMemoryBytes() { + MEMORYSTATUSEX status = {}; + status.dwLength = sizeof(status); + if (GlobalMemoryStatusEx(&status)) { + return status.ullTotalPhys; + } + return 0; +} + bool HasShaderPayload(const ShaderCompileDesc& desc) { return !desc.source.empty() || !desc.fileName.empty(); } @@ -423,6 +495,11 @@ bool OpenGLDevice::CreateContextForCurrentWindow() { m_deviceInfo.vendor = std::wstring(vendor ? vendor : "", vendor ? vendor + strlen(vendor) : nullptr); m_deviceInfo.renderer = std::wstring(renderer ? renderer : "", renderer ? renderer + strlen(renderer) : nullptr); m_deviceInfo.version = std::wstring(version ? version : "", version ? version + strlen(version) : nullptr); + m_deviceInfo.vendorId = DetectVendorId(vendor); + m_deviceInfo.deviceId = HashRendererId(renderer); + m_deviceInfo.isSoftware = IsSoftwareRenderer(vendor, renderer); + m_deviceInfo.sharedSystemMemory = QuerySharedSystemMemoryBytes(); + m_deviceInfo.dedicatedVideoMemory = m_deviceInfo.isSoftware ? 0ull : 1ull; GLint majorVersion = 0, minorVersion = 0; glGetIntegerv(GL_MAJOR_VERSION, &majorVersion); @@ -432,14 +509,19 @@ bool OpenGLDevice::CreateContextForCurrentWindow() { m_capabilities.majorVersion = majorVersion; m_capabilities.minorVersion = minorVersion; + m_capabilities.shaderModel = "GLSL " + std::to_string(majorVersion) + "." + std::to_string(minorVersion); m_capabilities.bSupportsGeometryShaders = true; - m_capabilities.bSupportsComputeShaders = GLVersion.major >= 4 && GLVersion.minor >= 3; - m_capabilities.bSupportsTessellation = GLVersion.major >= 4 && GLVersion.minor >= 1; + m_capabilities.bSupportsComputeShaders = (majorVersion > 4) || (majorVersion == 4 && minorVersion >= 3); + m_capabilities.bSupportsTessellation = (majorVersion > 4) || (majorVersion == 4 && minorVersion >= 1); m_capabilities.bSupportsExplicitMultiThreading = false; GLint maxTexSize = 0; glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTexSize); m_capabilities.maxTexture2DSize = static_cast(maxTexSize); + + GLint maxTexture3DSize = 0; + glGetIntegerv(GL_MAX_3D_TEXTURE_SIZE, &maxTexture3DSize); + m_capabilities.maxTexture3DSize = static_cast(maxTexture3DSize); GLint maxCubeSize = 0; glGetIntegerv(GL_MAX_CUBE_MAP_TEXTURE_SIZE, &maxCubeSize); @@ -462,6 +544,10 @@ bool OpenGLDevice::CreateContextForCurrentWindow() { glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &maxAttribs); m_capabilities.maxVertexAttribs = static_cast(maxAttribs); + GLint maxConstantBufferSize = 0; + glGetIntegerv(GL_MAX_UNIFORM_BLOCK_SIZE, &maxConstantBufferSize); + m_capabilities.maxConstantBufferSize = static_cast(maxConstantBufferSize); + GLint maxTextureUnits = 0; glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &maxTextureUnits); m_textureUnitAllocator->Initialize(static_cast(maxTextureUnits)); @@ -544,26 +630,31 @@ RHITexture* OpenGLDevice::CreateTexture(const TextureDesc& desc) { auto* texture = new OpenGLTexture(); OpenGLTextureType type = OpenGLTextureType::Texture2D; - switch (desc.textureType) { - case 0: + switch (ResolveTextureType(desc.textureType)) { + case TextureType::Texture1D: type = OpenGLTextureType::Texture1D; break; - case 2: + case TextureType::Texture2DArray: type = OpenGLTextureType::Texture2DArray; break; - case 3: + case TextureType::Texture3D: type = OpenGLTextureType::Texture3D; break; - case 4: + case TextureType::TextureCube: type = OpenGLTextureType::TextureCube; break; + case TextureType::TextureCubeArray: + type = OpenGLTextureType::TextureCubeArray; + break; + case TextureType::Texture2D: default: type = OpenGLTextureType::Texture2D; break; } OpenGLFormat format = ToOpenGLTextureFormat(static_cast(desc.format)); - texture->Initialize(type, desc.width, desc.height, desc.depth, desc.mipLevels, format, nullptr); + const int depth = ResolveTextureDepth(desc, ResolveTextureType(desc.textureType)); + texture->Initialize(type, desc.width, desc.height, depth, desc.mipLevels, format, nullptr); texture->SetFormat(static_cast(desc.format)); return texture; } @@ -579,27 +670,32 @@ RHITexture* OpenGLDevice::CreateTexture(const TextureDesc& desc, const void* ini auto* texture = new OpenGLTexture(); OpenGLTextureType type = OpenGLTextureType::Texture2D; - switch (desc.textureType) { - case 0: + switch (ResolveTextureType(desc.textureType)) { + case TextureType::Texture1D: type = OpenGLTextureType::Texture1D; break; - case 2: + case TextureType::Texture2DArray: type = OpenGLTextureType::Texture2DArray; break; - case 3: + case TextureType::Texture3D: type = OpenGLTextureType::Texture3D; break; - case 4: + case TextureType::TextureCube: type = OpenGLTextureType::TextureCube; break; + case TextureType::TextureCubeArray: + type = OpenGLTextureType::TextureCubeArray; + break; + case TextureType::Texture2D: default: type = OpenGLTextureType::Texture2D; break; } OpenGLFormat format = ToOpenGLTextureFormat(static_cast(desc.format)); + const int depth = ResolveTextureDepth(desc, ResolveTextureType(desc.textureType)); - if (!texture->Initialize(type, desc.width, desc.height, desc.depth, desc.mipLevels, format, initialData)) { + if (!texture->Initialize(type, desc.width, desc.height, depth, desc.mipLevels, format, initialData)) { delete texture; return nullptr; } @@ -941,7 +1037,7 @@ void* OpenGLDevice::GetNativeDevice() { } void* OpenGLDevice::GetNativeHandle() const { - return nullptr; + return m_hglrc; } } // namespace RHI diff --git a/engine/src/RHI/OpenGL/OpenGLTexture.cpp b/engine/src/RHI/OpenGL/OpenGLTexture.cpp index a6cfa8e9..ffd08a95 100644 --- a/engine/src/RHI/OpenGL/OpenGLTexture.cpp +++ b/engine/src/RHI/OpenGL/OpenGLTexture.cpp @@ -42,8 +42,10 @@ bool OpenGLTexture::Initialize(OpenGLTextureType type, int width, int height, in } } else if (type == OpenGLTextureType::Texture1D) { glTexImage1D(GL_TEXTURE_1D, 0, internalFormat, width, 0, glFormat, glType, data); - } else if (type == OpenGLTextureType::Texture3D) { - glTexImage3D(GL_TEXTURE_3D, 0, internalFormat, width, height, depth, 0, glFormat, glType, data); + } else if (type == OpenGLTextureType::Texture3D || + type == OpenGLTextureType::Texture2DArray || + type == OpenGLTextureType::TextureCubeArray) { + glTexImage3D(target, 0, internalFormat, width, height, depth, 0, glFormat, glType, data); } else { glTexImage2D(target, 0, internalFormat, width, height, 0, glFormat, glType, data); } @@ -54,8 +56,17 @@ bool OpenGLTexture::Initialize(OpenGLTextureType type, int width, int height, in glTexParameteri(target, GL_TEXTURE_MIN_FILTER, GL_LINEAR); } glTexParameteri(target, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(target, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(target, GL_TEXTURE_WRAP_T, GL_REPEAT); + const GLint wrapMode = (type == OpenGLTextureType::TextureCube || type == OpenGLTextureType::TextureCubeArray) + ? GL_CLAMP_TO_EDGE + : GL_REPEAT; + glTexParameteri(target, GL_TEXTURE_WRAP_S, wrapMode); + glTexParameteri(target, GL_TEXTURE_WRAP_T, wrapMode); + if (type == OpenGLTextureType::Texture3D || + type == OpenGLTextureType::Texture2DArray || + type == OpenGLTextureType::TextureCube || + type == OpenGLTextureType::TextureCubeArray) { + glTexParameteri(target, GL_TEXTURE_WRAP_R, wrapMode); + } glBindTexture(target, 0); return true; @@ -177,7 +188,11 @@ void OpenGLTexture::SetWrapping(int wrapS, int wrapT, int wrapR) { glBindTexture(target, m_texture); glTexParameteri(target, GL_TEXTURE_WRAP_S, wrapS); glTexParameteri(target, GL_TEXTURE_WRAP_T, wrapT); - if (wrapR >= 0 && (m_type == OpenGLTextureType::Texture3D || m_type == OpenGLTextureType::TextureCube)) { + if (wrapR >= 0 && + (m_type == OpenGLTextureType::Texture3D || + m_type == OpenGLTextureType::Texture2DArray || + m_type == OpenGLTextureType::TextureCube || + m_type == OpenGLTextureType::TextureCubeArray)) { glTexParameteri(target, GL_TEXTURE_WRAP_R, wrapR); } glBindTexture(target, 0); diff --git a/engine/third_party/stb/stb_image.cpp b/engine/third_party/stb/stb_image.cpp index 065b33ab..7a560c5d 100644 --- a/engine/third_party/stb/stb_image.cpp +++ b/engine/third_party/stb/stb_image.cpp @@ -1,5 +1,4 @@ -#include "fmpch.hpp" #define STB_IMAGE_IMPLEMENTATION #include "stb_image.h" #define STB_IMAGE_WRITE_IMPLEMENTATION -#include "stb_image_write.h" \ No newline at end of file +#include "stb_image_write.h" diff --git a/imgui.ini b/imgui.ini deleted file mode 100644 index 60dcd21a..00000000 --- a/imgui.ini +++ /dev/null @@ -1,55 +0,0 @@ -[Window][Hierarchy] -Pos=0,24 -Size=189,485 -Collapsed=0 -DockId=0x00000003,0 - -[Window][Scene] -Pos=191,24 -Size=803,485 -Collapsed=0 -DockId=0x00000005,0 - -[Window][Game] -Pos=191,24 -Size=803,485 -Collapsed=0 -DockId=0x00000005,1 - -[Window][Inspector] -Pos=996,24 -Size=268,485 -Collapsed=0 -DockId=0x00000006,0 - -[Window][Console] -Pos=0,511 -Size=1264,170 -Collapsed=0 -DockId=0x00000002,0 - -[Window][Project] -Pos=0,511 -Size=1264,170 -Collapsed=0 -DockId=0x00000002,1 - -[Window][MainDockspace] -Pos=0,0 -Size=1264,681 -Collapsed=0 - -[Window][Debug##Default] -Pos=60,60 -Size=400,400 -Collapsed=0 - -[Docking][Data] -DockSpace ID=0x8D32E0A4 Window=0x1C358F53 Pos=0,24 Size=1264,657 Split=Y - DockNode ID=0x00000001 Parent=0x8D32E0A4 SizeRef=1264,509 Split=X - DockNode ID=0x00000003 Parent=0x00000001 SizeRef=189,509 Selected=0xBABDAE5E - DockNode ID=0x00000004 Parent=0x00000001 SizeRef=1073,509 Split=X - DockNode ID=0x00000005 Parent=0x00000004 SizeRef=803,509 CentralNode=1 Selected=0xE601B12F - DockNode ID=0x00000006 Parent=0x00000004 SizeRef=268,509 Selected=0x36DC96AB - DockNode ID=0x00000002 Parent=0x8D32E0A4 SizeRef=1264,170 Selected=0x9C21DE82 - diff --git a/project/.xceditor/imgui_layout.ini b/project/.xceditor/imgui_layout.ini new file mode 100644 index 00000000..d5facc0b --- /dev/null +++ b/project/.xceditor/imgui_layout.ini @@ -0,0 +1,64 @@ +[Window][Hierarchy] +Pos=0,33 +Size=189,758 +Collapsed=0 +DockId=0x00000003 + +[Window][Scene] +Pos=191,33 +Size=1702,758 +Collapsed=0 +DockId=0x00000005 + +[Window][Game] +Pos=191,33 +Size=1702,758 +Collapsed=0 +DockId=0x00000005 + +[Window][Inspector] +Pos=1895,33 +Size=665,758 +Collapsed=0 +DockId=0x00000006 + +[Window][Console] +Pos=0,793 +Size=2560,558 +Collapsed=0 +DockId=0x00000002 + +[Window][Project] +Pos=0,793 +Size=2560,558 +Collapsed=0 +DockId=0x00000002 + +[Window][MainDockspace] +Pos=0,0 +Size=2560,1351 +Collapsed=0 + +[Window][Debug##Default] +Pos=48,48 +Size=320,320 +Collapsed=0 + +[Window][##MainMenuBar] +Size=1262,33 +Collapsed=0 + +[Window][Create Folder] +Pos=1060,620 +Size=440,110 +Collapsed=0 + +[Docking][Data] +DockSpace ID=0xA11B73D6 Window=0x1C358F53 Pos=0,33 Size=2560,1318 Split=Y + DockNode ID=0x00000001 Parent=0xA11B73D6 SizeRef=1262,758 Split=X + DockNode ID=0x00000003 Parent=0x00000001 SizeRef=189,503 NoTabBar=1 NoWindowMenuButton=1 NoCloseButton=1 Selected=0xBABDAE5E + DockNode ID=0x00000004 Parent=0x00000001 SizeRef=1071,503 Split=X + DockNode ID=0x00000005 Parent=0x00000004 SizeRef=1702,503 CentralNode=1 NoTabBar=1 NoWindowMenuButton=1 NoCloseButton=1 Selected=0xE601B12F + DockNode ID=0x00000006 Parent=0x00000004 SizeRef=665,503 NoTabBar=1 NoWindowMenuButton=1 NoCloseButton=1 Selected=0x36DC96AB + DockNode ID=0x00000002 Parent=0xA11B73D6 SizeRef=1262,558 NoTabBar=1 NoWindowMenuButton=1 NoCloseButton=1 Selected=0x9C21DE82 + diff --git a/tests/OpenGL/package/glm/glm/detail/func_trigonometric_simd.inl b/project/Assets/NewFolder4/Models/Character.fbx similarity index 100% rename from tests/OpenGL/package/glm/glm/detail/func_trigonometric_simd.inl rename to project/Assets/NewFolder4/Models/Character.fbx diff --git a/project/Assets/NewFolder4/Scenes/Main.unity b/project/Assets/NewFolder4/Scenes/Main.unity new file mode 100644 index 00000000..c0baca18 --- /dev/null +++ b/project/Assets/NewFolder4/Scenes/Main.unity @@ -0,0 +1,30 @@ +# XCEngine Scene File +scene=Main Scene +active=1 + +gameobject_begin +id=1 +name=Main Camera +active=1 +parent=0 +transform=position=0,0,0;rotation=0,0,0,1;scale=1,1,1; +component=Camera;projection=0;fov=60;orthoSize=5;near=0.1;far=1000;depth=0;primary=1;clearColor=0.192,0.302,0.475,1; +gameobject_end + +gameobject_begin +id=2 +name=Directional Light +active=1 +parent=0 +transform=position=0,0,0;rotation=0,0,0,1;scale=1,1,1; +component=Light;type=0;color=0.612565,0.327129,0.327129,1;intensity=4;range=0.001;spotAngle=30;shadows=0; +gameobject_end + +gameobject_begin +id=3 +name=GameObject +active=1 +parent=0 +transform=position=0,0,0;rotation=0,0,0,1;scale=1,1,1; +gameobject_end + diff --git a/project/Assets/NewFolder4/Scenes/Main.xc b/project/Assets/NewFolder4/Scenes/Main.xc new file mode 100644 index 00000000..045693a3 --- /dev/null +++ b/project/Assets/NewFolder4/Scenes/Main.xc @@ -0,0 +1,54 @@ +# XCEngine Scene File +scene=Main Scene +active=1 + +gameobject_begin +id=2 +uuid=10036986138272728490 +name=4 +active=1 +parent=0 +transform=position=0,0,0;rotation=0,0,0,1;scale=1,1,1; +component=Light;type=0;color=0.612565,0.327129,0.327129,1;intensity=15.4;range=0.001;spotAngle=30;shadows=0; +component=Camera;projection=0;fov=123.4;orthoSize=12.1;near=1.86;far=1030.1;depth=9.5;primary=1;clearColor=0.192,0.302,0.475,1; +gameobject_end + +gameobject_begin +id=3 +uuid=14971148148602552176 +name=GameObject +active=1 +parent=0 +transform=position=0,0,0;rotation=-0.257926,-0.0205041,0.160241,0.952563;scale=2.4,3.6,1; +component=Light;type=0;color=1,1,1,1;intensity=13.6;range=10;spotAngle=30;shadows=1; +component=Camera;projection=0;fov=69.3;orthoSize=5;near=0.001;far=1001.9;depth=5.4;primary=1;clearColor=0.38882,0.493362,0.657778,1; +gameobject_end + +gameobject_begin +id=10 +uuid=198935724730254930 +name=Light +active=1 +parent=0 +transform=position=0,-1.9,0;rotation=0.0670541,0.137716,0.0909146,0.984008;scale=1,1,1; +gameobject_end +gameobject_begin +id=1 +uuid=8308231963777163730 +name=Main Camera +active=1 +parent=10 +transform=position=-4.7,0,0;rotation=-0.257815,-0.140875,-0.220134,0.930176;scale=4.7,2.8,1; +gameobject_end + +gameobject_begin +id=11 +uuid=15155914862689195892 +name=GameObject +active=1 +parent=0 +transform=position=0,0,0;rotation=0,0,0,1;scale=1,1,1; +component=Camera;projection=0;fov=47.7;orthoSize=5;near=0.67;far=991.2;depth=0;primary=1;clearColor=0.192,0.302,0.475,1; +component=Light;type=1;color=0.662222,0.170706,0.170706,1;intensity=1;range=10;spotAngle=30;shadows=0; +gameobject_end + diff --git a/project/Assets/NewFolder4/Scenes/Untitled Scene.xc b/project/Assets/NewFolder4/Scenes/Untitled Scene.xc new file mode 100644 index 00000000..5c7f90b8 --- /dev/null +++ b/project/Assets/NewFolder4/Scenes/Untitled Scene.xc @@ -0,0 +1,13 @@ +# XCEngine Scene File +scene=Untitled Scene +active=1 + +gameobject_begin +id=4 +name=GameObject +active=1 +parent=0 +transform=position=0,0,0;rotation=0.0087262,0.0087262,-7.61524e-05,0.999924;scale=1,1,1; +component=Camera;projection=1;fov=60;orthoSize=0.001;near=0.001;far=0.002;depth=-2;primary=1;clearColor=0.192,0.302,0.475,1; +gameobject_end + diff --git a/project/Assets/Scenes/Main.xc b/project/Assets/Scenes/Main.xc index e2a9f9c0..2bd98b4c 100644 --- a/project/Assets/Scenes/Main.xc +++ b/project/Assets/Scenes/Main.xc @@ -9,7 +9,7 @@ name=Main Camera active=1 parent=0 transform=position=0,0,0;rotation=0,0,0,1;scale=1,1,1; -component=Camera;projection=0;fov=45;orthoSize=5;near=0.1;far=100;depth=0;primary=1;clearColor=0.05,0.05,0.08,1; +component=Camera;projection=0;fov=45;orthoSize=5;near=0.1;far=100;depth=0;primary=1;clearColor=1,1,1,1; gameobject_end gameobject_begin @@ -20,41 +20,37 @@ active=1 parent=0 transform=position=0,0.08,3;rotation=0,0,0,1;scale=1,1,1; gameobject_end - gameobject_begin id=3 uuid=9855370671540411784 name=BackpackRotateY active=1 parent=2 -transform=position=0,0,0;rotation=0,-0.174108138,0,0.984726539;scale=1,1,1; +transform=position=0,0,0;rotation=0,-0.174108,0,0.984727;scale=1,1,1; gameobject_end - gameobject_begin id=4 uuid=14568936532392398358 name=BackpackRotateX active=1 parent=3 -transform=position=0,0,0;rotation=-0.0898785492,0,0,0.995952733;scale=1,1,1; +transform=position=0,0,0;rotation=-0.0898786,0,0,0.995953;scale=1,1,1; gameobject_end - gameobject_begin id=5 uuid=7319598685716776031 name=BackpackScale active=1 parent=4 -transform=position=0,0,0;rotation=0,0,0,1;scale=0.389120452,0.389120452,0.389120452; +transform=position=0,0,0;rotation=0,0,0,1;scale=0.38912,0.38912,0.38912; gameobject_end - gameobject_begin id=6 uuid=14495577888798577643 name=BackpackMesh active=1 parent=5 -transform=position=0.048938,-0.5718905,-0.943127;rotation=0,0,0,1;scale=1,1,1; +transform=position=0.048938,-0.57189,-0.943127;rotation=0,0,0,1;scale=1,1,1; component=MeshFilter;mesh=Assets/Models/backpack/backpack.obj; component=MeshRenderer;materials=;castShadows=1;receiveShadows=1;renderLayer=0; gameobject_end diff --git a/tests/OpenGL/package/glm/glm/ext/scalar_packing.inl b/project/Assets/Scripts/Textures/Grass.png similarity index 100% rename from tests/OpenGL/package/glm/glm/ext/scalar_packing.inl rename to project/Assets/Scripts/Textures/Grass.png diff --git a/tests/OpenGL/package/glm/glm/ext/vector_packing.inl b/project/Assets/Scripts/Textures/PlayerController.cs similarity index 100% rename from tests/OpenGL/package/glm/glm/ext/vector_packing.inl rename to project/Assets/Scripts/Textures/PlayerController.cs diff --git a/tests/OpenGL/package/glm/glm/gtc/quaternion_simd.inl b/project/Assets/Scripts/Textures/Stone.png similarity index 100% rename from tests/OpenGL/package/glm/glm/gtc/quaternion_simd.inl rename to project/Assets/Scripts/Textures/Stone.png diff --git a/project/Project.xcproject b/project/Project.xcproject new file mode 100644 index 00000000..5aeb8a79 --- /dev/null +++ b/project/Project.xcproject @@ -0,0 +1,3 @@ +version=1 +name=project +startup_scene=Assets/Scenes/Main.xc diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 9828313d..4e92dd31 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -31,20 +31,18 @@ enable_testing() # Test Subdirectories # ============================================================ -add_subdirectory(math) -add_subdirectory(core) -add_subdirectory(containers) -add_subdirectory(memory) -add_subdirectory(threading) -add_subdirectory(debug) -add_subdirectory(components) -add_subdirectory(scene) -add_subdirectory(scripting) +add_subdirectory(Core) +add_subdirectory(Memory) +add_subdirectory(Threading) +add_subdirectory(Debug) +add_subdirectory(Components) +add_subdirectory(Scene) +add_subdirectory(Scripting) add_subdirectory(Rendering) -add_subdirectory(rhi) -add_subdirectory(resources) -add_subdirectory(input) -add_subdirectory(editor) +add_subdirectory(RHI) +add_subdirectory(Resources) +add_subdirectory(Input) +add_subdirectory(Editor) # ============================================================ # Test Summary diff --git a/tests/Core/Asset/CMakeLists.txt b/tests/Core/Asset/CMakeLists.txt index b0c6eab8..209308ef 100644 --- a/tests/Core/Asset/CMakeLists.txt +++ b/tests/Core/Asset/CMakeLists.txt @@ -28,7 +28,7 @@ target_link_libraries(asset_tests target_include_directories(asset_tests PRIVATE ${CMAKE_SOURCE_DIR}/engine/include - ${CMAKE_SOURCE_DIR}/tests/fixtures + ${CMAKE_SOURCE_DIR}/tests/Fixtures ) include(GoogleTest) diff --git a/tests/Core/IO/CMakeLists.txt b/tests/Core/IO/CMakeLists.txt index 82ca3b8d..22ef4c03 100644 --- a/tests/Core/IO/CMakeLists.txt +++ b/tests/Core/IO/CMakeLists.txt @@ -27,7 +27,7 @@ target_link_libraries(io_tests target_include_directories(io_tests PRIVATE ${CMAKE_SOURCE_DIR}/engine/include - ${CMAKE_SOURCE_DIR}/tests/fixtures + ${CMAKE_SOURCE_DIR}/tests/Fixtures ) include(GoogleTest) diff --git a/tests/Input/CMakeLists.txt b/tests/Input/CMakeLists.txt index aa1763b3..1f65986c 100644 --- a/tests/Input/CMakeLists.txt +++ b/tests/Input/CMakeLists.txt @@ -24,7 +24,7 @@ target_link_libraries(input_tests target_include_directories(input_tests PRIVATE ${CMAKE_SOURCE_DIR}/engine/include - ${CMAKE_SOURCE_DIR}/tests/fixtures + ${CMAKE_SOURCE_DIR}/tests/Fixtures ) include(GoogleTest) diff --git a/tests/OpenGL/AGENT.md b/tests/OpenGL/AGENT.md deleted file mode 100644 index 85152b16..00000000 --- a/tests/OpenGL/AGENT.md +++ /dev/null @@ -1,54 +0,0 @@ -# OpenGL Test Agent Instructions - -## Quick Start - -```bash -# Build -cmake --build build --config Debug --target XCRender - -# Run test -./build/tests/OpenGL/Debug/run.bat - -# Or manually: -cd build/tests/OpenGL/Debug -XCRender.exe -python compare_ppm.py screenshot.ppm GT.ppm 5 -``` - -## Test Details - -- **Resolution**: 1280x720 -- **Screenshot Frame**: 30 -- **Reference Image**: GT.ppm -- **Comparison Threshold**: 5 pixels - -## Build Target - -- Target name: `XCRender` -- Output: `build/tests/OpenGL/Debug/XCRender.exe` - -## Test Output - -- Log file: `OpenGL_engine_log.txt` -- Screenshot: `screenshot.ppm` - -## Dependencies - -- GLFW 3.3 -- GLAD -- Assimp -- GLM -- stb_image - -## Resources - -- Model: `res/models/backpack/backpack.obj` -- Shaders: `Shaders/vertexshader.glsl`, `Shaders/fragmentshader.glsl` - -## Troubleshooting - -| Issue | Solution | -|-------|----------| -| Black screen | Check shader compilation errors in log | -| No textures | Verify res/models/ directory exists | -| Model not loading | Check model file path | diff --git a/tests/OpenGL/CMakeLists.txt b/tests/OpenGL/CMakeLists.txt deleted file mode 100644 index 7102fa69..00000000 --- a/tests/OpenGL/CMakeLists.txt +++ /dev/null @@ -1,47 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -project(XCRender) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -if(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY) - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) -endif() - -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/package/include/) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/package/glm/) -include_directories(${CMAKE_SOURCE_DIR}/engine/include) - -link_directories(${CMAKE_CURRENT_SOURCE_DIR}/package/lib/) - -file(GLOB copyResources "${CMAKE_CURRENT_SOURCE_DIR}/Shaders" "${CMAKE_CURRENT_SOURCE_DIR}/res") -file(COPY ${copyResources} DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Debug) - -file(GLOB assimpDll "${CMAKE_CURRENT_SOURCE_DIR}/package/dll/assimp-vc143-mt.dll") -file(COPY ${assimpDll} DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Debug) - -add_executable( - XCRender - main.cpp - ./package/src/glad.c -) - -target_link_libraries(XCRender - PRIVATE - glfw3.lib - assimp-vc143-mt.lib - XCEngine -) - -add_custom_command(TARGET XCRender POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different - ${CMAKE_CURRENT_SOURCE_DIR}/compare_ppm.py - $/compare_ppm.py -) - -add_custom_command(TARGET XCRender POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different - ${CMAKE_CURRENT_SOURCE_DIR}/GT.ppm - $/GT.ppm -) \ No newline at end of file diff --git a/tests/OpenGL/GT.ppm b/tests/OpenGL/GT.ppm deleted file mode 100644 index 85a8cf8d..00000000 --- a/tests/OpenGL/GT.ppm +++ /dev/null @@ -1,44212 +0,0 @@ -P6 -1280 720 -255 - - -  -        -      -  $   %  - -                    - -   - -   -   -   - -   - - -     -  - - - -          -  -            -  -        -         -   -  - -  -   -  -    - -   -       - -   -  -  - - -  -    -     -   - - -   - -       -         -   - -       - -          - -  - -  - - - -     - -    -   - - - - - - - - -          - -   -                            -                                                  -        -      -  -    - - - - -     - - - - - - - - - -   -    -      -   - -  -                     - -   -   -  - -    - -   -   -                      - - -        - -  - - - - - - - - - - -  - - - - - - -  -      - -  -      - -   ## !##$&$%&#$%!!"#""$!"$   -  - - - -    - -     -   $  "  - -         - - - - - - -    -     -  - - -  - -    - -   -   -  - -   -        -  -  - - -      -  -     -                -    -        -          -  - - -    - -  - -  - -    -    -     -  -     -   -      - - -  -     -  - -     -   - - - -  - - - -  - -   - - -   - - - -    - - - - -          -        -     -   -                                                                                         -  -  -  -         - - - - - - - - - -   -         -  -  - - -         -           - -  - -   - -  -  -  - "!                         -          -       - - - - -    - - -  -     -    - - -  -  -  - -    ##&')##%$%'%%'!!#    - -   - -    -      -   $      -    -   - -  - -  - - - - - - -   - -  -  - - -    -   - -        -  - -  -       -  -  - - -       -  -  -   -             -     - -   -   -    -     -         - -  - - - - - -     - - -  - -   -        -     -   -   - -   - - -   -   - - - - -  -  - -    - - - - - - - - -    - - -    - -    - -      -         -            -   -   -                                                                       -  -  -           - -  - - - - - - - - - - -           -  - - - -          -     -       - -        - -  - - -   !     -                          - -   - -       -     -    - -    -      -  - - -   - - ##'')""$##%$%'"#$  - -  - -             #    - -    - - - - - - - - -       -    -       -      - - - - - - -     - - -  - -    -   -  - - - - -   -     - -   -     -           -  -  - -      -   -       -     - -   - - - -     -  -   - - - - - - - -  - -   -          -     - - - - -    - - -   -  -     - - - - -   - - - - - - - - - - -   - - -   - -   -                 -  -   -    -                                                                                    - - - -  -  - -   -      -  - -  - - - -  - - - -   -    -        - -  - -                           - - -    -!                           - -      -  - -    -       -    -  - -  ##$%'$$&$%'%%'$%'"#%  - -  -    -  - -     !  -     - - -   - -  - -  - - -   -  -    -         -   - - - -   -     - - -  - -  -  -  - -   - -          - - - - -   - -  - -     -  -  -  - -   -  - - - -         -   - -   -  - -  -  -   -      - - - - - -   - - -  - -  -   -    -   -    - -   -    -   -  -  -     - -      - -  - - - - - - - -     -      - -  -    -              -                                                                                  -    - -       - -     - - - - - - -   - -  -   -   -         -  - -                            - -      - -                      -          -  - -  -        - - - -    - - # !"&')'')$%'#$&"#$ "  - -  -    - -   -       -  - - - - -       -    - -  - - -    -   -   -            -      - - -      -  -   - -   -        -  - -  - -   -  -   - - -        - - -     -     -  - - - -        -    - - -  - -    - - -  - -   -    - - -    -  -   -  - -  - -   - -  -    - -     -  -  -   - - -      -     - - - - -  - - - - - - - - -    -   -                                                                                                  -  -      - -   -  -     - -   - - - -   - -  -     -   -         - -                          - - -    - -  -  -                -    - - - -   - -                   -   - - - - - - !&&($$&$$&##%!"# "  - - - -   - - - -    !  -  - - - -    - -   - - - -   - - - - -   -  -    -     - -  - - -        - -      - - -  - - - -               -  - -   - -         - -    -        -  - -   - -        -        - -   - -   -   -   -  - - -  - -  -  - -  - - -      - -  - -  -     - -  -   -   -  -   -   -     - - - - -  - - - -  - - - -    -                                                                                                          - - - - - -    - -  -   - - -  - - - -    -  - - - -  -   -  -            -                            - -       -              -  -      - - -  -       - - -          -        - -   - - - -  - !$$&#$&'')"#%! !# - -   -    -      !   -     - - - - - -       - - - -   -   -        -    -    -    - - -   -  -  -  -  -  - - -        -         -  -     - - - -    -         -  -  - -                    - -  - -   -   - - -  - - -   -   -   - - -      - -  - -          -   -     -  -   - - - - - - - -  - - - - - - - -  - -   -  - -       -         -                                                                                         -   - - - -  - -  - - - - -     - - -  - -   -  - -  -   -   - -            -                               -      -  -   -            - -  - -  -     - -  - -   -   -   -          -           - -   -  - -      "!#$&#$%  - -    -  -   -  #    - -   - - - - - - -  -  -  - -   - - -  - - -    -     -   -   -      -  -  -  -   -  - -  -  -  - - -  -    -   -  -  - - -    - -  -   -        -  - -     -   - - -    -    -            - -   - -  - -   -  -  - -   -   -    - - - - -     -   -          - - -     - -  -   - - - - - -  -  - - - - - - -    -   -   -   -                  -                  -                                                                       -   - -    - - - - -  -    -  -  -        -     - - - -             -                   -          - -  -  -  -   - -           - - - -  -   -   -   - -  - -  - -  -     -   - -     -  -  -     -    -  -   - - -   - -   #))+"#$    -   - -   -     "   - -  - -  - - - -   - -    -  -   -   - -    -   -  -    -     -  -  - -  - - -   -  -  -  -   -   -       -   - - - -   -  -   -   -  -      -  -             -                  - - -      -   -  -   - -  -  - - - - - - -  -         -  -    - - - -   -  -   - - - - -   -   - - - - - - - - -   - - -     - - -   - -       -                             -                                                                   -  - - -   -   -   - - -   - -   - - -  -     - - - -     - -     -      - -                         -  -         - - -   -      -         - -    -     -  -  - - -  -  - - - -    - -  -  - -    -  - - - -   - - - - - - - -  - -     - -  - # !#   -   -     - - !  -    - -  - - - - - -   - - -  - - - - - - - -  - -   - - -         -      -  -  -   - -   - -  - -  -  - -        - - -   - - - - - - - -   -  -        -  - -    -   - -    -            - - -   -        -    - -     - - - -   - -       - - - - -  - - - -    - -    - - -   - - - -     -  - -  -     - - - -  -     - -        -             -                                                                                  -      -  -  -   -     - - - -  -   - - -   - -     -  - - - - -     -    -                                  - -  - -   -  - -        -     -    -     - - - - -        -   - -    - - - - -  - -  - - - - - - - - -        - - -   # '()!    -  -    -  -   -   -    - -    - - -  -     -     -  - -   -  -  -  -   - -  - -   -  -      -  -    -  -   - -   -  - -   - - -      -   -  -  -    -  -  -   - -                     -                  - - -   -  -       - -      -    - -   - -   - -  - - - -  - - -  - -  -  - - - -  -  -   -     -  -  - -  -    - -    - - -  -          - - -     - -        - -                                                                                 -     - -   -  -  - - -  - -  -  -  - - - -  - -  -    -  - - - -  -   - - - - -     -    -                                 -   -    -  -       -   -   -  -     -   - - -  -          -  - - - - - -    -  - - - - -   -           $!#!  !   -   -              - -  -  -  -   - - - - - - -  - - -  -  -  -   - -  -    -    -  - -  -  - - - - - - -   - - -        - -   - -       -       - - -  - -  -  -              -  - - -         -      -            - -  - -  -  - -    -   - -   - -  - - - - - - - -   - - - -   - - - - - -     -  - - - - - -           - - - - - - -   - - -    - -  -     -  - - - - - - -    -   -      -     -                                                -                   -       -  -         - -   -  -   -  - -   - - - -  - -  -  - - -  - - - -      -      -    -                                  -         -       -  -  -  -  -       -  -   -        -   - - -  - - -    - - - - - - -  -    -     -  -  &"  $!   - -   -   -   -    -   -  -   -  -  - - - - -   - -  - -  -  -   - -    -   -     - - -    - - - - - - -  -  - - -    -   -  -   -       -    -    -  - - -    -            - -          - - -  -    -         - -    -  -      -  - -    - -   - -   - - -   -   - - - - - -  - -     -  - - - -  -  -     -   - - - - -  -  - - -  - - -     -  -   -  -     -    -  - -  - -      -     -               -                                                    -        - -       -   - -   -  - -  -  -   -   - - -    -  - -  - - -  - -    - -      -                          -           - - !            - - -  -  - - -           - -   -    - -     -   - - -   -   -              -  - -  "!  "$ - - -        - "   - -  -    -  - -  -  -  -   -   - - -  - - -   -    -   -  -    - -  - -  - - -  - - -  -  - - -  -  -  -  - -  -          -   - " -   - - - - - -               - -  -        - -   -             - -       - - -   -   -     -  - - -   - - - - -     -  -  -   -    - -  -  -  -   -      - -  -    - - -  - - -  -   - - - - -   -  -    -    -    -   -      -   -                   -              -              -                      - -    -    -   -      - - -  -  - - -  - -   -  - -  - -    -   -  - -  - -       - -    - -     - -                               - -  !                - - - -   - -  -       - -    -  - - -  - - - - - -   - -     -                - - - -  "!"# !"  - -         -"   -   -  -  -  - - -  -   - -      - - - -  -  -    -   - -  - - - - - - - - -  - - -  -  - - -  -  - - -   -  -             !  -  -  - -  - - - -                          -   - -    -     - -  -  - -  - - - - - - -        -     -  -  -   - - - -   - -  -   -  -  -   -   -  -  -   - - -   -    - -  - - - -   - -  - -  - - - - - - - - -  -   - -   -   -      -             -                           - -          - -                     - - -    -            - - - -  - - - - - - - - - -   -  - - -    -  - -      - - - -         -  -                                    -        - -          - - - -      - -    - -  - -  - - - -  - -   - - -       - -   -   -    -  -     - -   -   -   !!$#$   -  -   -   - - -!    -   - - -  -  -   -       - - -  -  - -    -    -  - - - - - - - - -   - - -  -   -  -   - - -   -  -  - -          - "  - -     - - - -                          - -    -          -  -   -           -      -  -    - -  -   - -  - -    -       -  -     - - - -  -  - -  -   - - - - - - -  - - -   - -  - - -       - - -   -  -  -   -      -       -          -                  - -        -  - -      - -            -  - -                 - - - - - -  - - -    - -   - - - - - - - -   -  -  -   -   -  -       -                                        -         -         - -  - - -       -  -  -  -  - -  - -   -  -   -  -  -    - -   -       -   -   - - - - -   - -  !!#%$' - - -   -     !    - -  - - - - -  -   -          - -     -      -   - -   -     - -  - - -   - -    -  - -   - - - - -         -  -  -  - -  - - - - - -                          -     -     - - -  -   -       -        -    - - - - -   - -      - - -      -     - -       -  - -  - - -  -   -  -  - - - - -  -  -  - -   -  - -  -    -    -   -  - -  -    -                 -    -               -   -    -   -       -             -  - -       -    -   -   -  - - -  - - -     - -   - - - - -  - -  -   -   - - -  - - - -       -                                         -   -    -       - -    -  -       -  -   -  -  -   -  -   - - -       -  - - -  -  -  - - -    -    - -     -   #$$&$)%  -  - -  -   -      - -   -  -  - - -  - -  -  -           -   -   -   -   - - - - -     - -  -          -  - -   -  - - -        - -  -  - - - - - - - -    - -                         -   -          - - -   -       -       -  - -  - - - - -   - -  -  -  - - - -  -   - - - -         -    -  -   -  - -  -  - - - - -   -   -  -  - -   -  -     -  -  - -  - - - -    -  - -                - -   -               - -      -    -                 -          -          - - -  - - - - -    - -  - - -    -  -  -  -  -    -  -  - - - - - - -        -                                     - -  -    -          - -  -  - - -  -  -  - - - -   -  - - -    -    - - -     -       -      -         - -  $#$&%)%  - - -  -          -    - - -  -  -   - -  -                     -  - -  -  -  - - - -   - - -       - -  - -    -         -  -  - -   -  - - - - -     -                        - -              -  -       -         -   - -  - - - - -  -  -  -  - -  -    -  -   -  - -   -  -  -  -          -  - - - - - - -   - - - -  - - - - -    -   - -    -  -  -     - - -    - - -   -   -       - -      - - -  - -  -       -            -   -       -      -          - -  -  -   -        - - -  -  - -        - -   -   - -  -   -  -     -  -    -           -                                             - -   - -      - -    - - - - -    -  -  -     - -  -   - -      - -     -        - - -   -        -  ,&$&%)%  - - -   - -       -    - - -  -  -  - -  -  -  -  - -   -             -  -  - -  -  - - - -    - - - - -  -      - -  -   - -       -    -   -  - - -  -  - -  - -    -                       - -  -              -  - -    - - - - -   - -   - - -  - -   - -  - - -   -  -  -  - -  - -   -  -  - - - -  -  -   -  -     -     - - - - -     - - - - - - - -  - -    -   -  - -   -  - -     - - -     -  - - - - - -              - - -  -          - -    -   -    -          - -            -      -    -          - -   - -   - -  -   -    -  -  - - -  -  -   -    -  - -            - - - -                                         -  - -   - -       - -    - - - - -   - -     -   - - -  -  -  -  - -  - -      -    - -  -     -  - - - -      ."(%&&)& -  -  -         -   -  - -  -   -  -   -     -         - -  - - -     - - - - - -   -    -  -   - -  - - -  -  - - -      -     - - -   -  - -  -   - -    -                         -          -   -      -    - -      - - - -  - - - -   -    -  -      - - -  -  -  -  -  -  -  -  -  - -          -  - - - -    - - - - - - -   -   -  -  - -   -      -   -  -   - -   - - -   - -     -             - - - -  -           -    -        -      -    -  - -     -      -               - -    -     -  - -    -  - -  - - -   -  -   - -    - -    -                                               -  -    -           -   -  - - -      -  - - - -  - - -   - - - -       - -      - -        - - - -     %#%$%(&  -   -  -       -   -   -  -   -  -             -  - - -  -     -   - - -   -   -  -  - -     - - - -  -  -      - -   - - - -   - -    -   - -   - -                        -        -    -   -    -  -  -  - - -   -    - - -  -    -  -    -  - -     - -  -   -   -   -  -  - -         - -  - -       - -  -  -  - -   -  -  - -  -     - - -    - -  - - -   - -   - - -        -        - -   -   -       - -   -  -  -                 -   -  -        -  -  -     -        - - -  -  -  -  -    -   -  - -  -    -    - -  -           ! -                                        - - - -  - -            - -  - -    -   - - - - - - - - - -     - - - -   - -   -  -  - - -    -     - - - - -     #"&%%(&  -  - - - -             -  -  -  - - -  -    -        -  - -   - -  -  -    - -    -     - - - -  - - - -  -  - -      -     -   - - -       -   - - -                 -           - -   - -  - - -     - - - - - - - - -  -    - -  - - - -      -  -  - - - -   -   - - - - -   - - -  -       -   - - -    -  -   - - - -  -  -  -    - - - - -  - -   -  -    - - -      -    - -    -    -  -    -   -       -   -          -  - -      -   -      - - -  - -    -   -  -    -            - - - -   - -   -      - - -  - - - - -  -   -  -   -  -  - -  -  -        #!    -                                  - -            -       -  -  - - -  -   - -  - -  - - -  - - -     - -  - -  - -                    !##%$%)& -   - -  -         -   -  -  -   -   - -      -    -  - -   -   - - - -  - - -  - - - -   - -   - - - -  -   - - -  -  -   -        -    -         -        -                       !      -     - -   -    -  - -  -   -    - - - -       -   -  -    - -   -  -  - - - -  -  - -   - - -    - - - - - -   -     -   - - - - -   - - - -   - -   - -  -  - -  - -    - -   - - -  - - - - - - -     -                - -  - -    - -      -  -        -  -      -   -  - - -    - -  -       - -            - - -     -   -    - - - -   -  - -  - - -  - - - - - - -           -# !! - -                           -    - -    - - - - -  -   -  - - - - -  -    - -  -  - - -    -    -   - -        -                 #%%''+'   -  -              -  -  -        - - - -  -   -    -    -  - -     -     -       - -  -  -  - - -  - - -    -           - - -      - - - -  - -                                 -  -  -  -  - - -  - - -  -     - - -       -  - -  - -   - -  -       -  - - - - -  - -  -  - -  - - - - -  - -    -       -     -  - - -  -  - - -     - -     -   -  - - - - - - - -  -                   - - - - - -  - - -     -  -  -   - -     -      -       - -    -  -   -             - - - - - -  - -   -         - -   -  - -  - - - - -    - - -    -       -& "# -  - - -                      !        -     -  -     -  - - - - - -   -       -       -  - -     - - - -        -                 !%&%&&*( -  -  -      - -  -  -  -  -   -   - -    - - - - -   - -    -   -  - - - - - -  -       -  - -     -  - - -  - - - - -   - -          -             -  - -                                  -  - -  - -   - -  - - -  -   - -    -  - - - - -  - - - - - -  - - - -   - -  - -     - - - - - -  -  -  - -  -  - -           - - -   -  - -  - - -       - -        -  -   - - -  -   -   - -          -   -  -  - -   -  - - -    - - -  - - -   - - -  -       - -  -   - - -    - -  -                  -     - -  - - -  - - -     -  - -      - -    - - -   - - - -        -&$$%!    -     - -  -  -        ! -          -   - - - -  - - - - -  -    -  -  -   -  - -   -      - - -   -   -     - - -        -       !.!#&$'*(  -   -      -   - -  - -  - - - - - -     - -  -   -  -  -     - -  -  - - - -   -   -  -  -  -   -  -  -    -  -   -  - -  -    -                  -     -  -  -                -           - -    - -  -  - -    -   - -     -   -        -  -  -  - - - - - - -    -   - - -  - - -    - -    - - -             - -   - -  - - - -          -  -  -  - - - -             -   -   -         -   - -   -  -  -    - - -         - -  -   - - -    - -  - - - - - - - -  - -                 -     - -    -  -     -  - -     -   - -   -    -  -   -         -#&&&#   * ' -     -   -   -  -   - -        -           -  - - -  -   -  -  -     - -      - -  - -       -  -   -         - -        -      - #1$ )(&&+' - -          - - - - - - - - - - - -   -       - -  - -  - -  -   -   -  -  -  -   -   -   - -  -   - -  - - - - - -  -  -  -  -    -   -           -    -     -                      - - -         - -  - -    - -  - -  - -     -   - - -  -      - - - - - - - - - - - - -    - -  -  -  -    -     -  -             -       - - -  -  - -   -   -  - -  - -             -   -        -    -  - - -   -   -  -  - -     - -   -     -      -     - -    - - - -  -  - - -                     - -   - - -      -  -  -  - -   - - -     -   -    -       %))($   ,!(  -  - - - -   - -   -  -           - - -          - -  - -    - -          -  - -   - -   - - - - - - -  - -     -       - -               !+*(&&.( - -         - - - - -  - - - - - - -    -       - -  -   -   - - -  - - -  -   - -  -  -  -  -   -  - -  -    - - - -  - -  -  -    - - -         - -      - -     -       -             - -  -     - -  - -  - -  -   - -   - -   -    - - - -        -  - - - - -   - - -         -  -  - -       -                            -    -  - - - - - - - -                               -   -      -   - -    - -       - -    -         - -  - -   - -  -  - - -        - -          -    - - -  - - - - - -       -     -          -  -       &++)$  0$",   - -  -  -   - - -  -  -   -   - -          -         -     -  -      - - -        - - - -        -  - - - - -   -   -                         !&''((.)   -   -     -  - -  -   - - -            -   -  - -  -  -  -    -  - -  - -     - -  - - -  -     - -  -  -  - - -    - - -  -                   -       -  -   - -  - -   -      -   -   -         -  -  - -   -   -  - - -     -   -   -      -   - - -    - - - - -  -         - -          -                              - - -   - -                                          -    -   - -  -         -  -    - -    - -   -    - -  - -          - -          -    -      - -     - -   -    -     -   -  - -   -       '+,*% -0%"."       -   - -   -   - - -   -  -  -                -    -   -        -    -           - - -          -   - - - -                             !&'(((.* "!  - -  -        - - -  -     - -        - - -   - -     -  -    -  - -   -   - -    -  -   -  -  -  -   -   -  - - -   - -  -   -                    -  -   - -  - -   - -    - - - -    -  -      -   -        -   -    -                 -   - - -   - - - -   - -  -     -   -         -               -               - -  -              -                           -                      -   -     - -  - - -  - - -    -          - -   -                       -  -   -  -     - - - - - -   - - - - -       ''**)#  # - -   - -    - - - - - - -   -  -            -      -               -      -       - - - -           - - - - - -                           "((*))/ )  -  -    - - -    - - -     -    -       - -   -  -  -   -   -  - -  -   -    - -  -  -    - - -  - -  -   - -  -  -  - -   - -  -       -     -              -  - -  -       -   - - - - - -  -   -#  - !  -   -  - -       - -       -   - -                  - - -        - - -                                             -   -                          -                  -              - -   -    -       -  - - -  -  - -         -     - -       -     -          -  - -  - -   -  - -   -       - -   - - - -     )(**'!   -     - - -    -  - -   -  -   -  - - -      -  - - -  -  - - -   - - - - -            -      - -     -   -             - - -                             #)*,+*.) - - -        - - - - - -   - -  - - -    -       - -    -  -    - - -  -   -  -   -   -  -  -  -   -   -   -  -   -     - - -       -                 - -  - - - - -  - - -  - -  -  - - - -   - - *  - "! -      - - -          -       -   -   - -  -      - - - - - -        - - - -    -                                      -  -                          -                  -           - -  -    - -           -        - -  -     - -    - -   - -      - -    -          - -   -  -        -   -        - -  -  -   -(,- + &   -    - - - - -          -  -     - - - - - - - - - - - -   - -       -  -       - -             - -  -                -                       "$/!..-+-' - - -      - -   - - - - - - - - -          - - -  -         -  -  - - -  - -    -  -  -   -  -  -  - -    -  -              -   -             - - - -  - - -  -   -  - -    -  - - - -     "*   !"   -   -   - -                                -   - - -       -  - -     -                                                                -              - -            - -     -   - -             - -  -   -     - -    - - - - - -      - -       -        -   - -  -    - -  -     -      -      -+.. ,&     - -   - - - - - - -      -  - - - - -  - -      -  -  - -           -     -    -             -   -                                     !(:,&3#,+*,& -      - -  - -  - -      -          - -  -  -   - -      - -   - -  -     -    -   - -    -  -       -          - -         -   - - - - -   -    -    - -   -   - -    - $+!  !!    -     - - -                                   -  - -      - - -     -                                                         -                         -          -   - - -  - -   - -            - - -     -    - -     - - - - - -         -  -                -  -  - - - - -  - -    - -    -       -..0!0!-%         - - - -    -  - -  -  -       -         -       %*  - !"  -  -   - - - -             -                                !)7*$/ +,*+$      -   -   - - - - - - - - -       -   - - -   -       - - - -  -   -  - - -  -  - -  -  - - - -  -         - -          -    -  - - -  - -  - -       -    - - -      -  -   "  -#"!    - - -   - -                                     - -      - -      -                                                   -                        -  -   -        -  -    - -  -             -      -    - - -    - -  - -         - -  - - -               -   - - - -  -  - - - -       - -   - -012!1,'('   -              -  -  - - -   - - - -    - - -  -  - -      )0#   #$" -  -  - - - -      -                                    $*(*+)+            - - - -  -  - - - - - - -     -      - -             - - - -  -    -  -     -   -  -  -       - -            - -   -  - -    -    -   -  -        -       #"     - - -                                         - -      - -                                                      -                                      - - -    - -                      -      - -   - -  - -        -    - -     -                  - - - - -    -    -      - -4!3"1 ,)4'"3&"  -  -  -          - -  -        - - -         -       (0$!! -%%# -   - - - - -                                    !&**+))*          - - - - - - - - - - - - - - - -  - -   - -  -  -  -       - -       - -  - - -   - - -    -  - - -  -      - -     $ - -         -     -    -  - -  -        -      - #"    -  -                           -                     -             -                                                     -                - - - -  - -    - -                               - - - - - - - -      -        - -                -      - - - -   -       - ./3"2!1 *&;-(7)%  -   - - -             -       -        - - -  -      (0%"# "&%! - -  - -  -                                 #&+*+()*       -   -   - - - - - - - - - - -   - - -      - -  - -  -    -  -  -      -  - -    - -     - -        -      $     -  -   -   -   - -   - -  - -   - -     -  -   -  -  - "$#   -                                                                                                                              -  - -   -  -                                  - - - - - - - -    - - -     - -    -              - -     - -       -  - -  - 03"4#4#1!(&=/*7)%    -                        -        -    -   & $''     - -                                 %%****()      - - -   - - - - - - - - - - - -   - - -        - -  - - -     -  - -  -  -  - - - -    -         -     -   !& -  -  -  -  - - - - -  -         - -   - - -       - - -  - -  #$#   -                                                                                                                              -   -   -                                 - - - -  - -       - - - - -  -     -  -            -      -   -  -  -     - 15"5$5$1!(%1$ -    - -                                   -  -     - - #)'!    - - -                          #2$-**)((      -  - -   - -  - - - - - - -  -  -   -     -    -  -            - - -  -  -   -   -  -    -      -     -        -   -    -         -  -     -  - -    -     - -   """   -  -                                                                                                                           - - -                    -         -     - - - - -  -  -     -     - -      -    - -    - - -  -  -      - - -  -   -   - 1"4#6$5$.%     - -                     -        -     -  &)&" -   -  -   -                   %3%!. +))*)        -    -   - - - - - -   -  - - -  -    - -    - -          - -   -    - -  - - -    - -      -      - ! -    -     - - -        - -    -         -   - -       $#"         - -                                                                                                        -                        -  - -          -   - -    - -    -       - -  -    - - - -   -            -   -   -      - 4!1"5%7% 4#,%!      -                     -   -   )*(!      -  - -              "&*&)*),'       - -    - -  -  -  -   - -   -  -   -  -     -  -  - - -   -   -  -  - -     - -  - -      -   -      -"                  -  - -   - -   -              +!&  "$#"   -  -                                                                                                                     -  -             - -  - - -         -   -   - - -   -    - -  - - - - - -    -   -   -            - -             -4"2"6% 6% 1!+%#                            %+*)!  -     - -  - -               ! #&)*)*()#        -  -    - - - - -        - -      - - -   -  -  -  -  -         -   -     - -        - - -  -       -!          - -   -  -   -      -  -  -         - - - - -  0%"' #%#!    - -                                                                                                      -  - -            -   -              -  - - - - -   - -  - -       -      -  - -   -            - - - - -  -      -1"4%6&!5% 0 *%#                   -  (3&") &)-+(!   -  -               !        !"$'+**((&        - -  -   - - - - -       -  -  - - - - -   -  - -   -   -         -   - -             - -  -       - !  - -       - - -  -  -   -  -   -   -    -       - - -   "/# % $&%     - -                                                                                                           -              - - - - - -   - - - -    -     - - - - -  -   -  -            -     - -     2"7"5& 5'!4$.*,)"               - - +>/,0!$(-.+&!     -              !   !                !!   !"#&),+*()# pps==@99/*7)$#      !!    '7'$1 (.2"/*%                  !  !!!   !  !! !"      !"!!    !!!"!    !"%*5&"1",+)*$%&(--077::;>      - -  -  -   -   -   -    - -  -  - -  -     -  -   -  - - -   -  -      - - -   - -  -  - -  -  - -      -$#" %) -  - -         -        -     -       - - -   - - -  %''%     -                                                                                - -                           -    -  -  -   -           - - -  -   -     - -  - -     - -     -   -   6 ;$6(3&.+,=.)4&!"     !!!"!"    "('*/2#.($  -   -         !  !!!!"! !  !!!"   !!!!""!!!!!!!"""!! !!"$&,=.*2",**+  #$%++.568224 -      -    -   -    - -   - - -     - - -  -  -  - - -  -    -  -    -   -      -  - -   -   -  -   - - -     -$%%").!     - -  -   -       -   - - - -  -    -        - - -    %('%      - -                                                                                 -                              -  -  - - -  -   - -  - -     -  -   -      -   - -     -   -  - -    - 4#5#8%6&2$,)*1")#   !"""!!""#"! "!    $,1"0",&" -                  !  "! !!  !!!! !"! ! !!!!""!"#"""""""#""!"#%&+2"+-,(' ""$ACF -     - -   -  -  -    -     - -     - -  -  -   - - - -           -  -   -   -  -  - -  -  - - - -   -   -  -  -     -$&$!*/#     - -  -  - -           - -              -       $&'#" -       -                                                                                          -                   -     -     -  -  - - - -    - - - -    -     - - - - -   - -  -  -   -    -  -  -    4"6$7'6%1"*&$%!     ##!!""#%%$$"$$"!  ! !#"#'+2!3#0!,'  -       !    !  !!""!!"###" !"!""!!""!"!"#""##$#####$#"""##""#$&),,.+*)% ,-0 -       - - - -        -  -   -   -    -  - -  -  -  -           - -     -  -   - - - -   -  -   -  -  -  -  -   &&#"*+  -  - - - - -  -     -         -     -     -   -      $%%!!  -    - -                  - -                                                          -                       -                     -   - - -  -   -  -   - -   -  - -   - - - - - - - - - -   - -   -   -     - - -    3 5&4)!3# 1*%""       !!  ##$&&$$$$%$#"""#$&*-)*.3!6%2"-#   -   !      !"! !"#"""""""""""#"!##"##!!#""##$%%%$$%%%$$$%%$$$$%$$%%(,./,*)+=>A -       - -         -  -    -   -   - - - - - - -  - -        - -   - - -  - - -  -   -  -  -   - - - -         -    $&"$$        -   -        -   -   -       -  - - -     !&'%   -  -                                                                                                                       -   -       -     -    -   -  - -  - -  - -        - -   -   -  - - -     - 2"4"5&3( 1#.)$#"    !! !#$%&&&%%%&%#""#$&+9)$@1,4#.3 4#5$0 )! -  "!" !!  ""!"##""#"#"##$#"##"##"!"##"##"##$##$%&&%%&&'%$%&&$%&&&%&(+-/0!/ .*' ##%HHL -      -  -       -     -  - -   - -  -  - - -      - -   -   -  -  -  - -  -   - - - -  - - - - -   -     -    -   "!&$!  -   - -     -                 -              (,! #'(%                                                                                                                        -   -    -  - -  -       -   -   -   - - -     -     -  - - - -   -      - 3"6$6&2' 0#,'&$!       !!!"$%%%%&&&'&$#"##$&<-(F611 /3!4#2".(  -    "!!!"#""#######"""#$$$$$$%$$$#"""""!""$&$&&$$%&'&&'(''%&'&$%%&'*+5%!;+'5$ 1!0 0 ,'#/03        -  -  -         -    -  -   -   -  -  -  - - - -   - -  -    -  -  -  - - - -   - -   - - -   -   -   -    $%$                -  -      - -   -    -    - - - - - - /"! #'(%  -                                                                                                                -   - - -    - - -        -  -   -    -  - -  - - -         - - - -     - 1 6%6&2&.!))3#-"!       !"#%$$%%%&&&%$$$$$&:+%C3-/.1 3"/*& -   !"#####$$$%%$$$$$#"#$%%%$####"""##"$%$%#$$$&'&&&&'''))''(''&%#&'))1!>-):)$/2#.-'%  :;>        -           - -    - -   -  - -  -  -  -  -  -  - - -  - - -     -  - -   - -    - -  -   - - - -          -  "%&$   - -    -      -  - - -   -    - - - -       - - - - - - ."." #'(# - -                                                                                                                     - - -      - -   - -  -   - -         -  -    - - -  - - -   -  -      / 2!6%4%1%*(+?/(5& $#! !    !!"##"$$$&%%&&&%%%&.4%0 02!2".(  !"$$&%$#$%&&&&%%%%%$%%%%&&$#%$!!!###%'&%$%%$&'''%&'&%((&&(*(&&&&&'(-5% 4#2!.-'#   !@AE       -   - -  -   -    - -     -  - -  -    - - - -   - -    -  - - -  - -  - -    - - - -           - - - - -  "%&$     -   -  -      -         -   - - - - -     - -  /#!*$&&# -     %%!                                                                                                                                       - -    -     - - -    -   -  -  - - - - - -  - - -    -  - -    -2!3!6&4%0#'(+A1+7' ###" !          !!!!""""""$$&'&$%&&&'+,02"0 +'!"###$$&%%$'(('&%&%&&%#%#&&&%#$('#"""#$&'%#&'%%%&%''(('&((''('&%%%&&(+/3"2!1 /**     -      - - - -   - -    - - - - - -    -    -   - - -  -  -     -  -   - - -  - -     - - - -  -       - - -    -   "&'%    -  - -  -        -       - -   -  - -   - -      %! %&%"    !()%  &*$                                             -                                                                               -             - -   - - - - -      -   - - - - - -    -  -     -   - - - - -   -     - 1 4"6%4%.!'&,?/)0!$" !!"      !        !"  !"&'&$%(('&(*-1!2"/ *%"#%%%%&'&''&(((('&%'('%%$$%&''%&((&%$#$$%'&&'&%(('(((+*'&&&&&&('*(%(+*.3!6$2!/&+       -    -   -  - -              -  - - -  - - - - -    - - - -  -  -  - -   - -   -   - -       - - - -     -  #''# $$  -   -        -         - -   -    -  -     - -  -   $%$! &(#  !""!                                                                                                                                                 - -    -        -  -     - -  - - - -       - -   - - -        04!5%3$-'$)4%*#"!!"!               !!  "$%'&%()&&%(+.3$0!,( !$$&&&&%%())')*(('&&(('&%%$%&'((((*)&%$$%%&%&(())((&()(*'''%%&'(()(-9,(4'#0"4#4"3"/*'    - - - - -         -                  - -  - -   - - - -   - - -  -  -    -   - -  -        -     - - - - - - -    -  "&'$!/#-!             - -    -      -  -     - - - - - - - - - -   %$" $!  !! !                           -              - -                                                                                   -          -   - -          -       - -       -             - -      - /4 5$2#+&!##"           !  !  !!! !#$&&%''(.+(+/1!/ )&  "$''&'''((((')+*(()*(''(&'%%((**)), )(&$#&))''(**(')'$%%+*'&()'%'(*/ =.*F72=-)4#5#5$2!+'#   - - - - - - - - -        -   -   -       - - - -   - - -   -  - -   - -    - - -   -   -   - -   - - -  -  - -  - - - - -   #')%!1% -!   - - -        - - -      - -     -  -   -       - -   !%$"                              -                                                                                                                     -     - -        -   -  -        - -   - -   - - -  - -   -    - .1 6!4"/ )&"! !       ! !  !      !!!!!!#%%%&%,9(#4%+-/ .-(!#%''''()))***+*)**++)'))**'''*,*()+, *'%%%)+, )(&'%%%'%$$&(''()(('*,5#?-(@.);*$6% 4$1!,(     - - - - - - - - - -      - - -      - -          - -  - -   - - -     -     -  -   - -  - - - -    - - - -        -  -   - -  #$((##1% ,  - -   -        -    -   - -     -     - -       - - -  "&$"                    ##                                                                                                                                      - - - - -   - - - -  - -   -  -  -  - - -    -  -    -  - - -        - 0 1 7!3!.($"!    ! !!!!!!!"! !!!!"""$%&'(0>-(8(#,-.-*& "&&%&()()***))*,++**++)***++*+-!-!*()+, )%$'%')*('&$#%('&&&()'&((*%**,13!9& 8& 6%2!++     - - - -                     - - -   -  -  -  -  -   - -  - - - - -  -   -  - - - - - - - -    -            - - -  - #$((#!+&                    - -     -      -  - -    -  - #&$!                                                                     - - -                                                                                             - - - - - - -   - - - -     -  -  -     -   - -   -  -  -  -      - - - (/6 3!,&$"   !! !!!!         !!"%$&&&-;+&7'"+--+'# !#%%%&))**)*++*+,,,,,- ,,,, +++, , , .")+.!-!0$+)))')))''&%%%''%%'()&*)+*+,.04!8& 8&7&1 )$     - - - - - - - - -        -             - -  - -    - -  - - -    - -  -  -      - -       - -           -  -  - -$&('!   -                      - -      -     - - -(!  $'%"#                     -                                                  - -                                                                   - - -                      - - -  - -   - - - - -  - - - - - -  -  - -   - - -  -   - - - - -     - - - )/ 5 2 *%'(! !  !!     !!!##"!!""%%$%2#0 +.-)% $&&&()*)+,*+++*+-,- . .!0#1$/"1$1% 0$/#2&!3'"- - 0#+*+- ,))**+,*($%'&&%')('())***-17% <*%8% 5"9' ;)"6%/*   -  - - -  - -   - - - -       - -          - -  -     -  -  - -  - - - -   - - -   - -  -        - -     - -   -     - - -#%'&    - -  - -     -        - -   - - - -   -          1&!$ $&%!!          -   -                                                    - -                                                                          -                     - -     - -  - -  - -  - - - -  - -   - - - - - -     -  -   -      - ++1 61&&29' ,         !!!!!"""""!!!#$#%%'',-+(" #%'((***)*+**,*. ,,*+,/!2$4&!2$0#2% 1$2&!0$.".!0#3&!/"+0#2% -+)*)+))((((''')+*+,,+,--09&!I71O=7@-'<)!8&5$-, - - -   - -               -    -    - -      -  - - - -    -       - - -       -      - - - - - -    - - "%&$     - - - -     - -    -  - - -       - - -     - - -   -#1% # $%#!    -        - -  -                                               -  - - - -          -                                                                                        -    -   - - -   -     -   -  -     -     - - -      -,-272%&3 :(!/!   !   !!   "!!!!! #"!!$%$(+,)'  - %')*+++,++,,+,,.!.!/!- - 0"2$3% 2$1#1$2% 0$/".!/"3&!2$3% 3% -/!2$1"-,. 2$5'"/!-++,--0 3"0/.///026#3 7$F2,N:4E2,=+%9' 4$-(   -  """-*$""! - - -  - "             -  - -  - -     -   - - - -  -    - -       - -                 - - - -     #&%#       - -         - -   - -   - -   -  - - - - - -  - - &0%!  $$#!     -   - -    - -         -   - - - -                                        - - - - - - - -                                                                                     - -    - - - -  - - - - - -   -       -  -  -   - - - -   -  -   - -      ---2!5, %6% 9)")  !   !  !!  ! "!""#$$&,,)%" #(), ,,,,,. - ,,.!- .!- .!. . /!0"1#2$4&!3% 2$0#.!/!/!1#6($3% 5'"2$2$3% 1#1#1#0!0!1!1!0/000 0 1 2!2!1 0011 2!4#8%;' 7#6";' =*"=*#6%1!*   - $$$""",)%"## - - -  - - -   -    -  -   - -     - - -   - -  - - -   - - - - - -    -   -    -                   - - - -   $'%$     - - - - -         - - - - - -   - -  -           - - %)  %%$! -      - -   -  -  -      - - - - - -   -                 -  -                   -  - - -   -                                                                                   - -      - - -   - -  - -   -     - - - - - - - - - - - -     - - - - -  -    - +-0 1,"&4%3%$!         !  !! !%%,,'!$')**++,,+,,- .!.!- - -,-- 0#1#/!2$2$2#1!0 / 1#0"3% 1#2$0"1"2#1"2"4$3"0 3"5$4#1 1 1 1 2!5$7&7&5$4#3!2 3 3!:' C0(F2+E2*?+$8%:' :(!3#*$    - =4' """ ,)&$#! - - - -   - - -       - - -   -      -    -  -   - -  -  - - - - - -  - -       -                         - - - -  #&&#  -           - -  - - - - - - - -  - -  -  - -  - -       - - #$$! -     -   -    -         - -  - -             - -                            - - -                                                         -                     - -     - -   - - - - - - - - - - - - - - - - -     -   - -     - - - -  - - -  -     - (-!0!0) )(    !" #(*)% #%')*****+++,,,,-/!/ 0!/ ..0 0 2"3#1!1!0 / 1"3$5% 7&!5$3"3"3"4"6$6#;("B0)E2,A.(8& 5$6$7%8&>,$G5-L92G4-?,%<)!;)!;( :' =*"A.&@-&=*"<)"8&6%0!%     -  ?6+!!! """*'&#""  - - -    -          -       -   - -  -    -       -            -        - -    -            -  - - - "%%" + $ -  -  - -    - -   - -   -    - - -     - - -    - - -     ###               -          -  - - -    -   -   -  -                            - - -                         -                                -                      -  - - -        - - - - -   -   - - - -    - -  -    - - -  -  -  - - -  -  -((-!/ -(    '1$!'#%('$ #%&'(&)),,*,+.../0!2#0 1!1!1!2"2"4#3#3"3#5%7& 9("@.(E3-F4.A/)<*$9'!8%8& 8& 9' 9' 7%6$7&:(!9(!8' 7& 5%5%5&3#2#2"3#3$3$1#/ -*&!      -    8/$?6*###%%&"""  - -   - -       - -  -  -    -  -   - - - - - -  - - - -   -     - -     -  -        -              -  - - - -"#%%" -.$ $   - - - - - - - -    - -   - -   - -      - - -    -  -   -  ##"      -      - - -       -     - -    - - -     -          - -            - - -                                                                       -    - -               -   -  -      - -   -   - -    -      -  - - -  -    -   - - - -   -   (%,.,&           *2%"'$%&&!"#$&())*)+--./0 1!2"4$5%5%4$6%6%5$3#6%<+$<*$5$4#3#2#1!1!1"1"0!0 / / 0 0!.,**)(('&&%%#!             6.#6.">5)""#$$$""" - -       - -        -           - -  -    -  - -  -    - -     - -  -                     - -   -#$%"  .$ "  - - - - - - -       - - -  - -   -   - -  - - -  - -     -  - "" -         -  -      - - - -     -   - - - - -             - -    - -        - - -                                                                  -    - -   -      -     - -     - -    - - -   - - -           - - - - -    -     - -    - - -     )'-.*&       )1%!&#&%$!%%')*-/1 3"3"3!5"5"3"2"2"4$6&5%3#3#4#3#2".,,+*)'%%%%$###!       -   :1'=5*8/$8/#<3' ""!##"!!"  -   -       - -   -    - - -   - -     - -  - -  -    - -          -        - -               - -!#$! +!  - - - - - -             - - -  -   -   - -   - -        $"     - -     - - -    -   - - - - - -     - - - - -      - -      -   - - - - -    -   - - - -         -                                                       - -        -  - - -     -      -     - - - -    - -   - -   - -   - - - - - -  -       - -  -   -    - -     *(-.'% !               (."%"%$!$)-/ 0 0 1 2 04#8'"3"../ / .. / .,*(&%$#!          - 3,";3)<3(8/$7.#<2'$#""""!!! -  - -       -  - -  -              -    -                     - -          - - -  -   #$"  - - - -      - - - - -    - - - -   -         - - - - -  -   "!        -       -      -   -     - -  - - - - - - - -  - - - - - - -             - - -   -  - -  - - -  -    -                                                                          - -  - -  -              - - - -     -  - - -     - - - - - - -         -  -       - - -     - +&-/%+,"                      #'!!$#  4$ 8($4$!0 .-+*(''('&%$#"#!         - - - -          *$3,";4*<5)70%6." !!#"#""#""" - - - -                     -         - - - -      - -     -                    -         #%"     -   - -  - - - - -   - -   - - - - - - -     - -  - -  -  )+   ""     -              -    -     - - - - - - - -  -    - -           -      -   -  -  - -  -  - -                                                                              - -           -     - - - - - - -   - - -    -    - - -      -         -    -   -  - -     -*'-/$0#4&$!                               !$"(*(&%#""!!       -                -         )"+#,%3,"=6+;4)81%70$!!!"!#$#%"###$# - -  -            -     - -  -     - -     - -           -                       - "$      -   - -   - - - -  -  -   - - - - - -     - - -      - - -   !!  - -    -  -  -         -    - - - - - - - -     - - -      - - -  - - -  -    - - - -   - - -                                                                                      -            -   -   - - - - - -       - -  -  - - - - -   -    -      - - - - - - -     -     -(%,.$, 1"!                                            !#  "      -    - - -  - -          - - -    - -   -  -  -  -      #)",%+$6/$<4*:3'7/$6."###  !!!"""#"$#$$$%%$$$ - - -  - -            -   -   - -   - -      - -   -                  '-!&  -!#       -    - - - -  -  -   -   - - - - - -  - - - - -     -   -1!,  ""  !     - - -       - - - -   -   - - - -     -        - - -   - - -   -                                                                                                    -    - - - -  - -  - -     - - - -  - -  - -  -  -   - -     - - -   -  - -  -     -'$+.#(1"$                                                  -  -     -    -     -  -  - -    - -    -   - -       %  "( +$*#70%;3(<4(80$6.""""((('''&&&''',,,...##$#$%#$$$$$ - -  -              - -    - -        -        -            ! &&  "#    -  - -    - -   - -     -   - - - - - - - - - -      -  -   0!+ !"  ""  #!  - -   --     - - - - -  - - -   - - -    -       -  - -      - -   - -                                                                                                       -  -  - - - - - - -  - -  - -   - - - - -         - - -       - -   -    -       -'"),#$+#                                                       - - -  - - - - - - - -    - -   - -  -       % '#'"!!&+#.&70%=4)>5)90$ %%%---+++***222777777///##$"## -     - -            -   -   -   - -    -        -      - -  "+,!#  #  ""        - - -    - - - - -    - - - - - - - - - -     - - - -   -(  !!    !"  $$!!& #   -   3#1,"2.#       - - -  - - - -      - - - - - -  - - - -        -  - - -                                                                                                            -  -  -   - -  - - -     -  - - - -    -   - - - -      - -   -  -    - - -      #)"'*#                                                     -      -  - -          -      $#!""$ "#%" !#% $ "' *#/(7/$>5*>5)90#"""'''...---000:::>>>AAA@>;$#$$#$     -        -     - -        -     -                 $'$  ! ###$%""   #    -  - -    - -   -   - -      - - -       - -     !   -  -!"! -  - "$"%! & )"'"#  - -    -5&1-"3-!8.#  -    - - -     - - - - - -   -  -  - - -     - - - - - -         -                               -                                                                         -      -           -  -  - -   - -     -     -      - - -  -     $*#&)"                         -                -    -     -    - - -   -     -  - -     ! "!  ""! &!&!""& #!""#! ##!#% #" ' ,$0(7/$=5)>6*8/####))),,,---666@@@GGGTTTXQH++*$$$  - -       -  -  ! -    -         - -         '/#!*  ! !$%'&&"   !!  !)     -   -    -    - - - -     - -  -         -      !!    "!"    -%& ' '('*!)"'& -  - !$" 8*"50$6/#90$:2'        - - - -   -     - - - - - - - - - - - - - - - - - - -  - - -  - - - -               -                               -           -      -                                -       - -   -   -     -       -    -         - -     -      -  -       $+$&(!                              - - -   - -     -         -    - -        ! !  ! ##"!!!!###"'"$#$%$"""#$  ! "%*#0(80&=4)>6*8/#$$$)))***111===DDDOOOSSSTPJ210%%%          "&  -                !!  !! "%%$%"!  "!!  -!*  -       -  - -      - -   - -    - - -    -       - - -  ! -!! !&*(!  -"    ) %+   #*")'  -  -#'*:.%93'92&:2%  -   -  - - -         -  - - - - - - -    -  - - - - - - - -     -               -                                                 -                                    -    - - -  -   -       - - - -    -   -   -    - - -  -  -    -     -    -"+#%'!                     - - -       - - - -   - -  - - -  -           ! !!!"!$%% $!!"!$#"&!$&!$%%&"""###  %*#-%7/%=4)?6*90$$$$)))...666===DDDVVVJJJMJG0//%%% - - - -                 - -        ",!,!"    "#%%$#!  !""  '  - - - -      - -    - - - -      - - - -             -  ! - -#"!'"(! !))%%,#,"%   + , )  -&)*%) -1 =2'<6);4':2&       - -   - - -  -  -     - - - - - - - - -   - - - - - -     -                                                  -                - - -                             -     -  -  - - -  -   -     - -  -       - -  - -   - - - - -  -  -    $*#%&                  - - - - - - -  - - -  - - - - - -   - -  - -   #       !  "$ "$$%'!("'!$"!!#% &!&!& $#%#$$$ #$# - ~nnm]][\\[\\Z #( ,%80&=5+?6+"""%%%***---555<<3(>7):2%;3&  -    - - - -    - -  - -    - - - - - -   -    - - - -    - - - - -                                            - -  -   - -            - -                             -  - -     - -        -        -        - - - -  -  -     -   - - -   -   - - $)#$& "                - - -  - - -     -   - -  - - -    -   - -#     !#"!  "#$&!###$$& '"'"% "$$$& & $'!& %%#"#""#$"  - >>>qqq  MMMOOO!(!,%5.$<3*=5*###'''***---777===EEE___iaU<;;*** - "      " *3($*   !!"#$%%$$#!    !       - - - -       -  -       -    - -  - -      -    - -      !"' *%''&%(%(")!-'+$) * +%,&,$,#+ -"1&,#,$-"#" ' -+& + :,"?5)?7*;2% - -      - - -  - - - -    -      - -     -    -  - - - - - -   - - -                  -                         - -               - - - -                                         -  -                -   - - -         - -   -   - - - -   -    $($$% *$                - - -   - - -   -  -  - -       -  -  - "    !! "#"$##$& & '!$%%& #& '"& % #$%&!#%$)#)#& %#"%###$! - 222@@@KKK   FFF#("0) ;3*;3)$$$(((***///:::>>>FFF[[[_YP556((( !    !* !   "#$%%#"             - - - -        -  - -     -   -    -  - -  -  - -  -    -      #&#'$($' *!-&'! + *$+%-$)"%0',')%0"%$'*,*#.>>!:::>>>EEENNNPPPQQQRRRPPPKKKOOOQQQQQQPPPQQQRRRRRRSSSNNNOOOUUUWWWUUUUUUTTTRRRVVVUUUTTTUUUUUUWWWSSSSSSRRRRRRPPPOOO      !   "$%$#     -  - - -        - -         - - -      -       -   - - -   - - -  % -        & )"' -! !  $ #)*')1&2) -))&2!% )  -$,$2>>:::===BBBBBBAAAAAA???AAA@@@@@@@@@???@@@AAA======>>>CCCAAA???!!?6)      "!   "#"!   -   - - - - -  -     -  - - - - - -     - -   -  -       - -  - - - - - -    - -  '     !!$#$& ( (    %/ 3&4'5'.)+)/#  - -(%*-&46(<3% -         -     -     - -  -    - - - - - - -   -  - - - - - -     -                       -             -                                                    -   #&##"!        - - - - - - -      -    - -        - -      -     - -    "% '"# %%% '!(!'!#$& ' ' +%+$)")#*$("("+$*#*$+%)")#*$)#*$*$(")#,&-'+%*"*#' %#$#  -$$$###!!!###$$$$$$%%%&&&&&&&&&%%%%%%%%%$$$$$$######$$$%%%$$$&&&((((((&&&&&&%%%######$$$'''###%%%###$$$###$$$"""###%%%%%%##>5(90$5-"0)    ""     -       - -     - -   - - - - - -   - -    - - - - -  -  -      - - - - -  -   - $ -     -!  &&#&$'$+%.%.$.%,"'0#,$/%- %-1'0*+*-+2   *  +) $8%>2'=6(<2%   -          - -      -  - - -  - - - -      - - - - - - - - -    -   - -    -               -       - -                 -                                                                            - -  - -  !$$%"     -       - - - - - - - - -    -             - - -    -    - -       !"'!(##& ("& &!)"*$("!%%(!("+$*$)#)#*$*$)#*$)#*$+%)")#*$)#+$+%)#-&/( ,&-&+$*#' &%% "  $#$$$$"""!!!"""$$$$$$%%%&&&%%%&&&%%%%%%&&&&&&%%%$$$$$$$$$$$$%%%$$$$$$&&&%%%&&&$$$""""""$$$%%%$$$$$$%%%%%%$$$######$$$$$$%%% >5(:2%80%6/$1+!   !!     -        -       -   - - -  -     -  -  - -  - -   -   -  -  - -   - - -  -  -    -   -#""%$#$%%%%&*&)%-) 0,"/+ *&*&-(/(* %0&0)-+/*2   10,/ ' -#<*">3'>6):1%  -         -     - - - -    - - -    - - -  -  - - - - - - - - - - - - - -     -               - - - - - -  - -     - -   - - - - - - - -  -              -      -            -     - - - -                      "%%#    -         - - - - - - -    - -  - - - - - - - -           -   - - - -    "#!!"'!*$'!(#*$)#("*#+$)"&& )"'!*$+%+%+%+$+%,&*$+%,&,&,&*$+%,%("+$,&+%+%-'-',%+$+$)!& %'!#  %%%### """! !  !!!###$$$&&&$$$%%%%%%###%%%$$$$$$%%%%%%###"""""""""""""""###$$$$$$%%%%%%$$$$$$######$$$$$$$$$$$$######"""######$$$ =4'=4';3';3(6/%/("          - -      -          -! - -         - -     -    -     - - - - - -  -  - - -   -    !#%! -$*%,&*#%%/(0) /)-)*',(1*!1) !2(4* 0, 1*0% )" -(1!) -%?.%=2'>6):1%  - -          - - - - - -     - -  -   -  - -   - - - - - - - - -   - -   - - -       - - - - -   -   - - - - - - - - - - -   -  - - -   -  -       - - - - -     - - - - -  - - - - -    -     - -             -   #$#           - - -   - -     -   -           - -    -    -   -  !$$""$(")"&!%("(")#+$+%*#& (!(!)"*#,%-'-&,%-&-')#,%,&,&*$)",%,&)#,&-&-'/) /( *$,%-%+$(!& & (#'"  $#$$$$""""!"  """###$$$%%%###$$$%%%######""""""$$$$$$"""!!!""""""###"""######%%%&&&'''$$$%%%###"""$$$$$$###$$$$$$###"""!!!"""$$$!!>4'=4'>5);3(4-#,&$         -      - -             -" - -         -     - - -   -    - -  - -   -  -  - -         "#%$%)!'(! "0"0#2&0%.$1&3(!6*"-"4(4* 2-!2).' ) ! 1!' -$>.%=3'<5':1%  -      - - -   - -    -    -    -     -  - - - - - - -     - - - - - -        - - - - -    - - - - -     - - - -        -  -   -    - -   - -    -   - -                     - - -   - - - - - - -  "$"          - - - - -        - - -  -  - - - - - - - - - - -    -        -  " !  !$&!% % %%& )"*#'!'!*$' )",&-&+%(!' ' *#+$,%.'-&-&.'-&+$-&-&-&,%(!+$+$.'/(.'-&,&-'-&/(/'-%*"'!("(#'"##""%%%$$$###"#"!"!!!!!!!###+#0'3*90$$$$&&&(((***444>>>CCCOOOUUUBCA0//&&&lll__^MML888...""#$$$#########%%%%%%%%%%%%%%%%%%%%%"=3%<2%>5(>5*7/%1+!(""   -      -       -                -#  -              - - -   -   -     - - - - -   -     -  -"$''  - - ! #*1&-#1&0$+,0"5*!1, 2(- (5 5!0 0 ( -& =-$;1%:3%:1%  -         -  -  -  - - - -    -  -        - - - - - - - - - - - - - - -   - -       - - - -  - -               - - -    -      - - - - -   - -                       - - - - - - -        - - -                  - "#"     - -   -   - - - -  -     - -  - -    - - -  - -  -       - - -    -  ## !""#%& '!'!& (!+%+$("(!*#)"+$-&.'-&+$*#)"+$,%-&.',%,%)"' +$.'.'0),%*$+$+$.'0) /(.'-&.'.'/(/(,%+#)#)#)#'!%   ##"%%$###"""!"!#$$#########&2)5-!6-!8/#$$$&&&(((+++666>>>EEEVVVUUU>>=.--&&&bbbZZZIIH333 !###$$$#####"$$$%%%%%%%%%&&&&&&&&&"=2$<2%>5(@7+92&5.$,&)#& "           - -       -                  -   -              - -    - - -     - - - - - - - -    - -  #' & $!%"     -! .%/(+  -"3+ 0+ 3(- -&# -  --&( =.$<2&:3%:1%  -          -  -   -       - -       - -   - - -     - -  -     - - -       - - -    - -               - -  - - -  - - -           -  -  -                                   - -         "#"   - -      -   -        -  - -  - -    - -         - -   "  ! #"!"#$% & $& '!'!'!*$-&,%)")"-&' ,%-&.'.',%*#+$-&-&.'/(,%,%' %*#/(/(/(+$&*#*#(!/(/(-&-&0).(/'/(-&+$)#("("'!& "  !!!"!"! !!!"!""""!!! $.&80%8/#7.";1%###&&&)))...888@@@III^^^SSS;;:eee\\[PPOBBA---!!!!!!##$$$$##"$$$%%%%%%%%%%%%&&&!=3%;1#>4'A8+<4(7/$2,!,&)#'"$       -     -          -       -      - -           - - -  - -       - -  -   -     -   %'% )$*%("& #-",".$0)/(2( 2$2",-$1, /- 3'+ $(" -$ *&) -=.$;2%92$:1%  -         -   - - -     -     - -     -     -   - - - -    - -    - -   !  -      -      - - -    -   -           -  -  -      - - - -    -   - - - - - -                  -    !""   -## -   - - -          -  -   -  - - -    -        - - - -  #  !##$##%$& '!& ("("& & +$.'-'*#*#+$+$+$/'0(0(-&+#,%.'.'.'0).'-&+$,%-&/(1*1)-%+$+$,$,%/(1* /(.'0) /(.&/'.&+#)"*#*$+%*$%! !  %'7.#=4(90$7.";2&###'''+++000<<4%;2#>4&A9+?6*:2&5-"0)-'+%*$&!#"                  !! !$%#"#! $#    - -     - - -    -       - - -    - -      - - - -   - -      -!    !!#&*%-()#) *.$1( 0)/*.)/(.'3+"2+!/%1&1+/- 2'+ $23 5&+&, =/%<2&92$:1%  - -       - -       -      - -   -    -  - - -       - -  - -  - - - -   -  - - -     - - - -     -   - -            -      - -      976431091%:1%6-!1%"    -      !!  %& -    - -              -  -   -    -   -     -     -#  "#$$##& & & )#& '!'!& & +%/(.'*#*#,$,$,$/'/'0(.',$+$+$-&.&2+!0(.&/'/(/(0)1*0)-&-&-&,$/(0*1* /(.'1* 1* 1* 0'.'+#+$,%-&-'-&(""#)#)"*##"&(!*"',%8/$=4(90$7/" %%%(((---333@@@EEEMMMccc```RRR>>>,,,$$$%%%$$$""#############$$$$$$$$$>5&;2$=4&A8*@8+>6*70$2+ 1* .(-'+%'"'"&!!!     !#" ' *#& $&(!& %&%$' '!  "    -     - - - -         - - -  - - -   - -   - - - -   -   "  -  !#+#-'-',$,$/&,(-).&/'.(.'/'/'%) 2'2, 0- 2)+ &* $+%/@1(<3':3%:1%  - -       -    - - - - -    -     -      -    - - - - - -  -  -  -    - -     - - - - - - - - -  - - - -    - -     - - -        - - -     -        -          RTTUUTRONKHGFEDBA@?=<;975421091%8/#5- 3'!      -    !!  -$&     - -          - -     - - -   - - -        -     -    "#%$$%$%'!'!(")#(!'!' )"*#,%-'+$&(!+#.&-&/(0(0).',%,$+#-&/'3+!0)/'0)0)/'-&/(1*0(-&/'0)2* 1* 1) /(/'2+!2+!3+"/'.',$+$+%.(.(.(*#%(!-&,%,%+#*#,%,%,$+#1)90$<4(90$8/"###'''***...777@@@FFFfff]]]LLL888$$$%%%%%%&%&$$%$$$$$$$$$$$$$$$$$$%%%<3%=4%@7)A8+@8+:2%4-!3,!0)/) .(,&+%+%("'!% % #!!!!!! #!!!$""'!&&&$#,%+#)#$%)")"' )!' %)!' "#%"    -      - -          -         -    - -  - - - -  $   !! $ %*!+$+%*$+#-$-%*'# !/%.(-&/$,*- 5*4."2."7( ,)+# (.' -0?2(=4':4&  - -        -    -    - - - -  -   - -  -  -   - - - - - - - -   -     -     - - - -   - - - - - - - -                   -   - - -  - -            -        STUUTSQNLIHFFEDBA@>=;:865321/91&8."3+4'"        !!  -#%  - - -     -      -  -   - - - -  -     - - - - -   -   - -    $& '!(!' ' ' &("'!&'!'!(")#)#*$(!,&-&&(!,%-&-&/(.&-&/(/'-$-%/'1)2+!/(.'0(1)0)0)1*1*/(-&-&0)0)3,"4-#2* 1* 5.$2+!2* 1) 0(+#+#-&0) 0* /)+$(!,%-%.'.',%-&0(1).&.%1):1%<3'8/#8/"%%%(((,,,000888@@@```WWWGGG111%%%%%%&&&&&&&&&%%%%%%%%%%%%%%%$$$>4&>5'@7)@8*@8*;4'5."4-!3,!4.$1+"/)!*$-&,&+$+%*$("& & '!& (!%$%(!& &$&*#$$+$+$*"*#)"(!.&.&,$*"*#,%+#)!*"' ( *"*"$$#""  -                 -    -   -  -      -   -   - #  -     $%( '"'"'!). 3$) -0/!,!*$,4'5*5/#3.":'!/*0-1#2) 1?3(=4';4&  - -          - -  -    - - - - - - - -       - - - - -       - - -   - - - - - -  - - -   -  - - -               - - -       - - -  - - -          -    QSTUTTRPMKHGGFEDCA@>=;:754310/91&7-!2)3'#               - -     -         - - -      - -  - - - -              $&(!*#(!("&' (")"("*#)#*$,%,&,&-&1*!0) *#*#.'.'.'/(0)1*0)/'-%-%.&0(1)1)0)1*0).'1*1*1*.'-&/'0)1* 3+!4-#3,"0)6/%2* 2* 1) 1( +#+#-&0)2+"/'/(*#-%0(0)/(.'-&0)0(0'/&3*:1%<3'80#80#&&&(((---111999YYYOOO???)))%%%%%%&&&'''&&&%%%%%%%%%%%%%%%%%%>5'>5'A9+A9+A9+=5(6/"4- 4,!5.$3,"2+",&/(/(-&-&-&-&,%,%+%,%+$*#)"*#,%,%*")"+#*#(!( *#,%,$/',$+#0)/'-&,%-&.&,$*#*"'(!)!+$&%&""   -     - - - -       - -     -     -       -  - #  ! ! - -  ( +$$   -  #,!1'4*5* 4,!3-"6)!0  *) %0' -1>1'=5';5'   -           -  - - -   -    - -     - -       - -  -   - - - - - -   - - -                         -    (((((())))))%%%!!! - - -  - - -        -  QTTTTSQOLJHHGFEDBA@>=;975431/.70&6, 1(2'&               -  -   - -  - - - -   -   - - - -      -  - - - -  - -  -  -  - -   -  %%)!+#*#*#*#'!+%*#)"+$+%*$,&+$*#,%2+"/(+$,%0) 0)0)0)1*2+ 1)-%.%/'2)1)1)0(1)3,!2+ 0)2+ 1)0).&/'1)1)1*4,"5-#3,"*#5.$3+!2+ 2* 0(-%,$.'2,"1* 3,"/(+#.'2+ 2+ 0)0(1)2+ 5,!0'/&4+;2&<4(90$80#&&&)))---///UWTFFF666%%%%%%&&&&&&&&&&&&&&&&&&%%%%%%%%%=4&=4'B:,C:,C:,>7)81$4, 3,!6.$6/%0* )#0(0(.'.'/'0)0(/'/'0)0(.&,$.&/'0'/&,$-%.&+#+#-&,$/&/'/'0(4, 2*/'.&/'0(-%,#,#*")"*#,%' ' ("& $   - -   - - - -        -    -   -     -        -  - - -   !  #'+!-$)%" # $ - ,)$(,!3(6) 4(2*2+!3) / ).)-/$ 1C.&<6(;6'   -        -     -      -          - - - - - -    - - - -         -                 -    """###%%%'''((((((((((((%%%!!! - - -         - -RTSTRRPNKJHHFFECA@@><;876421//?5)6,1(3')        -    -   - -     - - -  - - - -  -   -      - -       -  - - -     - (!(!*#,%+$-&)"*#+%*$' )"*$-&.(,%*#0)3,"/).'-&.'0(1*!1+!2* 3,"3+ .&0'1)3*3+4, 0)/'3+ 3+ /'1)2*0(/&0(2)2)2*4,"4-#4-"0)5.$3,"2+ 3,!1*-&-&1)3+!3+ 1)/',$/'4,!5-#4+!2* 0(3,!5-"3+0'5-!<3'=4(90$"""&&&***---```BCB---$$$%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&=4&=4&A9+B:,B9+=6(;4'81$4,!6/$6/%1*!/(6.#5,!4,!2*2*1)1)1)2* 3+!4-"/'/'0'3* 2)1(/&0'1(+",#0(.&0'/&0'2*4+ 2*/'/&0(1(.%-$,$,%,$/(1) *#(!(!%$       - - -       -  -      - -    -    -   -  - - - -       $( )#)$-( +%/$3$6%.$ 5!2%0&.'$1"7'9) 1+ ,(/(- ( +&,3% ,G1*:6'96'   -         -  - -     -  -        - -  - -  -   - -         - -              -  -  28 = B$!!!"""$$$&&&''''''((('''%%%""" - - -  - - -       PSSSSRQPMKIIHFFDBA@?><:766421//:2&7.!2*3(*   -           -  -   - - -  -  - -     -   - - -            -     - - - *#*$,%.'-%-&)"(",&+%(!)"+$-'/(-&)".'3-#1* -&.'0(1) 1* 2+"3,!4-#2+ 1)0'0(3*3+5-!0).&2*2*0(3+ 6-"4+ 2)1)2)1)2)5-#5-#5.$5.$5.$4-#2+ 3,!0),%-&0(2* 3+ 2*/',#/&5-"6-#4+ 2*2)6."8/$6-!2)6-!<4'<4'80$"""&&&pjjhdgKKL&&%###%%%&&&&&&%%%%%%%%%%%%$$$$$$>5'A8*B9,@7*?6*=4(:2&7/$7/%6.%4,#4,#3+ 3*5,!5,!4,!2*3*4+ 4+ 6-"5, 3*/%2)4*3*3)1(2)2)/%.%1)3*/'1)0'3+5-!3*0'.&1(1)0(.&.&-$,$0)2* ,$)"' & %  -  # - - - -   -   -   -       - -  - - - -  -  -  -  - -     ! %(%('+*!)(,(0) 3-#1(0&2(2+!/)/)-$). 6'0*0+ 2) . % " - (2$ .C-&96&95& - - -   -       -  -                       - -            -           -  ( * ,/5: >#!!!"""$$$&&&'''''''''&&&%%%""" - - -        PSSRRRQPMKJJHFEDBB@?=<9766321//G7+91#5- 5+ +         -     -  - -  - - -   - -  -  -       -  -  -      - -   -   - -   - *"+#,%.'.'/()"+$-&,&+$.'-&.'/)0)-&0)3,"1*!/(/(/'/'2+!4-#3,"4,"2+ 1)0'1)2*4, 5-!3+0(4, 2+2*4,!5-"5,!2)1(3*2)2)6.#6.#6.$5.$6/$5.#3,!3,!1*-&.&1)3,!4,!3+ .%*"/&5,!7.#4,!2*2*7.#90$6."2)6-!<4'=5(91%hhhgff]\\SQR###"#"$$$%%%%%%%%%%%%$$$$$$$$$$$$kkkjii<3%@7)D;.C:.@7+=5);3'91&90&90'6.%5.$5,"5,!6."6."5-!4+ 4,!4+ 5,!5, 7-"4+3*4+ 6- 6, 4*1'3)3)0&0'6, 7-!3)4*0'4+7."5, 0'/&1(2*2)/'0'.&-%1)1) ,%)"(!& )#   -  #  - - - -           -    -   -  -  - - - -    -    " &!)%,) *'-&-$.&4+"4+!3+!2+!/*1-!2+ ) , 6*!4-"2* 3(.) /,/ 5 " -+ B.&84%94% - - - - - -            -        -              -           -          -  # #!" -$ -& ) + 189 E&"""%%%'''&&&''''''&&&%%%"""     -   NQSRRSRQOMLJIHFDDCCA>=;8765431//(B7(9/!7- 7* ,               - -       - -  -    - -   -  -  - - - -      -  - - - - - -    -  )"+#-&.'-&.&)",%-&+$,%.'-&/(0(1* 0(1+!4-#2*!/'/(0)1* 3,"5.$4,"2+ 3+!1)2)2*3+5-!7/#4, 1)4, 3+2)3+4+ 3+ 0'0'4* 4+!3+ 5-"6.$6.$4-"6/$4-"3+!3,!3+!/'/'1)4,!5-!4+ /&+#0'6-"8/$6-"3*2*6."91%7."3*7/"<4'>5):2&UUUMMM>>>)))$$$###%%%&&&&&&&&&&&&&&&&&&]]]]]]YYYWWW]]]```bbb>5'A8*D;-A8+@7+@7*?6*;2';3(:2(6.$5-#7.$7.#5-"3*5-!7.#5-"5,!6-"7."8.#6,!5, 7-!8."6,!5+2(3)4*2(2)7- 5+5,3*2)6, 8."6-!1)1(2)4+2)1)1(/&.&0(/(,%)"'!'!*#   -  "  - - -        -       - -    -  - - - - - -     !"& (#*%,&,"%%5( 4'2)0, -*/*5* 7) 7( 5'2+ 5-#4) - )(" $ 7"! -'B-%;6(<6( - - - - - -                                          -  !    $ ' ( -49C%"""$$$%%%&&&'''''''''%%%!!! - - -  - - -   - -      PSTRSSRPONLJIGFDDCCA>=:876642001* ?4%9/"7- 7* *   -     -    -  -       -  -   - - -   - - -  -         -   - -   -    ,$,%/'.&.'/'+#-&/'-&-&.'/(0) 0) 0) 2+!2+!4-#4,"1* 0)1) 2*!0)5.$5.$3,"3+!2*1(3*5, 7/#6."5, 2*5-!4, 2*4+ 5,!5,!2)2(4+ 7.#4+ 4,!7/$7/$6.#6/$4-"3,!2+ 3,!/'/'1)4,!4+ 3*/',#2)8/$7.#6-"2*3+7/#;2&7/"3+8/"<4'>6)999222&&&###%$%%%$''''''''''''''''''EEEBBBAAA???===GGGOOOTTTZZZ^^^?6(A7*B:,A8+A9,A8,>6*91&:1&:2(7/%6.$90%80%7/#7/$7.#6-"6-"7."8/#8/#9/#7-!6, 7-"9/#8.#7-!4*3)5+1(3*6,6-6-3)3)7-"8.#6."2*1(4+3+4+1)2*1)/'.&-&,$)")"'!)#   -  - - - - - -  - - -  - -  -    -      -    - - - -   -  "  #(" )+)$    +)).(,(/+'% '(+%1+ 1* -#)+! -&8$$ ' A-%<6(=6( - - - - - -                               -  !    - - - ! % ( - 28A#"""$$$&&&''''''((('''%%%!!! - - -   - - -   - -  QSUUTTTRQPNLJHGFEDCCA><:976532104-"=2$;1#8-!7)'      -#    -       - - -  -   - -  - - -    -    -    - - - - - - !  +$,$0( 0(.'/'+$,%.&-&.'-&0(.'0(/(2* 2+!5-#6.$3,"1)6.$1)3,"60&6/%5-#3,!3+ 2*4, 5-!6."8/#5, 3+5-!4, 3*5,!5,!6-"4* 3)4* 6-"3* 4,!7.#8/%7/%5.#6/$5.#2+ 2*.&.&2*6."4,!2*.%*!2)90%7.#5,!3*4+ 90$=4(7."3*80#>5(?6*&&&&&&$$$ $$$&%&'''&&&&&&&&&&&&&&&(()'''&&&'''&&&$$$)))555>>>CCCLLLDA?@6(@7)A9+C:,C:-D;.@8,=4);2';2'7/$7/$7/$6.#7.#7.#5,!7.#6-"7."8/$9/$:1%8.#5+ 8-":0$9/#7-!5,4*6,2)4+6-7- 7. 5+4+8.#9/$6-!1)0(4, 5, 4, 2)2*0(.'0)0),%+$-%(!*$    -    - - - - -     -     -     -  -    - -        "$))* -  - 1%1%*#' (*#/(1* 2% -*5"2!1"7#& -( -@,$=6)>6( - - -                   -     -      - ! -& * - 3 7>"###%%%&&&''''''((('''$$$!!! - - -  - - -   -   SUVVVVUSQPMLIGFFEFEC@><;976421107/$<2$<2%9."8) %  -  -    - &   - -     - -   - - -  -   - - - - -      -      - -   !    ,%,$.%.&/'.&,$,%-%-&/(.'/'-&1)0)2* 2+!5.$6.$3+!3+!2* 1).'4-#6.$5-"4,!3+ 2*5-!4+8/#90$7/#4, 5-!4+ 3+6-!7-"6-"5+ 4*4*8.#5,!5,!7/$80%6.#4,"5-#4-"2*2*-%-%1*6.#7/#4+ -$+"4+ :1%8/$5,!3*4+ 90$<4(6-!2)90#?6*@8+&&&'''%%%###$$$&&&&&&&&&%%%&&&&&&'((((()))((('''&&&%%%%%%%%%%%%(((111987?6(A8*C:,D;.B9,<4';3&;2'<4(90%8/$80$80%6-"7.#7.#5,!5, 6-!:0%:0$:0%9/#5+ 7-!:0$9/#5,5+3)6,3*5,6-7. 8/!6- 6, 90$:0%6."2*1(4, 5, 4+1)2*2*/(2+2*-%,%.&+$)")"  -  - -  -  -             !! -     -     - #  !! !!!& &$""$'&   &). 3'2'1$8%6"6!5%2*1+1+ 4"# $ /   /& -* -=)!=4'<4'            -        -  - -     " & + - 2 79 E&$$$%%%&&&''''''&&&###  - - -   - - - -    NRUXX XWUSROMJHGFFFFEB@>=;86532110:2'<2%=3%:.#8*!#  -!    -  %        - - -   - - -    -       -    -        -  -#    +#+#-%/'.&.'+$-%-%/'/(0)0(/(2* 1* 2* 2+ 4-"6.$1)3+ 2* 2+ 3+!4-#3,!2+3+ 4,!3+5-!2*6."91%90$6-!6."3+3*7."7.#6,!0'2)6,!8.#7-"7.#7/$7.#5-"6.#3+ 1)80%5-".&/'3+ 8/$80$5,!.%.%5,!8/#7.#4+ 2*4+ 90$<3'4,1)90#?6*A8+%%%&&&%%%%%%%%%&&&&&&&&&&&&''''''&((())******(((&&&&&&&&&&&&%%%&&&%%%%%$?5'A9+C;,C;-B9+>5(;3&<4'<4'91%91%80$80$80$8/#90%90$4+8/#;2&;1%:0$9/#6- 5+ 9/"9/#7- 8.!5,8.!5,6,7. 8/!9/"6- 7-!:1%;1%6."3+2*4, 4, 3+2)4, 2*0(3+1*-%-%.&)"*#*#   - -  -   -           3!  ( !    -  - -   '!     $"%&#,$-#/"! &.'1+ 6,#4*!2(2(3)0%)1%6-#5-#4-"7&! # 6!),2!) ) 9%<2&=3' - - -               - -  - -    -  !      - -  -  - - - -   ! & ( + 08: D%###%%%&&&&&&&&&%%%###  - - -   - - - -  -FKORTVWW VTQOMJHGFFFEDB@?=:7642211091';1$;1$9-"8)  ""      !& -    -  - - -   -  -  - -  -   - - -      -       - -  - - -  ! -  *"-$/'/'-%.&-%.&.&1* 0)2+!2* 1) 0)0(1)2+ 4-"70%1)3+ 6.#3,!4.#6/$6.#4-!3+5-!6-"6."5, 7."90$7."6."6-!3*3*7."7."7."2(1(4*6-!3*5,!90%7.#5-"80%6.#3,!92&4-!.'/'4+ 80$90$6-!/&0'7."90$8/#7.#6-!7.":1%=4(4+1)91$?6*@8+%%%%%%%%%%%%%%%&&&&&&&&&&&&''''''''''''''''''&&&&&&&&&&&&&&&%%%%%%%%%""!|||kkkvvvvvvlllhhhkkkHGF=5&B9+B:,B9+A9+>6(<4&>6(>6)<4';2'80%6."90$:1%:1%90%;2&;1&;2&;2&;2%:0$8.!7-!8.!9/#9/"9/"7-9/!7. 7. 8.!7. 9/"7-!6, 90$;1%7."4, 3+5-!6-!4+2*4, 2*0(3, 1)-%.&-%*#+$+$     - -  - - -            .:(#3 3 *%     -  - -   &!  !! !{{{yyy$( %#)$,&-%+#-%0* 0* 3*!5-$2) 1'2))+ 6.#7.$5-"5' ! 54#5&2!+' 7#>3'?6) - - -               - - - - - - -                !    - - -       -       -% ( * /5: B####%%%&&&&&&&&&$$$"""  -   -  CHLNQRSSTRQOMJIHFFFDBA@?=:764320//@6*;1#90"8, 5'        -#     -  - - -  - -     -  -  -  -   - - - - -     -  - -    - -     *",$.&.&/'0(/'/'0)1* 2* 4,"3+"2+!1* 0(1*3,!70%6.$3+!3+!4,"5-"5.#6/$70$6/#4, 5-!6."6-!6-!8/#9/$8."7."6-"4+4, 6-!7."6-!4+1(1)5, 5,!7."80$4,!4-"70$7/$5-"91&4-!/'0(4, 90$8/$5,!0'1(7.#90%7.#6-!6-!7.";2&=5(6-!4+;2%?7*!!!%%%(((+++455>=?E@BKGHIJH;:8))(%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$%%%"""iii```ZZZQQQKKKKKKMMMPPPTTTTTTSSSTTTXXX^^^uuu=5'A9+B:,B:,@8*=5'<3%<3&=5(<4';2&:1&8/$91%:1%90%8/$90$;1&;1%;1%;1%;1%9/#:0#;1$=3&<2%;1$9/!90"8. 7. 8.!6-8/!6, 3*7.":1%7."4, 3*5, 6."5-!4, 5-!3*1)4, 1*-%-%,$*#+$,%   - -   -           -  -  &$"-'  -       -    &!  !!qqqrrrsssjjjdddrqs "&!(#,%/(-'-'0+!/* &!2,#.*-(-%$*0(6/$6/$4,!6( !1  )-$8$@5*C:-    -  - - - - - - - - - -    = 8 3 - ( & ' & -% -$ # # " !   - - - - -  - - - -         % ) + -5: ?"$$$&&&&&&&&&&&&%%%###  - - -     -  @DHKMNOOONMMLKJIHGFDBA@>=;8643210.H<,<2%:0#7+ 3%  -$      -     -  -   - - -  -     -   - -  - - -   - -  - - -   -        -  -   +$.&/'/'/(2)3+!2* 2)1(3+!3,!2* 3+!3+!0)3+!5.#80&8/%4,!3+ 4+!5."6/#6/$7/$6."4, 4, 5, 5, 7."8/#9/$7."8.#8.#6."6."6-!80$6-!3+1(3*6-"5, 5-!81%6-"5."80$6.#4,!70%3+ /'0(3+90%80$4+ 0'3*90%;1&7."5, 7."7."=4(=4'7/"5- ;2%@7*"""$$$'''+++678?>@D@BJHHEFE765&'&POPHFG777######$$$$$$$$$$$$$$$"#"ZZZIII======888999777777:::;;;>>>???AAACCCHHHNNNPPPYYY?6(@8*C:,C;-C;-A9+>5(<3&>5(=5'8/#90%8/$8/#80$90$90$;1%;1%;2%;1%;1$:0#:0#90#<2%<2%<2$9/"90";1#9/!7-9/!7. 8. 4+3*9/#90$4, 3+5, 7."8/#7."5-!5- 2*1*5-!2+-%,$,%*#*#,%    -  - -            -  - !   - - - -   - -       " qqqvvv{{{LLJ>><---555554TTRddf#$(#,&-$,","-$2$/  -0!-") ( %.#2+ 4/#50$5-"8*"% -" -4./7).$:%A5*C9*     $kA"];_6[4U0L*E&>!95 0 -* ' -' ' & -& % -$ "!         -  -        # ' + + 0 69 D%&&&&&&''''''&&&###  - - -   -  - - 7=ADFIJKJKJJIIJJJIGGECB@>=;9643210.F:+>3'<2%7+ 3%  $#!          - - -    - -       - - - -  -    - -    -    -      - -  -     +#-%/'.&-%0(0(1(1(1(3* 3+!2* 4,"5-$2*!2+!6/%5-#7/%2*3+ 5-"5-"60$6/#6/$6."6-"4+3+5, 7."8."9/$6-!5,!6,!7/#6."6."90$6."3*0(3*6-"5-!5-!81%80$5."80$7/$6.#80%4,!1(2)4, 90$8/$4+1(5+ ;1&;1&8/#6-!7."90$=4(=4'7.!5-;3&@7*"""$$$(((,,,799@>@EACNKMEEE443$%$ONOECD544 ""!"""#""#######""DDD555222000000---///,,,---//////333555777777<<<@@@CCCFFFA8*C:,C;-D;-B:,?6)=4'>5(<4'90%90%7."80$:1%:1%9/#;1%<3&;1%;1%:0#8.!9/#9/"=2&<1%<2$9/!:0"<2$90!8/ 8/ 9/!9/"5+5+90$90$5, 3+5- 7/"80#7/"6.!4, 2*2)5-!3+ -%-%.'-%+$,%  -  -       -    -    -  -   - - -           nnnqqq~~~RSPCCB333)))(()(((''((((AA?VVUZ[^''&*"/&,")   " !& -# &0%6+#5+!6,"7/$5.#5+ +# 45#1!3$-%:%@4)D:+ 'sF(fB4cI\5W1P,I(C%=!9 1 + -( -' -' -' -& -& % -$ #!           -        " ' * + / 5 8C$&&&&&&&&&&&&&&&$$$  - - -      7<@BDDEFFFGGEGGGGIIHFECA?=;965431/6.#C7)>4'<2&7+ 1" "     -    -     -  - -         - - -  - -  -   - -    - -  -   -  - - - - -  -   +$,%0(0(0(3* 0'2)2)1)2* 4,"2+!3,"4-#4,"2*!5-#:2(6.$2*3+ 6.#5.$6/&5.#70%6.#7."3+3*6, 7-!7.":0$7."5+ 7-#6."6."6."6."5-!3*1(4+ 6-"4+ 3+7/#91%5/"81%80%70$80%5-"0(2)4+8/#8/$4+ 2(5+ ;1&<2'90$7-"7-":0$>5)>4(6- 5,<3%?6)"""%%%'''...688@?@FDFURTKEA121"##BBB211 "!!""!"""""""!!432111(((%%%&&&'''))))))&&&&&&'''((())),,,...///222666999;;;BBBA9+B:,B:,C:,A9+?6)>5(>5);3&:1%:1%8/#90$;2&<2';1%;2%<2&;1%;2%=3&:0#9/":0#=3&=3%<2%;0#:0";1#8/ 7.8/ ;1#;1$6,7-!7-!90#5, 5, 6-!6.!8/"8/#6.!5, 3+2)5,!3+ ,$,$/',$+$-&   -               - -        -          - -jjjuuuVVSFFE776((((()))))))(()(()((('''''(EEBKKKLIH  -* -$)! !  # '&-!&.#5+!8.$80%6."6.". " -)  -,5(5 >3(F;, *oF/gG\4X1S/M+E%@#;!6 0 -+ -( -' -& ( ' -& -& $ # !                 " & ) + / 3 7A#&&&'''''''''&&&$$$  - - -   /6;?ABCCCABDCBCCCEFFGGEDB@><:75531/:1&>3%>4(<2%6*. # $!  -     -     -            - - -  - - -  -   -     -     - - - -      -%,%0(0)1)4+!/&/&0'2)4,!5-#2* 4-#5.$5-#4,"5.$80&6.#2*3*7.#5.$5.%6/$80%8/$6-!4+4+6, 8.!8.";1%9/$4+7-"7,"6,!8."7-!6,!3*2)4+6-!3+4, 91%92&4-!7/$7/$7/$81%6."2)2*6-!8/$8/$4+ 2(5+;1&<2&:0%6,!8.":0%@6*=4'5,5,<3%?5("""&&&(((.//8:8?>>GDFTPSHDA/0/!!!@@@0/0!! !!!"!!"""""""! )))$$$!!!"""!!!""""""!!! !!!!!!###$$$%%%'''***,,,---111888A9+C:,C:,C:,B9,@7*@7*@7+=4(91%:1%80$90$:1%;2%<2&<2&;2%;1%>4'<2%:/"8.!7, =3%>4&=3%;1#:0"<2#9/!9/ 90!;1#:1#3*6- 90#8."4+4,6- 6-!7."8/#6- 5-!5, 1)5,!5-"-%-%.&-%,$-%    !  -               - -   -     - -   -ihhmmmXXXIIG::9***(((((((()''((()))))))''((((&&'(()''&>?>HIH !,$,&)". 26 .#+ 2+!2) 3((0%.$5,"7/$6.#7/$/ !+5#4%6(: ( -=1&H=,'qC(d@\3Y2T/O-J)D%>" 8 3 -- ( -( ( ( ' % $ & -$ " !        -        " & ) + , 1 7>"&&&(((((((((&&&$$$    /5;>??BBA@@@>???@CCCDDCCA@><;866420<3(9."=3&:0#4(* -! !#$ !       - -            - -  -    - - -   -   -    - -  -  -      *#+#0(1)1)2* 0'3* 3* 1(4,"4-"1* 6.$6/%5-#4,#4,"4-"7/$2*4,!6."6.%5.$5.#7/$90%6."4+4+5+6, 7-!9/$8.#4+ 6,!5+ 6,!6, 6, 6-!3*1(4+7."3*4+7."7/#7/#70$70$6/#80$6-!2*2*6-!90$7.#2)1(5+ ;1&:1%90$6,!7-";1&@6*=4'4+6- =3&"""&&&)))/0/9;9???FDFOLOFCA/.-!""--- ! !!!!!!"!!" %$$###""""""""""""!!!$$$""" """######!!!""""""!!!"""$$$)))111666B9,C:-C:-C:-C:-A9,A8+B9,?7+=4(<3'90%:1%;2&;2%<2&<2%=3&;1%;1$=3&<1$9.!8-!<1$>4&=3%;1#9/!<3$:1"9/!;1#;2#;2$5+6,:0$8."5,5,6-!5, 6- 8/#6-!5, 5, 1)5,!6-"/&.&0(-&,$,$                     - - - iihiii___OOLBB@..-((())***+***))****((((((''((()((((()(((((((((332DFC((#*')&$"(,#.).(/)0*!0+!0) 2) 5+"4(3* 4-!6.#8/$0",0(&;$# ' @/&J>-$vB"k?#`=[3V0P-K*F&A$==<<<=??@@@@????=<:97421?6*8.!<2%8."3&'  $ - -$#!        -  - -          - -    -    -  -   -  -           -  -  -    -%-%1)3+ 3+ 2+ 1)2*3* 1(4,"5-"3+!5-#6.$5-#5.$70%81&7/$2*2*4, 5-#6/%6/$7/$80%7.#4, 4+5+6, 6,!7."6,!3*5,!6-"4+ 4+ 7."6-!3*2)4, 5-!1)3+6."6."5-!6."6/"6/#80$6-"2)3*5,!8/#8."6, 1'6,!=3(9/$8/"7-!8."<2&@6*=4'4+8/!>5($$$''')))121:<9@@@BDEJLLBA?,,+"""  !! !!!"!!! %$%""" """!!!!!!""""""""""""""""""#########"""!!!(((,,,C:-D;.C:-B9,C:-C:-B9-B:.@7+=5)>5)<3';2&;1%;1%<3&<2&=3&=3&=3&;1$;1$9/"7,;1#>4&>4&;0"9/ <2#:0!5,;2#;2$:1#7- 7- :0$9/#5, 5,6-!4+4,7.!5,4,5, 1)4, 5-!/&-%0(,%-%,$    -       -               - fffmmmdddRRRCCB222**)))'**)))))))(()+++)))(()''((()''(''(''((((''''''&&&432AB@ &!)%'%$ * .%-(/* 0+!1,#1-#.(1) 6+"9+#-6( 9,#8-#6.#2"$ ).%$9!* # ;*!A8)"r?d8]3W0P,K)G'A$>?>==<<;;:;;<==<<<<<<<<;:8631<4)8-!<2%8."2%% " )$!" -%$         - - - - -        -  - -    -   -  -   -    -  -      - -    +$.&2* 4,"3+!2+ 2* 3+ 4+!3* 5-#6.$4-"3+!4,#3,"5-#81&81&6/$4,!3+4, 3+!6.$7/%7/$80%7.#5,!4+5,!5, 4+ 7.#4+!2)4+!4+!1)2*4+ 3*1)2)1)2*/(1*5-"5-"4-!6/#5/#5."6/#4, 0(2)6-"8/#7."4*/%7-">4(9/$8/"7-!9/#;1&@5*=3(6, 90#>6( %%%'''***553=<;@@AEEGHHI>><***"""  ! !!!! &&'""" """!!!!!!######"""""" """###"""""""""!!!$$$###D:-E;.D;.C:-C:-C:.B9-C:.A8,>5)>5)=4(=4(=3':1$;1%<2&=3'=3&=3&=3&<2$9/!8. ;0#>3&?5';0"9/ ;1":0!8/ =3%<2$;1#9/!7- ;1$;1$7.!6- 7."6-!7.!8/"4+6-!7.!3+5-!5-!/&-%/',%.'.&    -        - -          -       - dddfffPPQDDE444)))***)))***,,,))))))**+***++,)))***)))''(&&''''&&&((($$$'''%%%+)*>>>ED?&")&'$'#*!*!+!1'4)!3)!2) 1) 0(3) 5( 1"0"0$4* 80%8' ' $ 3 4%6( 6 .%:'>5("vAk;^3Y0T-O*I'A"< 83 . ) ) -( ' ' ( ( -' -& & -$"           !!! $ ( ) * - 2 7@$&&&'''(((&&&###   & -) /59:;<==<<<;;::::9::9999::999998642B8+8.!<3%9."2%# %% '&&%    -      -       -  - -    -    -   -  - - - - -     -     ,%.'3,!3,!3+!3,!2*3+ 3* 3+ 6.#6.$4-"2+!3,"3,!5.#70%80%6.#1*3+3+2+ 4,"6.$6.#70%4,!2*1(4+3*3* 5-#1(.&1)0)0(1*1)1*1*-'.'.(-&.'0)0)1*5/#4-!2+4-!2*.'0)5-!6-"5,!2)-$5,!;2&7."5, 5, 8."<1&?5*<2'6, 91#>6("""&&&(((+++865?==A?@JGJGFG9:8()(###  !!!!  &%%### !!!""""""###""""""!!! !!!###""""""""" !!!$$$"""E<.D:-C9-C9-C:.C9-D:.C9.?5)>4(=3'>4(=3&=3&=3&>4(>4';1$>4'>4'<2%:0"9/!9/";1$>3&:0"9/ :0!:0!90 ;1";1#;1#9/!8.!=3&=3&8."6, 7.!7."80#90$6- 6-!7."4+5-!5-!/&-%0(.'-%/(      - -     - - -       -   -    - - ddcfffPPPGGH667''(&&&'''))*((*(()))**********))*))*******+++)))(((''''''&&&'''%%%%%%'''#""99:DEC,%+#*$ ).!-!$&0(2(.!  +!6/#8*"%  -4 %$ 42# 4!<3';4+"xB o>a7Z1V/R,M*G'B$A@BMKNOIF454&''###  !! &$$$!  """######"""######F=/D:-D:.C:-C9-B8,C:.B9->4)=3'<3&>4(<3&=3&>4'=3&>4'<2$>4&>4&<2$:0"9/!:0"<2$;1$9/!9. :/!;1"9/ ;1"<2$9/!7- 8/!;2%;1$7-!5+7-!8/#90#8/"6- 6- 6- 4+5-!6."1(/&0)/',%1)      -     - - - - - -   - - - -    dccjhiXWWLLK<<<)))&&'&&')))(()''(&&'&&'(()*****+**+**+(((((('''%%%###'''(((&&&''''''''''''&&&''')))959BBB$"'   - -  - 0(3*!/%')/#3* 5.#7*!# - -5 +.6"1!0=0&K?."s@f9\2W/S-M)F%B$>"9 3 . * ) -( ( ' ' ( ' -&#"" "!          ! !!""$ -& ) + + 0 57 %%%%%%&&&%%%### % - -& - -+ 289:<<<::::9999877665442333334322280$B7'6/!82$9-"3 ! )'%%& -& $          -  - -              -  -  -  -  -  -  - -        ! -  /'1*3+ 4,!3+ /'/'3+3*5-"6.#4,!3+!3,!3,!5.#70$91&6/#3+5, 6.#5-"5-"81&7/%70%1)0(.&.&.'.'.&*"( ' )#& ("("& $$#!!"$& '"*%,&,'.(*$& )#/(2,!3,!0),$2+ 7/$6.#6.!5-!7.#<2'?5*;1%4+80"###&&&***1119:9>>?BBENOQJFD010%%%  !! #!  !!!!!!F=/D:-D:.C9-C9-B9,C9-B8,>4(<3&<3&>4(=3&=3&=3&>4'>4'>4&>4'=3&:0";1#:0";1#=3%=2%;0"9.!;/"<1#:0";1#:0"7- 6- 7.!:1$;1$9/"6,7.!:0$:1$7/!5,5- 4+3*5-!7/#2*0'/(/'-&0(   - - - -     -     - - - -   `_^qpp\[[OOOAAA000'''''''''%%&''()))(()(((&&&&&')))*****+))*(()%%&###!!!!!!###&&&((((((((('''(((''''''&&&(((/,/@@AA>;)!  ! -   */ 0#.%.&2+ 4,"3)3)6,"4-"70%9.%+43!).-$ 2?2(B:+!uAj<]6W0T.O+K)E%?#9 3 . * * * ) ) ) -( ' -% -% -$ #"!      -      !!!!" # $ % ( * * / 3 6B%&&&&&&$$$""" % - -& - - 389:<<:9998888877655432101000100//>5(>4&6/"92$9+!. ,  -("  & %%  - -    "  -  -  -    -          - - - -  - - - - - -     -    - -  0)2+ 3+ 4,!4,!0)1)4+ 3+ 5-"4,"2+ 4-"4-"3+ 5.#7/$80%70#4, 6-!7/#5-"6.#80%7/$80%0).&+#(!' & & "   !$"#'",'/(+%)"0)3+!2+4, 4, 8/#<2'@6*:0#3*:1####''',,,3339:9;=?CFHOQTFCA00.&&&  ! !!!! &&&!!!  D;-B9,A8+A8+C9-C:-C9-B8,?5)=3'=3'>4'=3'=3'=3&<2%<2%;1$>4&>4&=2%;1#;1#<2%=3%=3%;0"9- :/"=2$:0"<2%<2$9/"7.!8/";2%;1$:0"6-6-9/"<2%8/#6-!7."5-!3*5, 7."2*0(/'.&-%.&  - -  -        ^]]iiiQQQAAA222&&&((()))(((''&''''''((()))))*(()'''''')))***(()&&&%%%$$$  - $$$'''))))))'''((('''''''''(((&%&=<>DED%')+.$(0' 0) -',$-&2+!4-"-%-$5+!4,"7/$8.$5%., -# -1) 1A1'?8* o=`5Y0S-O+K)E&A#=!82 , ) ) ) ) * ) ) ( -& %"!"!!        -  -    !""!!" # # -& ) * * . 3 6@#%%%%%%###!!!  - - -% - ( .479;<;:89877776776444310//.-----,-A8*:1#80#:3&;,"* -, -! ! !'"$%"#     "  - -  -   -          - -     - - -    - -   -        /(2+ 3+ 3+ 4,!1)0)4,!4,!5-"4,!2* 5.#4-"1*5.#6.#80%70$5-!6."6."4-!7/$7/$7/$7/%2* -& !"$##*$/(2+!4-"3+ 7/#=3'?5(8/!2)8/!###(((...3439::>@AEFGMOPA@?,-,&&& !! """ D;-E<.D;-C:-C:.D;.D;/B8,?5)>4'>4'>4'=4'=3&<2%=3%=3%=3%>4'>4'=3&<2$;1#<2%=3%<2%:/!7,:/!=2$:0"=2%<2%:0#7.!8/";2%<2$:0"6-4+7.!:1$:0$6-!5, 5, 2)4+ 4+ 1)/'0'/'-&.(          -UTSrsrVVVFFF888)))%%%%%%$$$((())((((&&&&&%&&&''')))***)))(()(((**+))*(((  - &&&((()))((()))'''''''''%%%'''111BBB -!-&,#.#.#/&1*!0).'/'0(5-#0(%+$6-#7-#9.$7.#4($ 324!7 + ) ?.%@8+71(!r?f9Y/U-Q+K(E$@"4'8. 2(3* $$$***///675<=4(?5(>4'>4'=3&<2%>4&<2%<2%=3&>4'>4&;1#:0"<2%>4&=3%;0"8- :/"=2$:0"<2$<2$:0#7- 8/";2%<3%90"6,3*6- 90#:1%7."5-!5, 3*4+4, 1)/'0'/'-&.(  - -    - -PMMwxx^_^III:::+++))))))(((((('''&&&&&&'''&&%$$#%%$'''((((((((((((''('''  -  '''(((((()))''')))&&&&&&(((00/???"($*%,&.'.&/) /) ,$)4$4$8)"/#* 3* 6.#7,#8-#6-"3(#$ -4+% 4* " ?,$?6)JB0#uBk<]4W/R+M)I'D%>! 8 3 / * ) ) ) ) ) ) ) ( ' -& % $ $#""!              ! !                       !  !! " ## % ( * * + 1 48 8*"$$$###  - - -  - - -$ - % ) 036899777765455555533210/.-+**()*))D:-8/"91#<3';)! $ ) &*  &)#&'& #    - -  - - -     - -              -  -  -  -  -       -      -   /(3,!4-!3+ 4-!2+1*4,!5-"5-"4,!1*3,!1*0)5.#80%91&70$5-!7."7/"4- 5."6.#5.#3+!.')"&  6- <3%6-0'!!!%%%***000986>=4'>4'=3&<2%=3&>4&>4&=3&>4'>4';2$9/!<2%>4&>4&<1$9. :/!<1#:0";1#;1$9/"6-7.!:1$:0#8.!6,4+8/!:0$90$6.!5-!4+2*3*6-!1)0'/'/',%-'*%   -  -  - yyycccLLL???///((('''((())))))((())))))'''''''''$$$###$$#&&&''''''&&&&&&   &&&((((((((()))(((&&&'''((('(&;<;DBC($&"*&-%.$/&+"$ )%  /$4+!7.$7,"8.$6/#3)* *# " -40" 8"<2%A9*!n>b7X1T.O+I'C$>!84 0 , -) -) ) ( ( ( ( ( ' ' -& -% $$#" " !!!!! ! !!  ! !!     !!   ! ! !                  !!! ! !!!!!  !! ! " # # $ ' * * * / 3 5C%%%%###""" - - - - - - % - $ - -% -* 035787777665455455532110.-,*)))))((NB16. 80#<3';' )& - -% -  ++!&%&       -    -  -   -      - - -     -   -  -  - -    -       - - - -   /'4-"5-"4-!4-"3+ 3+ 5,!5-"5-"4,!2*4-"3+!1*5.#81%92&70$6."7."8/#5-!4-!5-"4,"1) +$& "  - - - !!!&&&+++221<:8@<=GDFUSTPLI021&&&&&&"""!!!!!!""""""$$$$$$'''+++...333777000D;-D:-B8+A8+C:-D;.C9-=3&>4'?5(>4'>4'=3&<2%<2%>4&@6(?5(@6)?5(<2$8. :0"<1$=3%<1$8-9. ;0":/":0#;1$8/!5,6- 8/"9/"7. 5,5,90#:1$80#6-!5, 5-!1)4, 4, 1)/&/'0(,&,'+&  -  - -  ECCdddCCC===222((((((((((((((()))))))))((()))((('''((('''&&&######%%%'''     ((())))))(((((((((((('''"#!553CCC*%+'&",#(      (%* 4,!5-"6-"4-!3)*)7#9(!;& 6", @3(@6)B;1"r@g:X0S-O,L*F&A$,6- 80#<0%7" **$&" " ++ %$$       -  -  -   - -   - - - -  -       -  - - -  -  -  -            - - -  -    .&4-!3+ 4,!5-"2+3+4+ 5,!6.#5-!3+ 6.#5.#3, 6/$:2':3'81%7/#7/#8/#5-!4, 4,!4,"0( )"!  - - - - - - - - - - - - 221<::@=?GEGSTSJGF.0/&&&$$$######"""!!!$$$&&&,,,+++---222777999D;-D:-B9+B9+C:-B9,B9,=3&?5(?5(=3&=3&=3&=3&>4'?5'?5'@6)A7*@6)<2$9/!:/";1#=2%<1#8,:/!;0#:0";1#<2%8/"5,5-7.!90#8/!5,5+7.!:1$91$5- 4, 5-!3*4, 5-!1)/'/'/(,%+&)$  -  - @="9 3 / * ' ' -' ' ' ' ' -' ' ' & -% #$ $ # "  ! ! " " " " " " " " " ""!! ! " !!!!! ! ! !!!!" "! !   !!      !    -! ! !!! " " " "  ! # -# "!   ! ! "# # # -% ( ) * , 1 5># - - - - - - % -$ - -$ - & +03555677666543334442110/.,)' ' ('' ' ' ' G<*5-9/#<.$1! %  $ -$(#'"#$#$%  -   - -  -  -  -   -  -  -  -        - - - -  -  -  -            -  -  -  .&3+ 3+ 4,!4-!2*2*1)3*7.#6-#5,"5."5-"3,!70$93';4(;3&7/"7."7.#5,!5-!3,!3+!.&$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  212:9<:<>EHHQSQECB0/.&&&###$$$"""!!!%%%%%%)))+++---222777:::...B9+B9+A8*C9,D;-D;-D:,>4'?5(@6(>4&>4&>4&>4&>4'?5'?5(@6(@6)@6(<2%;1$;1$=2%=2%;0#9.!;0";0"9/!:0#=3&9/"5,6- 7.!90#90"7- 5+6- 90#:1%5-!3+3+2)2*6-"0)/'.'.'*#)$)$   - =:9iiiPPP666---###%%%&&&###%%%&&&'''((((((((())))))************((()))))) - !  &&&'''(((((('''%%%%%%''''''***<;;B@A'('!( *. 0!#'/%1(7,#3(/$ -'3-!3, 3*2#$ -& ,  ,;% /' ;* B5)I=-!o>c7V0S-O+L)G&A#,-,&&&""!######!!!%%%$$$)))***...222777;;;<<<C:,B9+C:,D;-D;-A8*B8+?5(@5(?5(>4&>4&>4&=3&?5'?6(?5(?5(?5(?5'<2%;1#;1#<2$<2$<1#:/!:/"<1#:/":0#<2%9/"6-6. 8/!9/"7. 5,4+6.!91$90$5-!2*4, 1)3+5,!1).'/'.&+%*%)$  -rrrZZZ888---""" """%%%'''$$$$$$&&&'''(((((()))))))))((())))))(((((( -   !%#&&&'''((()))***%%%'''&&&&&&!!!866BCE("& ' *".%.%-%* ,",%1*!4*!4( 1'+#0*2,!5.!4+ 4&& 5#<+%9("8#:$ -1A4(A6("r@h:Y2T-O)I&D%@#=! 8 2 , ( ( -( -( -( -' & -& & % $ -# #"" """""!!"!! " "!! "!!!!! " " -# -# -# """ " -# -# " " " " " " " #""""!!! !!    ! !        !    ! !!!!!!!!! -# -# " " " " !  ! " # # # $ ' ) ) ) -48 B% - - - - - - ) -$ - $ - % - ( + /2235566665433444332100/,*(((& & % % & E:,<3%5-9."7'% $ *,(' &+ ) $  #&$   -   -  -  -   - -  -           -    - - - -   - -       -    /'3+ 3, 4,!3, 0(2)4, 5,!6-"6-"5,!6-"6.#6/#92&;4(<5)<3'7."6-"7."6."6-"2* /('! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  2447<;=ABMOQLKK;;:***&&&##"###"""$$$%%%$$$((())),,,000555;;;===D;-D;-E;.C:,B8*A7)B8*@6(?5(?5'=3&=3&>4'>4&?5(@6)@6(?5(?5'?5(=3&<2$<2$<2%<1$<0#;/"<1#<2$9/!9/"90"9/"6- 5-7/!8/!7.!5,3+7.!:1%91%4, 1)6."4, 2*2*0'/'.&-%,&*$*& - 866[[\???222%%%!!!%%%'''%%%###%%%'''((())))))(((***+++((( -   "&#!'''(((((()))'''(((&&&&&&$$$000>?@)"&!(",%,$+$+&-%.&+&.)4,#2'/%3&4&5(7-!4+2'-02  -& -:$ -,=0$>4&<6- k;_5V0S.N,I'C$< 62 - * -( ' ' ( ) -( ' -' & % $ # "!!! " " ! !!"!!"""! ! !! " "!!! ! " " " -# -# -# # " # -# -# -# """" # # " """"""!! "!                  !!!!!!! " -" " " "!! !! " ""# $ & ( ( ) , 27A% - - -  . % $ - & - -' * .112456666522343432100/.+))((' & & & % ;2(91#7.!9-!1! -#   -"' (* )& #'!%$       - -     -  - -        -  - -   - -    - -       -   /(3+ 4,!4,!4,!1)1)6."8/$8/$8/$6-"6.#5."6/$:3';5(<5);2&6-!6-!7.#6."5-"3+!/(&$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  665;9;@=@QPRIHG676((''&&$$$###""""""$$$$$$&&&(((,,,///555:::===D;-D;-E<.B9+A7)A7)C9+A6)?4'?5'>4'>4'>4&>4&?6(@6(@6(?5(?5(@6(>4'<2%=3%=3%<2$;0#:/!<1#<2$:0":0#:0":1#7.!4+7.!8/"90#7.!3*4,90$:2&4, 2)5-!5-!2+1).&,%,$,%)#(#532``aJJJ999---  $$$'''%%%"""$$$''''''&&&&&&&&&     -  (!"&&"''''((())))))'''&&&'''&&&$$$***;;;& %!&$'$("%."-#-$.%/(2*!0''!  +8,!4, 0)4' # 0# +8) + ( 8'>3'TH5c7X0S.P-L+E&?"9 50 * -% -& -' -' '& & ' & $ # # # -" " !!! ! ! !!!!!!!"""!! " ! " " " " " " " " " -# # # # # # $ -# #"""" # # # """"""!!!!!     !!    !    !!!!! !!!! " " " " -" -# -" "!!!!!""" $ & ( ( ( + 06># - - -  H+ $ $ - & - -& -) -/0355666642233332100/.-*)))('' & & % OC080#8/":-!,$ &# -!# -#,"."++)(* *"$#'    !     -     -  -     -  -    - - - -     - - -      - -  /(2+3,!4,!5-"2*2*6.#7/#6-"5-"4+ 4+ 5-"6/#81%:3'<5);2&7."7.#8/$6-"6-"4,".&$  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  =89<9/B8*@6(A7)B8*B8*@6(?4'<2%=3&>4'>4&?5(?5(?6(?5(?5(?5(=3&;0#;1#<1$=2$<1$:/";0";1#:0";1#:0#:1$7. 4+7/!80"90#7."3*4+7/#:1%5-!3*4, 4,!1)1).&*"+#632fghLLM555000&&&$$$$$$   ###%%%$$$"""###'''&&&   -     *'%*,(+((('''))))))(((&&&&&&'''&&&!"!777=>?$'#(#' *) !.$/) +#  " +4)4, 4- 3*7+! " -79%8' :+"-$5#<2&D=,J)D%>"9 4 / ) -% & & -& -& & & & $ " -! " " !!!!! !!    !!! !! ! """" "! ! " " " " -" " " " "" " # -# # # # # # # # # ## # # $ # # # """" " !! " !   !!   !!   !! " " " " "! ! " -# -" " -# -# -#" !!!" # ### -% ' ( ( ) / 48  - - -D) ! $ - -% - -& -( -./355666543333322100/-,***)(''&& % A7(6. 7- 7)( ) (*-$ )*!-#! - "(+"$# #!  -  #   -  - -  -  -       -    -   -   - -       -     !2*3, 4,!6.#4,!3+6."7/#6."5,!4,!6."5-"5."6/#82%;4(:2&7."80$80%5-!5-!4,".'% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   899=>?GJJNSQJGE./.%%%!!###"""###$$$&&&(((,,,000555888<<<999D:,D:,E;-A8)?5'?5'A7)A6)?5'>4&<2$=3%=3&=3&?5'>4'?5(?5(>5'=4&<2$;0#;0#;1#=2%>2%;0":/!:0":0":0":0"90#6-4+8/"8/"7/"6-!3+5, 7."7."3+2*3, 3, 1)1*.'llmYYZEEE777((($$$$$$%%%$$$###!!! !!!!!! ###%%%&&&$$$###        $3%")*3 2 0,&&&'''((((((((('''&&&'''''' ! 00/<=?"%&%  -"/(.&/$6) 7)!8.#5-!4, 4* 7,"-# 1) (2& .@/%?9)G?5 - ) -% -# $$$ % -% % -$ -# -# -" -! -      !!!!   !!! ! ! " " """ "! ! -" -" ! " #"" " " " # # -# # $ # # # $ -$ $ $ # # $ $ $ -$ # # # # # "!! ! !  ! ! !!!!! !  ! "! ! " ! ! !!! ! " # # # # #!  ! " # # # ## $ & ( ) -( . 2 7B$ _##A) " -$ - $ % -( ,-0335766544333332100/-+****)''& % >6*:1#4,5*0 #*  #  -*!(!)"#   -!&!    #  -   - -  -      - - -    - - - - - - -       - -   4-"4-!5.#7/$5-"3+6."80$7.#4+ 3+ 80%3+ 3, 6/#92&:3'80$6-!6/"6/#5-!6.#4,"0((! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   4878;;EKIKPNGEC//-%%%""!#########%%%&&&''',,,000444:::<<<<<<B8*D:,D;-A7)?6(?5'@5(@6(>4&=3%=3%>3&=3%=2%?4'@5(?5(?5'=4&<2%:0"9/!:0#;1$=2%>3%:/"9. :0";0#;1#;1$:1#7.!6. 8/"8/"8/#6.!3*4+5-!5, 2)1)3+ 2+ 0,+YYZFFF777---&&&&&&&&&&&&&&&&&&%%%###!!! !!!$$$%%%&&&  - -      - - ",*1:%=)#:&!4# '''((((((''''''&&&'''&&&%%%-//9:;   - -+++.$0(/'0&4(,0+1. 5, 4*6+ 2""+.)5#:#) ) ->*"<6'`R< !!""""!        !!! !    !!! " " ""!!"" " " "! " #" " " # # # # # -$ ## # -$ -$ # # -$ -$ -$ $ $ -$ -$ -# -# -# -# -$ " "" "!    ! ! ! ! " ! !!! !! ! -" ! ! ! !!!!!" " " # # ""!! ! " # """# # -% & ( ( - 0 6@# \"!A+ % - -$ - # - $ - ( +-023566554434333210//,+*)((('' & % O@.7. 5. 6(($ +$ - " " (!(!)"( '*&+.!' - -      - -       -           - -  - - - -     - -   -    3,!6/"4-"6/#5."3, 6/#90%7.#5+ 4+ 7.#4-!5-"70#:3&;4'7/#6-!6/"6/#5."6."3+!1* *# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   /21376><=KLKMKIBA@,,+%%%##"#########$$$%%%'''***000444888999<<< !!!""!""!""!""!""!?=<%%$%$$%$$%##$$"520520620A8*D:,D;,A8*@7)@6(@6(@6(?5'>4&>4&=3&<2%=2%>4'@5(?4(?4'=3&<2&:0#9/!<1$=2$<1$=2$:/":/";1#:0";1#;2$:1$7.!7.!80"8/"80#7.!3*3*5, 5-!4+ 0*)^]\JJJ@@@111%%%###&&&''''''''''''&&&&&&&&&###!!!!!!"""#########  -      -    -$-9%A,%B-'=)#5% %%%))))))'''&&&''''''%%%%%%%&%667=<< %*%.",")%,'/(.(/'2'#-(1. 5+ 5+ 7,"3#% ) 8$6#3 3* %>#<2%OD3   ! ! !   !! ! ! ! "!!!!!" "!!!" " " " " " # # # # # # # # $ -$ -$ $ -$ -$ -$ # # # -$ -# -# -# -# # # # #!!    !   ! " ! ! !! -" ! ! -" " " -" " ! "" "!! " # "" " "  " # "!" #" $ $ -& -' * / 5?LMKIGE=<;)*)&&&$$$"""""""""###%%%'''...222777:::;;;!!!!!!!!!!!!"""    @?>?>=%%%$$$$$$$###$##$#"%""$ ""$# $# %$!2.,D:,C:,B8*A8*A7)@7)@6(?5'>4&>4&>4&=3%<2$=3%>4'>4'?5(>4(>3';1$9/!<1#<1$<1#=2$:/";0#=2%:0":0#90":1$90#8/":1$8/"7."5- 3+3+6-!ZZ[FFF?>@214''')))'''%%%$$$%%%&&&((('''(((&&&&&&&&&%%%"""!!!$$$$$$###   - -     -     - -  (2>)"B-&B.'<("4# '''(((&&&&&&&&&&&&%%%&&& ! 333<=?(+"-#( !-#+#'%+'/) .)-()!*!0,0+6-!7."5,!6(*# 1' ! *7$2=3&E:,         ! !         ! " !!!!!! "" ""!!"" " # # # # # # # # # $ $ $ -$ -$ -% -$ -$ -# # # -$ -$ # # $ # -# # # # " " !  ! ! ! ! ! ! !    ! " !! "! " -# #"" "" "!! " "" " " "!! " # # " # -$! $ $ & -& -' ,47   e%#]""A( # - -# - -" - % -' ) -/1234445433322310/.-,** **(' ' ' & B9-:3$91#8."4" 0" - $ $ ,!'!)!,#(  -%(!'"$$%#        - -  -   - - -  -  - - -  - -  -       -   -   2+ 4-!4-!6/"4- 3, 6.#8/$7-#6,"6-"90%5."5-"92%;4(;5(7/#5-!70$6/"6."6-!0(1),% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 213:57B@@OROGDA887'''&&&$$$"""""""""###$$$%%%,,,000777::::::999 """! ?>>$#!$#"$$%##$#"###""#!!" !" # ! " " # +'%D;-C:,B9+A7)A7)A8*A7)?5'=3&=3&>4&>4'=3&>4'>4(>5(?5(>4(>4'<2%9/!:/"<0#=1$=2%;0#;0":0"8. 8.!8.!90#8.!6. 7/"7.!7."5, 3+3*)((344&&'%%&%%&'&''''&&&%%%%%%%%%%%%'''(((***(((&&&&&&%%%%%%###$$$   -  - -    -    -   &-5"?+#B.&@-&9%2" %%%&&&%%%&&&&&&%%%%%%&&&&&&/0089:("'%)&($)%(&& "'0&1%.#)+ 1*3- 7."5+ 6-!8+", --.15".) + ?*"C6*@:1 - - - - -      ! ! !    !    ! ! !! " """ " " " " " # #" " # # # # # # # # # -$ # -$ #"" # -# -$ # # -# -# " # $ # -# -# # # # " " ! ! " -" " -" ! -" !    ! " " " " " #" -# "!! " " " ""! " "! "" " " " # #" -$ -% ' ' ' * 17A$ - - - d%$\!!?' $ - -# - -" - -$ -& * -/1233445323333200/.,+*)) ) ((('& PG3:6&:0#<,#(  .)  " $ *-#(#)!.%'$ #("'"##%&        - -   -    - -  - -  -  -  -   -  -   - - -  3,!2+4-!4-!3,4- 6.#8/$7.#7.#7.#8/$5-"6.#92&:3';4(81$5-!81$80$5-!80$5-!3+!,% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  .11846BDBNWPOJG343%%%&&&"#!!!!"""#########&&&------222888:::      "!$#!$#!$$%$#$$"#$"!"#! # # "     D;-C:,A8*@6(?6(@6)@6)?5(=3%<2%=3&>4&=3&>5'?5(?5(?5(>4'=3&<2$8. 8. ;0#=2%=2%;0":/"9/!8. 8/!9/":0#7. 7.!90$7/"5- 2*1)2*%&%$%%#$$$$%%$%&%&'''$$$%%%'''''''''((())))))(((((('''(((  - -   -          %+.3"=+#<)!:(!3!0   ###&&&&&&'''''''''%%%&&&''''((556)!)$($)$*%*&(  !("  -(4&0%4*6-"6-"6-#5,"0%" & -4/(-7' 4@4(ZR=  -        ! ! ! ! ! !  ! ! !!!!!!! " " """ # # # # # # " # # # # # $ # # -$ #" # -$ -# #"" # -# $ # #" # -$ # # # " " "!! " " -" ! -" "!!!! " " "" " # "! "! " " " " " # " " " " " "!!!" -# ""! # $ -& ' ' ) / 4># - - - d%$^!"?) $ - -" - " - $ -& * ,.011234433222210/.-,+) ) ( ( ((('<4(:4%50"<1%=-$ & %# %)" - ,)!(#&!+&' % -"* *"' #& '         -  - - - -  -  #   - -   -           - -  - %2*3, 4-!3- 4-!6.#7/$6,"6-"7.#90%80%70$:3&;4'93&81%5.!92$:2%5- 80#8/$3+!-&" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  .54644AGBLSLIEC/00%%%$$#!!!!!!"""$$$$$$%%%+++///222777 """"!! ! #" $# %$$$#$###"#!!"! " "!D;-C9,A8*@7)?5(?5(?5(?5'=3%;1$<2%=3&=3&>4'?5(>5(?5(?5(?5(<2$8- 7-:/"=2$=2$:/"9.!8. 9/!:0";1$90#6,6-80#7.!5, 3+2*!""#$$$%%$$$%%%%$%&%&%%%###&&&''''''''''''((())))))   -    -       -  -  !$'+-,1 9(!7&5$0. - - %%%'''''''''''''''&&&&&& 212979*$*$)"( &#" ,.!,'2(2)6,!7.#6-#6,"( 1  -:"& 3?.$F@0                  !   ! ! !!!   !!!!!!! " " # -# # # # # # # # $ -$ #" # -$ $ $ $ " # -# -# # # -# -# #" " -# # # " # # "!!! " " !!!! " "" " ""!" ""!! ! -# " " " -" "! " " # #!""" "! "" # # & ' & ) / 2:!  g%%^!"<' # - -" - " - $ - -' * ,-/1012223321110/.-,,+*)( (' & & & ]N983$52$<-#7" -,#   -$ $ 0",$'#'$*&' )&# '--  '     - -  -  - -  - -  -($                   - - 3, 3, 3, 3,4-!5-"8/$8.#7-#7.#90%80%81%;5(<5(;4'92&6."81$:2%7/"80$80$4,".'$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    256=57HJEMOHC@?/.,%%%""""""###$$$$$$%%%***---222777"""'&&&%%!! !! ! """!!!!!! " " !" !!    - % D;.D:-A8*A8*B8*A7)@6)?5'=3%;1$<2$=3&?5(?5)?5(>4'>4'>4'?5(<2%8.!6,9/!<1#<1$:/"8. 7-8. 8.!;1$90#6- 4+90#7."4+4+3+3*$%$$$$#$$$$$%%%&%&&%&%%%&&&'''&&&%%%%%%%   -  - -    - - -  -     %*--//2!2"0 3#5%2"//  %%%'''''''''''''''&&&&&&,*+657)"*$%    48#6& 5*!/#+** 3)8.$5/$40$3 -)-05#6 , , 8(@9+NG< -                       !!! " "" # -# -$ -$ # # -# # " % & -# -# # -# # $ $ # # -# -# #"" " """ -# " " # " " ""!" " " !!" " " "" " # " "" ""!    "! " " "!!" " " " " ""!!!"" # # & & & -& , 25 f%%Z ;# - " - ! - " - -$ ' *,-/100112221000/-,,,,**)((' & & ' TG561#4/"<)!.$ 0-('! +1%-(*%-#,#) !    !)#    -     - - -    - - %1   -                - - 2+ 3, 4-!3, 3, 4,!8/$8.$8.#8.$90%7.#70$;4'<5)>8+:3&6/"92$91$91$91%;2'91&-&# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   847==;FOJHLI><;++*%$%$$$"""###%%%$$$%%%)))+++111 !!"-++(&'   #"#!"! " !" !! ! !! - - -     - -D;.D;-C9,?6(@7)A7*@6)?5'=3&<2$<2%=3&>4'>5(>4'>4'>4(>4'?5(=3%9/"6,8. :0"<1$;0"9/!8. 8. 7- :0#9/"7.!4*8/"8/#6- 4,3*2*$%$"#""""$$$&&%%%%&&&&&&&&&&&&%%%$#  -  -       -    - -   !%(*---,*9)"8)".0!/ -,/   ###&&&''''''''''''&&&'''%%%(()444&)#"!'* ,5-$1,!1-"2+ 4'.",!2&7+"5/$4/#>*$ -! 2/$ ,2' 4B5)eU?                 !      ! " "!" " # # # # # -$ $ $ " "  -$% -$ -$ " -# $ # $ # # # -# " " " " " "" -# # " # """"" " " #!!" " " " " " # -# " ""!!!  !! "" ""!" " " " "" " " " ! " " " " -% -% ' -& * 16?# c%#X7' " -! - # - -% ) + ,-/00//01220///.-,,,+**)(((' ' ?6*@6)60#5/":%" ' & %)+.$-((#+!% "$'%     -$  -     -       - 7%9$ - -  - -  -       "    2+ 3,!4,"3+ 4+ 7/$7.#7.#7-"8/$90%5,!6/#81%<5)=6):2&81$81$91$80#91$:1&80&.'" " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  8974'=3%<2%<3%=3&>4'?5(>4'>4'>4'>4'?5(<2%:0"8. 8. :0"<1#;0#9.!8. 9/"9/!8.!8/!7.!4+9/#:0$4+0'0'1($$$######$$#$$$%%$%%%'''&&&'''####   - - - -     -   -     -  "%&),++*)(+'8)#6("+0!-.,- - !!!$$$%%%'''''''''%%%&&&''' !!222:87'!$& *#+"-$.!5(!1+!.+ 0/"/*4(4'- (1"2+ 4/$8-#( ++*4":#) ( ;.#UJ9 -            ! !!!! !! ! " " " " # # # # # # ### -$ ""$&% -$ -# -# $ # $ # -$ -$ -# "! " " " "" " " " # "!! " " " " "!!! " # " " " " " " " "" " !!  "!"! # # " " " " " " " " " " " "!! " -$ -% & & -( / 5="  d$$X ;( & & - & - & ' * ,-/0/.//0110....,,++**))('(('`P;A7+7/#6+ 3#." - '! ---%-'*#*!&' )",#,!     '&   -         !'.!@.';%3  -    - -        "   2+ 4-"4,"3+4+ 6."7.#7."7."8/$90%5, 80$90%;3'=5)<5(70#70#91%80$81$6/#4-"-'$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  <=;BHEHRPEFB443&&&%%%$$#$$$$$$%%%$$$$$$&&&)))/// !"!#!"! ""  -  - -   -  - - - - - - -  -A8+C;-A9+A8+?6(A8+?6)<3&<3%<3%<2%<3&>4'=4'<2%<2%=3&>4'>4'<2$:0"9/!9/!:0":0":/!8. 9/!9/!9/"8.!8/"8/"5,7.!9/#5,1(2)1("""%%%########"$$#%%$&&%&&&%%%""""!      -      -       #&(*)*+*)(&%&"5'"4&!")*-+)"""$$$(((&&&(((%%%&&&''' ///887' & )%,( -&,$,&1+!4,#2+!2-"1+ -#$ +5,"3-"8.$4#& -4 3!04!+# 9!D5)   -         !! ! !!  ! ! !! " " " -" ##""# &#! " #% $ $ -$ -# # # -$ -$ -$ -$ #! " " " " " " " " " " "!" " " " " "!! " " -# " " " "!! " " " "!" !!!" -# -# " " " " " ""! " " !! ! " -$ & & -' - 3:  - - - e$$Z =+, + * & & ( +-.//./00000...-,,++*))(('''' ^P>@7+9.#5&' # *,-$  ,*,%,%''* *"(")#(#)$(" '% & !(      -     &)0 &#  - -   -          '2+ 2+ 4, 4,!6-"7.#5,!5,!7."90%5, 80$91%;3'=5)<5)81%70$80$80$70#5."3,!-'$  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  A@>FHHOSTKFC/0/%%%%%%$$$$$$%%%$$$%%%'''((( !!!!#"! -   -   C:-D;.A9,A8+A7*A8+>5(<2%<3%<3&:1$;1$<3&<2%:1#;2$=4&>4'=4&:0#9/"8. 9/";0#<1#;0"7- 8- 8. :0"9/#90#8/"6,8."8/#6-!3)3)2) ####""##"""!$$#&&%$$$'''&&&### $#      - - -  -       -  -   !%()))('(('&%$%#"/"/!!))*)(" """&&&''''''%%%&&&'''%%%--+665% &!'#*%)!"-"1&/$/&1+!1*!0'$',6%8-$7/$5.#7*!/$ .) ,4"# -* A0&C=4   -      !    !!!!! ! -!" # " ! -! "## $ $% &&' *!& # -# -$ -# -# # -$ -$ -$ -$ # " " " " " " " " " " " " ! ! " " " " " " " " -" -# " ! " " " "!!!! " "!!!!! "!! " " " " " " " " -# -" -"! "! -# -% % & & , 15 b##Z >53.1,) ( ) +-//.00000//.-,,,,+**)((('& H=/D;-;1&;,#2 "'"  -# ( .+"-%-%   -$(*!' '#)$*$&$( ($(+!      -  -      $!   -  -   -  -         -0)3,!4+ 3+ 6.#7.#7.#5,!7."90$4+ 7/#91%;3'=5)<5)92&80%80$7/#70#70#3,!.($ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  B>=GHHOQREA@,-,%%%!" $$$%%%%%%%%%'''(((  # "$!%$## #"  -B:,C:-B9,A8+B8+B8+?6)<3&;2%;1$:1$;1$<3%;2%:1#;2%>4'>5(=4'<2$:0"8. :0";1#=3%<2$6,8- 9/!:0#9/"8/"7.!6, 9/#:1%8.#4+3*3*3*"!!#""##"$$#$$$%%%&&&'''((($$$ &&%$!       - -           -  - !$''(**)(('&&%$#! !! ## &'(('%  $$$'''(((&&&''''''%%%%%$232'!##'!( (*$ ! -3(3* 3(1$3&5'5* 80%93':.%3)036'4&. & -@& qVF  -               !!!!"" -! """" " "# -$&(*"$/(+5/5=7;B;!/%# -" -# -# -# # # # # # # " # " "! " " " " " " " "!!! " " " " -# " " -" " " ! ! " " !!!! !!! ! "!!!!! " " " ! " " " " " ! ! !!! " -$ -% -% & + //>" - - -TQD=:7840/-*+-./00/00//.-,--,+*))(((''bR=B8+:/%:( +$ -*$  # %,!,%/(.&#   *!)"'")$(#%#' '$$ #! - -  - -             - -          /(4,"4,!4+ 6.#6.#7.#3*5, :1&6-!7/#:2&;4(<5);4'81%:3'91%70#70$81%6/$/(&  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  E??JHJQOQ@=<,+*%$%##"###%%%$$$###%%% """""!""!!!    C:-C:-B9,@7*A8+B9,@7*=4&:0#90";2$<3&=4&<3%:1$<2%=4'=4'=4&=3&;1#8.!:0";0#=3%;1#7-9/!:/"9/"8.!8.!7- 7- :/$:1%7."5+3)2)4+"!""""###$$$$$$''')))((((((%$%!!!,,,        -     - -    $()++)))(('&$###"!    $&'&%, ###)))((((((((())))))!! ///876+!&'  $+4&3)6.#4(4)$(6, 80$83&8/$5%' -( /1",) 4# -/T>2  - -              !# " !!! -  -! " " -#%&( *")2+2:36@:;B>@@B>:741.,-/0000//..,,--+**))('(''[N<>5(=E>>MILKGI;:8(('%$%%%$$$$$$$$$$$$$%%%"" !"!!   - -  C:.D;.B9,@7*@7*B8,@7*=3&90#90"<3%=4'=4'<3%;1$<2%<3&=4'=4&<3%:0#8. 9/":0"=3%;0#8.!;0#9/!9/!:0#:0$8.!7-!9/$9/$6-!5+ 4*2)3*###"""###$$$%%%''')))((('''&%&#"".-.-+,     - -     -   "#&)---,+*('&%$"  !! "%&%$*  $$$)))******((((((((((((554&   -  (2( 1) 1* 1*2+ 4,!1((&7,!7/#72%80%;,#-!-)$16"' ( ?)!VK<  - -       !  - "! !!! !"&')"'0)/605=68A:<@7<6& # -" -# -$ -$ # # # # # # -# -" -" -" " ! " ! ! ! " " " " ! ! ! ! ! -" -" " ! ! ! ! "  !! ! !! !! !  !! "!! ! ! !! !  !! ! !  ! -# % -% -% ( - 39  2426<BGEB@E.#B-"<$>'100/0/./..--,,*)))( ' '''J@1E;.:2&;-#.' + )' /#-&-'.'( +.#,!)- &  %!#&        -   -  - -          -  - - -     -          - - -4,"5,!4,!6-"6-#3* 4+ 7.#8/$7."7."91%;3'<5)92&70%7/$91%5."6/"70$6/#0))# - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  ?<;D==LGKFBD654&&%$$$%%%%%%&&&$$$$$$ !! !    B9,D;.B9,@7+A8+A8+@6)=3':1$:1$<2%>4'>4'<3&<2%<2%<2%=4&>4'>4&<2%9/!9.!9/!<1$;0#9/!;1#:0":0";1$;1$8/"7-!8."8."6,!5+ 3*2)3+4,!"""###$$$%%%'''((('''&&&&&&$#$,,,201      -      -   - #&)+-,,+,+)(%$$#"!  #$$#$!ZHC"""&&&(((((('''''''''$$$&&%232% - &# *4*"0* 0* ,$2*7.#2()-8+!7.#61%70$7/$9$& ' : 9!8 1/$ --I:.   -           !    -"" "$&' &+&,4.0939A;:@<><>?=??=A?>A??AAA@BA>A??B?>B>( -" " -# -$ -# # # -$ # # # -# " " " ! " ! !!! ! " -" " ! ! ! ! ! ! ! ! ! ! ! ! !!  ! ! !! ! !! ! ! !!! " " -" !! !  ! !     ! -" -$ % % ' ,24 2/))/6=C@-#A-"?+!4&6"4!7':(30//..----,+*)((' ' ''& cT>E9.<2'4#& -,0& -& ! $.$/(+%.&( *.%)#(#($*%)   -$           -            -     - - -             -4,!3* 3*5-"5,!2)5,!6-#8/$7.#7/#91%:3'<5)92&6.#6.#70$5.!6/"70#6/#1* *# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   =97B>>PLPEAA00/$$$$$$$$#&&&&&&$$$### ##""#"  - -B9,B9,B9+B9+A7*?5(=3&;1$<1%=2%=3&=3&<2&<2%<2%;2%<2%=3&=3&=3%:/"8. 9/!;1#;1#:0";1#:/":0"9/"9/"9/"8."8.#9/#8."6,!3*2)4+ 5-"######$$$%%%&&&((('''&&&'''%$%())434      - -  - -    !'*++,++,*)*)'&$##"    "#"!$% ###&&&'''''''''(((%%% 000:98)-!,$+#',!3)!.* %!,#6)!9% .-3&5*7-"8/$5."60$=,$( "33%( 0) ( >']I9   - - - -        !!   '( #*$+1+/607=7;>:;?<<@==?=>>>@?>@?>?@>>@>@??AAAAAB@BB@BA@C@@D@"0( # -# -# -# # # # # # # # # "!   " ! !  ! ! " ! !!! ! !!! ! ! !  ! ! ! ! ! ! "!!! ! !!  ! ! !!  -"!!!    " -$ % -% ) 0/+"<*!/' 2%5"3$4#3!8"<$20..--,-,+*)((''''& \N>?4);0&+' -  $&  %(&*&*!0&0% #0'*#)$)%)%.&*       '    -   -  -   -  - - - -   -  - -    -  -        - - 0(1(2)4,!5,"7.#5,!7.$90$6."6."80$:3'>7*:3'5-#80%80$6/"70#81$5."/()" - - - - - - - - - - - - - - - - - -    964DABPNRFB@,-,###%$%%&%%%%%%%$$$###  B9,B9,B:,B9+?6)>4'=3&<2%=2&=2&=2&<2%<2%<2%<2%<2%;2%<3%<3&;1$9/":0#<1$:0":0":0"9/!8. 9/":/"9/":0#9.#8."9/#9/#6-!3*2)3* 4,!1)"""$$$&&&&&&&&&&&&%%%&&&%%%#$$333122      -  -     #&+.--++)*)(('''%##"       !"!! !!!$$$%%%'''&&&%%%&&&%%%###,--888)#+$+$)!,#2) 1'"#)!  &)+!5* 8,"2+ 40$51%-'%')% -5:%0& 0E6+taK   - - -        ! !&)-(/603<6:?:===<=@>>@??@?????@?>@?=@>>>>@?@AAB@AB@BA@B@@C@,70$ -# " # -# # # # -$ # # "!    ! ! !  ! ! !! ! ! ! ! !!!!   ! !    !  ! ! ! ! !! ! !! ! !   !!   !         " -# $ -% ) . 3:! ,! -" (+;+";*!8( .&3&6$2%6$8#5236"51/-,++++*)' '''&& PD5E>0;1&4$% -+-! % ! -$&(%,'.&4)!2% &.$+#)"(#&#+#* &#  - (   - -   -  -   -  -   - - -      -  -        4+!3* 6-#7.#5,"4+ 7.$8/$7/#80$91%:3'>7+;4'6.#80%80$70#92%70#6."/(*#" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 642ECENOPA>>*+*$$$"" ###$$$!!!###  - -C:-C:-C:-B8+?5(>4'>4'<2%<2%<2%=2&<1%<2%<2%=3&=4'=4'<3&<2%;1%9/"9/";0#:0#;1#:0"9/!8. 8.!9/"7. 8/!5+8.!;1$9/#6- 3*1(3*5-"3+ """$$$%%%$$$$$$$$$$$$%%%$$$$$$011354    -  - -  !%)**,-,,))(('('%%%#!"!     "" "###%%%&&&&&&&&&''''''&&&'''&&&**)566%*#+$+#,$.&1',"  %2%2*'*%-!3)5-"52%1*. "' 48!*.) (:) J;:>;=><@?>=><?????>?>=@>>?????@@A?@A@AA?A?@C@6>8% " " # # "" # # # # " " ! !    ! ! ! -" !  ! ! ! !" " " ! !  ! ! !    !   ! ! ! ! ! ! !!    !     !  ! !      ! -# -$ -$ -' , 17   - -$ 8*"8(!6' /&3%7%4&7%;$8!0-0/01 30,)))+*) ( ' '&% % bS>B:-7+;4(70%91'7/$6/"92%80$5."/(+$# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 833GJKKPP?=<++)$$$%%#$$$$$$$$$ -  ! D;.D;.C:-A8+?5(?5(>4';1$;1$;1$=2&<2%<2%=3&>4'>4'>4'<3%;2$;1$:0#:0#;0$;1#<2$:0#:0"8.!9/!9/"8. 8/!6,7, :0#:0#7.!2)0(3+ 5."3,!$$$$$$$$$$$$$$$$$$###$$$"""$$$,-,464    !#&()),*)**()''&%#%$"""         - #!"""(!!!###$$$$$$%%%%%%(((''''''&&&!! 223(("(%*%-%$    ! 5)!3) 2* 5) 4'+ 0&8+"7+!33$1-!3 " & .# - 3 0',G3*ZK:            ,6/;<9=><;><;=;=>=<>=:?=;>==?>=A@<@@>@@>>>??>>?><@>=?>>??=??=??>@@>A??C@=B=( ! " # # # """! ! ! !       ! -! -! ! ! ! ! !!! " # " ! ! ! ! ! ! !  ! !     ! ! !         !       ! # # % -* /3 - - - 7)"8)!6' 1&4%7$4'7&;%8$/*01#--,-30-*( ()) ( ( ( & % % [O==5)5$$+%   -#  %*) -$."(/%& -  &+%'#%& &#"!   $&         -  - -  -   - - - -  -  -    -       -& -  /&1(4+!4+!4+ 4+ 7.#8/$7.#91%92&:3'>7,<5*81':2(7/$7/":2%:2%7/#1* ,%%! - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - =99FKIEID;:9(('%%%&&%%%%###!!!  - -  D;.D;.C:-A8+?5(>4'=3&;1$<1%<2%=2&=2&<2&=3&=3&>4'>5'=3&;1$:0#9/":0#:/"9/!9/"9/!9/!9/!9/!;1#7. 8.!5*7- :0$90#8/"2)0'2+4-"2+ /(%%%%%%###"""""""""###"""##"&&&465 &,)'**(++*))()''%&%%$""#"          - - # !!!$!!!"""###%%%'''(((''''''''' ../889''!+&)! - -'*%$0,"/* 0)3* 6*!8*!8( 2&,&4,!9)!+ +)6$?*$8 - (; C;-vhP - - -       -#/'7;8<><8<;;?>;=<;<<:=<<>=?=>???>@@>??????@?>@>;@=:@=?>?@>@A=#.&" ! " " " " "!! ! ! !       ! ! !   !!!! " " ! -! !  ! !        !                  " " # ) ..;! - - -6)"7)!5' 3'8&9%4&8&:%6"/ (/4(!--0 --041.+)(' ' ( ( ' & QE6F6+<4)91(:3(91%80$:2%:2%8/$2+ -&% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @>=GJGCC@665&&&%%%#$!""" - C:-C:.C:-B8+>4'=3'=3&<2%=3&=3&=2&<2&<2%<2%=3&>5(?6)=3&;2%:1$9/":/"9/"9/!:0":0"8.!8. 9/!;1$7. 8. 4*7- ;1$90#8/#3*/'2*5-"4-"/(%%%&&&###!!!###$$$!!!"""#$#232$)/"2#/--.,++)(&%%%%###"! !              $    $$$&&&''''''''''''&&&%%&555'(*#&!.( 1&0$/$-$/) 0(1(1)3)6(! ! & 0%6+!:/%2 ! ( 67%# ' 3' + :+!J@2            -!) 2:5;>;;>=>=>><=<=<<===<<>==<>>;=<;><=@=>A>:A==?>?@@>>>>==>>D232%%%%%%%%$### - -A8,C:-D;.B9,>4'>4'>4'>4'>3&=2&<2%<2%<2%=3&=3'?5(?6)<3&<3%;1%9/"7- 7- 8.!;1#;1$8. 8. 9/"<2%8.!8/!5+7- :1$;2%90#3*0(4,!4-"2+ 0)&&&&&&$$$###%%%%%%!!! ###$$#---+,!/!/ / .**'((&%$""""!!!                   -  !! ###$$$&&&((('''''''''###112 !*!+%&",'4*"2( 2' 0( 2+"4( 3$2,!2-"8%!.5'8,"6,!80%:,#+/+ 4;"- $3B5)RO9    -         !#.72::9=<<==>>=>?=><==;><===>>>@==>>=======;<;8;9=?<494# -! ""!!!!!      !!!!!!!!!!!!!                     -! -" & , 066)#6)!4'8(;'=&1"5#8#3,* ,6-(+**+,)(*4;851.,)'% % XL8>5)?.&# /7 -  -  # -!-%)" -  )1&-%)$*%+%& %    -#%%!#!!          - - -   - -   - -  -  - - - - -  -   -   -   - '   #$-3* 5,"5,"4+!6-#8/$5,!5-"70$:2'<5):3(91'91':3&:2%;2%:2%80$3+!.'(" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GAEOJSIDC/00%%%%%% - B9,C:.D;-A7*?5'>4'>4&=3&<2%<2%<2%<2%=3&=4'>4'>5(>5(<3&=4'=3&:0#8.!8.!;0#<2$:0#5+8.!8. =3%6,7. 5+8/":1$:1$8/#3*1)4,!4,!2+ 1*+$%%%$$$###$$$%%%######&&&$#"&&&*+ /!./,+,#%$!##!!                    - -    -  -  "   &&&'''((((((&&&&&& .//989!&)"-%-%,&+ 04&0%'&-%3-"9)!9( 9+"5(7) 7.#5/#8/%6&% -& .=("<'!//' , 7(C?/ugM             *4.;:9=;;<<<===<<<;=<;><=>=>>==?=>@>?@>@@>>?<>@>=A>=@==@>>?>>==:<<:>;8:88:7' " !!!!! ! !       ! !!!!                  ! -" -$ ) --2efdggfrrp6)#6)!4'6(8%9$0 4!7!3*'+++++ *++)$" /:%:973/,*'ykRC9,9/$/ 3' **&   %-$.$-!)#!-#.%*$+%.'())!' *'%)& !%# #          -    -   -   - - - - - -    -        - - -     -#%&3*6,"6,"6,!9/%7-#5,!6.#80%;3(=6*<4*:2(91&81%:2%:2%:2%7.#2* .')" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FCGOKRDAA,--%%% - - C:-C:.B9+@7)?5(?5'>4&=3&=2%;1#<2$>4&>5'>4'?5(=4&@7)>5'?5(=3&:0#9/"9/";1#=3%;1#5+6,8.!;1$6,7- 6,8/"90#90"8/#4+1(3+ 3+ 2+ /(+#$$$&&&%%%%%%&&&'''((())))))!! ''-+*(. 2$"###"!               -    -   -   -  -  - % &&&&&&''''''%%%%%%)))878 &*",$,%*%## -% - ! -,6+!6,"4+ +$" .4, 2/"70#:,", *2! % /, )*<3'J@1      - - -      !-%7:7>=<;<<;=<;;;;<;:?<=>@=>A??@>??>>?>=?>>@>>@>=@>=?>===<<<;?=;!-%  !!!!   !    ! ! ! ! ! !                ! " -' ,-;!iighhfhhghhfmml5)#4(!0%2' 6%6#. 3!6!3*&,*****+ )*%" "9%7"489751-*F@1=1&:' " ..$  # " '*!,%1'-!.!, ''-%.%(, 2%+!(+!) *#*"&)" # !" !      -    -    -      - -  -   -          -  - - - -   -$$%0(6-"6-"6,"9/%7.#5,"7/#:2&<5)=6*<4(;2&;2&:2&92&92%91%6.#2* /(*#  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GFFKHH@>>++*%%% - A9,B9,A8*@6(@6(?5(>4'>4&>3&<2$=3&@6(?6(>4'@6(=4&>5'?6(?6)=3&;1$:/"8. :0"<2$;1#6+7,9/!9/"7. 8.!6,6- 8.!8/"7/"2*2*3+ 0)2+ /(,$%%%(((&&&%%%&&&((('''''''''! #&))'%.!5(#!"!!             - -  -   - -  - -    - - -    -  &  - $$$'''''''''&&&&&&&&&%%'545 &')!+!+% $,#3'6+!6-"4+ /'3'8(2, 21#71$6+ 7)$ %3,9(">(#3' # 7$C5*[M;  - - -       %162=<;;<<9;;;<;:;98<9:?<>?=>?>>A??A@?@?>@?>@>=?=<><===<<<;>=6)8) ,& 1-2)# -! /)#+'.%+! (+'+%.%,!  +'  ''$' %(!' #     !     -  - - - -       -   - - - -   -         -    - - -  - - $&&&6,"7.#8-#8.$6-"4+ 6."92&<5)<5);3';3';3';3':2&92&91%70$3, 1)+$# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BGECFC;:9(((%%% -  - -dddccc```\\\C:-C:-A8*@7)@6)?5(>4&=3&>4&>4'?5'?5(>4'=3%?5'>5'@6)?5(@6)?5(<2%:/#7- 8. :0":0#6,6,7- 8.!8/!8/"6, 5+5,8/"6.!3+0(3+ 1)2* 1),%)!&&&'''%%%%%%'''''''''&&&###!#'&%$- 5)$!             -   - -  -  - - -  -  -   - # - -"""$$$'''&&&''''''((('''!"#211<:;$% -/+',(5) 7,"5."3)&*8,"7,!90$5.!6-!9-#2 #) 3"5#*)0$ ( -?.%I>A??B@@A@>?>=?><><<><<>=<6:5$ !!! !   ! !     ! -" -" -" " !  ! !      ! " $mlkiigggeiiikkkhhhddecccdddeee/% )!($"+$!.#(!-!2"0!($-0 ..+,'%#"$&%4!5#8$3 9&4444taKA6)6,"5 " 4'  -' (/"+%*%0&+(-* ,&0%- $  - !))#& $&")$#!!  #  %  -    - -   -          -     -     -    -  - - -   - !&)'6,"6,"8.#9/$5,!4+ 6."80$:3':3':2&<3';2&:2&91%92%91%7/#4, 0)+$" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >KGAB@554%&%%%%  - - ^^^___^^^]]]```]]][[[UUUSSSOOOE<.C:,B9+A7*@7)?5'=3%=3&>4'>4&>4&?5'@6(>4'@6(?5(?6)>5(?6)?5(<2%:0#8- 8. :0"<1$8.!7-6,8/!:0"9/"6,4+5,90#7."4, 0(3+ 4,!2+ 0(-%+#&&&&&&&&&&&&''''''((('''$$$!%%$#)."               -    - - - - -   - -    "   $$$$$$'''&&&'''''''''""" .-.:9: !  -"+ #-$.%3) 5+"5,"0$*3%:.#9.#:/#:3&6/":0%:+!* $ -/'  .6'5&0B2(MA1    - - - -         (3+::8<<;9<;8;99989:99<:;=<>>==?>=@?@A@=>><><;=<;=;;=;;><;=<;;;;<<:><:<:8;7& !! ! !       ! ! " -" ! ! ! ! !     -! -"nhllijhhgggfeeeeefddebbcaacbbb``````#!#%"$'""%!)!-!- &$+,,-,/ . ''&)%(5%4#6$4"//4444D?/;.#;,$& +2/!  ! " -!.&+$,$2&,!&+!-$.&.&+$* *"   $(!("!  $$"!  -  #",!(  -        -            -       - -     - - - -     #'))-5+ 7,"7-"4* 3* 5-"70$:3'<5);2&<3':1%:2&81%:2&92%7/#4+ 0(,%$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DPPB?A01/$$$%%% - - PPPQQQSSSXXXTTTPPPMMMFFFCCC@@@:::666555D<-C:,B9+A7*@6)>4'=3%=3&?4'>4&?5'@6(?5(>4&@6(?5(?5(>5(>4'=3&<2%;0$8.!8. 90";1$8.!6,5+8.!90"8/!6,4+6- 80"6."4- 0(0)3,!2+ 0(-&-%%%%''&&&&((()))''''''&&&### ##! !"            -  - -  - -    -   -    -   - -        ###$$$''''''&&&&&&&&&###""")*,666!#$!+."1'1'2'1'+ $-#,# .-5'8,#:1&81$81%;1&3"# ' .5$;-$/ 9- -& -4!C9*XK9   -   -          +#474;::8:96989:98987;89<:==<=>====<=<<=<:<::<:9<::<;<;<;<<:=<9<:;=: ,$     ! -!        ! -! -! ! ! -! !          milmgkojnkijffe___aaaddfddfaab```^^^\\\___``` "! ## ' ($#)- - . ,--'&&&$#"4$7'5$.02 2!45JE4=:+>.%/& -" # -)  *-$/(,$,$2&,!$,"+#0( *&($*$,!   #  #  #      "$+."    - -       - -   -   - - - - -   -      -   -  - - - !  #()*(5+!5,!7.#5,!4+ 5-!81%<5)=6*:1%:1%8/#80$70$:2&91%8/#4+ /'-&%  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - JLPGCA,.,$$$%%% - - - CCC===@@@>>>777666666333000///---+++***B9+B9+C:,A7*@6(>4'=3%=3&>4'=3&?5'A7)?5'=3%?5(>5'>4'>4'?5(>4(<1%:/#8. 8. :0#;1#8. 7- 8. :0#90"8/"6-3+5,7.!4, 3,0(2*3,!2* 0(,$,$,$''')))((('''&&&'''%%%!!!!!            -      - - -    -  -   -  -    - -     -  !     """$$$&&&'''&&&'''&&&%%%#####%333:99$ !++#*&-*+(0'/$ # ! " *1#" * 5, 92%82%:3&9.#-"( 3 & !41( -) 9)J=/oV  - -             %0619987985987988987:88;9<<;=>=;><:=;<=<<==<><:<::<:9<:9;:;;;===:=;9=:;=:)1+  -    ! !   -!        ! !      -      - -  rmqmgkhdghhgjlj^`_ZZZ\\^bbddddddd```___```\\\]]]WWW #""'."."-!.!,,,+,('%$#7'0 ,2!3!3"0 .iVBC7+>1(7%" ,.(  -$ ! #3#-&.&,#-#0%)()+-#0' 0$),#)"&' $!%$  """ Y>1X=/  #%%)."  - - -       - -   -    -   -   - -   -      -   -!% %*-*5,"6-"7.#3* 2*3+70$;4(<5):1%90$7/#7/#7/#91%91%6."2*/'.''" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MHMA?>)*)$$$  - - - 111000---......,,,+++***(((%%%"""!!!A8+A9+B:+@8)?6(>4&=3%=3&>4&?4'=3&?5'?5'>4&?6(?5(>4'=4'?5(?5(<2%9/"8. 8. :0":0#8. 8.!9/":1#9/"90#6- 2)3*6.!4, 3+/(1)3+ 3+!1),$,$-%&&&((((((&&&'''(((&&&"""                  -    -   -  - - - -  -   -   -     "! -  !!!###%%%''''''%%%%%%$$$$$$!!"0009::! "+!*$,(.*-',#'! -3!3) 2+ 2+ :& ,:,!9.#:1%=0%>-%8&# ! -+%6@,&4- % ->1'PG8  - -            -609979:96:87989:98;98;9;<;===;><;=<<<<<=<;=<:<;;=;;><;><=>=>=>:=<;?<;=;484!        !          !        - - - -   pnprmqsnrnkmefddfddfebca]]\^^^___```aaa^^^^^^[[[ZZZYYYUUUUUU  ") -$,"* *')***('%#2!--/1"1!,,/!C7*:.%:,## -$ # " +)$ - -.&,&/(,!'(  (   "+!"! ,!*$'#("( ( '#$%$   - J6+>,!9)!  #&%$+"         - -             -           -   -  -".#  %+,*)7.$7.$2*3+ 4- 70$;4(<5):1%90$80$7/#7/#80$90$5-!2*1*0)*$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @LI=;;**($$$ - - - - - '''&&&###""""""!!!!!!"""!!!!!!!!!!!!###B9-B:,B:+@8)?6'>4&=2%?3&>2%>4'?5'?5'=3&?5(@6)@6)>5'=3&=4'=4'=3&<2%8. 7,9/!9/"7- 8.!9/!7. 6-9/"6- 1(2*7/"6-!3, 0(0(3+ 4-"2* .&-%-%%%%(''(((''''''&&&%%%"""                 - -  - -ggg```PPPOOO      - - - - -  -      -"  ! -  ###$$$&&&''''''&&&%%%$$$%%%&&&687# !' )%*%0(. -  -,4( 3* 5,"5,"9)!=+$<-#4*5+ @/&@+$:,#-!$&.4' # '$ $ 6"I:/XL;  - - -        (2+897;;:7;98;9:;::<:9=:<=<===<><<>=<==<=<:;::<;;=;;=;;><<=<;:;7885969;98:7% -          !                jgjjdhoknpopkmkegfaba^^]^^\bba```^^^^^^]]]\\\XXXXXXXXXXXX\\\XXXUUU#&( ' & '''&)((&%!.-.,,*-3%/!, 9+#+' 3 * & *1#-%)#-&)! &%,. " &/."*#&"&!( *  "$$   Q=3E1&6% #&%!"     - -   -           -   -   -  -   - -      - '4)$! -$)+,*7.#7.$3*2)6/#70$;4';3'91$90$90$6."6/#7.#8/#7/#4, 4,!1* +& - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DJG987&&&$$$ - - - - -  """$$$###"""###""""""$$$E;.A9,B:,A:+?7)>5'>3&=2%>3&=2%=3&?5'?5'>4'?5(?5(?5(=4'=4'>5'=3&<2%<2%6,6+8.!:/"9/"8.!9/"7- 5,7.!6,1)3*80#7."5-!2*1)3+ 4,!2* /'/&/&( %%%&&&&&&&&&'''%%%       -  - -      -    - XXXjjjmmm___KKKOI?  -  - -      -  -   -" " -  -$$$$$$%%%&&&&&&''''''%%%'''%%&454" -!*!+"/&0&' -*6,-!6,#2(6+"5,"2,!1%," 19.#8/$9/%9-#, & -( % /0$.( ( ;) GA1riO  - -  -       +#585<;;9;:8<:;<;:;:9=:;><<=<<=<;><<>====:<;:<;:<:9;98;9:<;:998887;98;8897 ,%                 !!!!!       nilmhljginonoqoikjddc``^XXVYYX[[[]]]]]]\\\YYY[[[ZZZZZZUUUXXXZZZXXXSSSFFF !!!$% %&')&%%#*,+,,1#2#. ,+*,/*+(! -  /#.$-#),-,- +",#0&.!, -*. +"$!" %( #&#  " 2"U>5?*"=*" "$&#      - -      - -  - -     -  -            -  - - /$ % &*++5,!6-"2*2*70#91%<5);3'91$91$91%5-!70$8/$90$6-!3+1*1* ,% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - EFE443$$$$$$ - - - - - !!!"""###%%%$$$###"""######"""$$$$$$C:-A8+@8*@9*?7)?5'?4&>2%>2%=2%=3%>4'>4&>4'?5(@6)?5(>4'<3&=4&<3&=3&<2&7- 5+7- :/#9/"7- 9/"9/"5+7-7-1'4+90#90#6."3+1)2+ 4,"2+!/',$-$*"$$$%%%&&&$$$$$$%%%!!!      - - -  -     - - - mmmtttuuudddMMM72*    - -  - - -  - -     #  % -   ###$$$%%%&&&%%%&&&(((&&&$$$##$2219:9 )!%&/ 1$*!(!.&2) 3(7+"4.#1,"1,!3,"0&%"/<*"7.#82&:0&=1'7) % &/4,";*"/)+', A.%K>0 -   -      %172;;:9;:7;99:99988<9:>;;;:;;;;=<<>====;<;:<;:<:9;99;9;=<;;;===7:97;8353'.(           !!"!!!  -  -      jgjjeimilmklijhlmlmnmhhfddb__^\\[XXXWWW\\\]]]ZZZZZZXXXXXXWWWSSSPPPTTTVVVWWWTTTJJJ;;;!!"#"###$$"-,-0!/!1"1#/!,)())* -! -! - -"0&0&*  # . /%(#)%,(*"%   '& %%'" #$  !  -2!>+%A-' - !$%#        -     -         -   -           -   - - $! #(*,+7.#2*2*6/#92&<5);3&90#80#90$6."70#:1%91%6-!4, 2+0),&  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BCB///###$$$   - - - - - - """""""""#########%%%$$$######"""###$$$$$$A8+B9-@9+?8)?7(?5'?3&=2%=2$=2%=3%=3%<2%=4&>5(@6)?5(>5(;2%=4'=4'<2%;1$7- 6,9/";0$8.!6,7.!8.!7- 6-7- 4*6,:0$:1%7."3+2*3,!6.$3+!,$.&,$,$' ''&'''%%%%%%&&&"""        - - -         - -OOOooosssssscccOOO    - - - -  - -     $  % -  - ###%%%%%%%%%%%%&&&%%%$$$!!"+**798! - )/'/(-'-'0(2'4*!2,"0-!.- 0+ 2%*.#5* 6* ;/%7-";1&;1&;/%2"$ & -1!)" -,/. '2B0%NI6  - - -     ,5/9989997:98:98988:87;88:8::::<;;><<<<;<;;=<;=;9<99;::=;:::;;;:<;8<9796151!       !!   -  -  - -     qmplfjhdgiihijigigggfggfggfbba\\\\\\YYYXXX[[[[[[XXXXXXZZZUUUTTTRRRQQQUUUUUUSSSQQQOOOGGG555 ! !#!#  1#1#3$2#2#1"  - - -     &,0).'.&.$) - "+"& )$-'-%('+")" &+#'&#  !!!      %%#       -    - - - - -   -  -   -  - - -  - -        -     (+-,6-#2*2*6/#92&<5):2&8/"6."80$70$70$;2&:1%7."5-!3+ /(.'! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - D@?*+*"##$$$  - - -"""""""""""""""###%%%$$$%%%$$$%%%%%%%%%&&&@7+@7*?8*@9*?7(?5(>3&=2%<1$=2%=3%=3%<3%<3%<3&>5(=3'>5(;2%>5(>5(<2%9/"8- 6,9/";0#8- 6,8.!7- 6,6-8- 6,5+8/":1%80$4- 2*3+ 5-#2+ /'.&-%*"( &&&((((((''''''$$$    -   - - - - -    - -     [[[rrrpppiii```YRK  - - - -   -      !" # -   """%%%%%%%%%$$$%%%$$$$$$%%%(()555 '*!,'-*,)+(,&+$3(5%*'2&6+!5-#3,!/$#7+!5)7-";1&=2'=/&,". +0;)#1/) '0F9+wgN   -       &1)6869986985866766866:78:9;;;:<;;=<;<<;<<;=;:<;9;98;89<:8:9888:;;9=;9;9796% -        -!           ljmrmqqlojgifgefgfdfeddcffeffddddccc^^^[[[YYYWWWYYYYYYUUUSSSSSSRRRRRRTTTTTTSSSUUUSSSOOONNNLLLDDD666      -        $-#.(-&/&-"*-"$+!-$' )".',%+#,$+"( *!)#)") $ -$$!!  A88    %$&"        - -  -   -  - -  - - -    - - -              &+,--1)2+6/#81%:3':1%8/#7."90$70$7/#:1&90%7."4, 3+ 0(-'!  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ><<')("##  - - - - -$$$$$$######%%%%%%%%%%%%%%%&&&&&&'''''''''?6)@7*@9+A:+?7)?6(>4'>3%=2$>3&=3&>4&>4'<3&;2%=3&<2&>5(;2%>4'?6(=3&;0$9."6,9/";1$7- 4*6,6, 7- 8. 8.!7- 3)5, 8/#7/#4, 2*2*3+!1) 1).&-%*"( (''(((((('''(((%%%    -   - -  - -      - - -$ -iiiuuupppeee\\\B<5(  - - - -   -     -   !"#!%    !!!$$$%%%'''%%%$$$%%%%%%%%%$#%222:98*,-#,'-),)-'&)# - )6'5-"41$31$0#$ 8,":.$:-#<1';4(=5*7,"* '+6$%  -4 0+ -' -4!I?/  -      *!263::96983655656755967:8:;::;;:=;;<;;<;:<;9;:9;9:<::<;8;99887778;99;89:6 +#          !!!!        knmljlpkolkkfgeefededaa```_bba___```___YYYZZZYYYVVVVVVVVVRRROOOSSSQQQOOOPPPRRRTTTRRRQQQMMMIIIIIIHHHGGG>>>          -   - -  - - -  -+!,%,',&/%%"*!+"+"*"$ ),+')(-%.()") #  !# @43(& %!   -   -##%$     -   - -    - - -    -  -   -  -  - -  -         #+,..0(2+6/#82%;4(:1%90$91%:1%5."6."90$80$8/#5-!5-!2+ /($ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;:9(('###  - - -&&&'''&&&%%%%%%&&&%%%$$$%%%%%%((((((((((((?7*@7*@9*A:+?7)@7)?5(>3&<1$>3&=2&=3&=4'<2%<3%=3&=3&>5(<3&=4'?5(=3&;1$9."7, 9/";1$8-!5+6,6,7- 8.!9/!7.!3*4+7."6-!3+2*0(2* 1* /'-%-%,#&( ''''''&&&'''%%%      -  -        )#QQQ|||{{{rrrfffYYY,'! !        -     -   ""$"&     !!!###%%%%%%$$$$$$%%%''''''"!"/..898( ')) -(.+ +'/$. !" +5) 7*!5+!6/$82&3$7* 6+!:-#<2'<6*<6*;4):#) -# ,% -0?,%9&.& ) ='QC3          #.508765654875766766976:7888;;::=;:<:<=<;<;9;98:9:<:9<:8:9799899:::;<:;<9,4- !     !!       -      -oqpmmmljllklghgacbabaaa_]]\^^]```___^^^]]]ZZZ[[[YYYUUUUUUVVVRRRQQQRRRQQQOOOPPPRRRQQQPPPLLLGGGDDDDDDGGGGGGDDD $    -    -      -   -)')(,'/$*%+"*!,$'%  -  $ '( ($*&%!) )" - -"!7"?43(#  !$&'"$+"      - - -  -  - - - -   - -   -  -  -  -     - -      #,-0!.0)1*5."81%:3':2%:1$:2&91%5."7/#90$90$80#5-!5-!2+ 0* &  - - - - - - - - - - - - - - - - - - -  877%%%### - - - -&&&&&&&&&&&&&&&&&&%%%&&&&&&&&&'''&&&%%% A9+A9+A:+A:+?7)A7*@6(=2%;0#=3&<2&<2%<2%;2$=4'>4'=3&>5(>5(>5(?5(<2%;1$8.!7, 8.!:0#9."8.!9/"7- 5+6-7. 8.!5+5, 8/#6."3+2*/'1)3+!/'/&-$,$)!&&%%&&%&&&&&&%%%"""  -          -   -   -'\\\{{{zzztttfffWWW -         -  - "$%"' -   -$$$$$$%%%###$$$&&&(((((('''+*,555%$ -# .&0$&" !# -7' 7+"5* 6+!9/%9/&7$)4'4* 6/#:2&=3(94(74';/%3" $ 07"-!*1++ -E0&sbJ   - -         +4.7767766985765658;98;98:8::::=;9<:;<;;<;:;99;98<97;9788788899:::;<;;<96:5!               !(!#1)&5,# - -  lomnonmlmkijkfjjfidcd^^]__]__^]]]]]]___^^^\\\[[[YYYYYYWWWTTTUUUTTTSSSRRRRRRPPPPPPQQQPPPMMMKKKHHHBBB@@@EEEFFFEEEEEE???      -   -        - - -('&'*%1$-  --!(*%'!&)  - -'&(")%&!'*)% ""! - " -    $()&'0#'  -     - -  - -        - -                   #! "+.1 0 .3+ 5-"80%:2':1%:1%91%90$70$91%:1&;2&80#5- 5-!3,!1+!)$ - - - - - - - - - - - 443$$$$$$   - - - - - - -$$$%%%%%%%%%$$$ - - -   MD3A9+A9+@9*A:,@8*B8*A7)>3&<1$=3&=3&=3&<2%<2%=4'<3&;2%=5'=4'=4'>5(=3&;1$9."8.!9."<1%9."6,8.!7- 5+6,7- 8/!5,4,80#7.#5-!2*.&1)3+ 0(0'/&.&*"' %%%&&%&&&&&&%%%###"""   !     - -    -     aaavvvyyyooocccUPH      -       - -   #%&"' -   -###%%%%%%%%%%%%&&&'''''''''&%&222:75) &&-#! $ .)%2'5+!6*!8+":-%3&(&3&+ 1(6-"<2'94(64&93'7(@9*?7)@6)?4'<1$:0#<2%=3&=4'<3%<2%>5(=3';2%=5'=4'>5(?5(<3&;1$:0#8-!8.!<2%8- 6,6- 4*6,7- 8/"8/"5,4+6.!5,!6."1)-%0(2*0(0'/&,$+#(!(!&&&&&&&&&&&&###!!!   #      -       mmm}}}qqq]]]50*       -    -    %'&!$   $$$$$$&&&%%%&&&''''''&&&'''###///878&$%"*"-!* -&- 3'1&/&4*!6+"! " 2$ (- '(,9-#1&:-#,"( 5 ?(#2& /1&- E4&rV  - -       -( 1518876875877877875974969:89:88:89:8::9:;9;<:7;88=:7887777778988:97:75:5,# -    - - -    !!  $!-&+602=63;64958978975754:63;6$.'prqqqqpnpmilhdgebe`_a[[]XY[]]^^^^]]]\\\[[[[[[ZZZUUUTTTTTTSSSRRRRRRSSSQQQPPPOOOKKKHHHHHHJJJIIIFFFEEEAAA@@@>>>???CCC@@@===<<6(?5(>3';1$:0#;1$<2%=4'<2&<2%>4(=3&;2&=5'=4'=3&>4'>4'<2%:0#8.!8.!;1$9."6,5+6,9/"8/"8/"9/"5,5, 3+3*2*/'-%0'1)/&.%/&,#-&,$)"&%%''&''''''%%%"""    -    - - -          NNNqqqiiiTTT/*$ -       -  - - - -   - %'&"'   ######$$$&&&&&&'''(((''''''(((+,,545&$$!%/"-#,#,&,)0-"2.#6-#9*"1 %' *!1'3(4'2$4':,#3$-;.$?3(=7*6+!* !( .& *<$ 8 .%0F3&kVA  - -      #/508776775874654654865:78978978:8898999::99:87:87;98989887777887987:77:6*4, -   - - -     !!    !)"&1*/932:55;67:78:79:89:8::9::98:86:7475.3/ilkopppoppmoplpjfidbe`ac_`a[\]\\\[[[\\\\\\ZZZWWWWWWVVVUUUUUUUUUSSSPPPTTTPPPLLLLLLKKKIIIGGGGGGHHHGGGEEECCCBBB@@@<<<;;;;;;===888999@@@AAA   -    -     - - -        - ( $+#' '( '  "( !$-*%( &%' $$ #!!      $&)*#"*#   -  - - -               -            "8,'3&!$$*../,6.#80%:2'7/#7."91%90$80$80$80$:2&7."4, 7/#80$7/#6."6."3,!1*3,!2+ 0)1*0(.'-&-&+$+#)"#)!' %""! - -  *+*%%%   - - - - - - - - - - - - - -  - -  - - >6(@7)@8*>7)?8*>5(>4'>4'<1%;1$;1$;1$=4'=3';2&<2&;1%;1%;3%<3&=4'=4'<2%<2%;0$9/"9/":/#8.!6,5+6, 9/"9/"7- 7- 4+5- 4+4+3*2)0(1(2)0'/'/&.%-%+#,%%%%&&%''''''&&&###  -      -     UUUqqqyyy]]]GGG  -      - -        - !&'%#%  -  ###$$$%%%&&&'''(((((((((((($$%212*%)$%.#/ &*"0(/)0+ 2-"7( /" !%40,!3,!5*!5,"6-"8) 2! &81%<3'=4(>1'6#% - -*2@)$6%* 1 &-D3&ZL9  -      *1,644766576354343575596776997:;99:99987877767877:98:99898887887877:89<87<7   - - -     ! -! !(!%0).822;54;66:78979:89:89:89:98988989:98:87:7696586373" ilknnnonomjllhkjfidce`ababcbcd___]]]]]]]]]]]][[[YYYUUUTTTSSSTTTVVVSSSPPPOOOKKKHHHGGGGGGGGGFFFEEEDDDDDDCCCAAA>>>===;;;999::::::<<<;;;;;;>>>:::          - -   -  -     %&)#& '(   !!!('#'!#$& $% #$  -      #&*+&                                  1% 8+&&$'-..+5."80%:2'80$8/#90$8/#6."7."91%90$6."5-!90$90$7/#6."80$6/#4-!5-!6."5-!7/$7/$4-"2* 2+ 2* 0)2* 1)0'0(/(.&.'/(-&)#+$%$"  - - - - *)(%%% - - - - - - - - - - - - - - - - -  - - - - - - ->6(@8*A9+?9+@8+?6)?5(>4'<1%<1%<2%;1$=4(>5(<2&;2%;2%;2%:2$:0#<2%?5(=3'<1%;0$8.!:/#;0$9/"5+4*6,7.!6,4+7.!3+3*4+4+1)2*2*2*3* 2)1(0'/&,$.&*#' '''&&&'''(((&&&     -      - -       -[[[qqqmmmTTTD@9  -      - - - -  -   )*$'(%!%  - """$$$%%%&&&(((((('''''''''"""...866)#'!.%2#-!.&2) 0'0+ 1, -" -,&(5."1, 3-!7,"6) + ( =)!7/#:2&>4(>1';-#4 # ! ) 5! ' >&!2+ $ .H0%TC3  - -     -   "+%331745566454565565485786:98:;99;99::8898878877988988789898997987:85856:6& - -    ! ! %#-&,6/2<63;66:79;8:;9;<:::9:;9:;99:99:99:9798898:;:9:88:86:7586474(! jnloqpqpqnlnlhkmilifiddf`ab^_`_`````]]]YYY]]]^^^ZZZYYYXXXUUURRRPPPPPPPPPMMMKKKJJJJJJJJJHHHDDDFFFEEEBBBAAABBB???AAA===>>>===;;;>>>;;;:::;;;:::<<<===         - - -    - -      - &("$$$  - $ + &$(##%'!'!%)&   -    -!&(*("   - -              $.!$#%+/ / .5-"7/$:2&90$7/#7/#80$7/#6-!90$91%7."8/#91%90$91%7/#91$80$6.!80$92&7/#81%:2&70$5-"6.#7/$4,!6.#7/$6.#6.#5-#3,!4-#6/$3,"2,"4-$/( -&+$+$)"$$'!& #%+$2*4,! - - - - - - - -  '''&%%  - - - - - - - - - - - - - - - - -   - - - ->6(@8*A9+@:,@9+@7)@6)?5(<1%<2%;1$:0#;2&;2&:1%:1%;2%;2%:2$<2%<3%<2%<2%<2%;1$8-!9.";0$:0#6,4*4*5+6, 5+5, 1(0'2*3+1(1)1(1(2)3* 2)/&/&.&.&+$( &&&&&&'''(((&&&  - - -            -  [[[~~~```JJJ,)# -       -    -  - - - . -&(('!% -    !!!$$$"""&&&''''''&&&&&&&&&&&&'''545("'#'#" + 0(/)3* 2)$ '4$8(!9(!7*"4,"1, 3."7* 9) - ':/$9-#4*:/$@4*<2';0%:-$1!$ $ ,.@(#7 ) 3. ( -0 C1$SF5d  -          -$.1.6336665666657654744758767766877998998989987879:99889889997987:88:89<8"+%  !   $#,&*3-0831833846868:79:89:8::9:;9:;:8:88988988:87987987977988988:88:87:8596585'/)nqonnnmkljgiieikfjhfiefgbce_`a^^^]]][[[ZZZYYYYYYZZZXXXTTTTTTPPPMMMMMMMMMLLLGGGCCCCCCBBBFFFEEEAAAFFFDDD@@@>>>@@@======AAA@@@===;;;===>>>888777999888;;;<<<     - - -  - -   -        -   ' & ""$$(*# %$##!%!,"%$( %%(   -    %'(*"                       "#%*0"0"0",6/#80%80$7/#7.#90%80$7."91%:2&7/#7/"7/#91%;2&91%91$90#6- 80#:1%:1$<4'<3'90$80$80$91%6."7/#91%80%7/$6/$6/$81&92'60%92'81'4,"0)1) 3+"2*!*",#0)1+ 0*0)4-":2':1%3*4, D;,   %&%&&& - - - - - - - - - - - - - - - - - -   - - - -   >6(@8*@9*A9+A9+@7*@7)?5(;1$;0$;1$;1$;2%:1%:1$;2%<2&<2&;2%;2$;1$<2%=3&=3&9."6,8- ;1$:0#6,4+3)8."7."2)6- 4+/'1)2)0(1)2)2*3* 3*1(0'0(.&/'-&)"%%%%%%''''''%%%  - - -   - - - -       DDD```UUUAAA.*# -   -     - - - -  -   - .!-'***#' -  - - """###$$$&&&&&&%%%%%%&&&&&&%%&212*!)%*%( &.$0)+&4(3&0(2* 6+!5,"4/$6/$7*";& 52&7-"8/$7.#<1&0$'8.#=2(;0&<2';2':0%8%$.4# +7"1, $* C.$PB4zdM  -   -     */+4214334556558665754756656655874776887988998987877879887878:97:98;8;<:+/+   - " )#'0*/714:55:65855755757977977978988988:89:99:9898787676787798797797798787797797585586475/40knljiimjljfifaefbeeegabc]^`]^^\\\[[[]]]^^^YYYWWWYYYYYYWWWTTTNNNJJJGGGHHHKKKIIIFFFDDDAAA???AAABBB???@@@BBBAAA???<<5*;2&4+ 6,!@7*  110%%%&&& - - - - - - - - - - - - -  - -  - - - - NC1=5'@8*A9+B:,B:,A8*@7*@6)<1%:0#;1$<2%<2%<2%;1%;2&;2%<3&;3&:2%<3&<2%:0#;0$;0$6,6+:/#:0#7- 5,6,8.":1$7.!7."5, 1(3*4, 3+3*2*1)2)2)/&/&/&,#-%-&(!&$$$%%%%%%%%%   -    -  -       - - -NNNeeepppOOO<<<    -       - -    -  -.!- &(**#(   -   !!!###&&&&&&$$$$$$$$$%%%##$...755($,&,&*$(" -3&5* 2."3-"5-"4+!.'5*!6&.# &4-"60$70$>3)4%*4)64';3(<2'9/$:2'?1(1 $ # * ,:#3& -* -#, :,!I:.kXD  - -       &/)3203113444444334544754545545873876996886777875655658779998;:8;:9;9897442 & %-'-5/1833946968:78978976866766768989;98:88988:98:88:88987976765756867987877978:8798686686686586464251! innknkkljhffkgjlhkdadaaccdf_`a]]]\\\YYY[[[]]]\\\WWWQQQTTTXXXTTTQQQMMMIIIGGGHHHHHHFFFCCCBBBAAA>>>???AAA>>>>>>@@@@@@@@@@@@AAA??????;;;888666666777999555444777777555///         - -  - - -  -  - -  - -        '+!)%'"&"$!&",$" ,) "$ %!%  - - -    #&)*%          "  #        "&(. 1#0"-7/$80%6.#5-"7/#8/$91%:1%:1%;2&6."4+80$:1%80$;2&<2%:1#8/!;2$=3&=3&=3'=3';1%<2&:1%8/#90$;2&;2&:1%90$91%:2&;4(;4':3'=6*<5(6/#3+6/"7/#1)/%3)8/$;2':1&7/#;2&?5*:0%3)6, ;2&FFGEA?-..%%%&&& - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - -MC1=5'@8*A9+B:,C:,A9+?6)?5(<2%;1$:0#:0#<2%<3&;1%:1$90#;2%=4(;2&<2&;1$<1%;/#:/"8, 5+9.":/"7- 7- 8.!8/":1$6-!8/#7/#3*4, 6."6."6-"3*0'2)3*0'.%.%+#,$.&(!%%%%######$$$(((    - -   - -     -  UUUnnnZZZHHH40+ - - -      - - -   - -  - -'&#(*+%' -     """%%%'''$$$######$$$!!!***555**#-((  " 4'4+!2."2."3."0(#,) ! -3+ 6.#92&8/$>2)5'(0%82&;1'<2'>4):1&<6*:1&/$ -( 05"& )7 /-"( -:$K:-XH7 - - - -      -)"01/3212432336554432530215554653763665776765656866766556766987:97:9867633+2-.722734746868978978989:8898797787676686898:<:8:97877989;99;98:8898797787797787686787898686576575687586464463& kpnknklljkkhggcfdddce_`b^_``ab\\\\\\]]][[[[[[]]]YYYSSSPPPPPPQQQPPPNNNMMMKKKGGGGGGFFFFFFAAA@@@???>>>???@@@<<<;;;>>>>>>AAABBB>>>>>>===;;;555222444555444333222333555333000+++           -  - - - - -   -   -      * "* (!"'")!"  ! ! #    -    - "&))&! (,          -    -  ""     ! #%(,2"2"2"27/$5-"7.#90%90$90$90%91%;3'80$7/#90$:1%;3':1%<3&90#7.!;2%=3'<3&;2&>4(:0$;1%<2&;1%<2&<2&<2&;2&;2&;2&<3'?7+>6*<5(>7*=6)81$4- 80#91$3+0%4*:0%<3':1%8/#<2'?5*:/#1'6, <2&@@@HGH?<;*++%%% - - - - - - - - - - - - - - - - - - - - - - - - -  - -   G>.>6(?7)A9*B9+C:,A9+?6)?5(<2%;0$;0$:0#;1$<3&<2%:1%:1%<4'<3';2&;1%:0#=2%;0#:/"8- 7,8.!8.!6,7. 9/!8.";2&;1%9/#7.!5,2)5+ 7."7."4+ 1(3*4+ /&.%,#) .&.&*"&%%%#########&&&      -  -   -   -AAA[[[QQQ>>>-)$         - - - - - - -  - -   !(,,('     """%%%$$$###$$$%%%%%%&&'.-.)' *(( %1"8(!7*"1* 3,"6-#4'%& :*"4,!80%90%90%<0'0$+ 3%2#8+"5,!83'70%@2)?3)7+!,# ' --,8%6# -.* )) 6!G;,TM9 - -  -     #+0,210/10/213323433643544544551641544665665544545765655555875876986668555752956867767767868989;99:97876876765655656879:99;9797797:;:8:9787676787798798686676787787575687464565354465575%,' ostospmnlnnkpolllheeb^`^bddefgbbbcccaaa\\\ZZZ[[[WWWVVVUUURRRRRRQQQMMMKKKNNNNNNKKKGGGCCCDDDDDDDDDBBBAAA???@@@???<<<======999??????===>>><<<:::666111444777222333111000111111///---###     - -      - -  -    -  -  -  -  - -  '*'"'"*"+# ##  -   -    #')(# - 9,')            #     !"&+&(*03"3#180%6-"7.#80%8/$8/$90%;2'=5)80$6-!:1%;2&;3';2&=4'90$8."<2&=3'<2&=3'>4)<2&;2&<2&<2&<3'=3(<2'<2'<3';2&<4(?7+>7*<5(>6)>7):3%7/":2$:2$2*1%5*;1%<3':1%9/#<2&>4(9.#2(7-!=3(CBBFEE;98))'%%%  - - - - - - - - - - - - - - - - - - - - - - - - -  -         @8)?6)>6(@8*B9+D;-B:,@7*?5(<1%:/#:0#:0#;1$;1%;2%;2%;2&<3&<3';1%:0$:0#:0#;0$9.!6+7,9."9/"7- 8/!8/!8/";1%;1%7-!6-!6- 3*4+6-!6, 4+0'2)1(.%+$,%+#.&.&+#' &###$$$###&&& !     -  -   - -IIIQQQMMMPPPHHH666/+$     - -  - -  -   - -   #),+((   -!!!%%%%%%%%%%%%&&&%%%##$%$% -('"/%,/#/",3(/(1)4) +" # +9+#8,#:.%8-$9+#2" -(/"%1%1+ 81%@0':-$71%6,"-&(.1! -# <&!4- $ $ 2 H:,PC1|Z   -   - &-)00/.0/-1/0213433530312214434762653554542214534643435654765873666779577653856977865656767987987987876763433433537879:99;:898797797686575565676787686676565576676565565354354353575464-1.nqppqommkmlionkpqmkljcdeceefgggggdddbbb```]]]\\\UUUQQQQQQPPPMMMOOOOOOFFFJJJKKKJJJIIIFFFEEEEEECCCCCCCCC@@@AAAAAA<<<;;;;;;<<<@@@;;;888:::;;;===999888666666444.........,,,///...***)))*** - - - -   -  -     -  -     -         - -  )'%(!'%) &&$%   -  -  -    !!')*&! '8)$4&!    -   %" - - - $   "%+6'!/)*.3"4#2!80%6-"7.#8/$8/$80$;3'<4(>6*80#5, 91%:2&:2&;2&=3':0$9/#<2&=3(<3'=4(=4(<2'<2&;1&:0%;2&=4(<3'<3'=3'<2'>5)?6*>5)=5(@8+@8+91$7/";3%;2%4+1&5*:0$<2&:1%90$<2&?4)9.#3)7-!=3(CBADDC765&&%%$% - - - - - - - - - - - - - - - - -  - - - - - -    ?7)?7)?7)@8*A9+D;-B:,?6)?5(<1$9/":0#;0$;2%;2%<3&<3&;3&;3&=4'<2&:0$8.!:0#;1$9/"4*5+9.";1$9/"8/!7. 6, 8.":0$9/#7-!6, 5,4*4*5, 6-!1(3+1(.%.&,$+#0(.',%)"(!###%%%$$$'''  $+! - - -   -   -  -%%%$%%%%%$$$###('(      - - - -  - - -   - - $*. -)*@=>>999888888777888888666666777555111++++++......+++)))(((&&&### -        - -  - - - -      - -   -  -    ' & (!("$%     -   -    !')*&#&7(">.*"  -   #,& ) )    " "%(9)#<+&-*.3"4#3!06-#7/$90%91&91&=4)<4(=5)90$5-!7/#91%:1%;1&<2&:0%:0%<2&=4(=4(?5*>4)<2'<2':1%8/#;1&>4)=3(>4)=4(=3(>5)?6*<4(<4(@8+?7*80#6/";3&;2%5,1&5+:1%;2&:1$90#<3'>4(8/#4*7-">4)HGFDDD321%%$$$$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - -      ?7)?7)@7*@8*A8*C;-A8*=4'=3&;0$9/";1$;1$<2%;1$<2&<3'<3&<3&=4(=4'8/"8.!9.":0#8.!4*4*8-!:0#8. 8/!9/"6, 8/"9/#6, 6, 7-!4+3)4*8/#7/#2)3*3*0(0(.&-%.&-%-&*#*#' ''''''((( !  '.#  - - - - -      &''%&&%&&&'("""   - -     - -    -  - - #,--**MKJLKJ;87)&$///+++(((''' """$$$''''''%%%&&&'''%%% ###+.',&.(-%))  )'6!7,#4( 6( ;0&9/&7#+ "& -$2+!7.%8/&90%7,"7'(" 3!:-#71%83'<,$4,&$ ,$ (7"., ( ".A*M;-hT?   % -.-//.+/--20.0..0..1.-/-10/010021132/10565342.2//20453575465354343565565454354343575454565454575576565354454565565565676576454565565565565565576465454465354343454354343454343ooorsprroomksomnmiggebbccceffghhhfffdddbbbaaabbb\\\SSSNNNOOORRRUUUQQQPPPPPPOOOKKKHHHHHHEEEDDDGGGEEEEEEEEECCCAAA???<<>><<<:::999777888555444333222111111...---,,,,,,,,,***&&&'''######"""           -  - -    -   - -  - -  !    -(##)#'!%%       -      -!&**'"!, 6*'$     !),()9+&/#-!! "! #$  2"B1,2!(.2!4#4"-6.$7/$80%90%80%<4)<4(<4(:1%7."7."91%:1%;2%;1%9/#:0$:0$<2&<3'>5)>4)<2&<2':1%8/#;2&?5*<2&>4)=4(=3(>4)>6*;3'=4)@7+?6*80$7/"<4';3&5,1'5+;2%=4';3&91$<3&=4(8/#5+8/#=5)IHGBAA//.$$$$$$  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - -       ?7)?7*?7)@8*@7)D;-@8*<3&<2%:0#:/#;1$<1%=3&;1%;1$:1$;2%;2&;2&<2&<2&:0#:0#<1%9."5*5+8.!:0"6,8.!:1#8/"9/"8/"5,4*6- 4*1(5,90$80$0'3*4+ 2)1*1)0(.&,%.&+#(!)"(((''''''!!"  *1&! -         - -$$$###$$$%&&$$"      - - - -   -  - -      "&.!-. ++SQQ=:9)%$888222///***'''$$$###"""###%%%((((((&&&&&&&&&&&&%   % +'.* 0* 0(3) 2'5%,0!6( 5+"5,#6/%9/%7*!/( !$ -/+ 0/#6/%90'90%8+"1% 5>0&80%90%>2(?/'?+$4% (2;(!9&' -* -+ -%+ @!U:/ZF6  -   *+*0//-//,0/*,*)+)-0-02020/210---,.-/00232010242343353686232343343465465454464343353354454687465454454354454454454464565454465576354454353465465465465454464353454343132232oompolutqtqornkqmjihhaac``bbbcgggddd___bbbaaa```YYYVVVOOOKKKFFFJJJQQQTTTSSSSSSSSSHHHEEEIIIEEECCCDDDCCCCCCEEEBBB???<<<999<<<>>>;;;:::::::::777888555333111444333333000------,,,******)))***&&&&&&"""$$$&&& -          - - -      -  - -    - -$#"%) (#%"'"*"* -  #     -      - %*+)$!!#   !"$#"%*0 F.)R72O62M85A.+(- """ !!!!   (=/)7("(+2!4#4#0!7/$8/$7/$8/$7/#=4)<3(<4(:2&8/#8/#91%;2&<3';1%:0$<2&;2%=3'=3(?5)>4(;1%<3'<2'90$<3'>4(:1%=4(=4(<3'=4(>6*<4(=5)?7+>6)80#6.!;3&;2&5, 2)5, ;2%<4':2%91$;3&>4(9/#5+7."=4)RG7FAA+++$$$$$$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -     ?7)@8*@7*A9+@7)E<.@8*;2%<2%:/#:/#;1$<2%=3&<2&;1%90$:1%;2%<3&=3';1$;1$<2%=2%9/"5+5*7- :0#8. 8. 8/"8.";1$:0#7. 6- 7.!5,2(5,90$7/#1(4+4, 3* 2*1)1)/'+$+$*#(!)"%%%((('''###  )1&" - - - -  -  - -  - - !!!"##&'' - -     - - - - - - -  - -  -    !(. -/!,)444333000---(((%%%%%%&&&&&&%%%"""###%%%''''''&&&'''&&&$$$!!" -  -$0+!1+!3+"3*!2)3$ &7,"6,"2-!20$4,!,"% +" 5)!8.$60'8/&=/&;.$6)7&?,$)-$:.$@2)A1(=.%91%0#) &24  -!<& 7+ -, & & -8L7+VC4i !(*)/-....+/-,.,//.-/-,.,1/.321010010121/10/0/121010232353343464242343454464354242343343565676465242454464343465464565465454454465454353242353232454464454354343243343132qpmnnjomjromqmjligigifeibbcaaadddfff```]]]^^^ZZZYYYVVVTTTQQQNNNIIIJJJOOOPPPRRRSSSMMMCCC;;;EEEIIIFFFFFFEEEEEEEEE>>>>>><<<;;;:::===;;;777:::999777666222//////000333222000---++++++***+++***'''$$$%%%%%%%%%"""$$$           -       -        - -  -%'&'"'#("+ "       -      $*,,'#     "####&*)('7$ B*&B+(A/,&*()#$#   ""   #-.$(05#5#0#0!8/$80$80%7/$<3(;3'<4(91%80$90$91%<4(=4'8/"8.!:0#:1#<2%=4'?6)>4(;1%=3'=3'9/#<3'<2':1%<3'=4(<3'=5)>6*=5)>7*A9,?7*91$7/";3&;2&5, 2(5, <3'<4':2%:1%;3&<3'90#5+7.!=4(KB3@==&('$$$  - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - -    RF3=5'?7)?7)A9+A9+C;-@7*<3&<2%:/#:/#;0$;1$;1$;2%:1$:1$<3&;2&90$;1%=3&<2%;1$;1$8."5+3)6- :0#9/"8.!7.!8.!;1$:1$90#9/";2$5,3)6- 91%6."3*4+ 5,!4,!4,!3+ 2*2* /(-&*"' (!'!(((&&& #$# #&      - - - - - - -   - - - -     - - - -   - - - -   -      !'-.0"-)***)))&&&'''&&&&&&&&&&&&$$$$$$######%%%&&&%%%%%%%%%$$$ !" " !*%1* 6-$1* /(.#*.9+"30#1-!40$3)&)7' :2(;5*("( ' 6- ) -&3J0&WC5a&!$,'%)&()(*'(+)**-,+.,-.,-.,,-,././0/020121/0/010021021021132354343454343020121343454343343353686576464454465354232454354354454354343343353343131121343454454565454343243cccghdllhljgmignkiljjghkggjeeheefeeefff]]]^^^___]]]XXXXXXVVVSSSUUUPPPHHHMMMRRRRRROOOMMMIIIDDDDDDBBBEEEEEEHHHFFFEEECCC???>>>???===<<<===;;;999999888666555222000111///111...---+++)))'''))))))(((%%%%%%%%%'''&&&&&&&&&"""                - -         ')(!%!&")!#  -     - -   #),-)#!!   !"##%&'%#%#'*'%#%'%&$!!!"!!$!&-2#3#1". 8/$8/$;2':1&;2'<3(:1%7."80$:2&;2&<4'=4'90#8/"90#;2%<3&>5'?6)>4';1$<3&<3'8."=3'<3&:1$<3&=4'<4'>6)>6)=6)>7*A:,?7*91$80#;3&;2&5, 1'3*<3'>5)<3':2%;2%=3':0$5+7-!>5(D;.;99''%$$$ - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - KA/>5'?7)@7)@8*A9+B:,A8*>5(=3&:0#;0$;1$;1$;1$:0$9/#91$;2&;3&<3'=4'=3&;2%;1$;1$:0#5+1'8.!:0"8/!4+7. :0#;2%<2&;1$7. 9/"7- 5+7.!90$6."1(2)4+ 4,!5-"3+ 1)1* 0(-%)!' (!("(((''' $%$    - - -    -  - - - - -  - -  -       - -     - - -   -  -  -+). / /!-*%%%&&&&&&&&&%%%%%%&&&%%%###%%%$$$###$$$#########!!! -  -$ % )1( 4.$5+"1'3( ',:,#2/"1- 50#8-#2$7-"91&:0'>4*74(6.%:$ -%5+!82&91&=2'/"8+ 90%;4(:4(;4(:4':0%>.%6&'%)& -*$ 56+,( "+ -D0%QG5~pR!$"!%"%(%)*)+))(&'*,++-+,.-,-,,-,,-,-/-.0./10021./.././0/121010121242243132021121242354343465353687243121465465454243565343021021243353121131232132021121132353454464343`bdfhjklinlilhfjgejjkijmhilggiggghhhfffaaa___```[[[XXXVVVWWWTTTQQQWWWUUUJJJLLLSSSPPPMMMJJJGGGHHHHHHFFFAAA@@@@@@CCCCCCAAA@@@>>>;;;:::888999777777666666555444111111111---...,,,++++++((('''(((&&&$$$###%%%&&&%%%$$$''''''$$$ -        -     -          -   -'%)#*#'( -  $  -  -     "(+-,'!! !"$%&%%$%($#$##$%'('%#""! !!%*0 1!/ -90%8/$:1':1&<3(;2(;2'8/#7."91%;2&;2&=4(;2&7."8/#;2&;2&?5*@7+=3'90#<3&<3&:0#>5(=3':1$;2%=5'=5(>7*>6)<5(>7*@9,<5(70"7/":2%:1$6+ 1&2);2&=4(<3':1%;2&>5);1%5*7-!@6)C9-544###$$$  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - F=->6'=5&>5'@7)A9+A9+A9+?6)>3';0$:/#:/";1$<2%:0$:0$:1$91$:1%=4(>5(<3&;2%;2%;2%;2%6,2(7- :0"9/!5,5,7- 9/"<2%<2%7- 7- 7.!4,5,80#7."1)3*3*2*2*2* 1)3+!/',$+#)")"("%%%))) %&%!    - -  - -  -     - -        -         - - - - - - - -  8+'6($'---,+%%%%%%%%%%%%&&&&&&'''&&&$$$%%%$$$###"""   ! '!  -) 0+!8+#7)!2* &#5)7) 3$9* ;.$9-#8/$81%<1(2&2* 1%$$ 0#8/$:3';2':/%" 4)9/$8/#8/$<4(:3'70#:0%;0&6),#-22) /- +&$2O1)\@6mUC"%"$&$%'%%&%(*(*,+*+**+**+*+,+*,+,.-,.,-.-,-,+,+,-,-.-.0./0/././0/121131454243021232343343343132010020243131353121242121121132232343021232132121/0/010131232232121^bd[_`egilmonlkkhgffhghkghkhhieeedddfffdddeeebbbbbbWWWWWWYYYWWWPPPTTTTTTLLLIIILLLOOONNNNNNLLLIIIFFFHHHEEE@@@AAA:::<<5'=3&>4'>4(<3&>5(?6)?6*@9,@8+;3'7/"80#;3&;3&3)1%4+<3'<3';2&91%;1&?5)=2'5*8-!@5)B8,00/###$$$ - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - C:,@8)?6(?7)A8*A9+A9+A9+?6)>3';1$:/#:0#;1%<2%;1%;2%;2&:1%;2&=5(=5(=4';2%:1$;1$90#6- 3*8.!:0"9/"8. 8.!8.!7- <2%;1$8.!8/!8/"6- 6.!6- 4, 3+2*4, 2*2*2+ 1*3+!.'+#)"(!,%+$(!'&& %'%!   - -       -            - - - - - -     - -   - - - -  7*&8*&$,-.,*%%%$$$%%%&&&%%%&&&&&&######%%% !  %%# " 2$8+"7+"3)4* 3(3&&3!;-#8-"80$90%9-$*' % ! 1#;1&90%<3(=1'=/%0%7,!8.#5+ .$3+82%81$71$72%71%6+!( +- 2&,2& ./- ( & ?$N:-YK:"$##$#$%$&('&'&#%$')(')((*))*),-,,-,-.-+,+)+*,-,+-,-/-./../.010121010232353010243121121/10010.0/132343242343132454021232243243343353454242232132343131131efh_bdTWYY[\ddfhhjeefddgccgeehgggeeedddgggccc```aaabbb^^^XXXVVVWWWVVVPPPNNNRRRKKKIIIOOOMMMLLLMMMLLLIIIHHHHHHEEEBBB@@@>>>:::???@@@;;;666777777555444444777666333333000......***)))***'''((((((&&&&&&%%%&&&(((''''''&&&&&&&&&%%%&&&'''((()))        -        -   - -      -'&& )"  -"  -    -   -  &*-1 *"(5'!/!"!#%$###&'!#!!"$$##!! "!%)/0 --90%7.$8/$90%<3(<3(:1&90$:1%90#<3'<4':1%6-!8/#80$90$=5)>5);1%;1%>4(>4(=4'?6(>4'=3'?5(@6)>5)?6*@7*@8+A9,@7+;3'80#80$;3'<3'6- 4*6- <3&<3';2&;1&;1%?4)>3(7+ 8-!?4(A6*,,,###$$$  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - -B:+?7(=5'?7(@8*A8*A9+A8+?5(=3&;0$;0$<1%<2%<2%;1%;2%;2%;3&=5(>5)>5(=4';2%:0#:0#8/"6,4*8.!:0#90"9/!9/":/#7, 9/";1$7- 7. :1#8/"5,5- 4+3+4, 3+3+4, 4,!2*3+!/',$)!'*",%*#'&& &(&!   - - - -   - -    -           - - -      - - -       4'#7)%%./ 0!.-'''%%%%%%%%%'''&&&### "#$  -   -#  " 5) 8,#7+!7* 2#&  '5-"8/$5-!7/$81%8/$3$) ( 03(<1':/%)9) 8,":.#9-"9+!8* :1%71%90$7/#91%92&:1%9' 1& ! -'*& # -5#*14( $ 2P0)`F:i$&$"#"#%#$%$%'&')''(''('(*)*+*)+*)*))+),-,-/.-.--/--/./0/./.-/.020132010.0//10121-/.././0/132242121232/10010010021/10131232121020132232132232121adf`de]abYZ[[[]ccdffgeeefffccddddddd```cccfffccc^^^\\\\\\[[[ZZZXXXXXXQQQQQQQQQNNNIIIIIILLLKKKFFFDDDGGGHHHHHHGGGEEEBBB======:::999<<<777666888777555777666222444111///---///+++(((***)))%%%&&&%%%$$$&&&%%%&&&'''(((&&&&&&''''''''''''''''''''' - -          - -  -     -    -   -$&$ -   -  !  - -    -$+-/ -%)5'!7)#'! !"! !"## !""   !"!!!!!%)02"0!-90%8/%90%90&<3(?6*;2&7."90$91$<4'=4(;2&7."8/#7."90%=4(>5);1&<2&=3'=4'>5(?5(>4'>4'?5(@6)?6)?5)>5(?7*A9,A8,=4(80$80$;3'=4(7.!4*7.!=3';2&;2&;2&;1&>4(>4)8."8."?4)A7+)*)###$$$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - aT@A8*?6(>5'?6(>6(?7)A9+A8+?6)=3&:0#:0#<1%;1$;1$<2&<3&<3&<4'=4(>5(>5(=4';2%:1$:0#90#7.!5,9/!:0"9/"8.!9.!9/":/#=2&:0#4+7. :0#8/"4+5, 4+5, 80$4, 2*4-!4-!2*3+!0(-%*#(!*#-&)#$$#"')'"     -                   - - - -    -   -      /#0"&.0!1"/ -&&&%%%""""""   - ""& $  " .'"(:)"5+!6*!0#'--"4+ 5,!7/#7/$81%60$5."8-#5.#50%91&>/'>&!)  7*!:4(:1&>>AAA>>>===:::999;;;888666666555444222222222444///...+++(((***+++)))&&&###$$$$$$$$$%%%&&&'''((((((&&&'''''''''''''''%%%'''&&& -     -     -   - -   - -      -$$  "  -              %,. /0'&0"?0+/!!      !  "#"     !!!   "!    #.+&*1 2"0".91&80%7/$:1&:2'=4(90%7/#90$:1%<3';3'91%90$91%7."90%=4)>5)<2&<2&<3'=4'?5)@6*>4(>4'?5(?5(>5)=4';2&=5(A9,A9,=5)90$90$<4(=5(8/!3*7.!<3':0%;1&;1&:1%>4(=3'7-"9/#?5)A7+&''### - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - G>/A9+?6(=5&=5'>5(?7)?7*@8+?6)?5(:0#<1%<2%;1%;1$<2&<2&<3&<3'=4'>5)>6)<4&;2%:1$90#:1#9/"6- 9/!9/!8.!7- 7- :0#;0#<2%<2%4+7. :1$7.!3+2*4,5-!7/#7.#2+5."5-!2*3+ 0(-%+#)"-&.'("' "')'" )(       -        -      - - -  - -  -   -       #%&-0 1!0-!!!      ##&!'"& " - **  ,! '0'4+!5+ 5-"3,!$.?/&9'7':.$73&:4(:3(70%4,"+ 6%* "4#:0&85(81&;.$5(-!6)6* 9,!:,";/$8/#93'81&6-"9,#5 ' $! ( 2# /0+70& % -- I-$V<0^G8eL#$##$###"$$#%%%&&%'''()(()()*)+,+*,**+*')(-.-,.--/..0../../../..0/./.121121121/0/121232021/0/./..0./0//10020020020010/0/dfhgkmejjcghbdebbc`_`b`aeeeeeedddbbb```^^^]]]^^^aaa``````\\\VVVNNNPPPMMMNNNLLLNNNNNNLLLLLLGGGGGGFFFBBB@@@AAA???BBBCCCCCC>>>>>>??????;;;;;;999999666555555222000000111000000...---)))'''(((((('''$$$$$$&&&###$$$$$$'''''''''(((&&&$$$&&&$$$%%%(((%%%%%%&&&""" -        -    -   -  - -   - -     -   -  -        $,0!1"2"*%'>0*7($          "##"!!!   !""!  ! " "!(:,&=.(.*02!/ / -90%80%:2&91&=5)80$90$91%91$:1%;2'90%90%90%7.#8/$<3(>5)=3(<2&<2&<2&?5)?5)=3'=3'>4(>4(>5)=4(;3&>5)A9,A9,=4(90$:1%<4(=4(8/!4*9/#=3';2&=3';2&:0$=4(;2&6-!9/#>5)@7*XK9$$# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - E=.A9+?7)=5';3%:2%>6(@8*?7*<4&?5(:0#:0$:0#;1$:0#9/"<2%=3&<3&>4'=4'>5(<3&:1$90#90":1#7.!5,8/!9/!8. 5+7, 8.!7, ;0#:0"6,8.!:1#6- 4,5- 6-!4, 5, 4, 1*4-!4, 1*2*0(-%*")".'/(+%*##')'! !3'#-" -   -   - -         -          -    -      "(-/1 0-      -  !$$& )%+$(! -  -/ " !  -(2&3* 4,!5."6+!:+#7%"' :-#73'95)84(:1&8( ( # .;/&:2'92'80%9+"/#0#  /  , ;2'93(80%8,#:0$9/#3%* &%/+/#,7!25-% %0 K0%R?/SD2h\B""!"""$$$%&%%&&'(()))'('()(+,+*+**,*)+)-.--.-.0.-/-,.-./../../.,-,/0/.0/010/0//0/121243010/0/020/0/.0./1/010/0/./.^ad]abbfggkkacd^^_^]^^]]a`adccbbb]]]\\\\\\\\\\\\___``````[[[XXXRRRQQQOOOOOOLLLJJJPPPMMMKKKEEECCCEEEDDD???CCCCCC>>>AAAAAABBB>>>999:::::::::888;;;999666444333222///......000///---***&&&$$$&&&&&&%%%"""$$$&&&%%%%%%$$$&&&&&&&&&((($$$!!!"""###$$$%%%%%%%%%&&&&&&       -  -      -  -   - - -  - -   $   -    -        +0 3#4$-(".0! !   !"###"""!! #""   !!#!#  "'=-'B1*3!)03!1"0",7.#90%91&80%;3'90%8/#91%91$8/#91%90$8/#7.#;1&90%;2'>5*=4(;2&;2&;1&?5)=3'=3'<2&=4'=4'>5)?6*>5)?7*A9,@8+;3&90$:2&<3';2&6- 3)9/#<3'=3'=3(90$:0%=3(;1&6-!90$?5)@7+NC2$$$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - -WL9B:-@8+@7*>6(<4&;3%<4&@8*@8+=4';2%7.!9/":1$<2%;1$:0#<2%<3&>4'>4'>5'=4&=3%:0#8/":0#90#7.!4+6,7.!6, 4*6,7- 5+8.!;1$8. 6,9/"6- 5,7/"7."3+4, 2+0(2+1*0(1*0(.&+#+$+$.'.(*$%()'! #6+&+     -   - - -  - -         -     - -         !#'./1!0- -   -    '!%' *#,$,$* ' $) )3+!5.#6-#9.%3$ % 1$7,#6-#;1(<2(:.%:+#,"( 5";0&8/$6.#6,"0"& + 5(0&6*6):-#9+!0 0$7-"90$90$;/$>+"0%!% +*4 -! -684' -$+ 4E/#N>.VI5\Q;l#$####$%$&&&#%#!#!(*)%&%&'&)*)*+*+-,.0.,.,*,+-/.-/-./.,.,-/.-.-.0../.,.--.-./.-.--.,+-+-.-./.-/..0/-.-Y]_]bb_cc\^__`abacbab`^_`__```bbb```]]]ZZZUUUYYYXXXWWWZZZ\\\[[[WWWTTTSSSQQQNNNLLLIIIDDDHHHFFFDDDDDDEEEDDDDDDEEECCCAAA???@@@AAA===:::999;;;999555666666555111000000000------------,,,***&&&$$$###%%%%%%$$$%%%&&&%%%%%%###$$$%%%%%%'''%%%!!!!!!"""$$$######%%%%%%$$$&&& -       -      -     - -  - - -    - -#( !  -        +0 3#5%0 *$#$  !!"   !#%%#!"#""! ! "      !  #:+%D4.5$'-3!2#1"+7.#80$:2'90%:2&80$7."80$91$91%:2&6."6-!:2&8/#;2'<3(>5)=4(;2&;2&;2&A7+=4'>4'<3&=3'<3'>5)@7*>6)?7*@8+>6)91$80#:2%;3&:1%5,3)9/#<3'=4(;1%7.";1%=3(;1%6-!:0%@6*@7+F<.$$$ - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - -D<-B:-@8+?7*>6(<4&<3&=5'A9,@8*=4'9/"7- 9/";1$;1$;1$;1%=3&>5(>5'>4'?5(=3&=3&;2$9/"90#8/"7- 3*5+7-!7- 4*8- 8-!7- 7- 9/#8/#8/#8/#8/#5- 8/#7/"3*3+3,2*3+2*1)2+ 1)0(+$+#' ,%-'*$'**'! '8-)*        -   - -    -     -  -    -          !#'0 0 2!// -   -      $$*#-%-&,%,#(  -+-'' /4-#5/$9,$1"' 26) 5) 7,"1(8,#)"/) %:.%7)!).) -" 4#8.$9/$8* 9+!<.$.!- 6.#90$:0%72$60"4- .#+ !#( 1' )6 $ .94&#' 5"H7)RC3PC0[L8_ "#"!"!%'&&('&'&)+)()(+,++-,*,*(*(+-+,-,,-,-.--.-,--+,+---,-,./.,.-*,*+,+)*)*+*,.,-.-_bdX\]W\\Z^^]_`]]_\[\cab_]^[Z[___```bbb```bbb^^^[[[XXXXXXUUUUUUTTTSSSQQQRRRPPPMMMKKKIIIDDD@@@@@@BBBCCCCCCCCCAAABBBCCCAAA===666???@@@===;;;:::999555666333222222......///...---,,,,,,,,,***)))&&&$$$"""%%%%%%$$$$$$"""###!!!"""###$$$%%%''''''!!!"""$$$######%%%$$$$$$$$$%%%$$$           -             - -"   "!      -     +.3"5%2"*'%! "!      "$$$%""#"""!         #3$D4/5%(+2 2!0!,8/$90%:1&91%:1&80$7/#80#91$:2&;2'5-!6.";3':2&<3(>5*>5)<3(:1&;2&;2&A7+=3'<3&<2&<2&<3&>5)>6)=5(?7*@8+<4'80#8/#;2%<3&;1%5, 3):0$=4'>5(;2&:0%;1%=3(;1&6,!:1%A7,@7+?6*%$$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - -C:,B:,@8*?7)=5'<4&<3&=4'A9+?7)=4'9/"8/":0#;1$:0$;1$<3&=3&=3&=4&>5(<3%<3%<3%;2%:0#8/"7.!7.!4+6- 8.!8.!3)7, 6,6,9/"8."5+6-!8/#6."4+5, 7.!5,5, 5-!3+3+ 3+ 1)3+ 4,!2* +#)!+$,%,%*#*+,(! #,!!  -      -   -          -  -            "$)2!3"1 //    -  -   !"$( +"-'*%+%1(%%*! - & & ! +%61&:+$9+#4+!6*!*# 0$%2)/ /<*#6.#90&;0':+#+$&/$4-"91&9/$:,#;*"4#% /8,"6.#81%91%80#92%5/!4)?& 4" $ (0' 13"*2 +% -' / >>AAAFFFDDDDDDAAA@@@@@@AAA===888>>>===;;;999999888333333333111111...,,,***,,,,,,++++++***((('''&&&%%%&&&&&&###""""""###$$$$$$###&&&$$$&&&&&&&&&###!!!%%%$$$&&&'''&&&%%%&&&%%%(((                - - -      - "  -(#!           *-3"5$3"-('" !! !   !#$%$""##"! !       $/!)%)02!0!,+80%91&91&90%80$7/#80#91$:2%;2&5-!5-!91%:1&:2&=4(=4(;2&:1&;2&;3&?6*<2&9/#90#:1$<3'?6)>6)>6)@8+A9,<4'90$90$<3'<4';2&6, 2(9/#=3'=3'<2';2&:1%<3':1%4+:1%A8,?6*;2'YL; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - -QG5@8*A9+?7)?7)=5'<4'=5'>6)@8*?6)=4'90"7.!8.!;2%<2%<2%<2%;2%<3%=3'>4(=3'>4(>4(=4'<2%:0#9/"7- 5+7- 9/"8.!4*6,5+5,9/#90#5, 6-!90$5, 5-!5, 8/#7/"7.!6.!4-!2*3+ 3+ 3+ 3+ 2*,%*"-%.&,%)"*,- )!      -                  -  -         "$)1 5$000  -   -  -   "#%&,#,&)$*%.&-#%   0/(+# 6$6*"9.%7.$4) . %3(( 2)6#/:,$9/%4/#71&81&9' ," $! 5."8/%8.$8-#:,#0 .<*"7,"#60#71$:0$90$5/!3, 6-!6+".!$  " )((2"! (6#53/ '), 9#G1%L8)P>-ZI6{gL#$# !"!"$#$%$%&%$&$$&$'('(*)')(()(,,+++++,+)**()('((&''())'(()*)(*)'*(\ZZaaaabb]_`Z[\QQRNMNYWX_^^___[[[\\\aaadddeeebbbaaaaaaXXXTTTQQQOOONNNMMMLLLMMMHHHFFFFFFEEECCCBBBAAABBBBBBAAAEEECCC???AAA@@@???>>>:::;;;<<<:::777888777555000111000...---***++++++***)))(((&&&%%%&&&&&&%%%&&&&&&""""""$$$$$$%%%%%%###&&&$$$$$$&&&%%%###!!!###%%%%%%%%%'''&&&'''''''''%%% -            -   - -      -       ##     -  -    #,4#6$3#/)&&!       !"$%" !###"!!       !$%'.0 0 -+91&91&:1&80$7/#7."7/"91$90$91%6."5-!90%:1&;2&;2&;2&:1%:1%80#<4'?6):1%:0$:1%;2&<3'@7*=5(>6)@7+?7*;3&90#91$<4'=4'<2&6- 1(8."<3&<3&=4'<3&:1%<3'91%2*7."@7+>5):2&A8+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - E<-@8*C:,@8*?6(=5&>5(>6)@8*?7*?6)<4&:0#9/"9/"<2%=3&=3&<2%:1$:1$<3&;2&>4(>4(>5(=4';1$:0#9/"6,4*7- :0"9/!7- 8. 7- 6, 8/"9/"4+4+91%6-!4, 5-!8/#7.!6-!5- 4-!1)0(0)3+ 5-"3+!.&,$/'/(.&*"*-.+"                  -  - - -  -  -            "$*2!3$5#.1! -   -  -   #$%' +#/'-%+'&#.(."$ # )/ ) *& -#6-$6.$5,"6,#7-#9.%72&4/#5$,5/$50$3/#71&80%*"/:' +"6.#7/%6.$4.#8.#;-#81%84(:-#-7)<0%90#8."7."4, 5-"5,"5)!9!-#!! -()# 1+./0-% -% /7!A, K9+PA0SF2bU>>BBB@@@===AAA======<<<<<<;;;:::777777666666444111------------++++++)))'''''''''&&&(((&&&%%%&&&'''&&&$$$###"""###%%%$$$%%%%%%###&&&'''%%%!!!"""%%%&&&%%%$$$&&&%%%((('''%%%!!! -       -   - -           - -  # "    -   -   ",2"7% 6%1!+&./ $   !!""  "!  ""!!! !        "%%+/!0!.,90%80%91%8/$7/#7.#7/"91$91$91%7/#6-!:1%91%:2&;3';2&:1%=4(90#<3'>5);2&:1%;2&:2&=4(?6*=5(>6)>6)=5(;2%:1$:1%=3'<3&<2&7- 1(8."=3'=3'=3'<2&;2&>5):1%0(7."?6+>5)<3(<4( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - _Q6(>6)?6)?7)>5(:1#9/":0#;1$=3&=3&<2%:1$;1$=4(=3(?6*@6*@6*=4':0#9/"90#6,4*9/!:0#9/!9/!8. 5+5+7.!7-!2)3*6."5-!2*6-!6-!5- 5, 4, 2+/'-%-&0)5-"2+ /(/'2*!0) .&)..,#     -      - - - - -  -   - -            - ##*3"4% 4#-2! -      -  $% $)#,%0) /')%($,'/&0 % #" -  (2*'' 3!5+#5,#6.$7-$8.$72'4.#1!%0.!30$4/$90&:+#( + 63'54'9/%5,"6.$7,#2$3)9/$82&83';-$/# -;-#90#9."9,!4+3."2-"2+!6-#8-$4'(! -$ -)/$ -& - (5 6/ ' #) 9G.$K3'Q;-XE4^L:n"#"!#!$%$%'%$%$$&$&'&&'&')(')(%''%''&'&$%$#$#YVW]]]abb`a`\]\]_^]_^YZY[YZZZZ^^^```[[[YYY\\\aaaZZZXXXWWWTTTRRRRRRUUUTTTPPPPPPNNNMMMHHHFFFIIIHHHGGGEEEBBBBBBBBBBBBCCC???@@@>>>:::===:::999999888:::666555444222111///---,,,+++,,,)))((((((''''''%%%&&&'''%%%$$$$$$&&&'''&&&&&&"""$$$###!!!%%%$$$###&&&'''%%% !!!""""""&&&'''###%%%&&&'''%%%%%%$$$$$$      -      -  - -  -  -   "$   !$    -   -   /3"8'!9("6&*'1 @0*0!   $! "  !!! !!          #$(/"1"1",7/$7/$90%8/#7/#7/#91$:2%91$:1%7/"7/#:2&91%80$;2&;3':1%=4':1$<3&=4';2%;1%<3':1&<3'>5)=5(?7*>6)<4';2%:1$:1$<3&=3'<2&6- 1'7.!=4'=4'<2&:1$91$>5):1%/&7/#>5)=5)<4(:2&OD4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - -E;-@7*A8*B9+@7)@8)>5'>6(>6(?6)?7)?6)>5(<2%:1$;1$:0$:0#<2%;1$;2$;1$<3'<3'=3(>4(<2&;1$7. 8.!;1$9/!4*:0":0"9/!9/!8.!5*4*8/"7-!2)2)5-!6."3*5-!6-!6-!4+4, 4, 0).&.&/'3,!2* 1)-&-&-&.'(..+#             - - - -       -            $/!'*3"5& 5#.2" -      -  $ &!& (#(#0* /'/%-$.(.)0*,! - $ # 3 $  -(& "' 1%4+"3,"7-$7.$8/%5/$1, 2(7( 6-#1-!8/%:-$0 <)#95)74'8-$6,"5.#.!$ --#51$;2'<0&7.$4+!.%7,"4'1$+0%6,"1%/$4,!8/$9.%4&0( ""$ -$ ,$  /!-' 60+ ( -# # 0>)M:,SA2UE4XH5~\! "#" ! !#""$#$%$$&%%&%%%$$$#&&$"#!ZXYZZZ^_^bdcbdc_`__a``b`\][[[[RRRWWW[[[ZZZTTTPPPUUUVVVTTTTTTTTTUUUSSSTTTUUUTTTOOOLLLKKKIIIGGGHHHFFFDDDDDDBBB@@@???@@@AAA======>>>:::;;;666666555222444777555111111000...,,,,,,***&&&(((&&&$$$$$$%%%%%%&&&&&&$$$!!!###$$$%%%'''%%%"""$$$$$$$$$#########%%%&&&%%%$$$###### ###&&&%%%$$$%%%&&&$$$$$$&&&$$$$$$ -               - -  -    #'"%""#"#     -   -   0 4"9'!;)";+$.).D4.:+&"  !" #     !!!!!            #'$$(/ 1"2#+6.#7/#91%7/#7/#7/#:2%91%81$:2%7/"80$:2&91%:1%:1%;2&:1$:1%:1$=4'<4&:0$:0%;3'<3';3'?6*=4(>6)?6*=5(;2&:1$:1$;2%=4';0%6, 0'7.!>4(=4';2%8/"7/"?7*91%0'7/#=4(<4(<3';3'?6) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C9,A8,B9,A8+@8*?7(>6(=5(?7*?7*@7*@8+?6)=4':0#:0#;1$:0#=3&;1$;2$:1$;2'<3'<3'=3'=3'<2&:0#:0#<2$90"5+9/!:0"9/!9.!8- 7-7- :0#8."2)2)80#6."3*3*6-!7."5, 5-!5-!3+ 0(/'1)3,!1*0(/(0(1* /'$(-. +#! "&     -   - - -     -              /">0*-,2!4#3!03#! -      -  $ '!("(#'!.(/(.&0'.(+&,'.#,#&%('/*# -!+ 5$3*!2+!80&8/%5-#1, &/7-#1-!8/%:0&51%61%<0':.%5( 6%5# % 3(91%=0'>><<5(;2&;2%;1$90#<2%;0%6, 0&7.!>4(=4':1$7/"8/"?6*91%2)8/#>5*<4(:2&<3(>6*  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - "PF7@8,@8-@8,B:->6(=4'>6(=5(?7*?7)?7*A8+@7*>5':0#9/";1$9/">4'<2%:1$:0$<3'=4(<3'<2&<3'<2&;1$=3&<2$9/!7-9/!:0"9/ 8. 6,5+6,:0#7-!2)2*6."5-!3*3+7/#6."4, 6-"4+ 3+ 4,!2*3, 3+ 1*0).&.&1* 0()). .)$!"6*%1%!        - - -         -             2%C5.0!-4"6$5#2 4## -     - - - "% $%$*$-'-(-'0(1'1&/%0'3*!+ " -% $ /($ +&%(1&1-"4.#8.%7/$50$7/$;.%2!" 3%8/%31$52&;1'9-$+ !# 0:.#;/$>.%@/'9)!(" 3(5.!5- 6, 9(/ .2*5.!7/#6/#4/#3-!2'2." # -),(-& -+*) 40, ' #& --6<"F/!S<,[D4_J9bM:iOry ^\\\\\YZY[\[TVUZ\[]_]Y[Y[\Z^^^YYYXXXRRRRRRPPPXXXUUUYYYWWWRRRRRRNNNOOONNNOOOKKKKKKMMMLLLLLLGGGBBBCCCAAA===@@@<<<<<<@@@@@@<<<<<>>999666888777666666444444555222000000///...++++++(((%%%%%%&&&%%%%%%$$$%%%%%%&&&&&&&&&&&&###$$$%%%&&&&&&%%%$$$&&&%%%&&&''''''&&&&&&%%%%%%&&&'''%%%!!! """######%%%############### - -          -          &&!#'!     -     #/7$;("<+$8' 0,5$<+&/!&#""#!         ! !    !!0 D405$ '(.1!/ +-91%<3'90$6.!7/":2&:1%90%90%80$80$80$7/#;3';3';2&8/$90%:1%<3'<3':1%;2&;2&;3&=4(?6*=5(?7*@7+=4(90$;2%;2%90#<3&<2&6-!0&7.">4'<3&:1$80#90#=5(91$3+80$?6+<5)91%:2'=5)LB3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - -  71&?9.?8,@9-;4(<5);4'<4&=4'<4'>6(A8+?6)?6(:0#7- :0#8.!=3&;1$8/":0$=4(>5)=3'<2&=3'=4'<2%:0#:0"7-6,9.!;0":/!8-6,6,7-90#6, 2)2*5-!5-!1)2)6-!7."4+6."2*1)5-"3+ 5-"2* 1*1)0(/'0)0)+,0"0",$#)=1,/#     - - -           - -        0#A2-3$/5#7% 4!0-$ -   -  - - &!% *&&!'!,&.'-&,&/&0&2(3)1)3,"1(+#$&% -)'# -$ "' 3'4,#7.$91'60%7.$7*!!  -6&6.#10#32%92':.&4#( -#& 1&70$5."251$ 1!9/$70$70$8.":'" $ 4%/ ."7."8."7-"6,"4*3)3')%  ! **$ %. 5%& .;$6/& -%( 0 -7?#G."N7)O<-SC2eabXWW]]]cdcZ\[Z\[VXWSUTRTRUVUWWWTTTRRRSSSTTTTTTPPPWWWVVVYYYUUUPPPJJJFFFJJJNNNQQQQQQMMMJJJHHHIIIEEEDDDKKKCCC>>>>>>@@@BBB???<<<:::888;;;;;;777555555666555333222333222000///------,,,***((('''%%%$$$$$$$$$$$$$$$%%%$$$%%%$$$###"""#########%%%&&&&&&%%%$$$%%%&&&&&&%%%&&&%%%&&&&&&%%%&&&%%%$$$!!! """##################        - - -      -     '% $%    -    - 6%5#=*#?-&:)"2 ++.' #!!"" !""! ! !        !  !!     ,F62:)&''-1 0 +,91%:2&7."6."7/#;2&90$8/$7/#6."80$:2&90$:2&;2';2':1&8/#90$<3';2':1%;2&;2&;2&;2&=4(>5(?6)@8+;2&8/";2%<2%:1$=4'<2'7-!0'8."=4';2%:1$8/#90$;2&:2%4, 80$>6*<5):2&91&;3'B:- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - (#50%82&93'81%;4(91$:2%;3%<4'?6)?5(@6);1$7- 9/":0#>4';1$:0#<3&>5)?5)>4(=3'=3'<2%:0#=2&=2%7- 5*7-;/":/!8. 7-7-7-90#6- 3*2*5-!4+0'2)5, 7."6."7/#4+ 3+ 4,!2*4+ 2*/'.&-%0(3+!2* *,/!. *$&0#<0+*     - - - -         -         , <-(2"-5#9&!7$3!/ % -   -  -   '"(#&"&!+%.'0).',%.&/(3*3*4+!7.#5+!5)("! & .  - -$ $!# /%5.$91'8.$8,#* )8/%80%3."4/#80&8)!+# ,  +"51$3- 3' '.;*#90%71$71"6/!7/!1&2&4&((6+ 6,!6,"8.#5+ 3-"0+.&/"*$ -  +1- -)1 -(6!,076/ , &'+ 3> a^_UTTZ[[cedbdc[\\]_^VWVNONVVVVVVUUULLLKKKSSSUUUUUUUUUWWWVVVPPPOOOFFFEEEDDDBBBHHHMMMNNNIIIHHHHHHIIIFFFEEEGGGEEE>>>@@@BBB>>><<<<<<:::777888999666444222222333444333111///...---***)))***'''&&&###$$$$$$###$$$$$$ """%%%$$$!!!!!!"""$$$###"""$$$&&&%%%$$$%%%&&&&&&$$$%%%&&&&&&%%%%%%&&&&&&&&&&&&%%% !!!######"""######$$$"""       - - -          -  !%%!     -    -2"5">+$A/(?.'6$.,*'! ##$!"!      !!  "   !  !!!!  -   '=.*:+&(&,1!0 ++80$91%6."5-!6.":2&:1%91%7."5-!90$:2&91%:1&:2&;2&:1&6-"8/$<3';2&90#:1%;2&;2%;2&<3&=4(?6)@7*;2%8."<2&;1%:1$<3&;2%6, 0'8."=3'=3':1%6."7.":2&91%4, 8/$=5)<5)<4(:2&;3'?7+[N; - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - -  - - - - -  - - - - - - - - - '".)0+ 4."6. 91#:2$:2%=4'=4'?5(90#7-!7- :0#=3&;2%;2%=4'=4(=4(>4(>4(=3'<2%:0#:0#:/"7-6+7,:/":/"9.!7-6,7-:0#6- 3*4+8/#2*/&3*5, 6-!4+7.#4, 4, 4, 2*2)2*0(/'.&0)2+ 2* ,0!2$2"-&%1$ 7*&&     -         -  !      #((,4"8% 7$3"-' -    - -  -$'"*%+&)#*#/(1) /(0(1)0)3*3+ 4+ 6-"5+!6,!2(( $#*&  -(-)% & 3#8,$8-$6,"2(&8*"4+!3+ 0)/(6-#0# ' 7)!7-$0* 51$3- 6#$ !% 3%90%71$92%5/!81$80$7-"6).!(2%5* 1*3+ 4-!3&4'2%2$2#1"/( ! - -% ,)" -,) )' *1,.-' -YWWVVVVWWTVUegfegf^`_[]\abaYYYVVVTTTMMMLLLLLLMMMYYYXXXUUUSSSSSSOOOKKKIIIKKKOOOLLLBBBEEEHHHHHHDDDDDDDDDDDDDDDDDD@@@???>>>===>>>===;;;<<<999777555444111///000333111111,,,******+++'''))))))%%%&&&###$$$######%%%### &&&""""""""""""$$$$$$###%%%&&&&&&&&&''''''%%%$$$%%%&&&&&&&&&%%%%%%%%%'''%%%%%%###"""!!!"""###$$$""""""### !!!###    -      - -  - -   -   ( (#"    - -   -,5"=*$B/)A0(;)#1-*'$&%# "" !!!!  "   !!!!  -   +/!&$(/!1".+70#90$6."5,!6.":1%;2&:1&6."5,!80$90%80$:2&;2&90%90$7."90$=4):1&90#:2%;2&:1%;2%<3&>5(@7*?6*<2&8/";1%:0$;1$;1%:0$3*0&7-!=3(;1&90$5-!7.#;2'90%4+ 7.#?6*>5*>5*<3'<3(?6*?5( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - -  - - - - - - - "$*$0)6."91$80#;3&=4'>5'8.!8.!6,:0#;1$:0#:1$<3&=4(>5(>4(=4'=3'<2%;1$:0#<1$:/"8,7,;/";0#9/!7-6,8. 9/"4+2)6-!90$2*/&3*5, 4, 3*5-"4,!4,!4,!3+ 0(1)1).&/(-%/'5-"+0!3#3".'$($              "!      !#&+3!7$7$3". (    -  -   &!'"*%)#'"' *#.'0)1* 2* 1)3+ 5-"5,!4+!5,!4*2(3%(!$ $ -% 4!# # -) % 3$5+#2,!3.#2+!5+"-"  +$0!(' 4%9-$8/&3,"3/"3, ,$ -(/$80$70#9* 5%<,"=/%6/"5+!1$(1$/$/%-$)!7*!3%(*1&3(6* 5'/ $   $ -*.($ . 2 !$ 6#ba_a`a\\]WXX[]\Z\[acbbdcVXWVVVZZZddd]]]YYYMMMLLLJJJTTT\\\TTTPPPNNNTTTQQQOOOMMMOOOSSSMMMEEECCCDDDBBBDDDBBBCCCBBBDDDBBB;;;>>>???>>>===999888888666444444222......000000...,,,+++)))((('''&&&&&&%%%######%%%&&&$$$###$$$%%%""""""%%%$$$######"""###$$$$$$###$$$%%%&&&&&&%%%$$$%%%%%%%%%%%%%%%%%%%%%&&&&&&%%%%%%&&&$$$%%%%%%$$$###"""""""""         - -    - -      $#$! !  - - -   -#4":'!D1*C1*?-&5"/,++(%! ""     !"!! !  !!!!!        #""&,2"2",70#8/#5, 5, 7/#90$:1&91%7."5-!90%80$91%<3(;3'7."7.#8/#90$?6*90%6.!:1$:1%:1%;3&<4'>5(?7*>6);2%8/"9/#:0#;1%;1%:0$3)/&6-!=3':1%90$8/#80$;2&:1%5, 7/#>6*?6+=4);2'=5)@7+:0$ - -  - - - - - - - - - - - - - - -  - - -   - - - - - - %!-(4/%50%92&:2%;3&90"8.!6,9/#;1$:1$;1$:1%<3'>5)>4(=3'=3';1%:0#;1$=3&;0"7+7+<0#;/"9/!8. 8.!9/!9/"3*2*6-!6."2*/'3*5, 4+4+4,!5-"6-"5,!3*/'1(0(0(0(-%.&3+!-2#4$3#,&#  !     - -       "  !     !"$)2!8% 8% 4#1#*   - - -    '"("*%'!)#)"-'/(0)3+!2+ 0(4, 6-"5-"4+!7.#7-#3)5+!3') $ -* +*2&   -" -00(6.$4,"6,#5*!3'4&4$:(!0 1#6-#6-#7-#6+!:-#0 -,7)!2&4+!7.#:0%- 4%8+ 3-!3* 5( ."1%&*'! -3&+ %2(1(4* 6+!3'2$1!,#  $ -' *- " 1$ -WVU\\]]]^]]^Z[[UWVfhgdfe`aaYYYZZZ[[[]]][[[ZZZOOOJJJOOOUUUUUUQQQOOOOOOOOONNNNNNKKKKKKKKKGGGIIIGGGBBBCCCAAA999BBBAAA@@@===:::999===;;;777555444444222000///---,,,,,,---***((('''(((***'''%%%""""""""""""###%%%%%%%%%$$$$$$%%%$$$"""%%%###""""""###"""###$$$###"""$$$'''$$$&&&'''&&&&&&%%%$$$######%%%&&&%%%'''%%%%%%$$$%%%&&&&&&%%%"""######%%%       - - -      -    (!&!!"#       -    -/7#D0*M;4D2+7$/4">,&>,&-#$!!"    """ !"!     !       ""  %.!3$4$,91%8/#2*3+7/#90%8/#80$6."5-!80$8/$90%;3';3'7."7.#8/#90$=4)80$90$;3&:2%:2%<4'=4'?6)=4(=4(:1%8/#8."90#:1%:0$90$4+/%6-!=3(;2&90$8/#91%;3';3'5, 7."?6*>6*<4(<3'>5*@7+6."I<, - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - -  - -  - - - - - - - ",'1+!81%70#6/!80"7-5,8.!:0$:0%;0%=3(>4(@5*<2&>4(<3':0$:0#<2%<2%:/!6+5);/";/#:/"9/!9/":0#;1$6, 4+6.!6."3*/&2*4+5,!6-!5,!6-"5,!5,!4,!2*3+ 1)2*1)0)2*2* /4#5$3"+&#!#             !"!     !#%)3!8% 8%5%2%,   -  -     '!)#+%)#)#)"+$/(0)0)0)0(3+ 4,!5-"5,!5,"5,"5,!2+ 5-#2(& #% ) 2#  $ ! -" *4) 5+"3*!7/%60&1,!2-"5/$*!  6,#4* 5+!6,"6**(8' 6+!4,"3* 8,#3# & 5* 3+ 2+3)7'%+++6)!5'3%$ *.$0'2+2+/(0(1(.%.#/$*! -  % -% % ' ! bbb``aZZ\]]_``baaabcbbccdedaaa]]]YYYVVV\\\ZZZ]]]TTTPPPRRRVVVTTTOOOPPPOOOMMMLLLDDDJJJKKKLLLIIIDDDCCCBBBCCCBBB===???>>>:::555555666777666000000111111//////......++++++***'''&&&'''$$$'''&&&###""""""!!!!!!$$$%%%%%%$$$###%%%%%%######$$$$$$$$$!!!"""#########$$$!!!$$$&&&%%%%%%&&&&&&%%%&&&%%% $$$&&&'''%%%$$$%%%$$$%%%&&&&&&%%%$$$!!! $$$%%%&&&"""          -      '!& %"$%!!     -   *5!@,%G4,H6.;'!13!F4.S@9=+#%%#!   "#    !!   !       -   #,2#3$,&90$3+2*5, 7.#4, 5,!4+ 4, 7/#80$91%;3'<3'8/$7."7."8/$;2'8/$80$90$90$;3'=4(<4'?6*=4(=4(:1%90$90$90$:0$8.#8/#6, 0&7.">4)=3(:1%8/#90$<3'=4(4+6-!>5)=4);3';3'>5)>5)5-!90"  - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - -  - -  - - - - '".(2+ 5-"5-!4,5,7-!9/#:/$:/$<2':0%?4)?5)=3(<2&;1%;1%<2%:1#7. 5+7-9/!:/":0"8.!9/":0#<2%8/"6- 6."7/#4+ 1(5,!5, 7.#5,!5,!6-"4+ 4+ 5-"5-!5,!2*3*3+!2* 3+ 5-#05$6%3",'&#"!!!   -     !!!  ! !$$)2!6$7$4%2%.   -  - -    & *$,&*$)")"-&0)0)1* 1*1)3+ 4, 5,!4,!4+ 5-"4,!5.#/*3-"2'-"$) #  0+'' " -3*!3+!4-#60&3.#1-"0,!1+ *!4)6+!6,"5,!5."6."5,!71&40#2+ !-& " 24)2)0)4(/1 2(1(6.#6,"2!$ ',  *!2)1*-&1(0(-%/%0%.".,*$ - cb`bbcccdaacVVWYYZcccbbbhhhgggggghhh[[[VVVTTTZZZVVVYYYUUUPPPUUUUUUPPPMMMOOOJJJJJJEEECCCDDDIIIJJJFFFCCC===>>>@@@@@@:::<<<:::777333444999333///000...000//////------***(((((((((%%%$$$$$$$$$%%%$$$"""######"""!!!###$$$%%%###%%%$$$!!!######%%%%%%%%%###!!!###!!!$$$%%%%%%$$$%%%&&&&&&&&&%%%%%%'''%%% !!!%%%%%%%%%%%%%%%%%%%%%&&&%%%$$$$$$$$$###"""###'''&&&%%%            -     (!)"%"%"&  !   -   -  '5!?+$J6/J80@-&4 1=+$TA9L91,&$"!!  "#   !!           "! $+0!2".,7/#3+2)4,!5-"5-!4, 2)4+ 6-"7/#;2&<4(<3(8/$8/$7."90%;2&90$8/$8/$80$=4(<3';2'?6*>6*=4(:1%91%:1%90$80$7-"7-"4+0&7-">4(=3(;2&80$80$;2&<3'4+7."?6*=5);3';3'>5*=5)6-!7.! - - - - - -  - - - - - - - - - - - - - - - -  - - - $*#.'1*1)2)5, 8."90#:0$<2%<3%=3&=3&>5(>5(;2%;2%;2%8/!5+4*8.!<1$:0":0#:0#9/":0#;1%8/"6-!90$8/$3*/&1(5,!8/#6."5-!6."4,!3+ 4+ 3*3*3*4+ 3+ 2* 4,"80&06%8&!4#-*)%""#"               !#$'05"7%5&2%.   -  - -    )#+%*$& '!)"-&1+!2+!0)0)1)3+ 3+ 3+ 4+ 4,!7/#5-"5+!2)2+2,!0&$ #% -,-  1+! &.(2+!6,#7,#4,"5.$6-#"'7+"4+!2)4+ 6-"7.#71&40$/)0%)#$ 2!3(3(+/$ $ 5( 0*1+4-"5+!6'4%2#.#'-#3)1+ ,&0&/&,%-%.'.$.#/$.$* '" ffeeefcceaac\\^WWXVVV]]]aaafffcccbbbXXXVVVVVVRRRSSSXXXRRRPPPOOOUUURRRPPPMMMKKKGGGGGGGGGFFFCCCEEEEEEGGGEEEFFFBBB???<<<555444555666222333222111/////////---,,,******)))'''%%%'''&&&%%%###!!!######!!!!!!"""$$$###"""######%%%%%%$$$%%%$$$$$$$$$$$$$$$###$$$""""""###$$$&&&&&&%%%%%%&&&&&&&&&%%%&&&&&&%%%""" $$$%%%&&&&&&%%%$$$&&&&&&&&&%%%%%%%%%#########$$$$$$%%%!!!        -    -     )")#%"!!!  - -   -   -  5"=)"L80L91E2+9%33!J70P=53 &%$""   !  ! "!           &4% 1!" " ,2#4$0 +6."3+1)6.#6-"6-!5,!3+6-!8/$7/#91%;3';3'8/$90%8/$:1&;2'90$6."7."91%<3(:2&:1&>6*>5)=4(:1%91%:1%90$7."6-!5+ 1(/%5+;1%<2&;2&90$91%<4'<3&4,7.">6*?8+;4(;3'>6*?6*5-!5-!J?1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - -  - - - - - #)",%-%2)4, 7."91$;1$<3&=3'?5(>5(;2$;2%<3&;2%8.!4*3)6,:/#:/#7- 9/"8.!;1$=3&8."7-!:1%91%4, 1(2*4+ 5-!6-!6-!6."6."6."5-!1)3+6-!3*3+ 3* 4,!3!8& 8&!3".,-1")##" !    !     !  ##&06$9'7( 1$/     -  -      *$*#("(!)#-&0* 0(0)1*2*4+ 3+ 3+ 5,!5,!6.#6-"4*7.#2+ 2-!0- 0&+$'(#  -4-' )!  '0#6,#5+"4+"5,#5+"1$)4'+#%0#6,"6-"90%6+"4)4##$% '2)2'& /4)0*0+2,!2)4)3* /()"#! 5%3(/%++ -$,$,$,"-!/%+$-)*%eeeedfggiffgbbd[[[XXXXXXVVV[[[]]]___bbb___]]]SSSPPPOOOQQQOOOOOOKKKMMMMMMGGGEEEDDDDDDDDDEEEDDDCCCFFFHHHGGGCCCDDD<<<666777333000///000///...///...---++++++***((())))))(((&&&$$$###$$$$$$!!! !!!"""!!!!!!"""$$$$$$$$$######%%%$$$###$$$%%%%%%%%%$$$###"""######"""$$$$$$%%%%%%%%%&&&&&&%%%%%%%%%&&&%%%%%%%%%###!!!###%%%%%%&&&$$$&&&''''''%%%%%%$$$%%%###$$$%%%#$$%&%"""                $#& ("'!$$"#! "   - -   -    - -9&K80TA;M:4;)"2!.2!6%.$"$!     ! !     !"  -%=-(A0,-%-3#3#1!+6-"2*0(6.#5-"6-!5,!5,!7.#7/#7.#6.";3';3'90%:1%90%;2';2'90$7/#80$91%<4(;3'91%=4(>5)=4(;2&90$:1%:1%91%90$4+2(.$5+ :0$;2&;2&91%90$:2%90$4,7/"=5)>7+:3':3'?6+?6+5,!6."C9- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - -  - - -  - - - - $',%0)3+81$8/":1$;2%:2$;2%<3&90":0#<2%:0#7, 6+8-!:/#9.!6,8.!8/";2$=3&8.!7-!90$8/#4+2)4, 5-!5-!6-!5-!4, 5-!5-!4, 0(5-!4+ 3+4, 3+5,!)5#8& 8&!3!.,8'"A1-/ %$  !!!   """"    !  !#$(1"7(!9*#8'!1 ,    - -    -  (")")#)"*$.'1* 0(0)1)2*5-"5,!3+ 5-"4-!5.#6.#2+3, 5+ 7-"5+ 3+ 1(*! !& *2" +*) -"& /%0) 4+!7-$8.%5*!5*!1$# # 1$5,"5-"7/$5,!2%& % 43#.#3+ 0(/$$ # + 3+ 4* 2%),!1* /)-&&& 2"(! ! $-!&%.!0#/$0'ddcccdgfhaabggieefXXXYYYYYYYYYXXX\\\___aaa```\\\\\\UUUQQQQQQNNNJJJDDDGGGGGGFFFGGGJJJFFFEEEFFFDDDAAABBB@@@CCCAAA>>>@@@888222111222///000...............---++++++)))'''(((''''''%%%######%%%$$$!!! !!!!!!"""###$$$$$$$$$&&&%%%$$$%%%%%%%%%%%%$$$$$$###"""######"""$$$%%%$$$$$$%%%$$$%%%$$$$$$%%%&&&&&&&&&### ###$$$$$$$$$%%%%%%%%%&&&%%%&&&$$$$$$$$$%%%#$#"##"""""""""           '!*#(!%' )#'!%$""!! - - -  - -   -  (6%D2+O=5UB;D1*8'/,('$!!!!           ! ! !   -! 9*$F703#',5!5#2!.7/#0(0(4,!3+ 5,!6-"4, 5-!5-!6-"90%:2&:2&90%:1%90%;2';2'91%90$:2&:2&>5)>5);2&<4(>5)<4(:1&80$;3';2&:1%:0$5, 2(.$6,!9/$:1%:2&90$7."91$91$5,7."=5)=6*:2&:2&?6+>5*6-!8/#?6*`R@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - -  - - -  #*$/(3, 5-!91%:2&:1%8/"7.!7.!7.!:0#;1$8-!6*7+ ;/#:."5+6- 7.!:1#<3%7.!5+:1$91%6-!4+5-!5-!6-"5-!3+5, 7/#5-!3+.&6."5-!3+2*3+6."/ 7$9'!8'"4!..@0+E61*&  "#$#!   !!!#"$$#!   "#((#'2$:,$9*#:'!3!*   - -  - -   -  +%+$)#)#*$.'0)/'0(3+ 3+ 5,!3+ 3+ 5."5."7/$5."3- 4-!5, 8-"6+ 2, /- -$+&$$# ! -.'$ )% " ,4' 6*"8.%5,"4*!)-8*!0(2,!3-!.&3'6* 4-"3-"3-!1$$5-!2(3)2&+)1+!/+!.&/ & # '%**- - .!0$``_ZZ[bbdddf``b^^^aaa^^^^^^ddd^^^]]][[[[[[bbb```XXXYYYVVVSSSSSSTTTOOOKKKEEEBBBEEEGGGEEEEEEDDDEEEBBBAAA===999===???>>>===777555000///---......,,,...---...---,,,***'''&&&''''''&&&$$$$$$$$$###"""!!! !!! !!!###%%%$$$"""$$$$$$$$$%%%%%%%%%%%%%%%$$$######"""!!!###$$$!!!###%%%###%%%&&&%%%%%%&&&&&&$$$"""$$$$$$%%%###"""%%%%%%%%%&&&'''######$$$$%%"""!!!"""$$$###"""           %(!)"(!& '!(")#(!'!& #%    - - -  - -   -  7%=*#Q>6Q=6K60>*$3 0+'%$" !                ! ! ! "  2$E6/6')-7#7$3!.80%1)2*4,"4+!5,!6."5-!7/#6."5-!:2&91%90%8/$90$8/$;2';2'91%80$:2&:1%>5)>5);3';3'<3';2&80$7.";2&:1%90$:0%9/#5+/&7-!9/#:0%:1%90$80#;2&91$4,6-!<4(<5)91%:2&>6*=4)6."7/#?6*G=0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - -  - -   !)#-&1*6.#70$70$80$6."6-!7-"8.#9/"7+ 6*7+;/#:."4+5+6,8.!;1$9/"5+90#91$8/#6-!5-!5-!6."6-"5, 6."80$7."6."0'4, 5-!3+3+4+ 5-!2 7$9'!8&!3!++A2-C50'!  "$$#!!   !!""#$$%$"!     !"/!>0*7' )-6%>-%=,$9& 3!) -  - -   - -  -  )"("'!(!)#-&/'/'1)4+!4,!5-"3*5-"81&6.#81%6/#5."4-!3+ 5."6.#7,!6* 4* 4'/# - " -() -*0*' !*2&4-#3,"2*!2&-2(5-"&/$*"$/' 3#5+!2-"2."2."4!" 2&.+0+ 5)!5"' # -"1+"1,".%-% 3%0"1$1#) %,!$dcdffhcce\\]\\^___aaaeee\\\]]]_________XXXVVVYYY\\\VVVVVVVVVSSSRRRQQQNNNNNNFFFAAAGGGHHHEEEDDD@@@BBB>>>===999777<<<>>>>>>===777333333222///------------,,,---,,,+++***'''$$$###%%%$$$"""""""""!!!    $$$&&&$$$"""!!!"""###%%%%%%%%%%%%###!!!"""$$$######$$$$$$!!!###&&&%%%&&&&&&%%%&&&&&&&&&%%%$$$$$$%%%$$$###$$$$$$%%%$$$###!!!!!!"""#$$#%%""""""######$$$$$$"""         #("& ("("' $&'!)#("& & $$"!   -  - - -   - +8%H4-WC;S>7E0*6"11 7%,&"   !  ! !"        !"  %3& /!&,5":&!7%/7/$3*5-"6.$7/$8/$7/#6-"7.#7."7/#91%:1%80$90$90$7.#:1&:1&80$70$:2&:2&=5)<4(;3'<4(<3';3'7/#7.":1%90$90$:0$:0$5, 1'9/#;1%;2&8/#80$:1%<3'90$4+7.!=4(>6*91%;3'>5*<4(5,!8/#?7+B9- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - -  - -  - #*#/(3,"5.#4-"5-!6."6-!8/#9/#7+ 6+8, /'+/5#?-$=+#:&!3!( -  -    -  - *$*#,&("*$.(/'.&0(4+!3+ 5,!1)4,!80%4-"6/$5."5/"5/"5-!6."7/#6+!7,"0'2* 7,#/&  " & 8"' ,& - $-!1&2) 3( 6)!1* 3-"1!4$4) -#1'-#.%3*!5,"2-"1,!/ -2'0+.'/"),1&0+!.) ,"% -*1(/'.&.#$ *hebdbbaaceegddf``abbb___dddfffaaaaaa```^^^YYY\\\XXX___[[[VVVUUUTTTOOOPPPMMMKKKKKKHHHBBBCCCCCCCCCCCC???BBB@@@???===???<<<:::======777000000///---,,,,,,...---+++,,,+++))))))&&&!!!!!!###""""""""" !!!!!! """$$$######""""""$$$$$$######$$$!!!!!!###&&&%%%$$$$$$###"""###%%%%%%%%%%%%###&&&&&&&&&%%%$$$###$$$"""!!!$$$###!!!!!! !!!!"" !!"""!!!!!!""""""###$$$######   &"#&!& ' ' ("&' ' ("& $$$$       - -  - -   !6%@,%S>6U@8J4.<& 2<' N:2F4,0&#  $""""!            !  #$%-4#9&"9& 1 6.#3+ 5,"7/$8/$:1&80$7.#7/#80$6."91%80$8/$90%:1%6-"90%90%6/"6."91%:2&=4)<3'=4(>5)<3(;2&6-"7.#90%90$8/#:0$9/#4*1';1%<2':1%7."8/#:1%;2&7/"3*7."<4(>5):1&;2'>5);2'4+ 80$@7+>5)MA2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - -   ' -'1*!3,#4-#5.#5-"7.#9/#8-!6+8, <0#:/"6- 8/!8.!90"<3&7.!7.!;2&:2%:2%7/"5- 7/"7/"5,3+80#7."7."8/#4+6."7/#5, 6-!4+ 6-!5#6$9'":'"3 *&'#   "#%$&$#"##"!#&&('&&#"!      !!  !##%:*"Q@8B0(-/:&C/&@,$8% 2 '   -    -  - +%("*$,&+%-'.'.&1(3+ 2)5,!2*3+ 6/#5.#6/#4."50#70$7."7-"6+ /)2, 2*1)4+!5* 1!# " & ' ' 4 % # # /6' 6-$5-$5*!6+"4+!6,#7.$5+!0&%#.$/&/)/*3"-1%1'1**! !!/5&4)!&  -  . 0'+$.'.$)%gdbc`_edbbbc``bccdfffgggaaaddddddbbbdddeeebbb\\\YYY\\\]]]WWWRRRUUUQQQHHHDDDFFFHHHHHHDDDEEEBBBAAACCCBBB<<<>>>>>>@@@AAA???888777:::999666222/////////---,,,---+++***)))(((%%%(((%%%###!!!   !!!!!!######""""""#########$$$%%%###"""$$$$$$!!! ######""" !!!###%%%$$$$$$%%%###$$$%%%&&&&&&######$$$######$$$###!!! ! !!! !!!""""""###"""!!!!!! ((!$!%$("%%)#)"%& &&%$'!"#     - - -  -  -  -+?*#G1*R<4P:2D-'7!9#L6,U@8A.&+# " ###$%%$#!           !$+4$ :($8%4"4, 3*3*6."7/#80$5, 3+4, 5-!5-!6/#6."7.#90%90%6-!90%80$6/#6/"80$91%;3';3'=5)>5*;3'80$5, 5,!7.#7.#8/#:1$90$5+2(:1%<3';2&91%80$91%;2&7."2)4+;2&>5)<3'<4(?7+;3'2*80%@8,>5*?6) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   !)".'1+"4,#5-"5,!8."7, 5+8- ;/"9/!5-8/"6.!7/";2&;3&7/"91$:1%:1%7/"7/":1%91$8/#5- :1%5-!6-!6-!3+5,!6-!7."7.#4+ 4+ 5#6$;(#<)$3 *&$""#$%')'&$$%%#""$$'%&&#"!     $""!""$(<,$M<3A0'.0<(C/&>+#9&!3!$    -   - -   ,%*$+$*$-&0) 0(/'1)2*1(4,!1*1)3,!5."5.#5."7/#5."3, 4-!3*-'/)/'0(0(1)2+ 0#( "&' # -:# " ! ,&$   -(1$5*"7+#4( 3-#4-#5-"3* 3* 4&0/%2*2+ 2* 3(1&0'0(2+!3&) " 0!6("-!  '-'*$+%+"gc`ea`db`dcbbabedfbbcaaaccc^^^^^^bbbbbbaaadddddd```___YYYYYYTTTRRRUUUTTTOOOFFF???@@@CCCCCC@@@AAADDD???AAA999===AAA???AAA@@@???:::999:::999888777111------,,,------,,,***''''''%%%######!!!    !!! !!!$$$$$$$$$"""$$$######%%%%%%###!!!###$$$###"""###"""!!!###&&&%%%%%%(((&&&%%%%%%&&&$$$$$$$$$&&&&&&&&&%%%"""  !!!!!!!!! !!!###"""!!!  $%&# #!'!& & *#(!& (")#%%%%""   - - -  -  -   -!9'@)#Q;4Q:3K4-:#5=&T>5T@75!'&&%&())''&##           "$(2"8'#8% 3!5-!3*4, 7/#6."6."6."6."6."4-!5-!6."5."6."80$8/$6-!;2&90%80$7/#90$:2&;3';3'=5)?7+=5)91%6-"5, 7.#8/#:0$;1%:0$6, 3):0$=3(=4(;3'91%:1&<3(91%3*1(:0%>4)=3(>5*@7,:2'0)70$>6*=5)<3'cT@ - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - -  $+%0)!1* 1)6."4+3*6,8. 6- 4,6.!4+6.!;2&;2%7/":2%:1%91$7/"5- 7/"80#90$7."8/#6-!3*3*4+4, 5- 6-!6-"5, 5,!4!9& <*#<)#2+'%$$%&))+((&'%$%$"$&%#$#"! "!  !##(4#:("6"-1>)!D/'@,%:'"6#"   - -   - - -  -&)#*$+$-%.&/'/'0(1)2*5-"3+ 1*3,!4-"5."5-!7-"4-!1- 0- .+/(0)0).(-'1*3+ 5+!2$( & + *-''! ) 85&3+!0,!2-!2* 2* 3+ 4'&&2(0'%2(0&.'0*1,!1%!  4!( 0)3( 0!!  - -"+$+$+#c^\_ZY^\[\ZZWVW`_addfddeaaa___\\\]]]`````````dddddd```\\\XXXTTTRRRRRRQQQOOOKKKEEEAAAAAAAAA======;;;888<<>>>>>;;;;;;666444222555222...+++++++++)))((('''&&&### !!!   !!!  """%%%$$$###""""""###%%%%%%$$$$$$"""!!!$$$%%%$$$###"""!!!  $$$%%%###'''%%%###&&&&&&$$$$$$%%%&&&&&&&&&%%%$$$### !!!!""""""!!!!!!!!!""""""!!! !!! $%%%&!%!' *#)#(!'!)"(!& )",%("%%# #    - -  -    ->("H2+T>7S<5D1&<(8$C-%O80=)"-*(%#"$%%$$" ! !!!   -  - ! !""%)2"9(#8&!15-!4,!7/#80$90%90%7/#5,!6."6."70$80$6/#5-!7."7.#6-";2'91%7/#7/#90$:2&;2&:2&<5(?6*=5)80#5- 4,7.!9/#90$;1%90#6, 4*:0$<3';2&:1%90%:1&=4);2'4+ 2(:0$=3(:1&<3(>5*91%.&5.";4(;3(80%E:- - - - - - - - - - - - - - - - - - - - - - -  - - - - -  - -  !("*$.&4,!3*1(3)6-3*4+4+2)6.!<3'8/#7.":1%;3':1%7/"4, 7/"7/"8/#7."8/#6."/'0'3*3*5, 6."6-"5, 2)3 :'!=+#=)#5!-)(&&&))***'&'%%%$%%$#"""!!!     "$$&)+,.5!@,&F3,?,&6$2""   -   - - -  .',&+$+$.&0) 0(/'0(0)2* 5-#4-"1)3,!3,"4,"4,!4,!4-!0*2- 0*0*1*/(/'1*4,!4,!5-"2+.&(! -" -% -/&  -%%$ (0'.*0+ 1)1*1)2(1$4%5#' *,!."2'3) ) -'3#0(.'1')" )+",%-#a\ZWSS[YXZYYTSUZZ\``a__a]]^___\\\\\\\\\]]]^^^^^^``````^^^[[[WWWTTTSSSPPPLLLJJJGGGCCC@@@>>>>>>;;;<<<888<<<>>>AAA???;;;999<<<===<<<999:::999333...///111000,,,((()))))))))&&&%%%$$$!!!"""%%%!!! !!! !!!"""%%%%%%"""###""""""%%%$$$"""###"""""""""$$$$$$$$$###$$$!!! ######"""%%%%%%$$$&&&'''%%%$$$%%%&&&%%%&&&&&&$%%##$"""""""""!!! !!!!!!!!!!!!  !!!#$###$ % %)!*#& & )#)#'!)#*$& $& "!!    - -  -     /<%F0)Q:4J5,B.$:&4 7#4 /+)'""!"$$" ! ## !%   !!!        -&)'&')3<'"7% 1!2*4,!6.":1&80$:1%7.#3+5."7/#81%:3'81%5-!5-!6-!6-"<3':1&80$91%91%:1%;2&92&;4(=5)=4(80#6.!6-!9/#9/#:0$:1$8."6,5+90$<3':1%91%91%91%=4(;1&5+ 2(:0%=3':1%<3'>6*:3'0(3+ 91&91&7/$A7+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - -  - - - "'!.(1* 0(2)4+!3+4+3*2)6.":1%7/#7."91%91%7."5, 5-!91%8/#6-!4, 7/#7."3*2)1(2)4+5, 5,!4+ 1(4!:' <*"<)"8$/-.1 1 ++,,-+*'((&%#"!#!  !"!  !!"%%')*,2:'!C0*D1,:(#2"'   - - -  -   ,%)#*$,$.'.'.'-%/'2*1)4,!5-#3+ 3,!3+!3,"4-"4,!3, 2*4-!1*0(1)1*1*3,!2+2+ 4-!3, /)1)1"#  & # -) $+" " 06*!5-#2)2(1)5,!5) ,'/$, 0"+.") .1&.(/'0%% -(, .$ib`b^]^[ZXWV\[\[Z\VVX[[\^^_[[[WWWWWW[[[^^^^^^___```___\\\ZZZXXXWWWSSSSSSRRRLLLIIIGGGFFFBBB===;;;::::::;;;888777>>>@@@<<<::::::999:::999666666555111---,,,...///------+++***(((&&&$$$""" !!!!!!  !!!!!!""""""$$$$$$%%%$$$$$$$$$$$$%%%!!!!!!"""$$$$$$ ###$$$$$$$$$%%%"""!!! """$$$"""$$$%%%$$$$$$$$$'''$$$###%%%'''%%%%%%&&&###""""""""""""!!!!!!   !  ! !% '(+"*$& ' )#("& ' *$' $#$!$   - -   -   "1 9#K3-U>6M80@+"8$1/.,*)&#!! $%'))'# ##"$" # '*'$    ! ,6$>,&A0)8) ,'+3='!<(#0!2*4,!7/#90%91%;2'7/#3+ 5."80$91%:3':2&7/#5-!6-!7.#;2':1%91%:2&:1%:2&;3';3'<4(=4(<3'80#6.!8/#;1%:0$:0$:0$8.!5+5+:0$=3';2&90$6/"70#<4(;1%4*3):1%<3';2&<3'>6*:1%4+70$91&91&90%>5)bTB - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - -  $)"+#-$/&1(3+1(2*4, 7."5, 7."80$91%90$5-!5, 80$91%3+2)7.#7.#4+ 2)0'3*4+ 3*5,!3*0'6#:(!=*#@,%9%00>+%L93@-&2!0 0 0 0 .-,+*)'&%%#"%%! "!!     "#&)*+,.1 6$E2,H60@/)4$1!   - - -     +%*$+$,%-&0(/'/'0)0(.&0(3,!3,!4,"4-#5.$4-"4-"3,!2+2+ 2*-&2+5."2+ 4-!4-!3,!3,!4-!0+3."6,"4%) -' .  -." ! ,$ - -$,$1'2'0*2, 2)% ,," +$)0#(&.$-'/(.#*+-* e`^`]\b`__^^WVXZZ\[[][[][[\\\\XXXVVVYYYZZZ]]]aaa``````]]]XXXTTTVVVVVVQQQPPPNNNKKKIIIIIIFFFBBB===<<<<<<888;;;888666999<<,(;*&1!'" $&%1!=,&C2,I82D3-4#% - # 6$K93O<6I60<,#1 *.7"?(!<'!. 5-"7/$7/#91%91%:2&7/#4, 6/#70$80$92&:3'90%7/#7.#8/$;2'90%90$:1%7/#:1%:2&<5(=5)>5*<3'7/"5- 8/";1%9/#9/#:0$7-!3)4*;1%=3(;2&90$6."80$;2&:0$2(4*:1%;2'<3'=5)>6*6-!4+81%=5)=4(91%:2&G=/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - -  - - -  $',$.&0'2*4+ 5-!6."5-!6-!7/#91%90$4+ 3*6-!:1%4, 2*4, 6-"5-!4, 1(3*5-!1)2*2*/&6$<)">+$@-$:&33B.(R>8B.(5"3 4 5!4"3 10/0/-+.,/"."/#.!% !"#     #(,/ /.1/2!6%;*$L92F4.9("-#   -  -  - -  ,%*$*#+$+$-&/'/(.&2*0(/'2+ 3,!4-#5-#4-#4-"4-!5."4-!2+1)-%2+5."3, 3+ 2+5-"5."5."4,!4,!5-"6,"5( -" ! -()) &,# &# -4"5' 5*!3+!/',$1%.'/"3(0%1%$ +#,(.)-'-$,"e^\fa`a^]_^\]\\YXZWWYYY[ZZ[\\][[[XXXWWWVVVWWWZZZ]]]\\\ZZZYYYUUURRRRRRSSSTTTPPPLLLLLLJJJJJJIIIEEE@@@>>>???<<<888888777888::::::999999<<<999888666333777222......000...+++***,,,***%%%$$$"""!!! !!! !!!"""###$$$$$$$$$%%%$$$###$$$######%%%%%%&&&%%%%%%&&&%%%%%%$$$$$$$$$$$$$$$"""###!!! !!!###%%%$$$$$$%%%###&&&&&&%%%$$%$$$$$$###"""!!!!!!###"""!!! !!!!!!!!!!!! !!!$#$#!###$#(")"' )#)#'!$'!)")"%%$$%    - -      ,7$=)!I3,K4+@)"8"@,'F3.I40G3/A0*4%(%%,9("D2,C1,@/)7& *($$&1!@.&I5-H1)B*"4(   " (,.--.08$9' 3#-5-"7/$7.#91%:2&;2'80$5-"80$80$92&<4(<4(91%8/$6-"7.#:1%80$80$80$7/#:2&91%<5(=5)>6*;3'6.!5- 90#;2%90#;1%;1%7-!2(1(9/#;1&:2&80$5.!91%;3'9/$1'3*9/#;2&<3'>5)>5)8/#4, :2&>6*<4(90%:2&C:-  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - -  - - - - - - - - - ' +#-%1(3+4, 7.#6."6."91%:1&90$5,!4+ 6-!6-"5-!4+ 2*3*3*5,!1)0(3+/'1)1)-$6#;'!>*#=*";&6!6 E/)Q;5B-'6!6!8#9%:&!9% 8%7%1!/-*-/ . +!)*.&''&&%$###$')5$A.)H50P=8R>8P<6<'!6!;'>*"J6/L91@/(6& + -   -  -  - -  +$*$)"*#,%0)1)0)1* 4,"1)0)2+ 2+!3,"4-#5.$5.#4-"5.#3,!4-"2* .&2+ 3,!2+ 2+ 1*3+ 5.#6/#4+ 4,!2-"1, 1-!3,"1$# ' -)% -$ ! .,%  -,6*!2* 2+3, 2*0&0%1&4*0'0'+!#'0'-%,".%a[Yc`_b`__^]]]^[[][[]]^_[\]WWW\\\]]]\\\ZZZYYYXXXXXXXXXYYYWWWTTTRRRTTTSSSRRRQQQOOOJJJHHHGGGHHHFFFAAA===<<<<<<:::;;;888777888888444;;;<<<:::999555333111222111------...,,,((()))+++)))'''###"""   $$$%%%############%%%'''$$$%%%###$$$$$$$$$$$$$$$%%%$$$%%%&&&%%%$$$###""" !!!!!!!!!!!!""""""$$$%%%%%%&&&&&&$$$%%%%%$###$$$###"""!!!!!!"""""""""!!!!!!""""""""""""!! """%$$ "!'!##$#("("' *$*$& %("*$)#& &%##!  - -     -*7%A,%N71J2,A)#<% >'#?)$>($<)$9(!.*++,04"2!/+'&#!$&*)*& - - -   %')+06#8%3#0"3+ 6-"7.#80$:1%:1%6."3+5-!6."92&:3'92&7.#6."5,!6.":1&80$80$7/#91%;3':2&<5)<4(:2&91$4,6-!:1$<2&;1%<3&;1%8."3*0&7.";1%;2&8/#5-!80$<3'90$1'5+:0%:1%;3'<4(>6*80$5-!:3&>6+=4(8/#91%?7+RF6 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - -  %-&.'1* 5.#5-"4, 5-"7/$91%4+ /&6-!80$7/#6-"4+ 2)1(6-"4,!1(2* 0'3* 2)/&6#;(!@+$B-&=&668!9"9!<$>'8#7#9&"<*&<*&8'"7&!4"0...+((',*+-./,**+))+7!M73YE?\GAZE>S>7K6/?$<%=(#I4,T@8C0)9(!,     - -  - -  +%*$)#+$,%0)3,"0(.&3+!2* 1)1*1* 2+!4-#5.$4-"4-"4,"1*5.#4-"/(0(0)1*2+ 3,!1*4-"5/$1-!3."2, 2+ 3,!3+!4)!4%(! % & )* ))# # /4%4)2*/(/&/&4+/&1(-###2$'" a\Y_\[ba_aa`^_`Z[]Z[\^_`^^_[[[[[[\\\___]]]ZZZ[[[ZZZXXXXXXWWWTTTRRRQQQPPPRRRRRRPPPMMMHHHFFFEEEDDDCCC???:::999444666777777888;;;888999999===777555333000111222111///,,,+++)))$$$%%%'''%%%%%%$$$"""  """$$$%%%###$$$$$$%%%'''&&&%%%%%%"""############$$$$$$$$$%%%$$$$$$$$$$$$"""!!!!!!"""$$$$$$###$$$%%%&&&&&&&&&$$$###$$$$$$######!!!!!!!!!""""""!!!!!!"""!!!  """###"!"!!%$%$%)#("$(!)#& & ' (")"' (!' #"   -  -   -333(7$?+"G2*L6.G0)<$!31/-+)**++--+*)&#          '/=(!9%:&B.&;)". 5-"5,!7/#90$90%80$5-!3, 5."6."80$92&:2&91%6."4, 5,!90%80$7/#90$;2&<3';3'=5)<4(:1%90$4,7.":1$;2%:1$;2&;1%8."2(0&8.";1%:2&80$6/"91%<3':0$3)5+:1%4+90$:1%;3'91%7/#;4'>6*<3(7/#7.#<4(B8+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - %)#/(3,"1* 1*2+5."6/#4, 1)4+80$6/#5-!4, 2*0'5,!3*1)4,!-%0(3+ 0'6$<("@+$D.'?( 4".3!8%=($=($>($<'#:% 8#8#6"4 3 4"6"6"20''),1:#@)#F/)L5/H1+=&"434 3!3"3!8%<* =+=*<(8#9%7#8(L5+Q;2<)!-       -   - -  -+%+%,%*#+$0* .'/'0(2* 0)0(0(2+ 3-"5.$5/$5-#4,"3,"3,"3,"0)1).'.'.'/(3,!3,!6.$5.#1, 1, 3,!3* 2* 3*!3*!0).&.#! # ' , - 1 #&%  & 0"1+/+-','.*.*/*.',", / ga]a]Y]\X^^[^___`b\_`X[\Y[\]]]^^^]]]\\\]]]aaaVVVRRRWWWZZZXXXUUUTTTRRRRRRQQQPPPPPPPPPMMMJJJGGGCCCBBBAAA@@@;;;;;;::::::888444555999888555999777666666666444222222000///---,,,,,,***&&&$$$!!!###"""###"""   !!! """###$$$$$$######$$$%%%%%%$$$%%%$$$"""#########"""$$$$$$%%%$$$$$$%%%######!!! """###$$$$$$$$$$$$$$$$$$$$$$$$######"""""" """"""!!!!!!!!!  #""###$$$ !$"%% $' ' $'!("&%'!(")")"'!%$#   -  -   ...%/9' B.'H3,C-&($$###"""""!    7&9(!<,&>.);)"7' 9("<,&?-(?-(:'"9&!6$1 ,'6."5,!80$:2&:1&8/#4, 4-!7/#70$91%;4(:2&80$7."6-!6-!7.#80$6."90%:2&<3'<4(<4(>6*>5)7/"7/"7/";2%;1%:1$<2&<2&8.!1'2(:0$90$:2&80$70#:2%<3'9/$4*5+8.#91%:1%<4(;3'80$6/":3'=4);3'80$7/#<3(=4'`Q; - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - -  - - - -  - - - - - - - - - - - - - - - - - - "'!+%-',%0)5."3, 2*0(1)4, 5-!4, 7.#5, /&3)5* 5+!6-"2)5,!6.$2*14%A/)C/)D.'>' <$:!<$>'"H0+I1,?'!;$;$:$:";#@( F.%H1(I2)@* 2)**/;#Q:3[D>R8.O5,G/%=%6"3 3#2"1!3#4$5$6%8&9&:'<( A-'J7-;+#.!   -   - -   - -  *$)")",%)#/(-&/'0(.'/'.&,$/'1* 4-$3,"5.#4-#2+!2+!4,"1* /(/'.',$/'1* 3,"5.$4,"2)3* 5,"4,"3+ 1+ 1+ 0+ 0)2) 3%( ! (# -'-" )%$ - %.!/"0&0(.(,&.'.%0#gb^_[YWVRXYV_`_^_`_bc\_`Y[[ZZZ[[[[[[\\\[[[[[[ZZZTTTPPPUUUWWWUUUTTTSSSRRRRRRRRRPPPPPPMMMGGGEEECCCAAA===??????===<<<::::::555333111444555333444666333444444444333111---***)))---,,,+++(((%%%!!!#########%%%  """#########$$$%%%$$$!!! """%%%$$$###%%%$$$$$$$$$### """$$$%%%$$$%%%$$$###$$$###%%%$$$###!!!"""%%%$$$###!!!!!!"""######"""!!!!!!!!!  """!!!!!!!!!!!! """"##""" %!$%$'!%#'!)#' $(!*#)#'!("%$$  -  -    (('&0"6& ;*#;*$;)#<)$>*%A,&D0*E0)A-&<*"<*">-%>-$<+#9(7&:*!;+"<,$;+#9*"7)"4%3#.2"0",(& 6.#5,!5,!80$90$80$80$6."7/#81%81%:2&;4(:2&91%7/#6-"7.#8/$7/#6."8/#:1%<3';3':3'=5)>5)80#90$8/#;2%:1$:0$<2&<3&7-!1'3)8/#:1%:1%91%70#:2&<2'8.#2(4+:0%90$7.";2&;2&7/#4-!92&=5)<3'7/#7/#=5):2&A7( - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - -  - - - - - - - - - - - - - - - - - - - - - - - - $("%+$2+ 0)1*/'0(2*2*2*80%7.#1(1(6,!5+ 6,"5+ 5,!6-#3+ )7#<& C,&D,%D+#>&:#=$F+#Z?8Z?7D*!=$:"<$?&I1'V>3X@5V?4N7,>'4 00258>%?&<%;#9"5 3!2 3!5"7" 9%"=*&@,'B.(I6-E3+<+$4&.!(    -   -  -  - -  *#*#&(!*#-&0) /(/'0)0)/(0)1* 0* 4.$4-$3,"3-"2+!1* 3,"/(-&0)2+ +$/'0)1* 4-#4+!3)4* 5,"3+!1+ /*0+ /*.*0* 1'3'. ! -'$ ! +   %&% -! &04&2'0'.&,$e`]b`]ZZVVWUZ[[Z[Z[]]^aa^__[[[YYYYYYYYYYYYYYYZZZYYYVVVSSSWWWXXXVVVUUURRRLLLOOOQQQOOOOOOLLLGGGBBBAAA???<<<===<<<;;;888666555666222///111555111222///222444333222...---///,,,+++((()))((('''###!!!$$$ !!!  !!!$$$###$$$%%%%%%$$$###!!!!!!$$$&&&$$$%%%$$$$$$%%%""" """###"""###%%%"""""""""""""""$$$$$$"""###""""""!!! ! """###"""!!!!!!!!!!!!  !!!"""!!!!!!  !$#%$$'!%#& ("& #(!)#'!(")#("%$! -  -  -  "!! "%&(*-. 2!3"1!1".!,)('$$#  7.#4,!5-"80$7/#8/$90%7/#70#91%91%;3'<4(:2':2&8/$7.#8/$90$6."7.#80$:1%;2&:2&;3'=5)=5)80#91$90$;2%:0$:1$<3'=3'8."2(4*9/#<2&:2&80$7/#:2&<2'7-"1'5+:1%7/#6."91%:1%6-!4- ;3'=5);2'8/#91%>5*8/#=3& - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - -  - - - - - - - - - - - - "$,%,&.(-&0(1*2*2*6.#7.#2)1(6-"4* 6,!6,!5,!7.#4+  5!9&>,$C0'F1';&;$?%C) R8/T:1G-$=#>$<$>'D-"G0%D-#@);%7"3!2 1124!5"3!2 3 2 1 1!3#"G3.D0,E/+C-'<(#3!2",#  -   -  -  -   +$*$)"'!,%-&/'.&-&/'.&-&2*!0)2+!0* 0* 4-#4-#2+!0)2+!.'-&-&.'.'/(/(/(2+!3) 4'4) 2* 0,!.)/+0+ .(/(2*!1(0&1%4$0 -'- !% %++" -(+."id_a]Z_^Z_`\[[ZXYXXZYWYX[\[aaa___\\\YYYXXXXXXXXXXXXXXXWWWUUUTTTUUUTTTUUUSSSLLLJJJLLLPPPNNNHHHIIIFFFCCC???:::;;;<<<:::888999888888444444---///222444777222333333111000//////---+++(((&&&%%%######"""!!!!!!!!!!!!   """###$$$$$$$$$###$$$"""$$$%%%$$$%%%&&&$$$$$$!!! !!!!!!###$$$""" """$$$$$$$$$%%%%%%$$$!#" ######"""!!!""""""""" """"""!!! "##$$"'!'!$'!'!$$("'!(")#)"("(!%" -  -  -        8/$6-"4,!5-!7/#7.#91%91%7/#4-!7/#70$:3';3':2&:1&90$7/#7/#7."6."7/#90$:2&:2&91%<4(>6*<3'7/"6.!8/":1%;1%;1%=3'>4(:0$4*4*9/$<3';2&7/#5.":1%>4(6,!0&5, :1%7."7.":2&91%4, 5.!=6*>6*;2'6.":1&>5*80$90$MB2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - -  &!+%,&*$.(1* 2+ 3+!4,!6-#2)2(5+ 3)5+ 6,!5+ 6,!4+ &6&<*"B.&D.&B*#=%<#?&A) >&<%<&9%8%8%;)"=+#?,$?,%;("3"0 / / 0!1!0!H4*H4*E3)A/&;*#6%3#1"0"- '#  -   -  -  -   --&' )"%*#+$/(/'.'1* 0(.'2+!/(2,"2,"1*!2+"2,"0).'0* /(.'.',%.'-&,&/(1* 0(1(1)1* .)-)*'/+ /(/'0'/'-&,(.*/&-"#! % # ) .$# *)  fa^fc`cc_^_\___\]\Z\[\^]YZZ\\\^^^]]][[[YYYXXXWWWWWWWWWWWWUUURRRRRRRRRRRRPPPOOONNNKKKJJJMMMKKKIIIFFFCCCCCC@@@<<<::::::999888777555000222111//////222555555444555333111//////,,,)))'''''''''$$$ !!! $$$$$$###!!!  !!!""""""$$$$$$$$$$$$######""" !!! !!!""""""$$$%%%$$$%%%$$$$$$"""!!!"""!!!$$$$$$"""&&&&&&$$$$$$$$$%%%%%%&&&%%%$$$###!!! ######"""!!!"""!!!  !!!"""!!!" ! !"$%##+%' $(!("$#'!)#("("("(!& %!    -        6.#5-"3+ 7.#6.#5-"5-"8/#7.";2'91%8/$5-!5."2+6/#91%91%91%8/$7."7.#7.#5-!6."91%=4(<4(;3'=5)>6*;2&5- 3+6- 90$:1%:1$<2&=4';1$5+4*9/#<3';2&70#5.!91%>5)5+ 0&6-!;1&7."8/#<3':2&3+3,=5*?6*;2'6."91%>6*:1%8/#B9,qbJ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "&!&!*$.(0)1)2+ 5-"/&1(5+ 4*4*4+4*6-!4*/&1!8' <)"=)":%A*#<)$:'"8&!7& 6& 6' 4%0"4&!<.)?1-<.*L4*G/&B,#>*#;(":'!;)#8'!6&1#-)$      -    - - -     ,%*#*#(")",%/(-&-&1* .&-%0).'-'1+!1+"0)/)/(/(0) /)/(/(-&.'0).'0)2+!.* /,!0* 0* 4,#1) .%1) 0)/(0).'-&-'/*/'.$2$.$  -$  " * -* " f`\d`]`_[ab^^^\[\[^`_]_^\^]YYYXXXYYYYYYZZZ[[[XXXVVVUUUVVVVVVVVVUUUTTTRRRPPPOOOLLLJJJJJJIIIJJJKKKKKKFFFBBBAAAAAA@@@;;;999:::666333444000000222111...---111111222222222000---,,,,,,)))&&&&&&%%%$$$###"""!!!"""!!!###%%%$$$###!!!  ###$$$######$$$$$$$$$############"""""""""""""""!!!"""######%%%%%%$$$"""###$$$%%%'''$$$###$$$$$$"""######"""$$$&&&###"""!!! !!!###""""""!!!!!! !!! !!!"""!!!   "!#$#%)"' $'!*$&#& )#)#' (!%%#    -   -       2+!0)1*3-"5-#4,"5-#5-"4,!6.#7.#7/$7.#7/$;3'90%6."5-!5."3+7/#80$7/#7/#90$7.#8/#8/#4+ 5, 91%>5)>5)<5(=5)=5):2&5- 3+5- :0$;1%90#:1%=3':1$5+4*:0$=4(<3'80$6.":1%>4)5+ 1'8.#<3'8/#91%=5);2&4, 0)<5)>6*:1%6.":1&=5)90$7/#<4'D:+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "+%/(/(4,#5-$/'2)3* 2)2)3)5+9/#4*-# &0 3":' B*F- G0$D.$@+">)!>*"=)"<(!:& 7$3"1!.+($     -   -    - - -     -)#)#(!'!*$+$.'+$+$/(-%,$.'/(.(/)/(/(/(.',%/(0) 0) 0) ,%,%.'-&/(0) -)-+ /* /* 4,#2* 1)2*!/)/)/* .(-&.&1) 0(*#*$,'+$*! " -# "  &  -f`\gdaed``a^Z[Z[\\WXX[\\^_^___[[[WWWUUUUUUWWWZZZWWWTTTUUUVVVVVVUUUWWWTTTPPPNNNKKKIIIGGGFFFFFFFFFGGGGGGCCC>>>@@@@@@>>>;;;<<<666///222555555111000111000+++...///...***111000,,,++++++'''%%%###$$$$$$$$$######### ###$$$$$$""""""!!! !!!###$$$$$$######$$$$$$######""""""$$$"""###%%%###!!!!!! """$$$$$$###!!!###$$$$$$$$$%%%###!!! !!!"""!!!!!!###"""!!!!!! """""""""!!!"""!!!!!!!!! "!"#!#'!& $'!+%& "%)#("& )#%## -  -    -           ("'!,&-&,$/'0)0(/(/(2+!2+!1* 2+ 4-"3,!5.#5-#7/$5-"2*2*6-"6."80%91&8/#6-!7."6."6."70$7/$5."6/#90%7."8/#7.#4+5, 80$<3';3';3'<4(=5):2&5- 3*5,:0$;2%90#:1$<2&:0$5+5+;1&=5)<3'6."5-!;2&>4)6, 3):0$=4(:1%90$=5);2&5-!2+<4(<4(7/#6-!91%<4(8/#7/#<4(?6)ZL8 - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  %*#*#0)2*!0'0(3*3*1(0&5+ 9/#5*.$1(#""        - -      -  - -      - )#("' (!)"*#+$)"-%0(.'-%.&.'/)0* .(/(0) /)+%0) 0)-&/(,%-&.'-'-&.'+&*'/*!1+"1+"1*!0) 1) 0(0(2*!.&-%-%1)0) .(+&-(/* 0'. )"    ! hd`gebaa]cdbaba^_^Z\[XYY_`____]]][[[VVVRRRTTTWWWXXXWWWUUUUUUUUUSSSRRRSSSRRROOOKKKJJJIIIDDDDDDFFFDDDBBBCCC@@@???>>>===>>><<<999555333333444222111222222000---///++++++++++++'''******)))(((&&&###%%%&&&$$$%%%$$$"""""""""$$$%%%$$$###!!!!!!"""!!!###%%%$$$"""###$$$$$$$$$%%%$$$###$$$$$$######%%%######""" """$$$$$$######$$$%%%&&&%%%%%%"""!!!"""!!! !!! !!!!!! !!!!!!!!! !!!!!!!!! """""" """#"$("& #(!+%& #)#*#)#(!("& $# -  -       - - - -     - -      $("*#-%-&0)2* 1* 1*2+!3,"2+ 2+ 3,!3,"3,!5-#3,!4,!4,!2*3+ 3+ 80%7/$91%90$6.!90#80#7/#6/#7/$5."6.#7/$7."8/"7."5, 6."91%:2&;3':1&<4(=5):1%5- 4+5, :0$:1$:0$:1$<2&9/#4*5, <2&>5)<3'3, 4- :1&<3'6,!4*:0%=4(:2&8/#;3':2&5-!3, :2'<3(80$6."91%<4(8/#7."<4(;3'>4& - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  "& -&/(.'-&2* 1(/&0&5+ 8."5+.$1)               -    -  -    - -)#("& & '!*$-&-&.&3+!0(/(/(.&.'1*!1+!/(/(2+".'1*!0) .'1*!.',%-&.'.(0)-&+$.'/(0) 0( /(/'.&0(2*!0).&+#-&-),',&/'0)0(/&,"*% pigjfcfda`a]ccbabbbdcabbYZY[[[^^^[[[WWWXXXUUUSSSUUUZZZYYYVVVUUUTTTSSSQQQOOONNNNNNLLLJJJIIIIIIGGGHHHHHHDDDAAAAAA@@@AAA??????>>><<<:::777222333222333666555333000,,,++++++(((,,,+++'''%%%&&&'''&&&&&&&&&%%%''''''%%%%%%$$$%%%%%%%%%$$$###"""!!!""""""###%%%%%%#####################"""$$$$$$&&&$$$$$$%%%$$$######""""""$$$$$$$$$%%%%%%###$$$$$$"""!!!$$$###""" !!!!!!   !!!!!! ###""$(!& #(!+%& #)"*#("'!)"& ##   -  -     - - -   -      -      %& )#-&0(3+ 3,!2+ 2+ 5.#0)2,!0(3+!4-"4,"6.$5-#5-#4-"3+ 3+ 4,!7/$6.#80$91%6.!90$6.!6."70$4-"3, 80%8/$6-!8/#7/"5-!7/#90$;2';3'91%<4(>5):1&6-!7-!9/";1%:0$:1$<2%=3'90#2*5, <3'>5)<3'5- 5-!:1%;1&6,!5+:0$>5):2&8/#:1%:2&4- 3, :2&=5):2&8/#:2&=5)91%7/#<3':1%6-!J?0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $)#*#+#2* 0(,$.$2)5, 4+/&0(4,                    -    - -  -    - '!'!%% (",&,%,%-&1)0(0(/'-&.'1) 1*!0* 0*!.(.'.'0)/(1* .'.&.'-&-&)",$-%.&.&.&.&.&/'-&,$0)-&.&*#,%.(-'-&-&0(1)2+!-&-&.%($tkmqjljigffcfffcdc]^^\^]]^]TUUZZZ[[[WWWVVVTTTWWWWWWZZZ[[[[[[VVVSSSQQQQQQPPPMMMLLLJJJJJJJJJIIIGGGEEEDDDDDDAAA??????@@@BBB@@@>>>;;;:::777000222444444222222333222///(((,,,+++***)))((((((&&&&&&&&&&&&%%%%%%%%%%%%&&&&&&&&&%%%$$$%%%&&&%%%###!!!!!!######$$$$$$############"""""""""$$$$$$$$$$$$%%%$$$$$$$$$""""""###"""#########$$$%%%$$$#########""" """%%%###"""!!!!!!!!!  ##$"#$#!#' '!$(!-&("#)#*$'!& ("$"#  -  - -        - -    -  - -     ("*$+$.&0(2+ 2+ 0)2+!5.#1*2+ 2+ 4-"5.#6/$6/$5-#7/%4,!0(2*1)7/#6/#8/$7.#4+90#6-!6-!4-!3,!2+ 5.#6."6-!9/#90$6."80$90$;3'<3(:2&;3'<4(:2&6-!7-!8.!<2%:0$9/#;1%<2&8/"3*7.">5)?6*;3'6-!7."<2'<2&6,!6, :1%=4(;2&91%;2&:2&5-!5."<4(=4)90%80$<3'=5);2&80$<4(90$4+A7*vfOaaayyy|||ppp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !$& )#(!(!*!0(4,!2).%0(3+ 3+ 0)       -        -        -  - -  - %'!& & (",&*$,%-&.&0(0(0(/'/'1* 2,#0*!-'2,#.'/(.&/'0)/'/'.&0(0)-&*#,%+$,%+$,%,%-&+$,%1*!0(.&*#,%.%,#-$,%-&/).(,&+%.&tjkwnqsmooklgffefeegfcdd_``___\\\RRRWWW[[[\\\[[[XXXWWWZZZ\\\[[[XXXUUUSSSRRRPPPNNNMMMKKKIIIIIIIIIGGGDDDBBBEEEBBB???>>><<6*:1%6-!8/#<3'<2'8.#7-!;1&=4(;3':2&<3';2&5-!5.!<4(:2&6-!5-!91%<4(;1&:1%>5)90$4, ;2&I?1DDCkkk}}}fffccc``` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %'!+$,#0(3+!1)/&0(1)0)0(0(2* 4,"*"' $        -      -   -     -  -  -  - )$)#'!%'!+$+$,%,%-%/'/(0)0) 1) 3,"3,#0*!/) 0) 0)0)/'.&.&-%-%.'-%0),%(")"+$-',&,&+%,&("+$-&/(,%+$,%,$*#+#-&,%-&/),&*$umoqjlsmoljjllljkjlmkdeeded]]][[[WWWQQQYYY___bbbaaa\\\XXXXXXZZZWWWSSSSSSRRRQQQOOOMMMLLLKKKHHHGGGFFFEEECCCEEECCCAAAAAA@@@BBBAAA@@@>>>:::999555222444333444555444...+++,,,+++***+++***&&&###&&&%%%%%%&&&'''&&&'''&&&&&&(((&&&&&&&&&$$$&&&%%%%%%%%%#########"""###""""""!!!###$$$%%%###!!!###"""$$$$$$%%%###$$$"""!!!!!!###"""!!!$$$$$$$$$%%%$$$###%%%$$$###$$$$$$###!!!!!!  "#"##%' & $'!*#' $%("&&$$#"    -      - !!!!    - -  -      -         ("' ,%-&.&0)0)0(3,!6/$5.#3+!4-"6/$4-"6/$70%7/$80&5-"1*0)2*5-#5.#6."5,!6-!8/#6-!80$81&6/$5.#6/#5-!7."=3';3'6-!7."91%<3(<4(>5)?7+>6*80$5+ 6,8.";1%9/#9/#;1%:1$5- 3+:1%>6)>5)8/#7.":1%=4(=3(:/$8."<2'=5)<3':2&;3';2'4, 5.!<4(:2&91%90$:2&=4(;0%;1&?6*91%4, 91$?8)YN9LKJ[[[dddԍddd^^^[[[XXXVVV - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ")$*$.(0) .'-%/'0(0(.&/(0(2* 0',#*"( $        -     -  !!!!!!   -    -  - - - -  )#(#$%)"+%,%,%,$.&/(/(/(1*!2+!/) 0*!/(/(-&0) /(-%,$*#+$.'*#,%-&)#,&.( .(.(,&,&*$)")"-&,%,%+#,%+%)#)#,&)#'!.(,%qnpspqtpqnlmfffjkkfhgcgdcdcaaa```aaa___ZZZZZZZZZ^^^```]]]XXXUUUVVVTTTRRRPPPNNNLLLKKKJJJJJJJJJHHHFFFDDDEEEEEEAAAAAAAAACCCBBBBBB@@@???===;;;666333333333000222444222...+++++++++***,,,***'''&&&&&&%%%&&&(((&&&&&&''''''(((((('''%%%%%%$$$%%%$$$$$$$$$######""""""""""""""""""$$$%%%$$$"""###$$$"""""""""###""""""######!!!###!!!###$$$###"""""" """"""""""""$$$#$$###!!!   !$##%& & '!'!%& (!(!%' ("%$%%"          -    - - -       - -       %'!+$-%0(1)0)1* 4.#5.#4-"3,!5.#6/$4-"4,"6.$6/$7/$4,"0(0(2* 5.#7/%7/$5,!6-!6-!5-!70#70%70%70%70$5,!6-!9/#;2&6-!6-!91%<4(<4(>6*?6+?6+8/$6-!6, :0$;1%9/#9/":0$:1$5- 4+;2%?6*>5)7/#6.!:1%=3'>4(:0%8.#=3(>6*<3'90$:2&;3'4-!6/#>5);3':2&8/#:1%>4);1%;2&?5*90$5, :2%<5(A9*MLKSSSqqqfffQQQSSSRRRNNNMMMMMMLLLIII - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  #*$-',&*",$/(0(,$-&.&3+"2* -$*"(!$         -      - - ###"""   - -     -  -     &!% !$("*$+$*#)"*#-&+$-&0) 2+"/*!/) .(.(,%/(-&+$*$*$,%-'*#+$+$'!)#+&.(0*!+%)"*#("(!,%*#)!( )"(!(!*$)"& '!onmuruonpoopjiihiijlkehgegfdddaaa]]]]]]]]][[[VVVVVVWWWXXX```ZZZVVVTTTTTTSSSRRRNNNJJJHHHGGGGGGFFFHHHHHHEEEAAADDDCCCAAABBBBBBAAA@@@@@@???>>>;;;777666666444111...000222111...---,,,***)))'''''''''&&&%%%%%%'''''''''(((((((((''''''&&&%%%$$$$$$%%%%%%%%%###"""""""""""""""!!! ###%%%$$$###!!!$$$%%%%%%### !!!###!!!"""!!!!!!"""!!!#########""""""#########"""###"#####"""!!! !!!!!!##!"& %$' ("$&'!' $& ("& %& &         -         - -      - -    -   $(!,%+#/'1)2+!2+!4-#4-"2+ 2+ 4-"5.#3,!3,!6/$92'81&3+ 0(0)1*4-"6.$8/#6-!5- 4, 6-!80$70$5.#81&;3(5,!5, :1%:2&5-!4, 7/#<3(<3(=4)?6+?6+8/#5, 5+9/#;1%:0#9/#:0$;1%6- 4+:1%>5)=4(6."6-!90$<3'>4(:0%7."=4(?6*:2&6."90$;2&4- 5.">5)<3'91%7/#80$<3';1%;1&?5)91%6.!:3&=6)=6(C:*UTS\\\^^^WWWLLLDDDDDDFFFGGGCCCAAADDDEEE@@@ - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  '!*$)!+$0(.&+$-%/'2*!1(.%*")!&         -      -   """!!!!!!!!!"""  - -      - -      '"% "$(")#,%,%,$+$+$,%+%/)1+"0*"/) -'.(-'-&,%*#+$*$+%*$("'!("'!(")#+%,&'!& +$)#& )#' (!(!)#)"' )#("' poowvxkkmfgifgh`baefebed`baaaaZZZ\\\XXXXXXXXXUUUOOORRRWWWYYY[[[XXXWWWTTTQQQRRRQQQMMMHHHEEEEEEGGGGGGFFFFFFEEEDDDDDDAAA???AAABBB===???>>>???===999666777777333///,,,//////...,,,+++)))(((&&&###%%%&&&&&&$$$&&&'''''''''&&&((('''&&&&&&%%%&&&(((%%%$$$$$$&&&&&&###!!!!!!!!!!!! """$$$%%%$$$###!!!###$$$%%%&&&!!!$$$###!!!!!! ###$$$######"""######$$$###!!!!!!"""$$$$$$"""!!!   $%"#%""' )"$%& & #%("& %$#!     -   -  -    -   -      - -  -       '!("+$+#.&1)2+!1* 3,"6.#2+ 1*3, 5.#4-"6/$70%80&81&3,!0(0)1)2+ 4-"7.#4+ 5, 7."7."7/#7/$5."91&:2'4+ 2(6-!80$6-!6-!91%<4(;3'<3(?6+>5)7.#4+6,:0$;2%:0#8/":0$;2&6- 3*90$=4(<4(6.!5-!90$=3(=3'8.#6-!=4(?6*90$5, 80$:2&5.!4-!>6*=5)80$7."91%=3(:0%:1%>5):1%6.":2&=6);4&<4&m]E[ZZmmmTTTQQQHHH@@@===<<<999999999999777777888666 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  %$(!1) +$*#*".&0(0(.&*")"'          -      - -  ###""" %%%"""  -       - - -     '"##%'!*$-&,%,%*#(!+$,%-'/) ,&.( -'-'-&+%+%+$'!*$("*$'!'"$%'!("*$)#*$+%*$*$)")#$&)#'!("& )"oonkkledfllniikghiced[][fhfefebbbYYYXXX\\\XXXVVVYYYZZZVVVSSSWWWVVVTTTSSSUUUSSSQQQPPPPPPMMMHHHFFFFFFHHHHHHIIIGGGBBBCCCCCC@@@===BBBBBB???@@@@@@===;;;999777666444000---,,,,,,,,,,,,+++)))((((((%%%""""""$$$%%%$$$%%%$$$%%%$$$$$$&&&&&&%%%'''&&&&&&%%%&&&&&&###&&&&&&$$$!!!!!!"""""""""$$$%%%%%%$$$###$$$###$$$$$$$$$######""" !!! ######$$$######$$$$$$$$$"""!"!"""#########!!! """$& $#$ "%'!$$& & $$("$%$#!  - -   -   -!!!     - - - -             %(!,$-%-%1) 0)0)2+ 5."2+ 1*3, 5.#5.#6/$6/$5.#81&5.#0)0)3+!4,"3,!8/$5, 4+6-!80$70$80%5.#70&7/$2)2(7-!91%7/#7/#:1%<4(;2'=5)?6+=4)8/#6, 6, ;1$<2%9/"9/#;1%;2%6- 3+90$>5)=4(6."4+:1%=3'=3(7-"6, =4(>6*90$6.!:1%:2&5."6/">6*>5)91%7/#80#<2'9/$90$=4(:2&7/#:2&=6);4'80#F<-jjiONNKKK???888666777333000---,,,,,,+++******++++++(((M~M}Kw{EoyHs{CqwEsxIpwKovHls@jn>mo@opDqqEmoDno - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !,&)#' )!.&0(0',$( (!&          -       - ###"""### -          - -    -  &!)$#%)#*$+$,&+%)#& *#)"*$.( /)!-'+%,&+%*#)#%$)#'"% %!(#&!&!$& ("*$)#$%)#+%+$& %'!)#)#("nooppqlmollnhhiggiiikddeccbgggeee```]]]\\\\\\XXXYYYYYYVVVTTTRRRSSSTTTSSSSSSUUUTTTQQQPPPOOOMMMJJJGGGGGGGGGHHHCCCAAAAAAAAA@@@AAACCCBBB@@@>>>AAA>>>;;;:::999666444222...,,,,,,++++++---***((('''&&&$$$"""$$$$$$$$$######%%%$$$""" !!!$$$%%%&&&%%%$$$%%%'''###!!!$$$&&&$$$""""""$$$###"""###"""######!!!######""""""###%%%$$$"""!!!!!!!!!###"""###$$$######!!!######"""""""""!!!  $% %#%#!$& "$' '!%%'!#%%%!    - -  -    -   -   - - - -     - - - -      '!*#.'-%,$1* 1* 1* 5.#92&6/$4-"5."70%70%70%5.#6/$70%3+!0)1)5-#6/$4,!7.$5,!4+5-!6."70$92'5.#6/$5-"1(2(6-":2&6."5-!8/#<4(;3'>5*@8,<4(7.#6, 7-!;1%;1%:0$:0$<2&;2%6-!4,:1%?6*=5)7."4, 90$=3(=2'6, 6, >5)>6*90$7/#;3';2&5."7/#<4(=5):2&8/#91%=3'9/#90$=4(;3'7/#92&=6)<5(5.!>5']P<WVVOOOBBB111+++***)))***(((%%%###$$$&&&%%%$$$%%%&&&'''%%%GB>}={?y@wBwCv|CtyBqu>lpAnqBor@nqoq>mq@iqBhr=nt=mq?jl?fhEbgE^c?]`@`cCacCde@dd?gf@hhAfhBhl5*:2&7."5,7-!<2&=3&;1$:0$<2%:1$6- 5,;2%?6*<3'7/"4+90$>4);1%4*6-!?6*>6*90$7/"<3';2&5.!7/#;3'<3';2&91%;2&=3'9/$:0$>4);3'7/#92&=5);4(4- 90$F<-MMM>>>111&&&""""""""""""$$$$$$%%%$$$$$$$$$%%%$$$%%%&&&$$$$$$KB~={~=||jm=il>hj@gi?hi6gg5ef6ce5bd4be2cf4^`7YZ9XX;UV;PS5GK5FI8HLec?ce?bg;`e5*>6*;2'8/#6, 7-!;1%<2&;1%;1$<2&:1$5, 5, ;2&A8,<4(90$6-!:1%?5*;1%3)6-!>5)>5)8/#8/#;3';3&6/"80#<3'<3';2&:2&:2&<2':0%:0%=3(;3'80$;3'>6*;4'3,8/#@6)G;,,,,""""""""""""###%%%%%%&&&######$$$$$$$$$'''"""!!!N}@}<<|=w}[]BQS=A@ - - - - - - - - - - -  - - - - - -  - - - - - - - - - - - - - -  - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    %'!%$% !         -          - -           - - - -            -      -   )$(##$(")#("("+%& %& '"'"'"(#("&!&!"'!!E 9>!""!"$% '"'"% qmqoprltsemmbfhghjcbdaaceefaaa^^^[[[ZZZZZZWWWUUUXXXWWWVVVWWWUUURRRRRRTTTSSSRRRQQQOOONNNNNNKKKIIIJJJIIIFFFCCCEEEDDDBBBBBBFFFDDDBBB??????<<<>>>===;;;999999666444444555333000---+++******)))'''&&&$$$$$$%%%&&&&&&%%%%%%$$$###"""!!!###"""###"""!!!!!!###$$$$$$$$$###"""!!!  $$$%%%$$$$$$$$$""""""###""" !!!!!!"""#########""" """###!!!"""!!!!!!""""""$$$###$$$"""!!!  !!! $$# #%&(!& "#& &!$%$"#     - -   -   -   - - - - -      - -       )#+%-'-&-&0(1)4,"6/$5.#4-"2+ 4-"7/%6/$5.#7/%81&70%4-"3,"1)3,"6/$7/$:1&5, 6."5, 6."92&7/%7/%80&90%5,!6-!:1%:2&8/#7/#:2&;3';2&=4(=5);2&8/#7-!9/#;1%<2%;1$;1%<2&90$4+5- <4'A8,<3'80$7.";2&?5*;1%3*8.">5)>5)80$91%;3';3&6/#80$=4(<4(:2&91%91%:0%9/$:0%;2':1%7/#;4'<5):3&2*6.!<3'?4&dR;### """###$$$###%%%%%%%%%######$$$%%%%%%Kkk=~DzAv~-?+49)/3+57*%& " $+($84"<8$96'13$'"&*567>?=>IFDQJOF>D-"?$8*A8<  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -   - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  !                    - -   -   - - -                          (#'"""& ("*$%*$$$(#% #'")$$'"&   # !  ? = f-"E%=  !"##% nhnqjonehhooWbc_ceedfhfh``accceee___ZZZZZZXXXUUUSSSYYYWWWSSSQQQTTTQQQPPPQQQOOONNNMMMKKKLLLLLLHHHEEEFFFJJJDDDCCCAAAAAA???@@@AAAAAA>>>============;;;999888666555444333111///---+++))))))((('''%%%%%%%%%$$$&&&&&&%%%%%%&&&%%%$$$$$$###""""""!!!!!!!!!!!!"""""""""###$$$######### """%%%%%%$$$"""###$$$###$$$"""!!! !!!######"""!!!!!! ###### !!!!!!"""###$$$"""!!!!!!!!! !!!  $#$!$%& )#(!#%%& !#%#"$#!    - -  - -     -   - - - -      - -       )",&,&-&.'/'2* 4,#6/$5-#4-"3+!4-"6/$80&81&91'81&81&4.#4.#1+ 5.#5,!5-"7.#3*5-"4, 6."91&7/%81&91&80%4+ 7-";2&:2&80$90$=4)<4(:2&<4(=5);3'8/#7- :0$;1%;1$:0$;1%;2%90#3+6-!=5(>6*;2&7/#8/#;2&>4(:0$4*8.#?6*>5):2&:2&<3';3'6/#80$=5)<4(91%80$90$:0%8.#9/$:1%8/#4- :2&=6*<4(4, 6-!<2&:/#A5' """"""############$$$"""######$$$$$$$$$0.-TYV?6?PNWDmn:{w<6?F=GF?B:3H>8@A;?PN=KKEMAJM=F:6  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - :         -                                       - -      & #!"& )#'!("'!%& &!$$&!&!!#     - ;j/ k- l+> ?B&! $$ pnsrlsplorklpcfiab[bd]bebbecccaaadddbbb___^^^XXXVVVUUUWWW]]][[[TTTUUURRRRRRSSSQQQMMMLLLKKKJJJJJJJJJFFFBBBDDDHHHEEEBBB>>>===>>>???===???>>>>>><<<;;;999:::888666444333222000///---,,,+++***(((&&&%%%%%%$$$%%%######&&&%%%$$$$$$%%%%%%$$$###""" !!!""""""""""""""""""######$$$%%%$$$###$$$&&&%%%###"""#########"""""""""!!! !!!"""!!!!!!"""$$$### """$$$###!!! """!!!   $$$!"$%("'!#& ' ' !#%$#$# !   - -  - - -    -   - - -      - -       (!,&,&-'/(/'2*!3+!6.$4-"2+ 2+ 5.#5.#6/$92'81&81&93(5/$5/$3-!5.#7.#8/$6.#1)4,!5-!4, 70$70$:2&:2&80$6-!80$;2%;2%8/#80#;4(<4(;3'=5)>5)<4(7."5+9/#:0$:0$:0$;2%<2&90$6-!90$?6*>5):2&7/#90$<3'>4(:0$4*7.">6*=5);3':2&;3';3'6."7/#=5)<3'91%80$:1%;1&8.#:0%;2'80$4- :3'>6*<4(5.!8/#=3'9/$;0#VH7""""""##################$$$""""""###### ##"100WD:M/Q6,S::L8=FHL=nf7mg4UZ>S]2V\,V[)KP$?B14$*.%&#$!" "!#!!" &"&""!    ! !# "# "" ##"!  12 59%?0+994A9=G4>(E&A"C/*G?5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -          -                                       - - -     - $! "(#*$'!%%""   ""  - ! -!    b$k+n+n,l*8A  \]`rqrpnlklgka`j\\ibcfeihahdcdcccdddccc___WWWXXXYYYWWWXXXXXXUUUUUURRROOOPPPPPPNNNMMMKKKJJJJJJJJJJJJFFF@@@CCCFFFCCCAAAAAA@@@BBB>>>;;;999;;;<<<<<<999333888888444111000///.........+++)))''''''&&&###$$$$$$$$$###!!!$$$$$$"""$$$&&&%%%$$$###!!!!!!""""""###$$$############$$$%%%%%%###$$$$$$$$$######$$$$$$######""" !!!!!!!!!"""!!! !!!###$$$"""""####$$$### """"""!!!   !$##("&#%)")#$#$%%$"   -    - - -    -     - - - -      -       ' )#,&(",%0(/'2*!7/$7/$4-"4-"6/$6.$4-";4)92'81'93(5/$4.#4.#6.#6-"80%90%3+ 4-!5.!4- 5.!6/#80$:2%90$5- 4+;2%:0#7."80#;3';3':3'<5)<4(;3'7."4*:0#<2%:0$90#;1$;1%90$7.":1%?7*>5):1%7."8/#=4(>4(:/$2)8."?6*>6*<3':2&;3';4'4- 7.">5)<3(91%91%<3'<2'8.#:0%;3'8/$3+92&=6);3'6."90$=4(9/#5+A7)###"""######""""""!!!!!!"""  """222BBAR<1I0&G+%A0'H7+N3*V::OHF=]R4`U>LO4+7/4>/@G*=C ) "!!  !!" !"  !   !!"!!! ! ! !!!!!!"!"" "#!"#!##!!! !!!   #/&#/&$20-5752<;0DD9?@9=><@>@?9?5*?)F#J$G+IB0DC/?+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -        -                                     - -  -       !!""'"'!'!#!! " -"    - U%Q$K$i(n-n-n+A 5@ !dedjlf`k]`h\k^^eebhegf_efbedddbbb___YYY[[[YYYVVVVVVVVVPPPPPPQQQMMMKKKNNNMMMKKKGGGFFFIIIHHHGGGHHHEEEBBBCCCEEEBBBAAA@@@???CCC>>>;;;999999<<<:::777666666444111000...---------,,,)))$$$%%%%%%######%%%%%%#########%%%$$$###$$$%%%%%%%%%$$$!!! """"""""""""######"""###%%%%%%&&&$$$###$$$$$$######"""###$$$ !!!!!! !!!"""!!! !!! !!!"""$$%#########!!! """"""!!!   !!!!!!###"""###"""'''  !!!' $%& $#"#      - -    -    -       - - - -             ' ("+%+%*#.&/'0(6.$80%4-"4,"5.#5.#4,"4-"70%80&70&5.#3,!4-"80%80%;2'<4)5.#3, 5-!5-!5."70$70$80$80$6-!4, 90#8/#6.!90$;3'92&81%<5)=6*=4(9/#6, ;0$=3';1%8."9/#:0$:1%7/":1%>5)>5);3'7."8/#=3'>3(:0$2(7."=5)=4(:1%91%;2&;4(3,6.">5);3'91%91%:1%:/$7-"9/$90$6-!2*80$<4(:2&6."90%>4(9/$6+ ;2&MB4###""""""!!!   !!"&&&444BBALLLF3&G1'J1*OA9HJ?@E>=GF29;?..E-/=@=.RG+MD/26*(0(/2"$ $"#!!!!!    !   ! ! !! !! !!!!!!"!""!"""""""""!!$##%$$$""" ")&%)"#0)(," /" /$ 6(=)>"> A#D'C(A/;.@,@,   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -         -  -                           -  -       !"! '""% "#  !      - -^(X&R%Of%h*k-l+j'87? ;?;ioh]h[^g[ce^dgccfcfbegbea_`[[[ZZZ\\\YYYUUURRRSSSTTTOOOPPPNNNJJJIIIJJJLLLHHHFFFEEEEEEFFFCCCDDDBBB>>>@@@@@@@@@@@@===::::::::::::888666888888666666444333111///,,,++++++******'''%%%%%%$$$!!!###&&&&&&%%%###&&&&&&%%%%%%%%%$$$$$$%%%###!!!!!!"""""""""!!! """#########"""$$$$$$$$$######$$$###""" !!!!!!"""######  """$$$###"""!!! !!!!!!!!! !!!###%%%"""$$$$$$$$$$$$"""""""""$$$$$$%%%$$$$$$"""    -   - - -    -     - - - -      -      & (",&-'.',%-%2* 5.#6.#2* 3,!6/$5.#4-"6/$7/%3,!4-"6.$3,!3,!7/$91&<4);3(4,!3+ 5-!5."70$81%81%91%:2&7."6."8/#80#7."8/#91%81%91%<5)=6*<4(9/#7-!;0$=2&:0$6- 8.";1%<2&8/#:1%?6*?6*;3'7/#9/$<3'>3(:0$4+90$?6*<4(90$90$;2&;4'3, 7/#=5);2&80$80$90$:0$9/$9/$7/#4, 2+70#:3&92%5-!8/#=3'9/#7-!90%E;.sbN!!!!!!!!!  $$%''(545AAAIJIVF?TE=N;2H/)J/+E2.?94EJD7LD6NG073')#'//+094*1/& $!%%&&!#$!!!!!!"""!!!     ! ! ! !!!"!"!!!! ! !!!!""""""""""!""""#""#""#"##"""!!"!!"!!" !   & 267 8;$ ;&A(E'E)I/I00)$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -          - -                               - - -     - "! % # !  ! -"     -e)d*_(n*d#UEb'g,i+k*B 09<   @F@dldff`bb\cd_cda``_d`bZWXZXYWWWXXXVVVRRRRRRNNNOOONNNRRRQQQGGGBBBFFFGGGEEEEEEEEEDDDCCCCCCCCC@@@??????>>>>>>===:::888777666666777777111333333111333333111---*********)))'''&&&%%%%%%%%%$$$###''''''&&&&&&$$$%%%%%%%%%#########%%%### !!!!!!!!!  !!!"""$$$%%%$$$######$$$%%%"""###"""""""""!!!!!!###"""!!! ###$$$""""""!!!   !!!######""""""$$$$$$!!!!!!###### """$$$$$$$$$%%%###$$$###$$$$$$###""""""!!!   - -     -       - -     - -  - -    '!'!+%-')"*#1) 1)6.#5.#3,!4-"70%6/$5.#6/$81&4-"4-"3,!2* 3+ 5-"80%<4)91&3+ 4,!5."6."91%91%70$91%91%7/#7."91$:1%7."7/"91%:2&:2&=5)=5):1&8."8-":0$<1%8."7- 9/#;2%:1%7/":1&?6*>5)91%6."8/#<2&;1%7-"4*90$>6*;3'90$91%<3'=5)4- 6/";4':1%8/#7.";2&;2&5,!8/$5."5-!4, 80$;4(:3&6."7."=3'9/$7-"9/$?6+K@2 - - - - - -  '''('(101<;;CCCHII`RLPA;]MFzleUGA>+';)&0%#,'$632*+)2+'-*)$&#!########""""""""""""    !!!!   ! !"""###""""!!#""#"""!!! !"!!"!""!""!!"!!#""$""$! #!  - " ,2$9)#;( ?'E("J.(I2&D-C-" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - -       - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -           - -                                  - - -       '"! $!"  -     -i+i+e*u.!p+g&Z"I[$a(e*h'i&<+9     - - -MVQeidca\a^[__]\][\[Z`]^][[XXXVVVUUUTTTOOOKKKMMMMMMLLLJJJAAA@@@BBBCCCAAABBBFFFDDDCCCBBB???@@@@@@@@@>>>===999555777888777444888444111000444111...//////+++***)))((('''%%%$$$%%%$$$$$$&&&%%%%%%'''''''''%%%%%%###$$$$$$###$$$%%%$$$"""""" !!! !!! !!!!!!$$$%%%"""!!!"""###%%%###!!!$$$"""!!!"""!!!""""""!!! ""#######"""!!! !!!!!!!!!  !!!""" !!!!!!###!!!###!!!   !!!&&&$$$$$$$$$$$$$$$%%%""""""######$$$&&&%%%$$$$$$$$$$$$$$$ !!! -        - - -     - -   -    '!)$*$,&+$.&0) 3+"5.#4-"3+!5.#6/$4-"5.$81&92'6/$5-#2+ 3+ 6.#7/$91&=5*:3(5-"4,!5-"4,!81%92&7/$92&7/#7/#80#:2%:1%7."8/#;3';3&91%<4(<4(:1%7-"7,!9.";1%;1$6- 8.";2&90$5, 90$?6*>5)91%7/#8/#<2&:0%5+ 3)90$>6*;3'90$80$;2&<4(4, 5.!;3':2&8/#7."8.#:0%6-"6."4, 4-!4- 81%;4(81%5-!5, <2'9/$5+ 7-">4)D9-SE4 - - - - - !!!'''))),,,666?>?EEEeVPdQLO84P:6S@;9'#90+2/)+%")#!-(&-0"   #""###$$$###""""""""""""!!!  ! !!!   !  "!"#"""!!! !!!!"!!! !! ! !!!!!!!"""!!!!! ! #""$""$""#!!" ! "3+&6*#9(;'?-$A6/E82F=8;;9=DC - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - -  - - - IA471'     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -          - -  -                       -   - -       - - -     #"   -   -j+l,i*x0!w0!v.!u, j(\#N>Y$a%i$g!?307     X_[bc`b`]a`^``^__^ZYYYXYVWWSSSTTTQQQHHHHHHLLLKKKGGGDDD???@@@AAACCC???@@@BBBAAABBBBBB>>>===>>>===;;;:::777222444777666555444444222222333///)))+++---++++++(((&&&%%%%%%%%%%%%######%%%&&&%%%&&&&&&%%%%%%$$$######$$$#########""""""!!!!!!!!!!!!""""""!!!"""!!!!!!"""""" """######"""!!!"""!!!!!!!!!"""######""""""######!!!  !!!   !!!!!!!!! !!!""""""###$$$###$$$%%%######%%%###$$$%%%%%%$$$%%%""""""$$$"""$$$"""%%%###%%%                 -  -    - -   -    ")#*$*$,%/'0)2*!5-"4-"2* 4,"6/$5/#6/$81&81&70%5.#3,!7.$7/$6.#80%<4);3(6.#6.#80%80%=5*91&7/$80$70$6."7/#;2&:1%7."80$;3':1%80$;3'<3':1%8."6, 8."<2&<2&90#90#;2%8/#4+90$?6*=4(91%8/#90$<2&;1&5+ 2(:1%?6*;2&80$80$;2&:2&4, 5-!:2&;3'91%7/#8.#8.#2)4+ 4-!4, 3+6/#81%6."5, 6-!;1&8.#6,!8.$>5*=4(?4&  ###&&&''')))000:9:A@@DBC`QIPA:U@;Q63[>:D+'1 *!52.+ -#!   -  !!!###$$$$$$###""""""""""""!!! ! !!!   !! "!!"!!!!!!!!! ! !"""""!!! ! !!"!!" !!!!!"""##"%$#$#"#! "&, --9.'G=9N@=D?=@HEAQN@XU - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |lUE>2;5,93*       - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#%$""!           - -          -                    -  - -      # !   -  p-o,l+t-s-u,v, t+l(`%S!D L"Z#ebV$?*25  - -  8<9\_]]][[[X]\[\\[TSRWVVUVTTUSSSSRRRIIIIIINNNIIIGGGFFFEEEBBBCCCBBB@@@@@@AAA???@@@???<<<<<<<<<999666:::888444444444444333444333000000000,,,((()))+++((((((&&&$$$%%%&&&&&&$$$!!!!!!###%%%%%%%%%$$$$$$%%%%%%$$$%%%%%%$$$###!!!"""###"""!!!!!!""""""""" !!!!!!!!!!!!!!!######!!!"""###!!!!!!!!!"""###$$$""""""!!!    !!! !!!######$$$%%%############$$$&&&%%%$$$$$$!!!!!!$$$"""&&&!!!""""""###"""            -    - -     -       !'!+$*$,%0)1) 2*!5-"4,"2*3,!6/$6/$5.#6/$6/$5.#5-#6.#8/%7.$7/$7/$;3(81&4,!70$80%7/$:2':2'80%7/$80%5-"7/$;2&91%7/#90$:2&91%91%:2&:2&:1%8.#7-!9/#<2&<2&<2&<3&;3&8/#4+90$?6*<3':1%7."8/#;1&;1&3*1(;1&?5*:1&80$90%;3':3'4-!5-!:2&;3':1%8/$8/#90$3*5,!7/#3+/'2+7/#6/#4+ 7.#=3(9.#5,!90%>5)<3(9/"G<-!!!$$$'''''')))***333;:;>==HFFW=3K-&F-(K5/B-%>&70**&%0/ !!!"""""""""#########"""""""""!!!  !!!!!!  !! !!!!! !!! !!!!!!!!!!"!!"!!!!   ! !! ! !!!!!"" !" !"!"""#"##""! &1%21.6:;766986>EB@QN7+>7,60&.(     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - -   - - - - - -   #%)#)#(!%"            - -            -                  - -  - -    #!     q-r-p,{1$t- p+n,s+u+r*n*d'Y&L 9 X#\' l%i%@7$ 20 -  -=?>YZYYYV\[X[ZXXVUa]^VVSTURPPOOOONNNLLLNNNLLLGGGHHHCCCAAACCCCCC@@@>>>@@@AAA===::::::999555666666777666222222222222222222000//////---)))((())))))&&&%%%$$$$$$$$$%%%%%%$$$!!! !!!###$$$$$$$$$$$$%%%%%%&&&%%%%%%&&&###!!!""""""""" !!!!!!!!!""""""!!!"""!!! ######"""!!!"""### ###"""######""""""    !!! !!!""""""""""""!!! """###$$$$$$$$$""" !!!######"""###$$$$$$$$$###"""!!! !!!      -   -    - - - -     -       (")#+$*$,%1*!2*!3+!5-"4-"3+!4-"5.#3,!2+ 5.#6/$5-"4-"6-#7.$7/$;3(81&81%6.#3+ 80%7/$6.#:3(:2'5.#5-"6.#4,!7/$:2&80$7/#90$91%:1%90$:2&;2&:0%8.#7-!9/#;1%<2&;1%<3&=5(90$3*7/#@7+<3';2&6-!8/#;2&;1&2(1(;2'>5*:1%80$80$:2&92&4, 7.#=4)<3':1%:1%8/#:1&4+ 2)4, 2*/'3+6/#6/#5, 9/$>4)9/#5,!90%=4)<3(6-!B8+iYC ! ###&&&'''((((((---555999@??S<0F;*?8*E0'=!8!7&0-'#(45  """"""""""""###""""""""""""!!!   ! !  !! !! ! !!!"""!!!!!!       ! ! !"!"""####""#!""!""!##"#"$$""  -"4.&/.-302:;;-) 0 -  - M! JJJ\\[[ZW[[ZXVVVRSVSSMNKLMKKKJLLLMMMJJJIIIGGGFFFBBB@@@BBBAAA777;;;AAA>>>;;;>>>;;;555444444666555333111333111111000/////////---,,,***((()))&&&&&&%%%$$$######$$$%%%$$$""""""!!!"""######$$$$$$$$$$$$&&&%%%$$$%%%###!!!"""######""" !!!"""  """ !!!""""""""""""######""" !!!!!!"""###""" !!!   !!!!!!  $$$###$$$"""!!! !!!!!!!!!"""%%%###  """     -  -     - -   -     -       '!*$*$+$.'0) 1* 4,"6-#5-"3+!3+!3,!2,!2,!5/$4.#3+ 2* 5,"6-#80%91&70$6.#5.#4,!6.#5-"3+ :2';3(6.#2+ 4,"3+ 7/$:2'80$6-"7.#91%91%80$;2&<3';1%8/#7-!9/#:0%:0$90#;3&<3'80#0(7/#?7+;3';2&6-!6."90$9/$3*4+<3'=4(90%80$80$92&:2&5-!7/#=4)<3'90%90%90%:1&4, 3*4+ 2*0(5-!8/$7/#6-!90$=3'9/$6-":1%=4)=4(8/#<3'E;,!!!&&&((((((((('''///444888@@@P7.K8-G>0C=*:45',&)  !!!!!!""""""""""""!!!!!!"""!!!!!!  !!!!!!!!!!!!!!!!!! !! !! ! !     ! !! !!!"!!"!!"!""!""!""""!##"###$"#" !$1"5&!7..<>>7EF4HL7LP=RX?T[?Z_ - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - -  - - - MD6D>><<<<<<===;;;888777888333///111000///000000...+++,,,+++)))***((('''&&&&&&&&&$$$$$$!!!###$$$$$$$$$$$$###"""!!!######$$$%%%$$$%%%&&&%%%######""""""###"""### !!!!!!!!!!!! !!!"""###""""""######"""!!! !!!!""""""!!! !!!  !!!"""######""" !!!"""###"""!!!  !!!""" !!!  -   -          - -  -    -      - -$)#*$,%.'/(2+"4+!6-#4,"2+ 2+ 2+ 2+ 2+ 4."4-"3* 1)4* 5+!8/$92'81%81&5-"3, 6.#3+ 1)91&:2(70%3,!4-"5.#70%90&7.#5-!6."90%91%8/#;2&=4(;2&8.#6,!9/$;1&90#90#;3&;2&7/"/'7/#=4(;2&90$7."5, 7.":0%4*3*:1&>5);2'91%91%:3'<5)7/#7.";3'<4(:1%8/#:1%91%4+4+ 6-"2+.&5-!:1&91%6-"90$<2':0%7.#;2&>5*=4)90%;2'?5)QE5###&&&(((((('''+++000555<<<J:3L51R?:G8*E5"9'0!, *$  !!! !!!"""######"""""""""!!!!!!!!!!!!!!!    !!! !     ! ! " "! ! ! ! !! !!!"!""""""#!"#!##"#"$$"$"  -)-1.(9<=;AE9HM:NR:OT>RX?X\7]^ - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - -  - - - SH8F=0A:-?7*@8+B:.A:.;5)93)82(1-$,'%      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - -  - - - "% '!*$+%+$-&1* .',%.'/(1)-%*#&(!        - - - -            -   -                  -  -     "   -q,x-v-s,o)r,s/!s/q-n-l+i)k*k)j(f'd&^#UPY8+i%i%i$j(@2, + 526WTVYYZUXXNPPNIKPILKHIIJHJKIJJJJJJEEEEEE@@@===>>>>>>;;;<<<======<<<:::;;;888666333222333555222222---000...,,,******)))(((((('''&&&&&&&&&$$$$$$%%%$$$$$$$$$$$$#########"""!!!"""###&&&%%%$$$$$$'''&&&#########!!!!!! !!! !!!!!!!!!!!! !!!!!!"""!!!!!!%%%$$$$$$######""""""""""""!!! !!! !!!"""%%%$$$###!!!!!!$$$""""""!!!  !!!      -       - -    - -     - - -%& ("(",%0) 2+"2* 7.$5-"2+ 2+ 1*0)1+ 5.#70%7/$4+!5+!4+!6.#81%80%6/$4,!2*7/$4,!2+ 80&7/%6/$4-"2+ 2* 6.$7.$5,!4+ 4, 7.#7."8/#<3'>4)<2'7."5+ 9/#;2&90#90#;2%91$6-!2*91%<4(:2&8/#6."6-!90$90%0'2):2&=4(:2&91%91%;3'=5)6."5,!;2'8/$90%7.#:1&:1%1(2*7."5-!0)5,!:1&:1&7."90%<2':0%8/#;3'?6+>5*:1&:1'90&D9-mV$$$&&&''',,,+++///333;;;OJDJC?HA@K@>H61C-#;$:5%!!!!!!!!!!!!!"""###""""""!!!!!!!!!!!!!!!      !! !"! "! " ! !  !!!"!!"!!!!"!""!#"!###$#%$#"!  -.;,%9979HF7II6IL9NP9PS8SU9XZ2?@ - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - -  - - -wgOH?1@9-C;/?7+?7+A:-?8,=6*;5*;5+72(4/%0*"'"!     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -$ ("#"  - - - - -  $&!("+%,%/)1* /'0(3+ 1)/'0)1)1*.&*"( '         - - - -      - -        -                     - -    #  o+u,z/s,q*u-!u.!u/ t/q/n-j+h*f(f'g'f&d#d"],^&d)!e%h&i%j&l7$=>:>>===>>>===;;;;;;<<<:::999777777555333//////000111...)))+++...,,,)))((('''&&&'''&&&&&&'''((('''###""""""$$$$$$%%%%%%$$$######"""!!!######$$$%%%$$$%%%&&&$$$"""######### """"""  !!!!!!###!!! !!!"""""""""$$$%%%%%%######"""!!!        ###$$$$$$$$$###"""""" !!! !!!###"""$$$""" !!!!!! """"""!!! -  -             -    - - - -& '!)")#-'0)1* 2* 6.$5-#2* 1*1*2+ 5.#5/#7/$7/$5,"5,"5+!5-!60#92&81%81&4,!7.#6-"5-"7/$4-"4-"70%5-#2+ 3+!5-#3+ 2)3+6."4+7."<3(>4)<2'7."5+8.":1%90#:1%<3':2%6.!4, :1%=5)91%7/#6-!7."8/#8/$0'1(90$;3':1%91%91%<4(>6*6."3*:1%90$7.#7."90%7."0'2*8/$5-!2*5-!:2&90%6-!8/#<2'8/#6.";3'@7+>6*:1'91'80&=4)MA5###'''---+++---222888666PF@M>9cPTN>AB<:7506712%%)' - -! """ !!!"""""""""!!!!!!!!! !!!    ! " !" !! ! ! ! ! ! " !"!"""""##!#""$##$"$#!" )$ -+!0741882?@2JI3ML:QR?PU=Y] - - -  - - - - - - - - -  - - - - - - - - - - - - - - - - - - - -   - - - - - -MD5B:-@9-B:.>6*@8,B:.>8+>7+<6*<6+93)82(50&/)!,&&      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -$%,%-'("&$ #&$%*#-%+#,%/(0)2* 3,"1)1)3,!2*0(1)2*1*0)+#( (!          - -             - - - -   - - -             -   -    "!b(n+q+x-t*r*t-!t,t,r,q-p.l-j,h+d(b&c%c"e"b&n(l!am;1f%h&i&c$D6 DBCKLLDKKFONKJLKCGGADBCAECCDCCAAAAAA???<<<;;;;;;======999666666555555333111000///222000...***---+++***)))'''&&&%%%$$$%%%$$$$$$%%%$$$###"""#########%%%&&&$$$$$$######$$$$$$%%%%%%&&&%%%%%%%%%###""""""###""" !!!""""""!!!!!!"""!!! !!!$$$$$$#########!!!!!!    !!!!!! !!!"""%%%$$$#########"""!!!!!!!!!"""!!!"""###"""!!!"""  !!!!!! -        - - - - -    -    -   '!(!*#+%/(1* 0)1* 4-#3,"2* 2*3+!2* 4-"70%6/$5.#5-"6,"5+!4+ 5."92'81%4,!2*80%8/%7.$6.$5-#3,!70%5.#2+ 2* 4,"3* 1(4+ 80$5, 5, ;2&=3(;1&7-"5+7-"90$80#;2%=5(;3&7/"3+7.";3'80$7."7."5-!8/#8/#3*0(7/#;3'91%70$91%<4(?6+5-!3*<3';2'9/$9/$:2&7/#2)2)7/#5-!4+7.#;2'8/$4+ 7.";2&7."5, :1%?7+=5*70%90'8/%90&G<0jYE""",,,---++++++111444333E4,='G++M13:((0(%2F?4]S/F>$"!!###!!!  !!!!!!!!!""""""!!!      ! " !"!"!!#!!#"#"""!!"!##"$$"$#%$#&$"#  );&.$21.9;89D@?PL@NN=INDOV;TV - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -^R>E=/<5)?8,A:->6*A:-C8,>8,:4(:4)82'4-$4-$1*!.(&"    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#'!)"0(*#*",$,#/'0(-%+#.&/(/'/'3+!2* 4,!5-"2)2)4, 3*1(0'1)2+ 1) ,$' )!         - - - -  - - - -    -     - - - -   - - -              -   -    $? 6 ]&g)w,t*s*q(s*t+t+r+p+p.o/"k- i- g+d(b'a&g,f(f(k'n#l&]%\ f%f$e$d+? LKKIMMENNAJIDADC@BABAC@ADBB@@@@@@???<<<999===>>>===999333444444555444444222222///,,,---+++,,,+++***)))'''%%%$$$$$$$$$$$$############"""###""""""%%%%%%$$$$$$######$$$%%%%%%%%%'''%%%%%%$$$#########!!! !!!"""!!!  """!!!!!!!!!!!! ###$$$!""   !!! !!!    !!!""""""$$$$$$"""!!!""" !!! $$$###### !!! !!!!!!"""    - - - -    -      -   & & *$(!0)0)0)0)3,!3+!3*!3* 3+!2* 4-"5/#71%6/$4, 4* 4+ 3* 5,"81&70%3-"2+ 60$6/$6.#8/%6.#3+!7/%6/$4-!3,!4,"3* 1(3+90$6.!5,<2&>4(;1&7."6, 7-"80#80#90$<3&:2%7/"3+6.":1%80$7/#8/#4+8/$8/#3+1)90%;3(81%70$92'<3(>6+4,!4, <3(:1&8.#90$;2'<4(1)2)5-!6-"4+ 8/$;2&8/#3*6-!;2&7.#4+8/#=5)<3)6.$7/%6.$90&<3)G<.}}}|||}}}~~~~~~|||%%%///---+++))).........I50<)2*>.$D% ?!240,TJ-KB4:4"!!###"""  !!!!!!    ! ! !! "!!""!#!""!"""""##"$$!$#$%$'&$$!   '$, 2&;/$5/)2974?>AIJELPCNQ3HI - - - - - - - - - - - -  - - - - - - - - - - -  -I@1?7+;4(=5)A:-?7+A:.B;/B;/A:-A:.@9.<5):3(81&70%81'70&4-#1,"-($   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  (".'-%/'0(0'4+!5,"0(-$1(4+ 3*0'5,!5-"6.#7.#3+3+6-!4+ 2)1)2)4-"/(+$(!(!         -  - -   -    - - -   -  -  -    - -              -  - - - - - -C"> 6I W$`'u.u-r*r+t,w. v-u,r,q.o/!k.!i- h, h*g'e(g*j(k)i,g*m'k#a#`5+c"d"b"_!c0 : MMMIHHELKBKJBCD@BA?A@AAACAA@??<<<>>>=========<<<999777444444222222111000///111///---,,,+++,,,***&&&"""%%%$$$$$$###%%%&&&$$$###""""""######!!!"""%%%###"""###"""!!!###$$$&&&&&&%%%$$$$$$$$$%%%%%%%%%%%%"""""""""  !!!"""""" !!!!!! !!!!!!!!!    #########""" """!!! """###!!!""" """!!!!!!  ###$$$""""""   - - - -    - -       $(")#)".'1* 0) 2+!5-#3,"2* 4,"3,!2* 5/$5.#6/$5.#2*3*3)4+ 5-#4-"6/$5.#1+ 2, 3,!4,!90&6.#3+!5-#70%4-"6-"80$7."5, 7.":2&8/#7.!=3'?5)<2&8.#6, 6-!8/#90#7/";2%91$7/"2*5.!70#90$8/#7."6-!7.#90$3*2):1&;3(91&80%91&=5*>5*5,!6-";2':0&8.$8/$:1&>5*3+3+5-!7."3+6-"90%7."4+6-"<3'8/#5, 7/#=4);3(5-"6.#4,!6.#;2'A7+F:+oooqqqrrrssstttxxx{{{{{{{{{xxxvvv(((,,,,,,,,,)))---)))(((P>@`NNre_QE8F6#H2$;$ 0&&552-5-"""###"""!!!      !!!!!!"!!#!"#"#$$$#$$"$#!###$#$#"" -  -%/2$9/,:76>BA>EE?GI=IK - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - -  KA1B:,=5):3';4(>7+>7+@9-A:.B7*;4(:2&80%:2&91&5.#40%3.%.* (# -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#(!.%.%4,!5-!6-"7."2(.%2)6-!3*5, 7.#7-"6-"6-"3*4, 7."5-!4+3+4+ 3, /'+$)"'          -  -   - -      -    -  -  -                 -     - - ->"=!T'5P#c#n(q,o+q,v/!w/ w.u,r+r-p0"m/#j-"i,!k, j*g'g&k'j&k(g)e)f(g"f$R!cC7` ` a!`!C2  IIIEEEFFEAAA>???A@>@@?>>?==<;<:::;;;<<<<<<999777444444444444000///---,,,---///...,,,***(((&&&'''"""!!!$$$&&&"""###%%%%%%$$$"""!!!!!!###!!!###&&&$$$$$$######"""$$$&&&&&&&&&%%%$$$$$$###%%%$$$%%%&&&$$$""""""!!! !!!"""    !!!   """""""""!!!""" """"""!!!!!!"""!!!!!! """###!!!###%%%%%% -  -     -       $("("*#-'.'-&1* 4-"3,"2* 4,"4,!2+ 5/#6/$5.#4-"3+ 3+ 0'3+ 5-"3+!5.#4.#0*1+ 3,!3+!:1'90&6.#6.#71&5."5-"8/$7/#6-!8/#;2&8/#7-!<2&>4(;1&9/$5+ 6,!8/#80$7/#:1%:1%6."1)3+80#7/"8/#6-!6-!90$90%3+ 1(91&<4)91&80%91&<4);3(5-!5,!:1&<2';1&7."8/$:1&5-!5, 7."6-"3*5, 8/$6-"5,!7.#<3(8.#5, 7.#<3(<3(5-#70%5-"4+!<4)=4)B7)^L6pppuuu~~~|||yyyyyy{{{{{{|||xyyrss++++++******'''&&&NHDuu{ęOE47$?%?,#########""" !!!         ! !!!"!!#""$"#$#$##$"## #""$###!"!  - &33"7//?=@?CF@GI>JJ8LL - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - q`LE<.?7+?8,93&:4'?7+?7+?8,B;/C<0@:.A:.A:.?8,=6*;3':2&91%=4(80%73'83(51&2-#+&! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $,#0(3*5-!7."8."3)0&5+8."3)6-!7."6,!5, 6-!3+5, 7."5-!4+3*6-"0(/'*#( &          -              -                           -  ->>>>>=?><>>;=5)<3'C7)OOPOOOUUUddduuusssqqqpppmmmoppssu(((&&&&&&&&&SE=logOrl7OJ/##,%  -############!!!!!!    !!!!! "!!$""$"#######"$$"$#"""#"!#!   137/+:AE;JMQS8+B9.A8-@8,A:.A:/@9.A:.A:/?8,=6)=5)91%=3'>4(90$82&:4)93(71'4/%/)!)$   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  !&-%2*!5,"7-"9/$4*1'4+8/#3*4+7."4+ 5, 6-!3*5, 7/#7."4, 2)5-"2*/',%)"'          - - -   - - - -     -  -  -                   -   - - - - - - S(b-#f-%`+#W' = Sb%m*q.u/t-r,p+p-p/ k,j,j+j)d*h(i%i&k(j(h&b"`!`$^&_'^ [pC7qWJ]_"^![ Y.6AA?>==:::<<<=>>;=<<<<;::322333333000333444000///000000---+++***+++***((('''''''''%%%%%%%%%$$$%%%'''&&&&&&%%%%%%$$$$$$$$$###$$$"""!!!!!!"""$$$$$$###$$$&&&%%%&&&&&&%%%%%%$$$$$$%%%!!!!!!"""!!!    ###!!!  !!! !!! !!! """!!!$$$"""!!! ###!!! !!!$$$'''&&&%%%%%%&&&&&&%%%"""  - -       "$& *$,%,&-&0)2+!2* 1)/(1* 4,"6/$6/$4-"5.#2)/&1(3* 5,"6.#70%4.#3,!4.#4-"4+ 8/%6.$6.#6/$5/$3+ 6."90%6."3+6.":1%80$7.";2&=3';2&9/$4*5+ 80#8/#6-!8/#:1%5, 0'4, :1%7."6."3+5, 91%80$1(1(90$;3(:1&:2'91'91'80%4+!3* 90%<2(;2'90%;2&:2&5,!3+7.#5-!2)7.#;2':1&4+ 6-";2&8.#7-"<3(>5)<3(5-!91&6."5.!<5)>5*:0%<1%F9+BADBBDBBCLKLWWW___rrr̜vvvjjjqqqssurrtlmp%%%LG?L83G/*WQI=JB;IC:9=1!.- -############"""!!!     !!"!!"!!! "!!#!"#!"#"#$$$%%%###! "!!$"!  .6!=1%7+=6)?8,@:-C:/@7,>7+@8-@8-?8,@9.A:/?9,>7+?6*;3'<2'?6)90$92&<5*<5*;4)92&80%4-#1* (! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  !)"/'2* 6-"9/#3*/%3)8.#5+3*7.#5-!5-"6."3*4, 7."7."4, 2*4+ 2*1)+$' $           - - - -  -      - -   -                   -   - -  - - -a.$i.'e-%[*"@N[#i(p,q,p*m*k+k+h)f(i)g'`'h(i%d!g%i'g&d$`"] ]!Z#[%\#]!](dF;hWH] \ YUA CCA?>=;::<;;?>?=>=888888433322222000222000+++---......---,,,((()))))))))((('''&&&&&&%%%%%%%%%'''&&&$$$((($$$$$$$$$$$$"""$$$$$$############$$$###""""""&&&%%%&&&%%%&&&&&&###$$$###!!!""""""!!!!!!!!! !!!      !!!### !!!""""""###$$$    """$$$$$$$$$%%%%%%$$$### !!!!!!!!!       "%'!(!)"*#-&1* 3,"2* 1) 0(1* 2+!5/#5.#4-"5.#5,"4+!4+!2*4,!4-"6/$4-"2,!5.#4,"3+ 6.$5,"3,!6.$5.#2*6-"91%6."2*5-!91%7/#5-!:0%<2&;1%9/$4*4+8/#7/#8/#91%90$6-!/&6.!;3'8/#4, 4+6-!91%8/$1(0'8/$91&91&91&91&:2'91'4+!3*7.#;2':1&6-";2'90%5,!3*90$5, 3*8/$:1&90%5,!7.#:1&7.#7.#=4)>5):2&4, 80$4-!5.!;3';3'8.#5+ >3&eS?98;98;CCFKJMKJLOOPVVVYYYbbbjjjԡzz{qqrppqnnpmmpmnr?NIHYX;BBA4.;&6 /& &$& """######$$$"""!!!!!!     !!!" !!!!!"!!""!#""#"#$$$##$  "  "05%<5'>G@;VW:Z];]b=Y[ - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - -  - }jRL@2?6*=4(>6*<4(>7*?9,@7,>6*>6*@9-?8->7+=7+A:.@:-?8,@8,:2&<2&@6*90$82%<5)<5)<5(:3':3'92'70%2+!-'$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "*$,$2* 7.#2)-$2)5,!5,!5-!7/#5-!4,!6-"2*4+ 8/#7."3+1)2)2)/')!( )!         - - -  -   -        - -                        -  - - - -  a/%f/'g.'^,#P(GP`$p,o,k)i)i)g(g(g(b*c&i%i%f#d"e$g&c$`"_"]!ZZ!Y%Y$Y"X!]3'cPCYYWU\/: A@?>==;::<;<;:<889444766534100111111111,,,,,,...,,,++++++))))))'''(((&&&$$$'''$$$$$$###$$$%%%%%%$$$%%%&&&%%%###$$$###$$$""""""""""""#########"""!!!"""$$$&&&%%%&&&%%%###"""%%%$$$!!!!!!""""""!!! !!!   !!!!!!!!!  !!!!!!""""""###  !!! #########$$$%%%"""###"""###!!!!!!     !%& (!)"*#,%0)3+!2* 1)2+!4,"2+!2,!3-"5.#4-"5-#3* 1(0'3+ 3,!70%3-!0*5.#4-"4+!7.$7/$5.#70&81&3+!5-!80$7/$4+5, 80$6."4, 90$;1&:1%90$5+5, 90$91%90$;2&;2&5-!1(80$<3'8/#4+5-!8/#:1%90$2)1(7/#90%91&80%7/%91&90&4+!4+ 7.#;2'8/$5,!90%:1%5,!5,!8/$5,!0'5, 90%:1&5,!6-#8/%6-"6-!;2&>5)90$5,!6.#5,!5-!;3':1&8/#5+ 9/#F:+/0/000778>=@??AEDGIIJHHIGGHKKKSSR\\[ppnqqqnnoppqttuuvw2C@&:5D94:)#50+4!5) - """#########"""!!!!!!   !!!"!!!!"!""""""#""#####"!!!    $ /4%67/>II=TX;Y^<[b6*>6*=6)?8+?6+?7+@8,A:-?8,<5)<5)?8,A:-@9-B:.<4(;2&@7+91$:3&=6*<5)<5(;4&:3&:3':3&81&5/$-(("  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %)"0)6.$2),#0'2)4+!7.#7.#4,!3+!4,!1)4+ 80$7/#3+0'1(4+!2* +#'%        -  -    -  -   -                             -  -  -   b.$d-$^+!S)BIY#g(i)i)j*h)h(f'd&d#e"h%g$d"g%e%b$`#^"]"]"Z Z!W!W#U U X#`E9gZKVURPC3  ==<98965798:8793442232110/0101000///******,,,*********((('''###!!!$$$###%%%%%%&&&&&&$$$ ###((($$$&&&%%%$$$######$$$###""""""""""""###%%%$$$!!!"""%%%''''''$$$&&&&&&%%%%%%###!!!""""""!!!!!! !!!    !!! !!! !!!!!!     !!!$$$$$$"""!!!"""###$$$$$$%%%&&&%%%$$$!!!   "$' *#*$*$/)3,"0)/'3,!6/$0* 0*3-"3-"5.#7/$4+!1(0'2+ 4,"6/$4-"/)6/$5-#4+!6.#7/%6.$70%60%4,!3,!6.#8/$5, 4, 8/#6."5, :0%;2&:1%9/#5+6,!91%90$90$:1%:1%8/#2):2&;2&7."5, 6."8/#:1%90$1(1(6."91&80%7/$6.#80%90&4+!4, :1&:1'7.#5,!90%;2'6-!6-!:1%4+ 2)6-!8/$5,"2)5,"8/$3*5, ;2&=4)80%5-"8/$7.#6-"<3(:1&;1&7."7-!>3'J=.%%$)*)/0/222888;;;;;<>>?CCDGGHLLLUUT[[Zaa`oon{{{ooouuu{{{yyzstv8B7OT?Xa;W^9\Y9RT - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  `R?F<.A8,?7+<4(>6*?6*=5)?7+A9-@8,>7+@9,@9,<5);4(>7+?9,?8,C<0>5)>5)?6):2%;4&>7)=6(>6(=6(;4';4'<4';4(71&5/%1,#+&%    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - %/(4,"1),#/&3* 4+ 5,"6.#4,"3,!3+!0)2+8/$7/#3+/'1(3* 1)+#( %        -  -          -                       - - -  - -  - [*`,!e/%Y+ =H Q [#f'i)i(h'm'g$g#f"f#h%f$c"c#b$^!_#]"\![!Z!Y!Y"Y$V"U!SU+ RF8OSRPN@ 554766545757978334113001-,-++,...---+++***$$$(((((('''%%%###!!!!!!$$$%%%%%%%%%%%%$$$"""%%%######$$$$$$$$$""""""###""""""""" """%%%$$$ !!!%%%&&&'''''''''%%%%%%%%%###"""""""""!!!!!!!!!!!!   !!!!!!!!!""" !!!!!!!!!  """""" !!!!!!  """$$$###"""!!!"""#########%%%''''''######$$$   #%("+$+%*$/(3,"1) /'3,"3,"/).(3-"1+ 5.#3+ 1(/&1(4,"3,!4.#3-"1+6/$5-"3* 4+!6.$5-#6/$71&4,"1)6.#7.#4, 5,!80$6."5- :0%;1&:0$8."4+6-!:1%90$8/#:2&;2&7."4+:2&91%6."5, 5-!7."91%8/$0'0(6.":2'80%6.$6.#91&:2(3+ 3*:1&:1'8/$7.#;2';2'90$7.#90%7."2)3*6-"5,!4+!8/%8/%2)4+ ;2&=5):2&8/$90%7/$6.#;2&;2'>4(7-"5,;0%D8+WG4!!!##!&&%**)---///333788:::>>?FFGMMNPPPVVT[[Zaa_kkjuuuvvvyyywwxqqs>;0=(K0F-3%"+'%20*.$   !!!"""""""""!!!!!!!!!  !!!!!"!!"!!!!!!#####"""! !  * 3:)G?6@LP>R\;T\;XY - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - I>/>5(A9,@8,=5)>6*>5)>5)?7+@9->7+;4(?8,B;/>7+;5(>7*>7+>6*@9->6*?6*?6*:3%;4&=6(<5'=6'>6(=5'<5'=5(=5(;4':3&5/#1+ 0)/) % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - '!2*"0'/&1(5,"3+ 4+!5.#4,"3+!3,!1*2*5-"6-"3+1)1(2)0(-%*")!          -  - - -                                - - - - -  -   - `-#c.%^+"S'D KU_#g&g'l(j%i%i&g$f$e$d$a"_!^!\ \!\!Z XWVV UTT S R!C(PF9QQPNG: 433434534635313/00./0,,,+*+***))))))(((%%%%%%%%%%%%###$$$$$$%%%!!!$$$&&&'''###$$$%%%###$$$$$$"""!!!!!!###$$$###""""""###$$$""" """$$$$$$ !!!###$$$%%%)))'''&&&%%%#########"""""""""!!!"""###"""!!! !!!"""!!!!!! !!!""" !!!  !!!!!!!!!"""!!!  !!!"""  !!!     !!!#########$$$###$$$###%%%&&&&&&%%%######%%%$$$!"("+%-'+%,&1* .'-&2+!2+!0)2,!4.#1+!4,"1)1(0'2)5.#4-"6/$3,!1*3,!5-"3+ 4+!7/%6.$5/#6/$5-#1)4,!5-"3+ 4, 7/#7."6-!:1%;3'90$9/$6,!7."90$8/#8/#:1%;2&7."4+:1%90$6-!3+4+6."80$8/$/'/&6.":2'80%6.#6.$91'91'2)0(7/$:2':2'90%<3(;2'7."6-!90$6-!3*3*6-!6-"5,!7.$8/%2)4+ <3'?6*:1&6.#90%6.#7.#:1&?5*>4(5, 5,;0%=2&@3%zdK######$$$"#!$$#((&*+*..-000778??@BBCFFGMMMQQPTTSXXYaacnno~~~ssstttqqrklmhikB) G,%S4*X@19-")&!561#! !!!!!!!!!!!!!!!  !!!!!" ! !!!"""!!! !  / <$;.%8=F;NY:T\=\b=\_ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -QF5B9+?6*C:.A9-=4(>5*=4)=5)?7+@9,>6*;4'@9-C=0@9,>7+>7*=6*=6*?8+?7*?7*?7*<4&<5'>7)=6'=5'>7(=5'=5'=6(<5'=5(<5(81%5."5.#60&/) '"! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  !*$+%-&1) 4,"2)4*6-"4,!3+!4,"2* 2*5-"5-!3*0(/'1)0(-%( )!         -  - - -  - -                               -  - - -   -   - _,#`+#b*#X&@A Q\!c'j(h$h$i&i'g%d#b#`#_"]!\!Z YY XUTSST SQQPP$TF9^VHQOMJB "##3221014132/1/.0--.**,+*+******((((((''''''&&&### %%%&&&$$$"""$$$&&&%%%###%%%&&&$$$$$$###!!!!!! """###$$$$$$###$$$&&&$$$###"""###$$$"""######$$$%%%''''''&&&$$$###############"""!!!"""######   !!! !!!  !!!"""!!! !!!"""  """"""!!!!!!"""!!!    ###!!!"""!!!!!! !!!!!! !!!###'''&&&&&&$$$"""$$$%%%$$$%%%%%%%%%$$$""""""!!!!"'!)#*$("*$0)/'-&0)/(/)/)0* 0* 3,!2* 1(1)2* 4-"5.#60$3-"0)1+ 4,"4+!4,"80%6/$4-"4-"0(.&3,!6.#4, 5,!90$8/#4, 90$;3':1%8/#5+ 6,!8.#7/#7/#:1%:1&6-!5, :2&90$6."4, 5, 6."8/#80$0'.&6.#:2'7/$5-"5.#91'6.$1)1)8/$;3(;2'90%=4);2&8/$8/$:2&6-!4+5,!7.#7.#5,"7/$90&3*6-"<4(>5)90%4+ 80%6-"4,!<3(?6*;2&5+ 5+;1&:0$7, E8)######$$$###$$$%%%$$$##"%%%+++333555889@@AEEEIIIKKLNNOSSTXXYaabqqrrrrmmmllllmmklmH+J1"M2*]<6TF>23-420;98  !!!!!!!!!!!!  !!!!!!  """!!"  !!!##"! 4 <" ;/$8JK3VT6WU3QQ:ZY - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ugOJA2>5(?7*C;.A9,>5)A8,?7+>5*@8+A9->6*;3'@9,B6*>6)?7*?6*;3&<5'?8)=6(=6'?7(=5'<4&<4&<4&>6(?7)<3':2%80$93'6/&/(+&)# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !' ,$0(3* 2(4+7."3+ 2+ 3, 2*3*6.#6-"2)/&0(1)1* ,%''          -  -     -  -       -  -                   - -  -    -   a*"a)#^)%M"9LZ$b%g%i&h&i'i(f&c$`#_#]"\![!Y XVTTRQQSST QQMP2&\SFOOLJFA ---101/-/0-0/-/-,-))*(())((((('''%%%%%%&&&%%%$$$""""""%%%%%%%%%&&&&&&&&&###$$$$$$#########""" !!!$$$$$$#########"""%%%%%%$$$###############"""###&&&'''&&&%%%###"""$$$$$$$$$###""" """###"""!!!!!!""""!!  """ !!!###"""$$$!!!!!! !!!!!! !!!!!!###   !!!!!!!!! !!!$$$###"""!!!   !!!!!!   !!!!!!%%%&&&&&&%%%$$$"""$$$$$$######$$$%%%%%%###!!!!!!!!! ("+$+%("+%/(/(,%-&,%.(.(/)0*1)/'0(1(3* 3+!4-"4.#4."1+1*2)2)3+!7/$6.#3-"4.#2* 1) 6.$7/%4+ 5,!:2&80$3*7.";2&;2&:0$7."7-"8.#8."7.#:1%:1%5,!4, :2&91%6."4, 5-!6."90%8/$/'.%7/$<4)6.$3,!4,"91&70%3+!2*80%:2':1'8/$?6+=4)<3(:1%:1%7."4+6-!8/#8/$5,"4+!6-"4+6.";3'<4(:2&4, 7/#5-!3+=4(<3(:1%5, 4*;1%9/$3)>2%WH5$$$###$$$$$$$$$###"""###$$#$$$(((...555888===???BBBFFGLLMRRSWWY^^_jjkyyyrrsiiijjjkkkiiieeeD+D+$M53YIHNOL:A=&*(556! !!!! !!!  !!!  !!!!!!!!!!!!!!!  !!!!!!  """$$#"! 3 7':728HG7NK6HE8LI5SJ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -ND4B:,=4'?7*D6*A9-@7+>5)@8+@9->7*;3'?8,B;.?8,?8,A:.=5)<4(>6*=5(>6)?6*;3&<5(?8*<5'<5'>6)=5'=5'=5(=4'>5(?6)=4(:2%8/$>7+<5+3-"2+"3-$.( &! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (!/(2*!0'2)6-!2+2+3+ 4+ 2*7.#5,!1(/&0(1)1) ,$'!'!          - -     -   -     -                -      - -   - - -  -  b&"Y$ b&[)NBR]_f%h'h'g(d'b&`$^#\!Z XWUSSRRQPQPONNJF M:-TI>NLHFD :  100.-..,--*,,),))*(()'''%%%&&&%%%%%%%%%###%%%!!! """###'''%%%###$$$%%%%%%$$$$$$###$$$### """%%%%%%"""!!!!!!!!!"""%%%&&&$$$############!!!"""%%%&&&&&&%%%$$$$$$%%%$$$$$$%%%$$$###$$$$$$""""""""""""""" ###  """######!!! """ !!! $$$!!! !!! """""""""$$$""""""""""""$$$ !!!!!!!!!    !!!   """###&&&'''&&&$$$#########"""###$$$###$$$###!!!!!!!!!!!!)#("+%/(,%,$,%.',&.(0*.'-%.%/&/&2)2+ 2+ 3-"3-"0)1*2)0'3* 6.$6/$4-"5.#4,#4,#7/%7/%4,!3+ 7/#7/#2*6-!:1%:1%90$7."8.#9/$8/#7.#90%90%5,!4+ :1&:1&7."6."5-!6-"80$7.#.&.&70$;3(5-#4-"5-#7/$6/$2* 2)90%;2';2';2'=4)=4(:1%80$:1%6-!4+5, 8/$8/$4+ 5,!8/$2*4, <4(>6*;3'2+6/#4, 6.";3';3'91%4+3)9/$:0$5+6, D8*xdJ###$$$$$$###""""""$$$$$$$$$%%%%%$&&&***///444888>>>CCCHHHMMNRRSUUWYYZaabnnnxxyjjkjjj:$>%D+)X8;S@CGF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   -RG5I@0@8*;3&>5)C;.A9,=5)?7+>5)=5)@8+@9,?7+;3'?7+A:.?7+?8,A9.?7+?7+@9,=5(<4'?7*<4'>6)A:->7*>6)?7*=4'<3&>5(=5'=5(?6*?5);2&8/#;4(;4':3'5."5/$3-#/* (" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "+#2* /&/'5, 2*1)4, 4, 3*7.#6-"2*0'/'/'-&*"&'!         -  -                           -          - - -    h(e(f%f"4F S\b#f&e&d'b&a%^#[!Y X VVUSRPPOOOOLLNKFD$TG6+@8,:3'4, 80$5."90%;3'<3(8/$5+4*;2&;2&7-"4*=3&J>/######$$$$$$######"""$$$%%%%%%%%%&&&'''''&'''+++///555<<<@@@EEFJJJMMNQQRVVW\\]ffgwwy0# >%C.*=*'Z@AL361--7ECANG233       """ !  2E*&F97;IK8FL=GMDMMDKE=B? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - xfKKA1D;-@8*:2%=5(B:-@8+=5(>7*=6)=5)?8,@9,?8,;4'>6*@9-?7+?8,A9-A9-?7+?7+=4(;3&?6)=5(?7*B:-@8+?8+A9,=5(91$<4'<4'>6)A7+>5)>3(8.#>7*=5);4(70$6/$5/$5.%.()#!  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ",%+#+#2*0(/'3+3*2)6-"6-"3* 0'.&/'.&*"$%         -  -         -                   -  -     -   - - - - -   g'l)j&j%Y8LZ_"c%d&c&_$^#[!Z!Y VVTSSQONNNNNLLLJIDG-"SG>H G E C @C $%%.-.+)+)&('$&$$$###$$$!!!!!!$$$&&&%%%$$$"""!!!###%%%$$$$$$###$$$$$$'''$$$###%%%&&&$$$###""""""  !!!!!!"""###%%%%%%###!!!!!!###"""###%%%&&&%%%$$$%%%$$$%%%$$$$$$%%%######$$$############!!!  """"""!!!!!!!!! !!!!!!!!! """ """ !!!!!! !!!"""""" ###""" !!!"""""" !!!   !!!!!!""""""!!! """!!! """"""$$$$$$######"""""""""!!!!!!!!!!!!!!! !!!###"""!!!!!!)#,%+$0).'/(0)0(0)1*1*/(0(1*3,!4-"3+ 3+ 4,"2).&6-#80%81&60%5.$2*!3+!5-$70%4,!3+6-"8/#5-!6-!91%:1%90$7."7."90$:0%9/$90$8/$5,!3+:2&:2&6."5-"5-!7/#91&7/#/'.&5-"91&6/$6/$3,!6/$91&3,!3+ 80%;3(:1&90%;2&<3'8/$7.#;2&8/#3*6.";3':1%3*6-"8/$3*7/$?6+=5)70$4-!:2&91%91%<3(<3(:0%5+ 3):1%:1%7."5, 90#B7*UH6###$$$$$$%%%$$$"""###$$$$$$%%%%%%%%%%%%&&&&&%&&%(((...333888===BBBHHHKKLRRSWWY\[^a`b,XD?ea[ga\laZPG?,%"$43.+,+  !!!  !!!! !!"!""""!" +41--KH2OS=PUARUAQR=I@8<: - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -NC2F=.C;-@8*;3%>6)B:-@9,=6)>7+>7*<5)?8+@9-?8,;4(>6*@8,@8,?7+@8,@8,<4(=4(;3&;2%>6):2$>6)B:-B:-@9,B;.@8+>6)>6)=4'@7+B9-?5*?5)=3'?8+=6*<5):3'92'70%70&3,".',&*$# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -' ( )"1*1*0(3*2)0'4+5, 1(.%.&/(0(*#$#        - -                       -      -  -       - - - - - -  h(k(h%g&?> Q[ ^"c&a%]#\"["Y!X!TU SQQPNOMLKJJJIIGD@F2*E70E B A @ -8 9  '(((()&%&###$$$!!!""""""###&&&&&&%%%$$$$$$###%%%%%%$$$"""###$$$%%%%%%### """%%%###!!!!!!!!! !!!!!!###%%%%%%$$$!!!!!!!!!"""###$$$&&&&&&%%%$$$%%%%%%&&&%%%#########"##!""###$$$!!!!!!"""!!!!!!%%%###!!!!!! !!!!!!!!! !!! """!!!!!! !!! !!!!!!!!!###$$$$$$$$$$$$###!!!!!!###!!!   !!! !!!!!!!!! !!!### !!! #########$$$""""""!!! !!!!!! !!!""""""""""""############%%%+$/)/(0) 1* 0)1* 2+ 2* /'0)2* 4,!5-"3+ 2)3+ 3*0(3,!81&70%7/%6.$3+!1)3+"6.#5-"5,!7/#91%7."6-!90$:1%8/#6-!8.#90$:0%90$:0%8/#4+0(91%:2&80$5."5."70$:2&6."-&.'4-!6.#4-"5.#4-"81&91'3+ 3+ :1&=4):1&8/$:1&;2'7.#6."=4(;2&3+80$<3';2&4+ 90$:1&3+ 8/$=5*92&70$2+7/#81%80$;2&=4)<3(6-"4+90$:1%8/#5- 8/#:1%E;,xfM!!!"""###$$$######$$$$$$###$$$$$$%%%$$$%%%&&&&&&&&%&&&+++000444999>>>DDDIIJOOP2% E1+\USmi`RUNEF@720%$%    !!!!!! !! !!!"""#$$####"!" #/:4.4MP3U^8V[>V];Z^4XT285 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `S=E;+@8*@8*?7*<4'?7*B;.A:-=6)=6*>7*<5)>7+A:-?8+<5(=6*?7+@8,>7+@8,@7+>5)?7*<4':2%@8*;3%?7)B:,B:,?8*@9+?8*>6)=5(;3&?6*A7+?5)?5)@7+?8,=6*<5)<5)=6*92'70%5.$1* 1+"2,$/*!$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  !' *#1* 1*0'2)1(/&2)3*1(.%.&/'.')"$"        -  - -                      - - -    - -  -      -  - -  - -   #e&i'i&j&Y1IUZ ^#^#Z X Y"W V U STRQOOOMKJHHGFIFFB<:-&H<5? ? = ;F - - -&&&%%%$$$###$$$""""""!!!$$$$$$$$$######$$$&&&$$$###"""###$$$&&&$$$###!!!!!!$$$"""!!!""""""""" !!!!!!###%%%$$$""" """######%%%&&&''''''&&&&&&'''%%%$$$######"""######!!! """!!!""""""###"""!!! """ !!! !!!!!!"""!!!"""###!!!"""!!! !!!"""""""""$$$"""""""""$$$"""!!!!!!  !!! !!! !!! !!!""""""""""""$$$"""$$$""" """$$$!!!"""###""""""  !!!!!!  """!!!"""###$$$%%%%%%%%%'''### -&.'2+!4,"2* /(.'0)2* 2+ 4,!5-"4,!4+ 6-"3+ 3+!4-"70%7/%5-#5-#4,!1)2* 4,!5-"5-!8/#90%6."8/#:1%<3'7."6-!7-"90$90$:0%;2&90$4+0(:1%;3'91%6.#6/#7/#:2&6."-%-&5."7/$4-"5-#5.#92'92'3+ 2+ :2'<4):1&8/$:1%<3'7.#5-!<3':2&4+90$<3':1%5, :1&;2'3*6-"<4)91%70$4-!81%81%90$:1%<3(>5)8/$5, 90$<3'90$5-!8/#:1%=4'J?/ !!!""""""######"""######$$$$$$$$$$$$%%%%%%%%%%%%$$$%%%***///665:::??@, ODBlil`_]QSMILD864    !!!!!!!!!  """"##""#"####"#"!"   .&9@14OH4XX8XZ5Z\)]\0[\  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  LB1;3%>6(?7*<3&=5(>6*A9-@9,=5)=6)>7*>6*>7*A:-=7*<5(=5)>7*?8,>7+B9-@8,@7+@8+=5(:2$@8+=4&?7)?7)?7)>7(?8*>7)>7)@8+=5(@7*?6*=3'>4(>6)?8,>7,<5)<5(=6*;4(81%81%5-#6/$4-%4-$-'& !  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !' -'0(.&1(2)1(4+4+ 1(/&.&0)0),%("%        -  -  -                       - - -   - - - -      -  - -  - -   c$h(m(f#@> NVZ!Z YX V U TU RRROMMMKJHGFFDDDBA=?(MB;: ; = < 8 C - - - - - - - - -###%%%$$$$$$$$$""" $$$%%%###"""$$$###"""###"""###$$$%%%$$$$$$"""!!!"""""" !!!"""###""" !!!"""$$$$$$""" """$$$###$$$&&&%%%(((&&&&&&&&&&&&$$%############!!!  !!!""""""""""""!!!!!!!!!!!!!!! """$$$$$$$$$""""""%%%###""""""!!!!!!"""$$$$$$############!!!!!!"""  !!!!!!""" !!!!!!!!!"""!!! """###"""###############""""""   !!!"""""""""!!! !!! !!!!!!!!!###$$$######%%%$$$$$$"""!!!!!!0)3,"0(0(0)1) 2+!3,!4-"5-#5-"5."4,!1)3+!4,!4,"1* 4,"4-"5-"3+ 3+!4,!6."7.#8/$7/#5-!8/#:1%90$6-!6,!6-!80#8/#80$:2&91%4+ 1(91%:2&80$7/#6/#70$:2&90$0(-&4-"81&5.#5.#6/$92'92'4,!3+ <3(>5*;2'7.#90%<3'7."4, :1%7/"3*7/#:2&8/#4+91%90%1)5-"92&81%81$5-!5.!5-!7."7."90%=4(7."3*:2&>5)91%5-!8/#<3':2&B8*NC2!!! !!!###""""""###"""###############"""###$$$###"""!!!&&%+++111"TMNrootnsWSSKA>?72*+'     """$$$""#""####""!#"! ,-#)@66QO>UX?UX8VZ4UY7QS - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - -  TJ8F=.;3%>6(?7)>6)>5)>5)@8,?8+=5)>6)>7*>7)?7+A9-?8,=6*=6*@9-?8,>7+A9-@8,?6*=5):2&91#?7)=5&@8*?6(>6(>7)@9+?8*>7)>7)=5(@7*@7*>5(>5(=5(=7,?8,=6*;4(=6*=5*;3(:2'7/$5.$5.$6/%3,#/(+%%  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  )#-&-&0(1)0(4+ 5,!3*0'/'2* 3+!/()#$        -  - -                        - -  - - - - - -     -     -    `%c'e&_!Q3CPUVX VSSSRPOQNJJMJIHFEECCCA@=9?.&E819 ; ; -9 . -7 - - -%%%$$$###$$$""""""###$$$"""!!!###!!!######$$$%%%$$$###%%%$$$###!!!"""""" ###""" !!!""" """###$$$""" !!!$$$######%%%&&&%%%$$$"""$$$%%%%%&##$#########"""   """###"""###!!!!!!"""""" !!!!!!######$$$$$$#########"""###"""""""""######""" !!! !!!!!! !!! !!!  !!!"""###"""$$$###!!!!!!!!! """$$$###!!!!!!!!!!!!""""""###$$$"""  """$$$"""""""""""" !!!!!! !!!  !!!"""#########""""""  0(0(/(0(2+!5.$70%6.#3,!4,!1*1)2+ 2+ 2* 0)0(2* 3,!3+!5-"6.#6.#6."80$6."3*6-!;2&90$7."5, 6."8/#7."8/#:1&:1&5-!3+:2&92&80$70#6."7/#:2&90$2)1(6-"7/$5-"6/$81&;4):3(3, 3+;3(=4);2'7.#8/$:1%4+ 3*91$7/"4+7.";2&7/#3+90$90&3* 4,!:3'<4(80$4- 4- 4, 7."7/#8/$;2&7.#4+:1%?6*91%6-!91%=5);2&;2&A7)iX@ !!!"""##################"""!!!!!!"""###$$$""" .L;:_\Yz{w]Z\NA?6%#5'%  ##"##$##$""#"##"""!!!#"" .39DC6(@8*?7*>6);3&=4(@8,?7+=5)>7*?8*=6(>6*A:.?8,>6*=6*A9-A9-?8,A:.@9-?7+<4(7/#91%=5)=5(@7*@8+?7*@8+@8+>7)=5(<5'=5(?6)?6)>4'<2%=5)>8-?8-=7+<5)=6*=5);4'80$91%6.#5-#70%70%2+!/)+%$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $,%-&/(/'.'5, 90%4+ 1)1)2* 2+!0()"%        - -   -                          - - - - -   -     - - -     -   ^$`&[!W ?7 -HPRUSQRRONNNMIH IHHGFEDCBA><:8; G;4H<57 -66 5 -K """"""###%%%!!!###!!!###""" """###$$$######%%%###""""""$$$%%%!!!!!!$$$ !!!!!! ###$$$""""""###$$$!!!$$$$$$"""###"""######$$$&&&$$$$$$$$$###$$%###############!!!  """"""###$$$"""!!!!!!"""$$$""" """"""###""""""$$$"""######!!!"""!!!!!! !!!!!!""""""!!!!!!  !!!!!!!!!!!!  """###$$$""""""######"""  """###"""!!! !!!"""!!!"""$$$!!!  !!!"""###"""###### !!! !!!  #########"""!!!!!!!!! !!!!!! .'/(2+!6.$70%5.#3+!3+!3+ 1)1*1* 0)0)0)3+!1)0(4,!6.#6-"5-!80$6."2)6.!:2&:1%8/$5, 5-!7."7."8/$:1&91%5-!4, :2&92&7/#6/#5."6/":1%91%3*1(7.#80%3,!5.#81&<6*:3(3+ 4,!<2'>4*<2'7-#90%;2'5,!3*90$7/"3+6-!91$5, 1(7."7.$3* 4,!:2&<5)91%4-!70$6."6.!7/#:1&=4):1&5, 90$?6*:1%7.";2&=4(:1%;2&;2&F;, !!!###"""###!!!"""!!!!!!!!!""""""###""" )GA:[^W{zubb_FE@5-&3!.   ""!#######"#""####"""#"""""!!!%($4?94OK8SU8QW3OV8NO7LQ3EK - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  ND3E<.>6(>6)B:-B:-?7+=4(>6*A9-?8+=5)?8,?8+<5(<5)B:.@8,=5)>7+C;/B:.?7+@8,@8,?7+=5):2&;4(=6)>5(@7*A9,A9,A9,@8+>6)<4'?6*=5)?6*@6*<2&:1%<4(>7+>8+=6+;5)=6*=6*<4)<3'7/$3+ 6.#92':2(4-"1* 0) +$' $  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (!+$/(.&+$1)6.#4+ 2)1)1*1* .')"'!        -   -                    - - -  - - - -      -     - -     -   #!!Z!Y!U!M-; GNPRPQPNLNLKJIHD EEDDDA@>=<876;%F:36 -6 6 -5 1 B !!!"""""" """%%%$$$"""###""""""!!!!!!######!!!"""&&&$$$###!!!$$$""""""""" """###############"""$$$""""""###%%%############&&&$$$##$######"""######"""!!!  !!!!!!$$$###$$$"""### """"""""""""###""""""!!! !!!""""""#########"""!!! !!!!!! """$$$""" !!! """!!! !!!!!!!!! !!!###$$$### !!!"""""""""!!!###!!!"""""" !!!"""""""""$$$""" !!! !!!!!! """!!! !!!""" """"""""""""""" """  2+!4-#5.#4-"4,!3+!3+ 3,!2+ 2+!2+!1* 2*!3+"0(/(4,!6.#5-!6-"80$7/#3*7."90$90$90$5, 5, 6."7/#90%:1&90$4,!4+ 91%81%6/#6."5-!5-!8/#8/#2)1(8/$80%3+ 4-"60%:3'92&3+ 5-"<2'>4)<2'8.$;1'<3(6-"3*7."6-"3*4+ 91%4,!/&5,"6."5,!7/#:2';4(91%5.!70#5."8/#8/#<3'@7+;2'4*8/#?6*8/#7.";2&<2':0%<2';2&@6)NB3 !!!""""""!!! !!!""""""!!!,8-%IE:^XLoaU_PKE515$1%)"   ""!###"""""##"####"""####$#$%$$%$%-+.C@.SP0YZ2X^6Xa7UX7PT2JN - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - -  OB0F=-C:,<4'>6)C;.C;/@7,=5)=5)A9-@8,=5)@8,@9,=5)=5)@9-?7+=5)?8,B;/@9-?8,>7+<5)<5)>6*>7+>6*>6*>5)?6*A9-A9-@7+@8,@7+=4(=5)>5)?6*@6*;1%;1%=5)>7+>7+=6+:4);5*=6+<5*<4)80$6-!7/#;3(<4)6/$2*!2*!.&+#,$*#& - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "("-&/(*#0(2+2*1(0(1)1* .',%'"       - -   -                  - - - - - - - -             - -     -   '$$#! VW!T QA.@JNQSQNMKKJJIGGECB A A@?> < ; 9 7 5 3 -2 >,%?0*4 23 -1 * -5 - - - - - - !!!  ###%%%######""" """ !!!###$$$###""""""######$$$""""""""" """###$$$"""$$$$$$"""!!!"""###$$$%%%%%%$$$###!!"##$"""######""" !!!!!!   !!!!!!""""""######$$$"""%%%###"""!!!$$$###!!!"""  !!!"""######""""""!!!!!!!!!""""""###!!! """  !!!!!! !!!!!!!!! !!!###"""!!!""""""!!!"""###!!!!!!!!!!!! """"""!!!!!!""""""""""""  """!!!"""$$$###!!! !!!!!! !!!!!! !!!!!!!!! !!! !!!###"""!!!5.#4-"3+ 3+!4,"4-"3,!4-#6.%1* 1* 2+!0(0(4,!6.#4-!4, 91%8/#4+ 6-!90$90$7.#5, 6-!6."8/$91%91%80$4,!4,!80%81%5."5-!5.!5-!7/#7.#2)2)8/$80%3,!70%82'93'81%2*5,!<2'=3);1'9/$;1'<3(6-"3*7."5,!3*3*80$3+-$4+!90%6."8/$:2&:3'80$2+70#4-!92%6."91%=4(;2&3*8/#?5*8/#6,!90$:1%9/$8."8.#9/#H=/q^I !!!!!! !!!!!!!!! * B4)UA9cMFX>7I)&@# ;!7%   """######"""#"##"#"""$$$%%%'('())!+++=;2GE2PO2Z]3XY8WT7TO0NJ - - - - - - - - - - - - - - -  -  - - - - - - - - - - - - - -  tbFG<+>5'A9+=5'>6)C;.C;.@7+=4(=5)A9-@9-=5)@8,A:->7*>6*?7+?7+=6*>7+?7+>7+>6*=5)<4(<4(=5)>6*=6*=5)>5)>5)?6*?7+=5)?7+?7+>5)<4(?6*?6*?6);1%9/$;3'>7*=6*<6+:3(<6+>7,=5*<4(;2&7/#8/$<3(<3)70%4*!5+"2(1'3) 1'-$) " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - !'!.(*#2+!4-"/'.'/(1*2+!.'-&("        -                    - - -    - - -   -           -  -    -  !*'&)&%(''&%%$$%U T R N<5 BIMQNKLJHHHFEDEBA ? ? > < ; : 9 7 7 4 2 -3 4/ .12 1 --O - - - - - -  ###$$$!!!!!! !!!""""""$$$###"""############$$$!!! ###$$$ ######!!!###$$$######$$$### ###%%%$$$%%%&&&$$$#########"""!!!  !!! !!!!!! !!!!!!"""#########""""""""""""###%%%###"""###!!!  ###!!!$$$"""!!!"""!!! """ """!!!!!!!!!   !!!###!!!""""""!!!""""""###############$$$%%%!!! !!!!!!!!! ######"""!!!!!! !!!###!!!""""""!!!"""$$$"""""""""""" """""" !!!!!! !!! !!! !!! !!!!!! %%%$$$!!!"""2* 3+!3,!3+!4,"4-#5/%1* 2+!3,"1*1*5-"80%6/#6."91%80$6."6-"90%90$7."5-!6."6."8/#90%90%80$5,!4,!7/$80%5."5."6/"6."8/#90$3*1(7.#80%5-"5.#71&:3(92&2*6,";1'=4);1'8/$90%;2&6-!3*7.#6-!2)1(6."3*.%7.#:2&6."8/$;3(:3'80$1*70#6/#80$5- 91%=5);2&3*7.#=4)90$5,!8/$90%7.#7."7."8/#=4(H=/  !!!!!!)I;8QEAS=9C+)C'%B#A$8 &   """###"#"""""!"#""%$$&'&(*)&&&&))3;;,A7'A8*B:,?7)=5(A9,B:-?7+=4)>6*C<0C;/=6*?7+@8,>7*=6*@9-@9-=6*=6*>7+?7+;3';3'=6*=5)<5)=5)=5)>6*>5*=4(<4(=5)=5)@8,?7+<3'=4(?6*>5)>4(:0$90#<4'=6);4(<5*:3(=7,?8->6+>6*;2&7/#:2&>6*<4)80%6-#8/$6,"4* 5+!4+!2) /')!$" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -!)$("1+ 5-"/(.&.'1*1* .&*#&          -                  - - - -   - - - -      - - -      -  -   - -  -)'*&%*'()&&'%%%%%PSQPH) 8 AGKKJKHGFFECCBA@? >< < : 9 7 6 5 4 3 -3 -/* (000 /2A - - - - - - - - - !!!!!!!!!!!!""""""!!!!!!"""$$$###$$$"""!!! """######$$$!!!!!!""""""!!!!!! #########$$$%%%$$$ """$$$$$$%%%%%%###$$$$$$"""!!!!!! !!!!!!  !!! """%%%"""###""""""""" $$$$$$#########"""!!!!!!###""""""!!! ###""""""!!!!!!!!!!!!###"""!!!"""""" #########"""######!!!"""!!!###%%%"""###%%%&&&&&&"""!!!!!!!!!!!!""""""!!!!!!!!! !!!###""" !!!!!!!!!"""###"""""" """"""!!! !!! """ !!! """$$$!!!!!!""""""!!!!!!### ###"""3+!4,!2+ 0)4-"6/%1*!0) 3,"1* 3+!5.#80%6/#5."91%8/#5, 6-"8/$8/#7."5-!6-!6-"7/#8/$8/$7/$4+ 2*5-"70$5."5."6/"6."90$91%2)/&5,!80%5.#6/$81&;5)82&2*6-";1'=4);2'90%90%;2'7."4*6-"5, 2)1)80%7.#0'6-"80$5-!7/#;3'92&:2&4- 6."81$90$4, 80$=5)<4(4+5,!;2'8/$6-"90$90%7.#8/$8/$90$<3(@6)G<- !!!!!!,8*)L;8PA;@+$=)#275* ###   !!! """##"""""!!#"#&%%'''(*)(((*++0339BA5LI2RV4T_6Q[9SX9VT/JE - - - - - - - - - - - - - - - -   - - - - - - - - - - - - VH3C9*<3%>6(?6)A9,=5(?7+A9-?6+<3'>5*C;/C;/?7+@9-B;.@8,=5)@8,A9->7+>6*?8,>7+:3';3'>7+?7+>7+>6*;3'<4(?5*<3(<4(>5*?6+B9-A8,<3'<4(?6*=4'=4';1%90#>5)?8*;4'<5):3(>7,?8->6+=5):2&90$;2&90%:2'7/$91&:1'8/%6-"6,"5,!5,!2).%+")!%! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "'!/)3,!0)/'.'/(/(-%)"$          -                - - - -   - - - - - -    -  - -      -     - - /*(0*'/+)-)'+'%)&$'&%%%%##$OMPQ= , 8 AFG H G E E FFDBA@? > = < ; 9 8 7 6 5 4 4 3 -1 /.% +0/0 0 -04 - - - - - - - - - - - - !!!!!!!!!!!!""""""!!!""""""###"""###"""  $$$!!!""""""""""""""""""""""""!!!###!!!"""###$$$%%%&&&$$$""""""###%%%&&&%%%%%%$$$"""""""""!!!!!!!!!!!! ###!!! !!!!!!!!!"""!!!""""""!!!###$$$!!!"""$$$###!!!!!!$$$"""!!! !!!######$$$"""!!!###!!! """"""!!!  !!!""""""######!!!"""""" ######"""""""""$$$$$$"""!!!  """"""!!!!!! !!!######!!! !!!!!! """$$$###"""!!! !!! !!!  !!! !!!!!!###$$$!!!!!!!!!!!!"""!!!!!!!!!  """ 2+ .'3,"4-#2+!1* 2* 0)2* 5-"70$5-!5-!80$6."3+6-"8/$8/$6-"5, 5,!4+3*3+ 5-!5,!1(.&3+ 80%6."4- 4- 5-!:1%90%2)0'4,!7/$6/$4."6/$:3(70%3+6-";2(=4);2(90%90%:1&6-"2)3*4+ 4, 4, 91&7/#0(5,!80$4, 4-!91%91%;3'5."6/#91%80$3+7/"<4(<3'4+4+ :1&7.#7."90%:1%6-"8/#8/$7.#<3(:1&?5(gWA *>))H:2JB5D5*;."8( 78'   !!!!"!"""!!!#"#'&&)()***)))---).-8AA:NM4PO9SW6Q[5T\2UU6JI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - zgLD9*<3%<2%?6)>6)?7*=5(?6*@7,>6*;3'>6*B:.@8,@8,?7+@9-@8,=5)@8,B:.>6*<5)>6*>6*>6*>7+?8,=5)=6*>6*:2&;2'?6+;3(>5*?6+?7+@8,@8,;3'=5)@8+>5)>5);1%9/">6)?8+<5)<5):4)=7,>7,=5*<3(90%90$;2&<3'@9-=5*:2&:1%90$8/$7.#6-"6-"3*/&,%,%-'+%"  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - & .'1*0(0(/(/(/'-&(!# -       -   -            - - - - - -    - - -    -    -     -     - - 3+(0)&3-)1,',($+&$)&$'&$$%$!""LLL I% -0 ; BEF G E DEECA? ? > < ; : 9 7 6 6 5 4 3 2 2 -1/ ., ' ,///. O - - - - - - - - - - - -######"""!!!!!!###"""!!!######$$$$$$!!!"""######"""###%%%$$$$$$###"""$$$"""###"""!!!###"""###%%%'''&&&$$$$$$$$$%%%&&&&&&$$$""""""###"""""" !!!   !!! """!!!!!!!!!!!!"""!!!""""""###""""""""""""###!!!!!! !!!""""""###!!!"""###""""""&&&"""""""""!!!!!!""""""###""""""  """###""""""!!!""""""!!!"""""""""!!!!!!$$$$$$"""!!!!!!######""""""###$$$###!!!!!!!!!!!!  """""""""""" !!!!!!!!!  !!!!!!""" !!!""" !!!!!! """"""!!! !!!"""!!!4-#2+!0)1* 1) /(1)5."6/$4,!4, 7/#6."4, 7.#91%90$8/#3*3*2*2*3*4,!5-"1(/&4,!91&5."2*2*4- 91%91%3*2)5,"80%6.#5.#70%;4)81%3+ 5,!:1&<3);2(90%8/$90%7/#3*4, 4, 2*4, 91&80$2*6.":2&4, 4, 81%:2&:2&5-!6."80$7/#3+6.">5)<3'4+ 5,!:1%6-"6-!90%90%7."90%5,!8/#:1&90%7."D9*0&32*!@0(;*!=(#<#%@*//1.,-+   !!!!!!!"!#""'&'+)*%%%***...,//?>BBNQ3PO5RR5XY3[[5VV;OO)(& - - - - - - - - - - - - - - - - - - - -    - - - - - - - - -  LA1?6(;2&=4'A8+?7*?7*>6)?7+?7+>5*;2'>6+B:/A:.@9-?7+@9,?8,=6*?8,A9-<4(;3'<5)>6*>6*>6*=6*=6*=6*<5);3':2'=4)91&>6*>6*>6*>6*?7+<4(=5(@8+?6)?6*=3&90#>5(?8*>7*=6*;5*>7,?8-=5*<4):2&80$80$<3'>6+91%91%80$8/#90$90$8/#8/#6-!1)/&/'1*.&*#%   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -& .'0)1)0(/'-&0)-%'" -         - -              - - -        - -    -    -     -    - -4+(5,'7.)5.)5.)0*%-($+'$(&#&%###"IHKK< % 4 =CE E E CCB@? > = < : 9 9 7 6 5 4 3 2 1 0 -/ // 0 -0 -+ *//. .0@ - - - - - - - - -  ###!!!"""$$$###!!!"""%%%%%%$$$###!!!"""&&&###%%%&&&%%%%%%!!!###$$$"""!!!"""%%%$$$!!!!!!######$$$&&&%%%###%%%%%%%%%%%%###"""!!!"""""""""!!!!!!  !!!  """###### !!!$$$"""""" !!!###""""""""""""!!! !!! """!!! !!!"""###!!!###!!! """"""""""""!!!"""###!!!"""!!!""""""######""""""!!! ###!!!!!!""" """  """%%%$$$!!!"""!!!"""!!!!!!!!!  !!!!!!"""###"""   """  ###!!!"""!!! ###"""!!!!!!!!!""" !!!###!!!   3,"3,#3,"1) 0)5.#5.#3+ 3+ 7/#6."4, 7/#;2&8/$7/#2)2)4, 6."7/$8/$80%/&/&6.#91%5-!3, 3, 3, 7/#80$4, 3*6.#90%6.#70%82&;4(80%4+ 3* 90%;2(:1'6-#6-"6.#5, 0(3*3+0(4, 91&91%3+6.#:1&4, 4-!91%:3'91%5-!5-!80$80$3*3*=3'=4(7."7.#:1&6-"5, :1%90$8/$8/$7.#7.#;2&90$3*:0"J>.* %7&#Q.2H-.B'-=$02EF*[U+DC """!!!!!!#$#('(+**&&&+++////,,<:?>PP3SQ0PP0TU1Y[7\^=QS011 - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - fWBF<.;2&;2&>5)B9,@8+>6)?6*@8,@7+>5):2'=5*A9.B:.@9-?8,@8,=6*:2&;4(>6*<4(;3'=6*?8,?7+<4(>6*=6*<5)=6*:3';2';3(8/$<4(=6*?8,?8,>6*;4(>6*>6)=5(@7*>5(<2%>5(?8*?7+=6+<5*>7,?8-?7,>5*;3'7/#:1%=4(?8,=5)91%90%90$90$90$:0%90$7."1(/'.&0(.&-&+%("#  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -' .'0)1)0(.&.&.'.')"&        -  -             -   - - -       - - - -        -     - - -  -8-'7+&8-'4,'4+'2*$1*%.($)%!'$!%#!!! FE F G6 *6 ?B C C B @ ? > > < ; : 9 8 7 6 5 4 3 1 0 -/ -. -, - - -. -/ / -) -,/ / -. -.5 - - - - - - - - - !!!###$$$"""###%%%###&&&%%%""""""$$$###%%%&&&%%%&&&&&&%%%!!!"""$$$$$$$$$%%%###!!! """""""""$$$"""%%%&&&$$$###$$$###!!!!!!"""###!!!!!!!!! !!!!!!!!!!!!   !!! !!!!!!!!!!!!""""""!!!###!!!!!!"""!!! !!!   !!!"""$$$"""###""" !!!"""""" !!!!!!"""""""""""" !!!######"""$$$%%%!!!  !!!!!!!!!###!!!"""!!! !!!$$$###!!! !!!""""""!!! !!!"""###"""!!! !!!###!!! !!!""" !!!""" !!!!!!!!!"""###!!! !!! """6.%2+!0)4-"5.#2*2+6."5-!2*6.";2'7.#7/#3+4+ 7.#80$90%80%7/$,#/&7/$91&7/#6."4-!5-!6/"7."4+ 1(6-"90%7/$70%81%;4)91&2*4+ :1&;2(90&7.$7/$7/$4, 1(4, 7/#2)4, 80$7/#3*6-":1&4, 4-!91%:2&91%6."6-!8/#:2&4, 2)<3'>5)8/#7.#:1%6-!3*<3':1%7.#6-!7.#7.#:1&:1%2)7."C8*_O9" "41)KA<<20@JE:YW1bb0\^3KP """"""!!!$$$((("""'''+++0000//69<8HJ4PP0OQ1QT0UW5X[9PW5=A - - - - - - - - - - - - - -  - - - - - - - - - - - -   I?1?7*;2';3'?6*B9,@8+=5)>6*@8,@7,=4);2'=4)@8-A9.@8-?7,>7+<4(81%;3'>6*>6*;3'>6*@8,>6*<5)>6*<4(;4(=6*:2&;3(80$6.#<4(>6*?7+>6*<5)92%;3'?6*=4(>5)>4(>4(=4'?7)>6)?7+<5*=5+?7->6+<3(;2&7.#;3&=5)?8+=6*:1&;2':2&80$91%;2&;1%8.#1'1(/'1(3+ 3, 1)-%(!$"   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  (!/'1)2* 0)0)2* 0(0)*#%        -  -             - -  - - - - - - -   - - - -     -    -    - - -8,';-&;,&6+&4*&5+&3)#2)#0("+$)$ &# #" !!!BB D D=! -7 = @ @ -@ -> > = < : 9 8 7 6 5 5 4 3 2 0 / -. -- -- -- -/ 0 0 0 -- ' -+/ -. --/ M - - - - - - - - - - - - $$$!!!###$$$###'''((($$$###'''%%%%%%'''''''''%%%###"""$$$######$$$$$$###"""!!!!!!$$$$$$###$$$%%%'''&&&$$$######"""!!!"""###"""!!!"""!!!!!!"""###"""   !!!"""%%%!!!!!!!!!"""###""" ###!!!  !!!!!! !!!!!! """###!!!"""!!!###$$$###"""""""""!!!###"""!!!!!!""""""$$$!!!!!!!!!!!! !!!!!!!!!!!!   !!! """###""" !!!######!!! !!!###%%%""""""!!!!!! !!!"""!!!  !!!!!! """""" !!!""" !!! 2+!/(4-"5.#2+ 1)3+3+0(3+:1&7/#7/$4+4, 6.#6.#80%80%7.$/&/'6.#80%7/$6/#5."6."7/#6."5, 1(6-":1&80%7/%81&;4(91&2*1)8/%7/%5-"2*6-"80%5, 3*7."7/#1(3+91%7/$1)5-";3(5,!5-":2':3'81%6."6-"8/$:1&6,!3*<2&?5*8/#6-"90$5, 2)=4(:1&7.#5,!8/#6.";2&:1&5,!:0$<3&B7(' 0/'YNJXNM>[T3nf3bf6ag8Z^$&* """"""###%%%()(###(((,,,0002114475EF3SR1RR4RT1SV6RW6IQ=LU - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - -  ND5C;.=5);3(;3(>6*B9,@7+<4(=5)@8,@7,<4):2'<3(?7,@8->6+=5*<4):2'80$<4(@9-@8,;4(=6*?8,>6*=6*>6*;4(;3'=5);4(>5*<4(80$:3'=6*>6*;4(;4(<4(>6*=4(=5)=4(?6)<2&<3&>6)>7*?8,>6,>6,?7->5+=4)<3'8/#;3&>6*=5);4(81&90&90&8/$90%:1%8/$7-"2)3*2*1(3+5.#5.$2+"-&+$( $   - - - - - - - - - - - - - - - - - - - - - - - -#' ,$1)5-"4,!1)2*4,"3+!1* ,$&          -            - - - - -   - -    - -        -     =.'<-%=-%3)$3($6+&4("1& /%-$,% ($!%#!&$!"" BC@?1 $ -1 -9 < > -> = -= ; : 8 7 6 5 4 3 3 3 1 0 . -- - -. -. -. - -- -- 0 . + -/. . --+A - - - - - - """!!!%%%&&&###$$$%%%%%%!!!%%%%%%&&&'''&&&%%%$$$###$$$%%%$$$$$$$$$###$$$###""""""###%%%%%%&&&&&&&&&&&&%%%###"""""" """$$$"""!!!!!!!!!!!!"""!!!  !!! !!!!!!"""  !!!"""!!!"""###!!!  """"""""""""""""""### !!!!!!$$$%%%%%%%%%!!!!!!"""######"""###"""###"""  !!!!!! !!!!!! !!!"""  !!!!!!!!!""" !!!!!!  !!!!!!""" !!!""""""  !!! !!! !!!!!!"""!!! 5-"5.#2*/'0(4+ 1(3+90%7/#7/#4+4, 7.#6.#80%90&7.$/&.&5-"7/$6/#5."5."5-!5-!5,!3*0&4*6."6.#5.#70$92'81%1)1)80&80&5-#1)6.#90%4, 5-!6."7/#2*3*7."7/#3+6-";3(6.#5."92';3(:3'7/#6-!90%90$7."4*<2'@6+90%6-";2&4+ 3*;1&:1&7."7.#90%6-!;2&<3(7.#;1%;2&<2$I=.$ - ',$CMIUUVNVZ?ag;]n6\g8ZX&*,  """%%%'''"""%%%)))---111333/46.ED7TT&BC8UX3UV4UX7OU2IO)6: - - - - - - - - - -  - - - - - - - - - - - - - l]EH?1?7+>6*<4);3(>6*B9,?7+;3'<4(?7+?6+;3(8/$:1&=5*=6*;3(;3(;4(;3(92&<5)B;/@9-<5)>6*?8,>7+=6*?7+<4(;4(?7+<5)=4(=5)81%:2&<5)?7+>7+=6);4(=4(<3(<3'80$<3';2%<3%>7)?7*?8,?7-@8/A8/>5+<2(;2&90$<3'<3';4':2'7/%7.$7.$7.$90%:1%8/$7-"4*3)3)2)5, 7."4,!2) 2) .%/&,$' $  - - - - - - - - - - - - - - -   $("*$-&4,!80%5-"1)1)3+!4-"2* .')"     -                - - - - - -      -    -   <.'@.&H1&A/%9,%3("2& 2%1$0#/$.% *$!*$"($!&$ #!A@@? 7!) 2 9 < < -; -; : 8 7 6 4 -3 -2 -1 -1 -0 0 . -- - - -. -. . . . - -- -/ -0 6!=.$---+ -5 - - - - - - - - - $$$###$$$%%%###"""###&&&&&&%%%%%%%%%%%%#########%%%%%%$$$%%%######"""$$$$$$%%%###$$$%%%'''&&&&&&&&&%%%###"""###"""!!! """"""!!! !!!  !!!!!!  """"""""" !!!!!! """!!!"""""""""!!! !!!!!! !!!############""""""###!!!!!! """!!!###$$$$$$###"""!!!$$$$$$###"""""""""""" !!!!!!!!!   !!!### !!!!!!!!!  !!!!!! !!!###### !!!!!! !!!"""!!!   !!!6.#1)-%2*5-"2*4+ 80%6.#6-"1(2*6-"6-"8/$8/%6-#0'/'7/$91&80%5."5."5-!5.!5-!3*1'4+ 6.#5.#5-#3+ 92'70%.&2*:1'80&5.#3+!4,!7/$70$6."80$7."2)4, 90%91%3*6-":3'70$6.#:2'<4):3'6."5-!90%:0%7."5+<2'?6+90$5, ;2'5,!4+90%90$6-"90$:1&6-":1%=4)8/#:0$;2%7-!@5']N:& - - +50BKIPXY^knKty5):2&;3'>5*=4):1&6."90%=5*<4):2';3(=5*>6*;3'<4(B:.>7+<4(=6*?7+>6*>7+@8,=5)<5)A:.;3'?7+>6*91&;3';3'<5)?7+?7+<5(<3(>5):1&>5)<3':1%;2$?7)?7*>7+>7,@8/A9/?6+>4*;1&90$=4(;3':3&:2'6.%5-$4,#6-#7.$6-#7.#5,"3*2(3)5,!6-"5, 4+ 3* 3*0'1(.'*")!(!! - - - - - - - - - - -#' )#-&0(1)5,!91%6-"2*1)2* 4,!2* ,%(!        - -             - -  -          - - A/&B.$F0#?, ;+!6*#5' 3%3%2$0#/$-$ *#'"'!%"$!!  BB A > 6 + 3 -8 9 : -: 8 7 6 4 3 -1 -0 / / -/ -. - -- - -- -. -. . . / - . . / 2;(9+ -,,+ N - - - - - - - - - $$$###%%%$$$###%%%%%%%%%&&&&&&&&&%%%%%%$$$$$$&&&%%%"""$$$###$$$%%%######%%%%%%%%%$$$$$$&&&&&&$$$""" !!!"""###!!! """!!!!!!!!!  !!! !!!!!!"""###"""!!!###### !!!!!!!!!"""""""""""""""!!!"""""""""######"""!!!""""""!!! !!!!!!"""######$$$""""""$$$$$$$$$""""""""" !!!  ###!!!  !!! """  !!! !!!###$$$###  ### #########!!!!!!  !!!"""  1)-%4+ 6.#3+ 3+ 5-"6.#5-"3+2*7.#6-"7.#7.#6-"0'1)7/$80%6.#3+4, 6."7/#6."3*1'5+ 8/$5-"3+!2+81%6/#.&4, 80&80'4,"3+!0(70$:3'80$8/$6."2*5-!;3';2&1)1)80%7/$5-":2'=5*;3(4,!6.";1&<2'6,!4*<2'?5*8/$2*;2&6."5, 90%90$6-"90$:1%7."90$<3'9/$7.";1%9/#;1$F;,t`E+#   *##E;5(=5)=4);3'90%7/#:2&=5)<4(:1&:2&=4);3'90%7.#;2'>6*?7+>6*>6*@8,?7+<4(;3'@8,=5)=5)?8,?8,?8,A:.A:.?7+>6*A:.<4(<3(>6*<5)<4)=6*>7+>7*>7+<4(;3'?6+>6*<3(90$:1$<3%@7*@7+>6+=5+>7-?7->5*=3);2&;1%>6);4'92%81&7/%6.$5-$6.$6-$5-"7.$6-#2)0'3*7-#8.#7-"5,!5,!4* 4*4* 2)-%-%-%*#'   - - - - -   %)"-&0)0)1)0'2)91%7."3*1)2)3+ 2)+$)!        - -        -      - - - -    @/'E0%H/!E. B-<*8(:' 8' 6&4%2$0#/$)!( & & % $!# ! B? = =. " -- -3 6 7 7 7 6 4 3 2 -0 -/ . - - -. -- -- -- -- -. -. -. -. / - , , -- . -, +-,++ )@ - - - - - - - - - - - - - - - """%%%$$$!!!###$$$%%%&&&%%%%%%$$$%%%###$$$&&&$$$"""!!!###$$$"""###"""%%%$$$!!!"""$$$###""" !!!"""###%%%""" !!!###"""!!!!!!!!!!!!  """!!!"""""""""###"""###"""!!!!!!!!!"""""""""###"""""" !!! """######!!! !!!!!!!!!"""###!!!!!!"""$$$###$$$!!!""""""###"""""""""!!!!!!"""!!!   !!!  !!!   !!!"""!!!!!!###$$$###!!!!!!!!!  """###!!!!!!"""!!!  !!!"""!!!.%4+ 5-"3+ 3+ 5-"7/%6.#4+!2)8.#7-"7-"7."4, .'0(70&93(5.#3+5, 80#7/#80#4+ 1'5,!90%5-"2+ 5.#7/$6/#/(2*80%;3*7/%3,"5-"5."92&7/$6."5-!2*4, ;2':1&3*.&6.#6.#4,!91&>6+<4)5,!7."<3'=3(7-!5*<2'>5)8/$3*:1&7.#5,!:1&:1&7."90$:0%7."8/$<3'90$7-!90$7.!7-!>4'@4%)   -"7.*=C7?YN@ijAho9]e,hf4RU%%%)))"""###&&&+++///444666788*=5)A9-A9-?6*?6*A9-?6*=4(<3'@7+=4(;3'<4(A9-B9-B:.C;/@8,>6*@8,>6*>5*>6*=5)<4(?7+@9-?8,>6*=6*=5)>6*?6+=5)=4);1%<3%@8*@7+>6+=5+>6,>6,=4)<2';1&;2%;3&91$:3%91&6/%6.$5-#5-#5-"6-#90&80%4+ 0'2)5,!7.":0%7.$7-#4+ 4+ 4+ 4+ 0'1(2)2* ,%*$% - - - "% )",$0)2+!/(0(2*2*7/#6."4+ 2)0(3* 1(+#(!                - - - -   - - - - F1&F0$L3#K2#H2#D1#=(:#;(7(2'3&3&!0$** )!(!'!% ##  =< < <8 %. -2 4 4 -4 -4 3 2 0 -/ -- , , - -- -. -. . -. - -. -. -. . . -, -- - -/ -. -( /,,,,- 5 - - -  $$$###"""'''&&&'''%%%$$$$$$$$$######%%%$$$"""###!!!"""###$$$$$$$$$  #########""""""###$$$$$$$$$"""###$$$###"""!!!!!!   %%%$$$%%%%%%###"""###"""!!! !!!"""""""""#########$$$###"""""""""""""""!!! """""" """%%%###""" ###$$$$$$""""""!!!!!!!!!"""######"""!!! !!!   !!! !!!  !!!#########$$$$$$###!!! !!! !!!  !!!!!! !!!!!!  ###"""3+ 4,!3+ 4,!6/$80&7/$4,!3*7-"7-!7-"7/#4,!.&/'70&92'4-"2*4, 7."7."7/"3*/'4, 8/$4+ 4, 6.#91&5-".&1)92';4*80&6.$3+ 6.#92&7/#6-"5-!4+4+ ;3':1%3*1)7/$6.#3, 91&?7,<4)5-!7."<2'=3(7-"5* <1&=4(8/$4+ 90%7.#6-":1&<3'8/#90%;2'8/#90%=4(8/#6,!:0$7-!6-!;1%;0"UG3%  - <"$Q@C6TO3ha:klBdl3ce6WY  %%% ###$$$'''+++111444666999.66*IF9YY@Z]:Z^8W[9SY:RY=R](69 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - J@1>4(91%<4(<3(:2&8/$80$>5)@7+>6*:2&;3'=5)>6*<4(:2&<4(A8,A9->5)>6*B:.A9-=4(=5)@7+?6*=5)?7+A9-@7+@8,B9-?7+>6*@8,?7+=5)=4(;3'=5)@8,@7,A9-@8,<4(;3'>6*>6)>6)=4(:0#<2$?7)>6*>6+=5+>7-?7-=5*=3(;1%8/#:2%<5(;4';3(80&7/%5.$4-"5-"6-#7.$7.$6-#2)2)4+ 6-!90$9/&8.%4* 3)3)3)0&2(6,!4+ .&0).')"! - - -  & *#+$+#,$1*2+ -%1)2*2*6."4, 2*2)1)4+!0()"'      -            - - - -  - - - C0'H1%D."L2#K3#K5'G2%A)>&?* 8)0'3&2$/!.!/$.#*#*"' %"! =:9 9 2  &, -0 -1 -1 -1 -1 0 -/ -- , ,, - -- -- -. -- -. . . . . - -- -, , + -- -. -, ' 0!---. E - - - - - - - - -$$$$$$$$$$$$%%%%%%&&&%%%$$$!!!"""###"""###"""!!!$$$$$$$$$$$$""" """"""$$$$$$$$$############$$$############"""!!!!!!!!!    ###%%%&&&&&&$$$""""""!!! !!!"""$$$###!!!"""$$$$$$$$$###!!!"""###!!!"""""""""!!! ###$$$$$$%%%######$$$$$$%%%$$$!!!""""""######"""!!!!!!  !!!!!! !!!""" !!!!!! !!!  ###$$$$$$%%%%%%$$$$$$!!!!!!  !!! !!! """### 3+ 4,"6/$6/$6.#3+!2)6,!7-!7."8/#5-".'/'70&92'4-"2*4, 5-!6."6."2)/'6."91%5, 3+6.#91&70%/'3+ 80&92'91'5.#4-"5.#6.#3+ 1*3+ 5-"4,!80$80%3*1)7/$4-!3, <3(@8-<3(6-"7.#<2'=3(7,!5*<1&<3(8/#5,!90$8/$6-":1%:1&7.#8/$;2'90%:1&=4(7."4*;1&9/#8.":0$5+B7(pT -" -   5 E,3IAIDgf2ki9ej0ih0ca27< """$$$"""$$$%%%(((+++222555777999377)EC8NQ>T[@Y_>X^:V\8SY:S\1BI - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - -  l\ED:,80$91%=4(=5);3'80$90%?6*@8,?6*;3'=5)?6*?6*<3':1%;3'?7+@8,=5)>6*B:.A9-<4(=4(?7+?7+=5)>6*@7+?6*>6*@7+?7+?6*A9-@7+>6*=4);2'<4(@7,?7+@7,@7,;3':2&>6*>6)?6)>6(:2%:2%>5(>6)=4(=5)?7,@8-=5*=4);2'8/#7/"80#;4&<4)91&91&80&7/$7/$6/$5-"5,!5,!3+3*4+ 5, 7."9/'8.%5+!3)4*4)2(4*6-!5,5, 2*2*/&)!$   - "$ '!,%/( .' -%-%1)3+ ,$2+ 1)1(7.#5-!2*0'1(3+!0()"%     - -  - -             - H2&I1$N3#J1"G1"J5(G/$A&@(A,7(3&7%2"0 .!1$0#-,!*!'$#!!7 5 -8 8 +  &, -. / -/ -/ -. -- , -, , - -- -- -- -- -- -- -. . . . - -- - , + -, / . -+ -* ,---, @ - - - - - - - - - ##################"""### !!!###""""""%%%$$$$$$$$$$$$$$$"""###"""""""""#########"""#########""""""""""""""""""""""""  !!!   """"""!!!"""!!!###""" !!!!!!%%%%%%&&&$$$$$$######$$$###!!!###""""""######!!!!!!"""!!! ###$$$$$$%%%$$$"""!!!###############"""!!!!!!"""!!! """ """###""" """!!! !!!###"""!!! !!!######$$$%%%%%%%%%$$$###"""!!!   !!!   """###"""!!!"""3,!5.#5.#5.#2* 1(4+6-!6-!7.#5-"-&-&6.$70%3,!2*4, 5- 7."6."1)/'6."80$5,!3+ 7/$:2'70%.&3+ 81&81&6/$4-"3,!5-"4,"3+ 1)3+ 3+ 2*5-"6/$1(1(90%80$5-!;4(=5):2'6."7.";2&<3'6, 4)=3(>5)90$6-"90$:1%6-"8/#:1&90%8/#:1&90$8/#;2'8/#4*<2&:0$7."9/#4+=2%J?. #   - -0D00MLOA`bBnq@dn:cl4ae9@F!!!$$$&&&"""%%%&&&(((,,,222555777999688.CD6LP8RW5SX:^`1[X1WV4VT/PI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  G<-<3&7."7/#=4(?6*>5);3':2&@7+@8+>6*;2&>6*@8,@8,;3':1%=5)@8,A9-<4(>5)A9-@7+;3'<3'>6*>6*>5)?6*?7+>5)=5)?6*@7+?7+A9-@7+>6*=4):2&;3'?6+>5)=4)>6*;2&;2&?6*?7*@8+?7*;3&;3%?7*>6)=5)<4(>6*@7,=5*<5):3'6."5.!5.":2&;4)91'7/%80%6.#7/$6.#5,!5,!3+3*2*4+ 5, 8/#8.&8.%6,"5+ 6, 6+5*8. 6,7- 8/!6, 4+2)-$+#)!'!  !% '",&-&0(3*!1( /&,$2* 3+!.'2*/'0(5-"5-"3*0'0'2)0(*##     -   - -       - -   +((J2%F/"N3$I1$A,C0$F/$A(?'<(5'8'<&0/// 1!1"/", (&%%#"!4 5 6 6 3  ' + -- . -- -- - -- -, -- -. . - -- -- -- -- -. . . . -. -- - - , -, -- / -/ -* -,.-,.. 7 - - - - - - - - - !!!!!!######$$$&&&%%%""""""$$$$$$$$$$$$%%%$$$###""""""""""""###"""######$$$###$$$%%%###""" !!!!!!!!!"""""""""  """!!!  """!!!  !!!!!!###$$$"""$$$$$$$$$%%%$$$#########!!!!!!###"""######!!!!!!!!!!!!""""""  ###$$$&&&###!!!"""%%%$$$$$$###"""!!!!!!"""$$$%%%###!!!"""###"""!!!!!!""""""!!!      !!!$$$%%%$$$$$$%%%&&&%%%$$$"""!!!!!!     !!!###"""!!!"""###!!! 5.#6/$6.$3+ 1(4+6-!5-!5-"3,!,$,%4-"6/$3+ 1)3+5-!7."5-!1)0(7.#80$3+ 2*5-"91'80&-%0(91&7/%2+ 1*2+ 4,"2+ 2*0(5-"1)2+5."5.#0(1(90%8/$6."<4(>6*:2&5."5-!90$<2'6,!4)>4)=4(8/#6-!91%:1%4+6-!:2&:1%80$:1%7.#4, :1&9/$2)90$9/$6-!90#5,90#D9*iY@&   *B/-QHHO`_6)@8,?7+=5(90$90$?7*B9-A9-<4(=4(@8,@7+<3(;3'=5)=5)<4(>5)?7+>5)=5)?6*@8,@7+A9-?7*=5(<4'91%;2&>6*=5);3'>5*;3'<3'?7*?7*A9,@8+;3%:2$?7*>6)?6*=4)?6+?7+=5)<4(:3'7/#70$81$;4(:3(6/$6.$7/$7.#6-"5,!6,!7-"5+ 3)3)8."7."6-"6,#7-$5+!4*6, 5+4*5+7-8/!8- 5+4+2(/&-$-%.&,%(!*#/(,&-'0)0)3+ 4+!0'-$+"3* 0)2* 2*1)0(5-"6.#3+ 0)/'/'-%(!$        - -        - -  I3&I1$R8'P6&I1#;&8$?( ?);&6%4&;'2 /0/0 0 3$5&-*(&&$$#!5 4 4 3 - ! ' * -, -- -- -, -, -- . . - -- -- -- -- -- -- -- -- -- - , - - , -, -- / -/ (/,,..@" - - - - - - - - - - - - $$$###$$$&&&(((%%%$$$$$$%%%$$$$$$###$$$###"""!!!"""""""""""""""###$$$$$$$$$%%%$$$!!! !!!!!!   !!! """ !!!###############$$$$$$""""""""""""!!!!!!######### """"""!!!"""######""""""!!!$$$$$$######"""###%%%$$$###!!!!!!!!!!!!###%%%%%%$$$###"""######!!! !!! !!!  !!!  """$$$$$$$$$$$$&&&&&&$$$###!!!!!!""""""!!! !!!!!! !!!!!!!!!!!!!!!!!!  !!!!!! !!!80%7/%3+ 0(3+5, 4+ 3+ 3+ +#+$3,!5/$3, 1)3+4, 7.#6-"2*1(7."80%5-"3+ 5.#7/$4,",$/(4-"5.#2+ 1*2* 3,!3+ 0(2*6.#2+4,!6.#7/$2)3*:1&80$7/#<5)>7+:2&5-!5,!90%;2&7-"6+ >4(?6*:2&6."90$;2&4+3+:1%91%80$:1%7/#4+80$90#/&<2&:1$7-!8/#5, 9/#<3%E9) ! -  '<' ;/+DOLHXXD_e,LO*8>NLN6US1W_:N^/MN8B?*35 - - - - - - - - - - - - - - - - - - - - - - - - - - -   D9*<3'=4(80$5, :2&@7+A9-<4(<3'@8+A9,?7*>6)@8+@8+>6)80#80#@7+B:-@8+>6)<4'?7+>6*;2&:1%>5)>5);3'=5)@7+?6*>6*>6*@8,?7+A8,>6*<4'<4':1%;2&>6*=5)<3'=4(;3';3'>5)>6)A9+@8+<4'<3'?7*?7+?6*=5)=5)>6+=5);4(;4(5."70$;4(=5)=5+80&6/$7/$80$6-"6-"8.#90$7."3)1'6,!8."7-"5+"5,"5+!4*6,!4+3)5+6,7-!7-!5,4+2(1'0'1(3+ 3,!1)1* 1*.(0)4,!3+5+ 5+ 2(,#/&2)4+!.&1)0(1)5.#5."1)0)/'.&,$(!&        - -        - 1/.K3%G0#R7'Q6$F.9#;$;%8%5%0$6&='2/02 2 2!4$1"+*++''$#!2 -2 -3 0 -) " ' -+ -- . - , , -- -. . -- -, , - -- -- , - - - - , ,, - -, -+ / -0 , % ),,--< - - - - - - - - - - - - - - - - - - %%%######$$$%%%&&&%%%$$$$$$###############!!!!!!""""""""""""###$$$$$$###%%%%%%###    !!! !!!!!!"""""""""######"""###"""######!!!###############!!!!!!###""""""###"""""""""###!!!"""######$$$%%%$$$!!!!!!""""""###&&&###$$$$$$######"""!!!!!! """###"""### !!!  !!! !!!!!!"""###$$$$$$#########"""!!!#########""""""!!!"""!!!""""""""" !!! """"""!!! !!!  !!! 6.$1)0'3+4, 3+1)3,!+$+$2+ 5.#3,!1)2*3+6."6."3*0(5-!80%6.#3+ 5-#7/$5.#,%.&3,!4-"4,"2+ 2+ 4,"4,"1*5-"80%4,!5-"80%:2'4+ 4+:2&80$7/#<4(=6*81%5.!5-!7."7.#7,!7,!>4)>6*90%4, 7."91%3*4+:1%:2&8/#:1%8/#3+:1%:1%1(<3&<3'7."7-"7-!:0%;2&>4&OB0  !   -%7!6%!==6=IE=3@0\_6bc %%% ###'''+++***...222666999:::;;;;=>&N\1)+>--?ML4[]9O`:JX9DI19< - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  RF5>4&;2&>5)80$5-!;3'?6*@7+;2&=4(@8+A9,?7*?7*A9,A9,>6):2%;2&?6*A9,?7*>5)<4'?7+?6*;3':2&?6*>6*;2&=4(@8,?7+>6*>5)?6*>5)@8,>6)=4(=5(;3&;2&=5)=4(;3&;2&;2&<3'>5(>6(@8*?7*;3&<4'>6)@8,?6+>6*<4(=5*=5):3':3'4-!70$<4(<5):3(6/$5-"6.#7.#5,!7.#8/#90$7."3*1'5+ 7-"7-"6,#6,"5+!5+ 4+3*2)5+6, 8."8."5+3)3)1(1'3*8/"80#3*2*4, 2*2*3+ 2*5+ 6,!5+ .%.%1)1)0)0)1)0)3,!4,!0)0(1)/'/(-&&         - -      - - -J3&J2$S6&Q6'N4%F-@(@';$6$."+"7'9(6$0/4!4"3!2!-)-.,+)&# //0 0 -/ - -% * -, -,- - -, -- -- -- -- -- -, , - ,, - , - - - +, - -- - -- 0 , %0(#,-./. 7 - - - - - - - - - - - - - - - - - - - - - ###"""###%%%&&&&&&%%%'''%%%$$$###"""!!!!!!"""######$$$$$$%%%%%%######$$$###    !!!!!!"""!!!"""######""""""$$$"""###""""""###$$$$$$$$$""" !!!!!!###$$$!!!""""""###$$$"""$$$$$$$$$%%%###!!!!!!#########$$$$$$ !!!###"""!!!"""!!!!!!###"""###$$$"""!!!!!!  """!!! !!!!!! !!!!!! !!!################## ###""""""!!!"""&&&$$$""""""""" !!!""" !!!!!!!!!"""!!!   !!!"""!!!2*0'2)4+ 5, 3+ 3,!-'*$1+!5.#3,!1)3*2*5,!5-"2)1(5-"91&4-"3+!4-"80&6.$-&0(5.#5-#4-"2+ 4-"6.$5-"3+ 5-"6/$3+ 3+ 91&;3(5,!5, :2&80$6/#;3'<5)92&5-!4+ 9/$:1%6,!7,!=3(>5):2&6-!8/#90%4, 7.";2&:1%80$<3':1%3+:1%8/"5+;2&;1%6-!7-!6,!90$;1%9/#D9)wdH  !   - 3&#5?4@C@8*1ZBPATU:`] $$$!!!###(((,,,,,,///222666999:::<<<>>>;@DA)$?,#>E<2^[,_^0WZ4OT&HJ - - - - - - - - - - - - - - - - - -  pVI>080#:1%?6*:2%7/"=5(?6*?6*;3'>5)?7*@8+?7*?7*A9,A9,?7*;3&:2%>6)A9,?7*<4'=5(@8+@7+;3'91%>6*>5):2&<3'@8,?7+>5)>6*>6*>6*A8,>6)<4'=4(;3&;2&=5(<4';3&;3&;3&<4&>6)?7)@8+>6):2%;3&=5)@8,?6*>6*=4)>6*=5)91%6."6."70#:3&<4(:2(70%80%90%7/$6-"7-"6,!7-"6,!4+3)5, 6-!7-"7-$8.$8.$6,!3)3*3*5+7- 8/"8/"6, 3)3)1'1'4+:0$80#2)2*6."4,!3+ 3+ 2)5,!7.#6-".%/%5,"3+!1)2)2*0(3*5,"2* 0(/(-&/'-&(!         -      - - -K3&H0#Q5%P4'N3&I0"E, D*!:%3",!."7%4%4$2!102 4!0,-2!3#1".*)#!--. . *! ' * + ,. -- -- -- , - -- -- -- , - -- , ,,- , ++- - -. - -- , + 4*$6/)-...20 - - - - - - - - - - - - - - - - - -   ###%%%&&&&&&&&&%%%%%%%%%###!!! !!!###$$$$$$###$$$%%%%%%%%%$$$$$$###"""   !!!!!!  !!!!!!!!! """############"""$$$$$$###"""!!! !!!$$$%%%$$$$$$!!!###### !!!""""""###$$$&&&%%%$$$$$$%%%$$$######$$$$$$%%%%%%"""!!!!!!"""### !!!###%%%###!!!""""""!!! """!!!  """%%%  !!!  !!!!!!!!!!!!"""###$$$$$$###$$$$$$ !!! !!! !!!######!!!"""### !!!  """######"""!!! !!! !!! !!!0'2)5, 5-"3,!,%)#1* 4-#3,!2*3* 1)4+!4,!0(/(4,"6/$2* 1* 1)7/%5-#,$.'4-"5.#5.#1*3,!6.$5-"2+3+ 3+ 0(2*80%:3(6-!5-!;2&80$6/#;3'<5)81%6/"8/#90$<3(8.#8-"=4(>5);2&7.":1%:1%4+5-!<3'90%90$;2&:1%5, :1%8/"6-!:0$8/#6-!8."5+ 8/#:1%7.!=2%C7'   " -  -+''-<,FOGC>B98?=WV2XR5EG!!!$$$(((,,,...///333666999999===>>>0'&9( A.!OPF5X[)[`7QPIA?0?>36 - - - - - - - - - - - - - - - - - - - - - - - - - - -  NC4C:-90$:2%@7*;3&80#>6)@8,?7+=4(>6*@8+@7+>6)?7*B:-B9-?7*<3&:2%>6)A9,?7*=5(<4'?7*@7+:2&91%>6*@7+8/#;3'@7+?6*=4(>6*>6*>6*A8,>5)<4'=5(;3&:2%<4&=5'=5(<4';3&;3%=5(?7)B9,?7*:1%;3'>6*@7+>5*<4(;3'>6*=5)91%5.!7/#6/":2&<5):2(81&91&91&8/$8.$6,!5+ 6,!5+ 5+ 4*5, 6-!7.#6-#6,"6,"5+ 3*3*2(5+7-!8."8."7.!4*3)3)2(5+90#8/#2)2)6-"5-"5-"5,!3*5,!8/$7.#0&2(5-"3+!0)1)0(.&3*4+!3+ .&,$,&-&.'+$         -    - - - -I3'J2%M2!N2"P4%M2%J0#F.!A*9$1"+!2". . /!2"3#1-00.2 3"3#5$0"-*'#,- . -/ @% # ( * + , - -- -, ,, - -. - - . -. -- , ,, ,++, - -. -/ / -- -*,6.))--./ -: - - - - - - - - - - - - - - - - - - - - - - - - -!!!%%%%%%$$$$$$%%%%%%$$$""" """$$$$$$$$$$$$$$$$$$###$$$$$$###!!!     !!!  """###"""!!! """""" !!!"""$$$$$$"""######$$$###"""$$$!!!!!! """!!!"""!!! """$$$!!!  """###%%%%%%$$$###"""$$$%%%###"""$$$###$$$$$$###"""$$$"""###!!!!!!"""###%%%&&&$$$""""""""" !!!""" !!!$$$  """""""""$$$$$$######$$$$$$!!!!!!  """"""""""""!!!""" !!! !!!!!!!!!""""""######!!! !!!  !!! 2*5,!6.#3,",&)$1+!4-#3, 1*0(/'2* 3+ /(.'4,"6.$1)2* 2* 6/%2+!+$.'4-"6.$6/$3,!5.#5.#3,!1)1*2+ 0(3+ :2';3(6-!6-";2'80$6/#;3'=5)81%5."7.#9/$;2'4*7,!>4)=4)91%6.":2&90%3*5- ;2&:1%:1%;2&7/#7.":1%:1$7-!8.#9/#9/$8/#6,!6-!:1%7-!8.">3$`P9  -   -  0@@4)5=2>66BAG5(:2%;2&?6);3&80#>5)@8+?6*=5)>6*@8+?7*=4(>6)B:-A9,>6);3&:2%>6)B:-A9,>6)=4(>6*?6*80$7/#=4(A9-6.!<3'?7+>6*<4(=4(=5)>6*A8,>6);3&;3&:2%;3&=4'=5'=5(;3%91$91$=5(<4'>6)@8,;4(;3'@8,?7+=5);2';3'=5);3';3'=5)7/#7/#:3';4(92'81&91&;2'<3(;1&:0$7-!6,!4*4*3*5+6, 6-"5-"4+!2)2)3)4+3)4+7-!8."7-!7-!5+4*3)3)5,8."8/#4, 2*5,!5,!5-"5,!2*4+ 6-"6-"0&2)5,"3+ 0(0)0)0(3*90&1).&.&-'-'-&*#         -     - - - J3&H0#Q5%O3#Q5%P5&J1#E. @)9$1"0"7$.,. /"1"-,13!113!00 1 -)(%#!! ,- / -/ /  -$ ( -* -, , , +++- - - - -- - . -. -- -- - ,, , - - / . -* - -* 0"60*,---. 6 - - - - - - - - - - - - - - -  - - -  $$$###$$$%%%&&&%%%"""!!! !!!""""""###$$$###"""""""""$$$### !!!!!!!!!     !!!""" !!!$$$"""######"""###"""""""""######$$$$$$###%%%$$$$$$###$$$###""""""!!!!!!!!! !!!!!!### !!!!!!"""###"""######"""###$$$###"""###$$$%%%###"""!!!$$$$$$$$$ !!!!!!!!!!!!######%%%$$$$$$###   !!!!!!"""###!!!!!!!!!!!!!!!###$$$%%%$$$###$$$$$$"""""""""  ###!!!"""### !!!!!!!!!  !!!"""############!!!!!!!!!!!!!!!!!! !!!!!!!!!"""!!!4, 5-#3,"-&+%3,"6/%1*/(,$-%0(1* /(-%4,#5-#2+!2+!1* 6.$2+!+$-&4-"70%92'4-"6/$5-#3,!1)2+3, 0)1*;3(:2'5,!6-":2&6."5-!;3'=6*91%6."7."8/#<2'4*5+ :1%<4(91%6-!:1%90$5, 6.":2&90$:2&=4(8/#7.":1%;1%7-!6, 8/#:0%8."5, 7.";1%6, 6-!7. B7'    -   );F'A*!N<>@BF8QS7^b8VY!!! """%%%***......000333777:::999>>>5335B'I5-CHJ5WZ+]\4TO42$,%## - - - - - - - - - - - - - - - - - - - - - - -  F;+@6(>5(<3&<3'>6)=5(:2%<4'?7*>6)=5)>5)?7*?7*=5(=5(A9,?7*=5(:2%;3&>6)B:-A9,=5(=5(@7+@8,80$7."=4(@7+7/#<3'?6*?6*=4(=4(=5)>6*@8,>6)<4';3&;3&=5(?6)>6(<4':2%80#91$;3&91$;3&A9-:2&;4(?8,=6*;3'92&:2&;3'91%:1%=4(8/#90$=4(=6*<4)91&80$:2&<2(6-!6, 6,!5*2'2(3*5+ 5+ 5,!6-#7.#5,!5,!3)6,!5+5+7-!8.#6- 6, 4*4*/%1'6- 8."8/#5-!2)4, 5-"6.#7/$4+ 4+ 5,!4+ 0'1(3+ 2*0(0(1*.&2*5.#3* /(.',&-'.'*$        - -     -   H2'I2%O5%Q6&P4$Q6&P5&I0"E- @):%4#0",-0"/"0#+(-2#3"2!3!2 1 /.+)'&&$"!- . -/ / (  & -* -+ ,,++, - ,,- , ,. -/ . . -. -- -- - -,- . -- , ** -4*$60*--, / -+0 - - - - - - - - - - - - - - - - - -  - - - - - - -"""$$$%%%%%%$$$###"""  !!!"""!!! !!!### !!!    !!!   !!!""" !!!"""### !!!"""$$$$$$#########"""!!!!!!"""$$$$$$#########%%%$$$%%%&&&%%%$$$%%%$$$"""!!! !!!"""""""""  !!!!!!"""#########$$$###$$$###""""""!!!!!!!!!$$$%%%"""$$$######  $$$$$$######### """  """ !!! """!!!!!!!!!!!!"""###"""!!!"""###!!!$$$$$$### """$$$###!!!!!!###"""######!!!###!!!""""""!!!###!!!!!!  !!!###$$$$$$$$$!!! !!! !!!""""""!!! """###!!! 4-"3,"-',&3,"70&0).',$.&0'0(/'+#3+"5.$0(.'2* 6.$1* ,%-&3,!5.#80&4-"6.$4-"3+ 1*3+ 5-"1)3+ :2':2&5, 5-!:1&5-!4, :3'=6*:2&5-!7.#90%<2'5+ 9.#>5)>5)91%5-!8/#90$5- 7.";3'80$90$>5)91%7/#;2&<2&4+5+90$9/#7-!4+8/#:1%6, 7-!6- >4%OB1 -     - 28"<#D%#9+-9MO>^b?UY"""!!!$$$&&&+++......000444999:::999>>>5)$7#D+F4,6)?7*:2%;3&@8+?7*>6)>5)?6*?7+=5)=5)@8,>6)=4(:2%=4(?7*A9-@8+;3&=5(@8,B:.:1%7/#>6*>6*91%;3'>6*@7+?6*>6*>6*=5)>6*>6*=5)=5(<4'<4'>5(>6)<4'<4':2%91$91%80$:2&C;/=5):3'=6*=5)92&91%:3&=5)=5)=5)>5)6."6.";3'>7+>7+92'6."80%90%9/$9.#5+ 2(2'1'3)6, 6,!8.#8/$7.#3* 5,!1(5+ 5+5+6-!9/$8.#7-"4*3(0&1(5,5, 6-!4, 2*4, 4,!6-"80%6-"5,!5,!4+ 1(0'2* 3+ 2+0).'+#3*2* 1*/(.',&+%,%(!        - -     -I2&G0#N4%P5&O5%M3#M3%H/"D, @)8$4#/!-0"1$1%."$&+0".-/1!4#2!-+)('('$" . -/ .- &  " ( -+ -, - -,- - - ,- ,,- -. -- -- . -. -- - ,,- . -. , , + -,6/*(-./ 0 -9" - - - - - - - - -  - - - - - - - - - - - - - -$$$$$$%%%%%%###!!!!!! """  !!! !!!  """  """###""" !!!!!!!!! """$$$$$$%%%%%%###"""""""""!!!""""""###$$$#########%%%%%%&&&&&&%%%%%%$$$$$$$$$###""""""###"""!!! !!!!!!!!!!!!######%%%%%%%%%%%%###!!! !!!!!!""""""$$$"""###!!! !!!!!!!!!###$$$###$$$###!!!!!!!!! !!! !!!""""""!!!!!!!!! !!!"""###"""""""""$$$$$$###""""""###### """######""""""$$$$$$$$$######%%%###!!!!!! """######$$$%%%  !!!!!!""""""  !!!!!!!!!!!!""" 3,"-'+%2+!5-#/(.'.&0(0(0'/'*"2*!4,#0) .'1* 6/%2+",%,%1*3,!5-#4,"5.#5-#3+ 1)3+ 6.#3+ 4-!;3(:2&5, 5-!:2&5."3+92&=6*:3'6."6-!90$;1&6+ :0%>6*=4(90$7."90$91%5-!7.";3'<4(91%:2&8/#8/#:1&:1%5, 7.";2&7-"6-!5, 7.";2&9/#8."5,8/!G<,lX>    -  -*<*<#E$!<""0.+BZ[>^_>MO!!!""""""&&&'''+++...///111666:::::::::?>>@61E1"J1 D835IO)X\5VZ=??5(%$"" - - - - - - - - - - - - - - - - -  H;-@3'>5)<5(;0$;/#>7+?8+;1%;1%?8+@8+>6)>5)>5)=5);3'=4(A9->6*<4(91%=4(@7+A8,>6*;2&=5)?7+A9-:2&7/#?6*?6*;3';2&>5)@7+?7+?6*?6*<4(<4(?6*?6*>6*<4':2%=5(>6)<4'?6)<3'91%90$:1&:2&A9-=6*80$:3'=5)92%91%;4'=5)=5)=4(<3'6."6.";3'>7+>7+92'5-"7/#6,!5+ 6+ 4*1&.$.$0&5+6-!90$8/%90%8/%3*4+ 6-"5,!4+6,!7-"7-!7-"5+2(0&2(7-!7."7."4+ 3*4, 3+3+ 7.#4+!5,!5,!4+ 2)1)4-"3,!1*1*3+ ,%1)3,!/'0(/(,&+%+%'!        - -    - -F1'H1%O8)M5%K2#I0!G.G/ E. @*<&3!2!2!+-1$0#, %'-, ,-/ -0!1!*(++))'%! / 0 / --* -$ ) * , -,,- - ,-- - - ,+- - - - - ,+,- -- -- +- -(/ 91--./ / - -6 - - - - - - - - - $$$$$$###"""""" """!!!!!!!!!!!! !!!!!! !!!"""""" """"""######$$$###"""""" !!!$$$$$$%%%&&&$$$!!!"""######"""""""""###$$$$$$$$$$$$%%%%%%%%%%%%###$$$%%%######""""""!!!###"""  ###""""""!!!"""$$$$$$%%%$$$%%%%%%"""!!!"""""" !!!######""" !!!""""""$$$######"""$$$$$$$$$###!!!"""  """!!!!!! !!!!!!!!!!!!!!!!!!""" #########"""$$$"""!!! !!!""" !!!#########"""######!!!###%%%$$$###!!! """ !!!"""$$$$$$$$$$$$""" !!! !!!"""!!!"""!!! !!!!!! !!! *$3,"3,"/(/'.&/&.&/'-%*"1) 5.%2+"1) 4,#5.$/(,%+$0)5.#6.$5-#6/$70%4-"2*4,!6.#4,!5-";3(:2'5, 6-";3'6."3, :2&=5):2&7/#6-":0%;2&6+ ;0%>5)=4(90$8/#;3';3'6-!8/#<3';2&:1%:1%:1%8/#;2&;2&8/#90%;2&6-"7.#6-!5,!:1%8/#8/#5,8/"@6)C7'   -  4;9<& 160@WW;YZ&9: ### $$$'''(((+++---///111777:::;;;<<<=;;=0&;#B)!B5;9JS1Y^5W[=>?6*" - - - - - - - - - - - - - - - - - - - - - - - - - - YK9B7)<1%<4';4&9/#;.#=6*=6);0%:0$>8+?7+?6*?6*@7+>5)<3'?7+A8,?7+<3'91%<4(?7+?7+=5);3'<4(@7+A8,:2&7/#>5)A8,=5)<4(>5)?7+>6*=5)>5);2&;3'=4)=4(<4(;2&:2%>6)?7*<4'?7*<4';3'<4(<4(:2&>6+=5*91&:3';4(:3&:3&<5'?6*>6*<4(;3'80$80$;3'>7+?8-;4(5-"6-"6+ 6,!6+ 3(0%/$0&0&5+6, 7.#7.#8/$6-"2)4+ 5,"6-!6-!7-"5+ 4*5, 7-!4*2(3)4*6, 6."3*1(4+ 4+ 3+ 7/$6-"7."8/#6-"3*3+ 80%6/#2+2, 4-!.&0(/'2+ /(.'/)/) ,&'!        -    -   G1&F0#K3$K4%H1"E. E- E- C+>(:$6#3"2!2#/ /!- )*++/"- ,. -,*'()+,*($    0 . --,) & * -, -. -,,,,,- - - ,- - - - - - ,+,- , ,+*)',+#-./0 -- 1 - - - - - - - - - - -  """"""######!!!  !!!!!!!!!     !!!!!!!!!""""""%%%%%%$$$$$$###"""!!!!!!"""""""""$$$%%%$$$""""""######""""""""""""###$$$$$$%%%%%%%%%%%%%%%%%%$$$$$$###!!! """######""" !!!!!!""""""######$$$%%%%%%%%%$$$###""""""!!! !!!###### """!!!""" $$$###"""###""""""###""""""!!! !!!"""!!!""" """###""""""""" !!!!!!###!!!!!!"""  """""""""""""""!!!"""!!! !!!$$$$$$###""" """!!!!!!###$$$$$$###$$$""" """$$$"""###!!!  !!!!!!!!!!!!!!!  !!!!!!3,"3+!0)/'-%.&/'/'-%*"2*!7/&5-$2*!3,"6/%0()!*#/(5.#6/$3,!4-"7/$6.#3+ 3+ 4-!4,!5."<4):2&4+ 6-";3'6."5.";3'=5)92&80$7.":1%;1&5*9.#>5)=5)91%8/#;3'<3'7/#90$;2&:1%80#:1%<3'90$=4(<3'7.#8/#;2&6-"6-!4+ 3*6."6.":1$6-!7.":1$@4&[J6       010'C726RN8+?8+?6*?6*@8,>5)<3'A8,A9-?7+;2&91%<4(>6*>7+?8+;4(=6*@9,@8,<4'91%>6*A9,>5)=5(>6*?6*=5)<3'=4(:1%<3'=4(<4(;3'90$80$>6)?7*=5(?7*<4(=4)@8,@7,<4(>5*<4)91&;3(:3'91%70#;4&>6)>6);3':1%80$80$;3'=6*?8,;4(5-!5-!6,!7,!5*2'/%0%2'1'5+5+6-"7.#7.#5,!2)2)5,!6-"5,!6-!5, 3*5, 6, 5+3)3)4+7."90$4, 0'3*4,!3+ 8/$7.#8/$8/$6-"1(4+ 92&81%0*2,5."/'1)3+!/(/(.(/* .(+%&!        - -  -    C1'G1%H0"J2#J3%E/!B,C- B+?(='9$9%7&3!2!4%3$ *(*. ,),-,)''''),,)(#     . -. -,$ # ) , - -- +,- ,,- - - -- -. -- - ,- -,,, - , , +++(( %2*&../0 ,+ - - - - - - - - -  $$$$$$$$$"""  !!!"""!!! !!!  !!!"""###""""""###$$$#########"""!!!""""""""""""######"""!!!!!!!!!"""#########%%%$$$%%%"""%%%&&&&&&&&&&&&$$$###$$$###!!!"""######"""!!! !!!!!!"""###!!!""""""$$$$$$$$$$$$###"""""""""######"""!!!!!!###$$$$$$######"""###!!!"""#########""""""$$$""""""!!!!!! !!!"""!!! """""""""!!!!!!"""### """$$$#########"""""" !!!"""######!!!### ###############"""""""""###%%%$$$$$$######!!! !!!######"""!!!   !!!!!! !!!!!!"""!!! !!!!!!!!!!!!3+!1)-&-%,$/'/'-%-%3,#7/&4,#1*!4,#70&1* *"+$/'4-"5.#3+!3+!5.#5-"5-"5-"5."3+ 6.#<4);2'3*5-!;3'6/#6/#;3'=5):3'80$6-!8/$:0%4)8-">5)>5):1&90$<3'=4(91%91%;2&:1&8/#90$;2&90$?6*<3'4+5, ;2&7."5,!3*3*8/#8/#:1%7/":1%<3';0$C7)  - -   - -**&=9?6KM/YV0TQJOTI:BPKM### """&&&)))***---...111333888======EEE>6,@.!>&H2+<@@&RQ*SP.D:,=3'<1%<4'=5(:/#;0$<6(<4'9/$90%>7*?7+?6*?7+@8,<4(91%@7+A8,>6*;2&:1%=4(>6*=6)>7*;4(=6)@8,A9->6*<4'?7*@8,=5(=5(>6)?6*=4(=4(>5*:2'<4)>6+=4)<4(91%90$>6)?7*>5)@8+<4(<3(@8-@8-=4)=5*;3(80%:2'81%80$4- <4'?7*?7*;3&91%80#80$<4(>7+>7,92&7.#7.#7,!8-"7,!3'0%0&1'1'3*4+2)6-"6-"3*1(1(3* 4+ 4+ 6,!5, 4*5+4+3)2(3)4+6-!90$7.#3*6."5-"2*7.#6-!6-"7.#5,!1(4, :3'92&1+2+4-!1)0(1).',%.(.).)*$'!        - -  -   E1&F/#J0"L3%I2#A,?+A+ ?)<&=(;';'6$12!2"0 )+.++- ,++*%$(***,+$"  !     . . -. -. -- >  % -* , , -,,- - - - - - - -- ,,,,,++, ,,, ++,*+ -*0(%+.../ 6! - - - - -"""%%%$$$###  !!!  !!!  !!!!!!######"""$$$###"""""""""!!!###"""$$$#########""" !!!###""""""###%%%&&&############%%%%%%&&&&&&%%%###$$$$$$$$$!!!"""""""""!!!!!! !!!"""###$$$###!!!"""%%%$$$$$$###"""!!!!!!#########$$$######%%%%%%$$$$$$$$$$$$###"""!!!!!!#########"""""""""""" """""""""!!!   !!!!!!!!!######!!! """"""######$$$$$$$$$######$$$###"""###"""###$$$######""""""###"""###$$$!!!!!!######"""######$$$$$$$$$%%%$$$""" ###"""!!!!!! !!! !!!!!!"""""""""!!!  """2* 0(.'+$/'/(+$+$1*!4,#2*!0(2+"5.%3,",%,$0(2* 4,"2+ 3+ 6.#5-"7/$90%7/$0(3+ <5)=4)3*6-!;3'7/#6/#:3'=5);3'7/#5, 7.#9/$5*8-"=5)>5):1%90$<4(=5):1%8/#;2&;2&80$8/#91%8/#>6*;2&2)3*:1&6-"4+ 3*3*80$8/#7."5- ;2&>4(9/$=2%F:*    -   ! )**97;DDJ>NP4YT;cZLZVZPQJDE!!!$$$ ###'''***,,,...000222444888>>>@@@ECCE9-D-E1#C855AD/JL/NL*2-,&  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - nZAD8*@6)>3':0$=4'>6)<1%<2%<5(=5);1%:1%=6*?7+>6*>6*?7*:2%90$@7+@8,>6*<3':1%<4(>6*=5)=6);4(=5)?7+?8,=5);3'?7*?7*<4'<4'>6)>6):2&;3'>5*:2'<4(?7+>5*=5)91%91%>5*?7+<4)@8-=5*=5)@8-@8-=4)<4)<4*:2'91&7/#81%4,:3&>6)>6);3&:1%90$90$<4(>7+?8,81%80$8/$7-"8-"6+ 2&0%1'2(2)3+4,4+ 6."5-"1(1(2)3*4+!4+ 6,!4+5+ 4+5, 3)1'2(4*4+6-"5,!2)6-"6."3+7.#5,!6-!7.#4+ 1(4, <4(81$2+0)2+0(/'1)/'-&.'.)+%*%$%          -  -   C0'F1%K1#I0!H0!G/ B+@+<(;&<'=(=)<)9%1,-,,/0 .*-/!-**($$*.",*&    !##          . -. . -. * - & -* , - -, -- - - -, , - - ,,,- ,++,- ,+, ,++++( *0(%-.//- 2 - - - - -  - - $$$###!!!     !!!#####################"""######""""""!!!!!!$$$"""!!!######""""""$$$$$$###$$$###$$$%%%%%%%%%%%%###""""""$$$######"""""""""!!! !!!$$$%%%"""!!!######"""!!!""""""############$$$%%%###$$$%%%&&&&&&&&&%%%%%%######"""######!!!"""###$$$""" !!!###"""  ###""""""$$$$$$"""!!!"""######""""""######!!!"""###$$$$$$############"""$$$##################!!! ###$$$$$$$$$"""###$$$%%%$$$"""""" !!!""" !!!"""!!!!!! !!! """######!!!%%%### !!!  0(/',$.'0)-%,$2*!5.$4,#/(2,"4-#1*!,%-&0)5.$80&4,"5-"80%7.#7.#90$8/$3+5-!=4(<4'4,4, :1&70$6/#92&<4(:2&7/#5, 8/$:0%5* 7."=4(>5)91%7/#;2&<3'90$7.";2&<3'90$90$90$6.":1%90$3*3*8/#3+3*3*4+80$8/#6."5-!8/";1%9/$7,!?4%kW?       -!#"0-084::EG?URDaY=UK9C:>74 ###!!!$$$(((+++---000111333666999>>>EEE?<;;#@&B00B7=5>B(KK-OO.2,, - - - - - - - - - - - - - - - - - - - - - - - - - - - D8)?4'@7*>4'8.!=4'?7*=3';2%<5(>5);1&:1%=5)?7+>6*>6*=6)91%:2&A9-?7+=5)<3':2&<3'>6*=5)=5);3'=5)?8,?7+<4(;3'@8+@8+;3&;3&<4(=4(80$;3'=5*:3(;3(=5)<4(=4)80$91%>6*>6*;3'>6*<3(<3'?7+@8,=5);3(;4)92':2'92&5."81%;4'=6*=6);4';3&91%8/$=4)>6+?8-:2&91%:1&;0%;0%6+ 2&0%2'2(3)4+3+5-!4, 4,!2*1(1(1(4+ 3*5,!3*4*4+7-!4*2(3*5, 4+ 6-"3+/&5,!6-"5,!6."3*4+ 7.#5, 1'2*:2&4-!/(-&0)0(0(2+ 1* /'.'.(.(*$'"%        - -  -   -E1&E/#I0"I0#G/!E-C,C,<'7#:&<(<'9$3 0,)).-0-0 0!0!/ . . +*$&*+'"   "%#!        -   -   . . - -, & " ( -* , - -- - -, -, , - -, ,,- . -. -- ,- - -*+, - , +++* ( -/$ 4-*-// / , / - - - - - -   - -###!!! !!!  """"""""""""""""""############%%%$$$###!!! """$$$###"""###"""###$$$$$$###%%%&&&$$$###$$$$$$&&&###""""""###$$$#########!!!!!!  """""""""###$$$###""""""$$$$$$###$$$######%%%&&&$$$%%%&&&%%%%%%&&&%%%%%%!!!"""!!!!!!"""!!!"""$$$$$$!!! !!!!!!""""""!!! !!!###"""$$$%%%$$$"""###%%%$$$!!!!!!######!!!"""###$$$######$$$######!!!$$$$$$"""$$$######"""""""""!!!###%%%&&&%%%$$$###$$$&&&$$$!!!!!!!!!!!!!!!############"""###!!!!!!!!!"""##################  !!!""" ###.&.&0(-%+$1) 4-$2*!.&2+"5.$1* +$,%1)5.$6.$4,"6.#80%7/#7.#8/#7."3*6-!<4(;3&5- 5, 91%70$6/"92%;4(91%80#7.":1#<2%7- 8/"=6)=5)80$4, 91%;3'91%90$<4(;3'80$:1%80$4, 8/#90$4+3*5,!2)2)3*3*90%8/$7."7."80#:0%9.#7-!:/#B5'    -  1,/<5:D>CEMMXe_bh``ZTePLTIE!!!$$$"""%%%***,,,---000111444777:::>>>JJJC:1<) G-+=376;;)A@"CB6B>/!044 - - - - - - - - - - - - - - - - - - - - - - - - - - - hWB@5';2%@7*>4'5+=5'?7*=2&:0$=5(>5);1%90$<4(?6*=4(=6)<5)81%:3&@8,@7+>5)<3':1%<4(?6*=5)<4(91%<4(=6*>6*;4(;3'@7+@8,;3&;2&<3'=5)92&<5)=6*;3(<4)<4(;3'>5*:1&90$=5)=5)<3(=5)=5)=5)?7+?7+;3';3(<4)80%91&;4'92%92%92%<5)>7*<4(:2&8/$6-"=4)?7+A9.>5*:1&7."8.#:0%5*1&0%2'2'3)5,4+6-!5,!4,!3*2)2)3* 3* 1(3* 4+2)4+7-!3)1'3)4+4*6-"3+1)6-"5-"6-"6."3*4+ 6-"5, 2(2*7/#5/"1+.'0(2)2)3+!1* .'-'/),&-&$"        - -   -   B0'F1%D."F- I0#I0$H/"E-B+:$8#;&;&;(=)4!-,,.2 3!0/1 2!/./0!.++(''%   """!   -         -      . . -- -* ?! ! & ) -- -. -- - - -- -, -, , , - -. -. -. . -- - , +, - , , ++, -* -*2,)4.*../ --6$- - - - - - - - - - - - - - - - - -  - !!!!!! !!! !!!  !!!######""""""###$$$###$$$###%%%%%%&&&$$$"""%%%$$$%%%$$$$$$$$$"""$$$$$$%%%%%%$$$$$$######$$$%%%&&&######$$$###$$$%%%$$$$$$"""""" """$$$$$$"""$$$%%%###"""$$$$$$%%%%%%######!!!%%%%%%###$$$&&&$$$%%%&&&%%%$$$###!!!""""""$$$###"""$$$"""!!!!!!!!! !!!"""!!! """"""$$$%%%%%%$$$&&&&&&%%%""""""###"""""""""###$$$$$$$$$$$$%%%&&&$$$###$$$%%%%%%$$$$$$###!!!###$$$!!!$$$%%%$$$$$$###$$$'''%%% """ !!!"""!!! """!!!!!!!!!""""""!!! ###$$$"""!!!!!! !!!  $$$"""0)1) -%+$2*!70&2*!/'2,"6/&2+!-&-&3+!7/&7/$6.#8/$8/$7."7.#8/#6-!3*6.">5);2&6-!5, 80$70$6/#:3&=6*:3'80#8/":1#<2%8. 91#?7+=6*80$1*81%:3'80$7.#<2'=3(;1%:0%:1$5+90$;2&6-!4+ 6-"2)4+ 2)3*:1%8/#6-!7."8/";1&8-"8-":0$=1$YI6    --/?9=H=@OEE[PK`JCJ/*G+&OD@### ###&&&+++---...111111444888:::CCCJII@8.L1(T*'F035>?0A=3A?550$9;: - - - - - - - - - - - - - - - - - - - - - - G;-;1$90#?5(=4'5,;2%@7*:1$9/#=4(>5):1%80#;3&=5(;2&:3';4'92%:3&?8+@8,?6*:2&:1%=5)?6*=4(;2&8/#;3'<5)=6*<4(:2&>5)?6*:2&<3'=4(?7+<4(>7+=6*<4)<4):2&:1&=4(91%7/#<3'=4(;3';3'<3';3'>6*@7,=4);3(<5*91&92&;4(:3':3';4';5(=6*:3&7/#6-"5,!;2(?7,@8,<4)91&7.#7-"7,!4(2&1%4(3(4)4+6-!5,!3+ 3*3+4, 4,!5-"4+!3* 4+ 4+ 1(5, 8.#5+1'2(3)4+7.#3+2*3*5,!7/#5-!3*4+6-!5+2(2*5-!5."2+-&/'2)2)2* 2+!.'-'+%.(,&%! -       - -    -  E1&E/#L2&I0#H0#H0$H0$F."@)8":$<'<'9%6#0*,/4"6%5#5$4"1 .+,,---. +(&#   !!          - - - -         . -. / - )  " '+ - - - -. - -, , , - -- - - -- -- -, ,- - - ,, , -, ++ (( ,5-&.-.-*2,  - - - -    ######!!!    !!!!!! !!!"""######%%%$$$$$$$$$&&&%%%&&&$$$%%%$$$###$$$%%%&&&%%%%%%%%%$$$$$$%%%%%%%%%$$$$$$#########$$$$$$###$$$$$$###$$$###"""$$$""" !!!!!!$$$%%%!!!$$$%%%$$$###$$$######%%%$$$###"""###$$$###$$$$$$$$$%%%&&&%%%$$$"""!!!!!!#########!!!###"""""""""""" """###  !!!###""""""###"""###$$$######""""""!!!!!!"""$$$######!!!"""%%%&&&&&&%%%###$$$%%%%%%%%%$$$!!!"""$$$###"""###&&&%%%###"""###%%%""" !!! !!!!!!!!!  !!!!!!######$$$"""!!!"""%%%"""!!! !!!!!!!!!!!! $$$$$$$$$2+!,%+$2*!81'2+!.'1* 5.%2,".'.&4,":2(92'6/$8/$91%7."6-!6-!5,!2)5-!<3';3&6-!4, 80$70$6/#:3'>7*:3'80#80#;2%;2$5+91#?8+>7+70$1*70$;4'80$7."<2'=2';0%:0$;1%6, 9/$<2'7-"4+6, 2(7-!5,!5, 90%6-!5, 4, 5, =3'7-!8.#<2&9/#C7) - - ##,856:8@..B&%J0*M3(I.#A+" $$$ !!!###'''+++...///222333555888<<8?5=H.BE4FE3><''' - - - - - - - - - - - - - - - - - - - - - - - - ]O;C9+:1$:1$@6)=4'7/!=4'A8+:2$90#=4'>5):2%7/"91$:2%;2&92&92%92&:3&>7+@8,=5)90$:2&?6*?6*<3':1%7-!;2&=6*>7*<4(:2&?6*@7+;2&;3'=4(?7+<4(?7+>6*<5)=5)=4(=5)=4(91%80$<4(=4(:1%:2&<3';2&=5)?6*<3':2&=5):2&<4(=6*:4'92&:3':3&;3'70$6."5-"5,!:1'?6+>6+;2'8/$7.#7-"5+ 3(2&2&5)5+5+ 5+6-!6-"5-"5,!4+2*2*5-!4+!4+!5,"4+!0(4, 7/"4,1)1(2)4+:0%5,!1)3*4+ 6."5,!5, 5,!6."6, 0&0(6."70#3,/'2*2)1(2)2*!.'/(+$.'.''!!        - -   -  F1%D."F,!G.!G/"H/#G/#D-!>':$<&;&9$6!0,*' /8%6#5$4#7$4"0 -,+-.+-+(&# !      - -     - -   - -     . . . -+ ' -" % (, . - - -, -, , -- -- -- -- - . -. -, +, - -. -- -, , -, -, +)) -'-!5-%---+* 1     - ###   !!!   !!!  !!!"""###%%%###"""###%%%$$$$$$$$$"""$$$%%%%%%%%%%%%%%%%%%%%%'''$$$$$$$$$$$$$$$$$$######$$$$$$$$$$$$%%%&&&$$$$$$###"""###!!! """!!!$$$%%%###$$$&&&&&&$$$$$$$$$""""""###"""""""""!!!###$$$%%%###$$$$$$###$$$"""!!!###%%%$$$$$$###""""""""""""""""""### """!!! """!!! """###%%%$$$"""!!!!!! !!!######"""""""""$$$%%%%%%######$$$%%%%%%$$$###"""######"""###$$$&&&$$$"""""""""%%%###!!!!!!###### """"""!!! !!!"""$$$###$$$$$$"""""""""$$$### """!!!""" #########$$$-%)"3+"80'2+!/'2+!6/%5.$.'/'5-#91'91'7/$7.#80$7.#6-"4+ 4, 1(4, 91%;3&6-!4, 91%70$5.":3'>7+:3'6/"7/";2$:0#2)80"?6*<5)7/#2+70$;4(91%80$=3(=2':0$:0$;1%7-!8.#;2&7-"4*5+ 3)7-"6-!7."90%5, 4+2)2*=5(5- 8.#;0%8-">2&F9+    -)&.:434.:'!="G,"G/!A,B/""!$$$!!!"""$$$(((,,,///000333444666999AAALLL?::5;-;6(F?47=8.DF'GJ->?) ./- - - - - - - - - - - - - - - H=->5';2$<2%@7*<3&90#>4'?6):2$90#=3'>5)92%6.!90$;2&;3&:3':3&:3&:2&=6)>6*<4(8/#91%@8,?7+:1%90$8."<3'>7+=6*:3':2&>6*@7,;2&:2&<4(>6*;3'>7*>7+=6*>6*>6*>6*<3'91%80$<4(=4(;2&;3'<4(;3'=5)=5):2&<5)?7+92&;4(>7*:3'81$92%81$92&7/$8/$6.#6-#:1'=5*=5*:2'7/$6-"6-!5+ 3(0$/#3'5+ 5+4*5, 7.#5-!4, 1)0'1(6."3* 2)3+ 3+ 1)3+5- 5, 1)4+1)5+ ;1&5,"2*3+ 3+ 3,!5."5,!5-!6-!6, 1'0(6."7/#2+.&2*2*1(6-#2* /'0)-'-&,&'!$        - -    - - D0%F0#M5*G.#E, F.!E-!C+B+=&=&>);&7"3-+*-2"1!1 2 4!3 0.-/-+--++*)" -  !!              -  - -      . - ,. #  # ' * -- -- - , -, -- -- - - -, - -- -- -. -, , - -- -- -, -, -, + + , , ) ' 0#5)!-,,. )0&        """ """### !!!!!!!!!!!! """&&&$$$###%%%&&&&&&$$$&&&$$$$$$$$$&&&&&&"""###$$$$$$$$$$$$######$$$$$$%%%%%%%%%%%%$$$$$$$$$&&&%%%$$$%%%%%%###$$$### """""""""###"""$$$&&&$$$$$$&&&'''%%%######""""""""""""$$$##################%%%%%%###$$$###!!!!!!###&&&%%%%%%$$$$$$###"""!!!""" """ !!!"""###%%%$$$###"""!!!  !!!$$$"""%%%$$$###!!!###$$$###!!!"""$$$%%%%%%%%%###"""#########"""###$$$$$$""""""$$$&&&$$$"""!!!"""$$$!!! !!!  ###"""!!!"""""""""###!!!%%%$$$ !!! !!! %%%""""""######)!4-#70&3+"0(3,#70&5.$0)/(3,"7/%92'80%7/#7/$6-"6."4+ 3+1(4+91$;2&5, 3+:2&70$5.#:3'?7+:3'6.!6.!;1$:0#2(7.!<4(;3'6/"2,70$;4'91%90%>4)=2':/$:0%<2&8."8."<2'9/$4*5, 5, 8.#8/#6-!8/$6-!4+ 3*1)<4'6- 8.#:0$6, 7-!@4'eT= -  (,'%#<2)?,#B*M3'H. M, Q:1  """###%%%)))---000000333555777:::EEEONNED@A71A2+B816B?)JJ*CD;415.0, - - - - - - - - - - - - - - - - - - - - - - - - - MA0C9*>4&<3%=4&@7*<4';2%>3'?6);4&:0#=2&=5(:3&8.";1$=4'=5(=6)<5):3':3'>6*>7*<3'8/#:1%B:.?7+;2&7."8/#<4(=7+<5);3';3(=4)@7+<3'91%>5)>6*<4(=6)>7+=6*?7+>6*>6*=5(;3'80$;3'>5)<3'<4(;3'91%<4(=5)=5);4(?8+:2&;3'>7+:4'70#70$6/#91&91&90&7.$6-#:1'>6+>5*;3(7.#5,!5, 6+ 5)0$-!1%5*5+ 4+5, 6."5-!5, 2*1(0(6-"5-"3* 3* 1)/'1)3+3+3+3+2)6, 9/$7.#4,!5-"3,!2+ 3, 4+ 5, 5, 6+ 1(2*7."8/#4+0'4+ 5,!0'5,"3*!1)0)/(.',%+%(!      - - -   - -F0$E/"H1&I0%G.#F."C+@)A*?(='<'<'6!0.--16$3".-130-+ * ..--+*)'!          -   -               , ,,, ,  $( + -- - - -- - -- - - -. -- -. - -- -. -, . -- -- -, - -, -+ -, , -- * -( $  +--. -. 4"..(%5      !!! !!!######""" !!!"""###""""""###"""!!!!!!"""$$$$$$###$$$%%%"""$$$'''%%%###%%%&&&'''$$$"""$$$$$$$$$$$$%%%%%%%%%&&&%%%%%%%%%%%%$$$###$$$%%%$$$$$$%%%$$$$$$$$$!!!!!!"""######"""###$$$$$$###%%%$$$$$$$$$###!!! !!!###$$$""""""""""""$$$$$$%%%%%%%%%$$$"""""""""###$$$%%%###"""&&&$$$######  !!!"""###%%%$$$###$$$### !!!""""""!!!!!!%%%%%%###""" !!!%%%$$$&&&(((%%%$$$&&&######""""""$$$%%%###$$$&&&'''%%%###!!!!!!###""" !!!  """!!! !!!""""""""""""$$$###!!!$$$!!!!!!"""###$$$###$$$3,"6.$3+"0) 3,"6/&4-$0)0(3,"80&92'7/$8/$80$7."6."6-"6-!4, 5-!:1%;2&5, 2*:2'70$5.#81%>6+;3'7/#7/"<2%:0#2(6- ;3':3'6."2+70$;4(:2&90%>4)<2'9/$:0$<2&9/#8/#=3(;1&5+ 6,!6-"7.#7."4+6-"4+ 4+ 3*5,!<3'6-!7-!8.#6, 9.#:/#?5&    - 583.*#9*"<(K/&U,%T+$O.'R>:  !!!######$$$)))...111000333555888???JJJMLKO36F)'?'$@?:;DA2GC0??0.3& - - - - - - - - - - - - - - - - - - - - - - - - - - xfJG<,>5'>4'=3&<3%>5'<4&;2%=2%>5(<5':0#<1$=5(;4'9/#;1%>5)=6)?8+=6)92&<4(?7+?7*;2&80$:1%B:.?6*;2&6-!90$<4)=6*:4(93&;3'>5)@7,;2&91%=5)>5);3';4(=6*=6*@8+>6*>5)=5(=4(:2%<4'>6)=5(<4'<4'91$:2%;2&;2&91%?7+:2&:3&>7+;4'70$70$6/$7/$91'8/%8/%4+!80%>5*>5*;3(6-"4+ 5, 8-"8-"3'/#0$4)6, 6-!6-!5-!4+ 4, 3*2)0(4, 4,!5,"5,"4+ 1(2)3+4,0(4,2*3*:0%8/$4+ 5-"3+ 1*3, 6-!6."7."5+ 0&1)7."7/#3+/&4+ 4+ 1)8/%4,"1) 0) 0) /(.'*#("       - -  D0%G0#J0!J2$K2'I0&G/%C+ @)A*='9#9$=(5!- ./02 3"3"03"-4!2 /-+*,1",)('# !"!           - -  -      - -           ,,--*! $( + -- -- -- -, -, - -- - . . . - -- -- -- -- -- + - -/ , , + -+ -, * ( -$ - --* " -&2 ,('  -/     -   """ !!! !!!""""""######  """"""!!!"""###############"""""""""$$$&&&$$$%%%%%%%%%%%%%%%%%%$$$$$$$$$%%%###%%%%%%$$$$$$%%%%%%$$$$$$######$$$$$$$$$"""%%%%%%$$$""""""!!! !!!"""###"""$$$%%%$$$%%%%%%$$$%%%$$$!!! !!!"""######""""""###%%%'''&&&%%%&&&%%%$$$###"""$$$$$$$$$######%%%$$$$$$### !!!!!!!!!!!!"""%%%$$$"""""""""!!! """"""###!!! ###&&&$$$ !!!%%%%%%''''''%%%$$$%%%$$$""""""!!!$$$%%%###%%%'''''''''### !!!###!!!!!!  !!! !!!!!!""""""$$$$$$"""!!!!!! !!!""""""""""""$$$3+"1* 4-#70&4.$/(0(4,#91'92'7/$7/#80$7.#6-!8/#90$4+5, :1%>5)5, 1);3(80%6.#80%=5*;3'90%8/#<3&:0#2(4,91%92&6/#3- 92&<4)91%8/#>4)=3(:0$9/#;1%8/#90$>4)<2'5, 5,!5,!6-!7.#6."90$5,!7."5,!7."<3'7.!6-!7-!6, 8."7-">4&XJ8    -# +-)-'$7& @&M*$Y1(U/%J-&!!!###$$$###)))///222222333666999CCCOOOFBB4& C3-FC*++( - - - - - - - - - - - - - - - - - LB0A8)=4&=5'<3%;2$=4&=6(=4'?3'?6)=6(:0#;0$;4';4'9/#;1%?6)>7*?8+;4'81$<5)?8+>5)91%8/#;2&@8,?6*;2&6-!:1%;4(;5)94(:3':3'>5*A8,<3'90$=4(>6*<4(;4(=6*;5)A9-@8,;2&<3'=4(:2&<3'>6*?6*>5)=5(80#80$:2%91%70">6)92%92&>7*<5(81%81%7/$6.$91&7.$8/%3* 5-"91&<3(;2'6.#4,!5, 8-"8-"5)1%0$3(6, 7."8/$7/#6-!4, 3*1)1(4+ 3* 5-#6.$6-"3+2*3+4+/'3*4+2(7."7.#3*3+ 3+ 1)2+ 5,!5-!8.#5+ /&1(7."80$3+.%3*3*1(7.#4+"2) 1) 0)1* 1*!*$("       - - F0$F/"O4$P5$M4%K2'F.$C+!?'>';%8"9&7$300223!2!2 3"../1!/+ ,,+('('$  #!          - - -  - - - -    - -  -        , --. -# " %) + - , + + , -, -, -- - - - -- -- -- -. - - -/ / - * * *+ -* -(& # " -#   ! -0))( -       -  ###!!! !!!    !!!!!!"""!!! !!!""""""###""""""###!!!!!! !!!""""""$$$$$$$$$""""""$$$&&&%%%%%%%%%%%%&&&%%%%%%%%%$$$###$$$###"""#########$$$$$$%%%&&&$$$$$$###%%%%%%$$$%%%$$$###""""""  """!!!"""%%%$$$"""$$$$$$$$$### """"""#########"""###%%%'''&&&%%%&&&%%%%%%$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%$$$!!!!!!"""###!!!!!! ######"""!!!###"""!!!###$$$""""""%%%### """!!!"""$$$%%%&&&%%%$$$$$$%%%&&&###!!! ###$$$%%%&&&'''((((((%%%!!! !!!!!! """  !!! !!! !!!###%%%$$$!!!!!!  !!! """ !!!$$$ 0) 4.$60&4-#/'/(4-#92'91'7/$6.#90%8/#5, 6-"90$5, 5, ;2&?6*4+ 1(:2'80%6.$92'=5*;3'90%8/#;2&9/"3)4+8/#91%70$6/":3'<3(7.#6-">4)?4);1%9/#:1$9/$;2&@6+<2'5,!6-!5,!6-"8/#5,!8/$6-!4+ 6-!7."<3&7."6,!5+5+9.#8.#:1%F;-     +*(710-#"9"I&S+R.!P1%P7/"""######$$$***///333333333777===HHHRRRKE?B2+I=7ME@=DC5BF2>C-10)%)*, - - - - - - - - - - - - - - - - - - - - - - - m]DG>.=5'=5'>6(;3%:0";3%>7(=5'?4'>6);5&:0#;0#<5'<5(9.":0#?6)?8+?8,;3'80$=6*?8+=5)90$7.";3'?7+?7+;2&8/#;2&;4);5*;5)<5):3'=4)@7,<3'91%=4(>6*<4(<6)>8+:5(@8,A9-90$:1%;2&:1%;3'=4(=4(?6*?6*90$91%<3':1%92%<5)92&81%;4(=6);4(;3(81&80%80%8/%7/$5,"5,":1&91&80%6."6-"5, 8.#7+ 4(1%0$2(6,!90$:2&80$6-!2*2*2)3+5-!4+!3+!3* 3*0'0'2*2*2*3*2)2(4+4+ 1)1*3+ 1*4,!6-"5,!7-"5+/%0'7.#91%4, .&3*2)0(3* 2) 2* 0(/(2+!0* ,&(!       - -C/%G0#M3#P6%O6#L3!H0 D, ?(<%9"8"7!4"3 1004!8%4"3!1 01 --*.) & -.(#'(!  "  -      -     -  -                  +-- . - = -# &) -, -, +, -, -, -+ -+ -, -, -, -, - -- -. / / . -. -, *)*)* -* -* ( !  - " $ -$ $/')  -3      ! !#" " -  !!!""" !!!  !!!!!!!!!!!! !!!"""""""""!!!"""###""" !!!!!!!!!"""!!! """$$$$$$$$$""""""$$$&&&%%%$$$$$$%%%$$$###$$$$$$$$$%%%######"""######"""######%%%$$$%%%$$$%%%%%%%%%%%%%%%$$$#########!!!  !!! """############$$$###""""""!!!!!!!!!############!!!###%%%$$$###%%%%%%###"""###%%%$$$%%%$$$$$$%%%&&&%%%$$$!!!  """###### !!!"""###"""!!!"""###!!!!!!#########!!!"""&&&%%%%%%$$$###$$$###""""""$$$%%%%%%$$$###$$$%%%&&&###"""$$$&&&%%%$$$$$$&&&'''%%%###"""!!!"""""" """!!!!!! !!! """######"""""""""$$$$$$""" !!!!!! $$$ 3,"5.$3,"/'.&2+!80&80%6-"6-"8/$7.#4+ 6-!90$5, 5-!<3'>4)4+2)91&91&6.#92'>6+;3'80%7/#90$8."3)3)8/#;3'92%6/#92%:3'7."6,!<2&?5);1&9/#;2%:1%=3(@7+<3'6-"8/#7.#8/#8/$6-!6-"7.#6-!7.#90$:2%7-!6,!5+ 6+ 8.#8.#6-">4'K@1   -  1*)5((7 @!N+U1#Q1$D*O:1 """$$$###%%%***000333333444888AAAMMMQPPRE>TH=FA3BD@3CI1CJ4:;1'%%+12  - - - - - - - - - - - - - - - - - - - G=-A8*>5(=5'@7*=4&9.!;2$>7)>5(A5(?7*;5':0#<0$=6(>6)8."8.">5(?7+@8,;3'81$>6*@7+=5)91%7."=4(?7+?7+;2&91%<3'=6*=7,<6+<5)91&<3(@7,<4(:2&<4(=5);4(=6*?9-<6*?7+B9-90%90$:2&:1%<4(>6*>6*?7+>5*80$91%=4(:2&:3&<4(92%91%;4(<5)<5(<5)92&80&7/%7.$7.#5,"5,":1&;3(:2'7/$8/$6,!8."5*2'0%2'5+6-!90$:1&8/$7/#6-!5- 3+3+4,!4+!1)1(1)/&/'4,3+2)1)3*3)4+4+ 1)2*2+/(2+4+!3+ 6,"4*0&0'6.#91%4, .&1(0'0'1)1* 2+!1) 0)2+"0* ,&%       -F0$F/"L2!L3"L4"J1 F.B+=';$9#6!8$2 ./024!6#6$4"02 .--/)&+/,,((#  $"!       - -       -             -       .- - , ,  -$ ( -* -+++ , -, -+ + , -, -+ +, - . . . ---- ,+++ * -( -) -&   -" % % & ' 3".)) - -    !" !  %$#"#" -    !!!!!!""""""!!!  """$$$"""""" %%% !!!  !!!!!! !!!###############%%%###$$$"""###%%%%%%$$$&&&$$$###%%%$$$###$$$%%%#########""""""%%%%%%$$$%%%%%%%%%$$$!!!""""""###"""!!!!!!!!! !!!"""!!! """"""######"""""""""!!!!!!"""###!!!###$$$"""!!!!!!"""!!!$$$$$$"""!!!!!!"""%%%$$$######$$$%%%$$$###$$$!!! !!!"""!!!### """###!!!!!!!!!!!!!!!"""#########!!!"""$$$$$$&&&%%%###%%%###!!!######"""#########$$$%%%%%%$$$$$$%%%&&&%%%#########$$$######""""""######!!!  !!! !!! """######!!!###$$$###!!! !!!!!! !!!!!! !!! ###4-#3,"/',%0)6.$6.#4,!4,!6-"6-"5, 7."8/#4+7.">4)=4(5,!2)80%91'6/$:2'>6+;3(8/$7."7."7."3)3)90$;3'7/#2+5."80%7."7-"<2'>4)<1&:0$<3&:2&;3'>5):1%6-!7/#8/#8/#7/#6-"6-!8/#8/#6-"6-!90$8."7-!6, 6,!:/$8.#6-!7/#F5(=5'?7*=4'9/":1$=7)>4'A3'>7*95'>0$@2';6'=7)9-!9.">5(?7+?7+;3'91%>5)?7+>5):1%80$>6*?7+>5):2&;2&=4(<6+=7,>7,>7+91&<3(@7+<3(;2&=4(=5)<5)>7+?9-=7+>5)@7+91%90$;2&;3'=5)>5*<4(>5)?6*:2&91%;3':2&;3'<4(80$81%<5):3(;4(<5*91&91&80%7/$6-"6-"6.#:2'<4)<4)7/$90%6-!5+ 3(1&1%2'5+6-!80$:1&;2&80$7/"6.!3+2*4+ 4+!3+!4+!4, 1)1)4, 4,/&2)3*4*5+ 5, .&1)2+ 0(2+ 4+!2)5+!5*2)2)6.#70$2*.&1(0'0'1)1* 0)1) 0)0)/) ,&'!     C/%F0#L3#L3#K3#J3#I1"E.A+<&8#8"7!6#6#11135"5"4"3 102 00*)*+,(&'#   "!   -        -    -  -     - -      -          -,- ,$" % ( -* + , -, -, -+ -+ , -- , -*, - - , -+,,---,+ * ' ' "   # & ' ( ( 0 ++*        !""!!#%%"#"!%)#% %  """!!!    !!! """"""###"""!!! """###""""""!!! !!!"""!!!"""""" !!!!!!######!!! !!!""""""###""""""###%%%%%%"""$$$$$$%%%$$$%%%$$$%%%%%%%%%#########$$$&&&$$$!!!!!!###$$$%%%%%%%%%$$$###"""!!!"""!!! !!! !!!""" !!! ###"""!!! !!!!!!"""###""""""######"""!!!############"""###""""""###$$$######$$$######""""""!!!"""!!! !!!!!!%%%"""""" """###%%%%%%$$$###"""""""""###%%%$$$###%%%&&&###$$$"""!!!###%%%$$$%%%&&&&&&%%%%%%%%%&&&%%%$$$$$$$$$%%%$$$$$$######'''$$$###"""   !!!"""!!!""" ###$$$###!!!    !!!!!!!!!!!!  """ 4-"/(,%1)70%7/$3+ 3+ 6."5,!4+ 7/#8/#2*6-!=4(=3(7."2*7/#80&6/$91'=5+<3(90%8/$7.#8.#3*4*:1%<4(6/#1*5-!80$5,!7-"<2&=3';1&90$;2&91%;3'=5)90$5, 7."7."91%90$7."9/#:1%:1%8/#8/#:1%7."5*6,!8-"9.#7."3*6-"@7*J?1    -$$"7422)'?+$C(D)F,I/#H.%!!!"""###$$$%%%&&&***111333444666@@@KKKHRVRl`BZIAE@81?45A0@?,@7,7/*! - - - - - - - - - - - - - - - - - - - - - D:*;2$=5'?6)=5'>6(<3&9/"91#=6(=2%>1%=7)<8)=/#>0%;6(<5(:-!9.!=4'?7*>6*;3';3'>6*?7+=5):1%90$>6*?7+>6*;2&:2&=4(=7+=7,=7,<4)80%<3(A8,=4)<4(>6*>6*=6)=7*>8+=7+=5)>5):1%:1%;3':2&<3'>6*=5)<4(<4(90$:1%<4(<4(<4(<5)91%6/#92';3(;4):3'92'91&80$7/#8/$8/$7/$:2'<4)<4)5-":2'9/$7,!4)2&2&2(5+7."7/#80$;3'90$91$7/"3+1)4, 4,!4,"5,"5,!1(1)3*2)0(1)1(1'4+5, .&0)0(.'2+ 4+!2(5+ 5+ 3*2*7/#70#0).&2)2)1(2)2+!/(/(1*!0)/) +$'!&     E/$E/"K3$F/!I2$J3%G0"C,@*>(9$5!5!8$7$105#3!3 5"4"3!101 .,,& +.-,(&!  #"!            -  -  -      - - - - -          -      -,,,>!" % ( -* , , -, -+ -+ , -- - , , -- , -+ , + ,-.- -, * % -# -     -$'' & $ -0 ), -  )        ! ""$$& %#$" $%(!$$$!"""" !!! !!!   !!!!!!!!!!!!"""!!!###"""!!!!!!!!!"""###"""!!!!!! """ ###$$$######!!! """""""""###!!! !!!###!!!!!!###&&&$$$#########%%%%%%%%%###$$$$$$%%%$$$######$$$%%%$$$"""!!!###%%%&&&&&&%%%$$$%%%$$$""""""""" """!!! !!! !!!""""""!!!!!!"""""" !!!"""""""""#########$$$###""""""$$$#########!!!!!!""""""$$$$$$#########"""""""""!!! """###$$$###$$$!!!!!!  ###%%%%%%%%%""""""""""""$$$###%%%$$$$$$&&&$$$######"""###"""###$$$%%%&&&&&&&&&'''&&&%%%%%%&&&&&&%%%$$$$$$$$$###"""###"""!!!!!!   !!!"""!!! !!!"""!!! !!! """!!!!!!!!! """### ###$$$$$$/(-%3+!:2(80&4,!4+ 6."6-!4+ 7/#80$2)3*:1%;2&7."3*7.#80%6.$7/%;3);2'8/%7.#7-"7-"3)4*;1&=4(7/#3+6.":1%6-"8.#=3(>4(;2&8/#;2&;2&=4(>5)90$6-!80$91%90$90$7.":0$;1%:0$8.#7."90#7."3)6,!6+ 7-"5, 0'4+ <3'B8+[N<   - &+)41.5$"=& >$B'E+D(F( """###$$$%%%&&&'''***111333555:::DDDPUV^fgI[U=OB=>59789;A8??,60 #%21 - - - - - - - - - - - - - - - - NB1?5'8/"=4'@7*=5(>5(<3&9/"91#>7)=1%6)?6*;2&<3'?7+?7+>5):2&91%=5)?7+?7+;2&80$<3'<6+>8->8,;4(6/":2%A8,>5)=4(>6*>5)<5)=5*>7+?8,>6*>6*=4)<4(<3'90%;2'=5)?6*=5)>5):2&:2&:1%;2&;4(>7+;4(3,!70%:3'92'81&81%91&91&8/$90%90%5-"6.#:2':2'4,!:2'<2'9/#5*3(3(4)6,!8/#8/#7/#7/#91$:2%6.!3+1)4+ 5,"4+!5,#5-"1(2*2)0(0'1(0'2(7."7."0)1*1*-&0)0'0'4+ 5+ 2)2)80%7/$1*-&.&3*2)2)3+"0) /(0* -&0* ,&#'   A.$E/#G0#F/"@*E/$I4'D-!?)='<'9%6"6":&7$0./5#3!3 6#2 0/.1 )$ )--+**%    -" ##"     -         -     -    -  -      -  - - -        - -, ,,- -; " % ( -* + , -, -+ * -+ -, -. - -- , + + -+ -, -, -, + ) $ -       -# % & & % . *+  ,     !! !#!%$& )#'!%%" %% '!$%& #"!!!!"""###!!!   ###### !!!!!!"""""""""!!! !!!""""""!!!  !!!!!!#########!!!""""""""" !!! !!!!!!!!!!!!!!! ### """###$$$$$$$$$%%%$$$######$$$$$$$$$$$$############$$$#########$$$&&&%%%%%%$$$#########""""""!!!!!!######!!! !!!"""###"""######"""!!!!!!"""$$$$$$###"""###$$$#########$$$$$$###$$$!!! !!!!!!###$$$"""###############!!!!!!  ###"""%%%$$$### !!!"""###$$$""""""!!!#########$$$%%%"""######"""!!!""""""""""""######$$$&&&&&&&&&%%%$$$&&&&&&%%%###############"""""""""!!! """""" ###""" !!!!!!  !!!  """ !!!"""""""""### !!!%%%######$$$-%2+!;3)91&4,!4, 6."6."4+ 8/#:1%3+3*:0$:1%5,!4+ 8/%80%6.$6.$;3);3(8/%6-"6-!7."3)5*=3'>5)7.#3+7.#:1&7-"8.#>4)?5*;2&7/";3&:1%;2&<3'8/#6-!91%:1%7."9/$7-!:0%:0%8/#8/#8/#:1%6, 5+ 7,!7,!6,!3*0'3+<3':1%C9+   -   (1-32.4 9C&E,M3%I,"L*$N1*###$$$&&&&&&'''&&&***222444666>>>LUV]kjQ__ANO/><6>94=93A@4<:&!!+65  - - - - - - - - - - - - - - - - - - - - - - - - - B8):2$7.!<3&?6)=4'>5(=4'90#:2$>7)=1%6)>6*:1%<4(@8,@7+?6*;2&:2&>5)@7+@8,<3'90$<4(<6+=7,=7+;4(6/#;2&A8+>5(<4'=5(=5)<5)=5*>7,@9-@7+>5)>5)=5);3'91%;2&<3'?6*=4(=4):2&;3':2&:2&<4(?7+:2&2+ 81%92'70%6/$7/$:2'=5*:2&91%7/#4, 5-";3(;3(6.#91%:1&8.#4*3(4(3)6, 7."6."6."6."80#7/"4,2)1(2*4+!2* 4,"5,!0'1(.&.&/'0'/%1'7."7/"1*1*2+ 1)3+ 2)3) 5+!5+ 2)1)4,!5."1),$/&2)1(3+!4,"0)-&-'/) 1* ,%' (! B.$D."H2'D/$@,!B.#F2'A-"<'9%9%8%6"8#8#424 22 5$2 6#6$/,+*))*,,,,)# - ! !  !"""       -   -     - -    - -   -    -     -         - -, ++- ( -" & -) -+ + -+ -) -' -) -+ , - - + * + , **) % -%   -   " -    " # & ' ( - - -  -     ! !"#!""$"!#%%& '!%"!$& $$& %#$!!!!$$$""" """   """!!!######!!!!!!""""""!!!!!!!!!"""  !!!!!!"""###$$$$$$$$$$$$!!!###!!!  """ !!! !!! ###"""%%%$$$###$$$%%%$$$$$$%%%#########$$$%%%$$$""""""###"""""""""!!!!!!###!!!!!!"""!!!""""""!!!!!!!!!!!!!!!###"""!!!!!!"""!!!"""###!!!!!!###$$$$$$###$$$%%%$$$$$$$$$!!!!!!"""""""""""""""###$$$$$$$$$###!!!!!! """###$$$%%%!!!""" !!!!!!""""""######"""$$$###%%%%%%$$$"""###!!! !!! !!!!!!!!!"""######$$$%%%&&&%%%$$$&&&&&&######$$$""""""!!!!!!%%%!!! """!!! ###### """"""!!!!!!######""""""!!!    """!!!!!!%%% """$$$!!!"""###!!!""";3(91&5-"4,!6."5-!5,!8/$;2&4+4+;2&;2&5,!4,!90&80&5-#5-#:3)<4*80%7."7-":0%4*5+=3(>5)7/#4+7/#:2&7."8.#=3(>5)90$7.!:1%90$91%;2&80$7."91%90$9/$;1%8/#:1%8/#6,!8/#80#<3&9/#5+ 5+ 4)7,!6-"3*4, :1%90$@6)H<.     ,50-1+5#>E%@'?)F+ C&B& ###%%%''''''(((''')))333555888MUV_kkP`_@RQ1FC-?>*@A(?@*88-.+$%)( - - - - - - - - - - - - - - - - - - - - - - - G<,=4%;2%8/"<3&?6)<4&>5(=4':1$92$=6(<1%;/#;6'<5'=0%<0$;5'=5'<1$90";3&?6*?6*:2&=5)A8,@8,?6*;2&;3'>6*@7+A9-=5);2&?7+;6*=7+=7+;4(70$<4'A7+=4'<3&=4(>6*=5*<5*>6,?8-A8,?6*=4(<4(<3'80$7/#<4(>6*;3'<4(;2&;3':2&90$;2&>6*91%3+92&70%81%5."6/#81%;3(:2&:1%5, 3+4-!<5*<4)91&90%:1%9.#5*4)4)3(4*6-!6-!5-!7."7/"6.!4, 0(0(/'1(1)3*!3+/'1)/'.&.&0'/%0&6.!5- 4, 2+2+2+ 4-"5-#5+"5+!6+!2)0(2*5.#2+.&0'1(/&3* 4,"0)-&.)/)0)*#' ' ?-$C.#A-!B.#B0&A.$>,!?,!=+ :(7%7$7$9%9$5 336"8%6#4"2 ///,('&)-.0 -+& " -  - !"!"    - -   - -      - -                   -          - -+,. +/ -$ -& -) **( ' -( ++,- + ) * (&% #   " # !  -    &(( ' 0#+ . -     !#"%"!!!#& %$& & $%% '!$#'!'!& ("'"$!!!"""###!!!  !!! !!!""" !!!"""######"""!!!""""""  !!!!!!!!! !!!""""""!!!"""$$$&&&$$$$$$""" !!!!!!   !!! !!!!!!"""$$$###$$$""""""!!!###%%%$$$###$$$$$$%%%### !!! !!!!!! !!!"""!!!!!!######"""""" !!!"""!!! !!!!!! !!!"""""""""""""""######$$$#########$$$"""""""""""""""###############$$$$$$$$$"""######"""!!!!!! ######$$$%%%"""!!!!!!!!!### !!!"""###"""$$$$$$#########$$$$$$"""###"""  ###$$$######$$$&&&&&&$$$%%%%%%############"""###$$$%%%"""!!!""""""!!! !!!!!!"""$$$###""""""###"""""""""  !!! !!!!!!"""###"""###"""!!!$$$""" !!!91&6.#5-"7.#6."6-!80$:2&4+4+;3'=4(7.#4+ 80%7/%5-#6.$<4*<3)7/$6-"5, :0%3)4*<2&=4(80$5-!80$;2&9/$9.#<2'=3':0$7/"80#7/#90$<4(:1%8/#90$8/#:0%<2':0$;2&8."4*9/$:2%=4(8/#7-!7,!5+9.#:0%4+ 6."90%:1%=3(E:,iXA -  -   %"/40,/(0% ? E$I-%A*C+!B* D-#R7/ ###&&&((((((((('''(((333555HLObjlR__>ON/DA2EC0@?,;;#67)54++) !++- - - - - - - - - - - - - - - - - - - - p`HA7(6.!;2%90#=4'?6)<3&=4'=3&:1$81#=6(=2%:/":5&=5'=1%:0$:4&=4'<1%9/"<3&?6*>5);2&=5)@8,?7+=4(:1%;2&?7+?7+@8,=6):3&>6*<5*=6+=6*;3(80$<4'?7*<3';2&=5)?6+=5*=5*=6+>6+?6*>6*;3':2&<3':2&80$<4(=5);2&;2&:1%;2&<3(:2&;2&@8,92&4, ;3'92&92%81$71#92$:3&:3&;3&8/#4, 6.";4);3(81%80$90%8.#5*4(3'1&2(4, 7/#6-!6."7."7."4,0(0'1(1(2) 2* 2)/'0(1)0(.%1(1(0&5, 7."4-!2+1*0)4,"7.%6,#5+!6+"/&.%1*5-"2*/'.%0'-$3+!2+!/(.'/)0* 0) -&)"@-#B.#C/#@."?.$@/%>-#;* 9(7%7%6#6#9%9%5!36!7#7$8%6$2!.,)')&)++*+,)" -   !       -       - - - - -  -    -           - -     -      . / -. -, '  ! # ( )*)'(*+* , -, -) % $ ! -" "   % -' "   % & ' (.$+  - $   "#! %"'!%###$& & %& #"& )#("& $& '!'!)#'!'"'"######!!! !!!!!!!!!!!!"""!!!!!!!!!######""""""!!!"""%%% !!!"""!!! !!!!!!"""$$$$$$######$$$### !!!###""" """######""""""!!!!!!$$$"""!!!""" $$$%%%$$$############"""  !!!""""""###"""""""""###$$$$$$"""""""""!!! !!!######!!!""" !!!"""""""""###$$$$$$#########"""$$$""" !!!"""###"""""""""###$$$$$$$$$$$$###!!!"""$$$###  !!!######!!! !!!"""!!!!!!!!!""" """###!!!!!!###$$$$$$###""""""!!!!!! ###"""!!!!!!"""###"""$$$&&&&&&%%%%%%$$$&&&%%%%%%$$$###"""!!!""""""!!!!!!###"""!!!"""######""""""###$$$"""!!!!!! !!!  """### """######"""!!! """######!!!###"""!!!5-#5-"7/$7/#6."8/#:1%4+4+;2&=4(7.#3* 80%7/%4-#5.$;3):1'6.#6-"4, 90$2)3)<3'=3(9/$7-":1&=3(90$7.#:0%<2':1%7/"7."6-!80$=5);2&90$:1%90$:1%<2'90$<2'9/#3):0$:1$=4'8."7, 7,!4)7,!8.#5,!7.#80$;1&<3(?5)E:* -    - !*-).0+.*$7!E'"E)"E-%L5,P8.T5,T3+!!!$$$&&&))))))((('''***333@FI`gjV_aDNO3@A0A@2@;095,+*+("  !%!.43 - - - - - - - - - - - - - - - - - - - - KA1<3%7.!<3&90#=4'>5(<4&>5(<3&:1#80"=6(>3&:/":4&>6(>2&:1$:4&>5(<2%8/"<4'?6*=3(;2'<4(?6*>5);3'91%:2&?7+?7+?7+<4(91%<5(<5)<5*<5):3'80$<4(>6*:1%:1%=4(>5*<4)=5*<5*<5)?6*>6*;2&91%;3';2&:1%=4(;3'91%:2&90$:1%>5)>6*90$?7+<4(80$;3'<5);4';4'92%91%:3&:3&<4'91%4+ 6.#:2':2'80$70$80%9/$5+ 3)4*3)2(3)5, 6."7."7/#5-!2*/'.&3+ 2)3*!3*!4+ 1)/'0(1)1(0'0&2(6- 6.!2*1*1*0)4,"7.%6,$6,"7,#.&.%3+ 3+ 0(.'0(1(/&0(1) -&-'0* 0) 0) >-$A-#C0$E1%F2&@/$?0%=-"8(6&5$8'6$5"8#6"4 :%:$8$9%7$5#3!( *-'$',. ++*)"   !!        - -             -  -  - -     -       -   -         . -/ . ,- < " '' (((( )* + * * ' # # -"      ' "  - $ ) $ -    & ) ( % -$-!    #"! $#$$%%$%%& && $!$("("'!%'!'!("'!'!%$% $$$!!!""" !!!$$$!!!###"""!!!""""""!!!"""""""""""" """$$$$$$###!!!!!!!!!""" !!!"""""""""!!! !!!""""""###$$$###%%%"""""""""""" #########""""""###$$$""" !!!######$$$%%%"""!!!######"""""""""""""""!!!!!! """"""!!!""""""!!!!!!!!!!!!!!!"""###$$$$$$###$$$$$$%%%%%%###"""######$$$###""""""##################""""""###""" !!!""""""!!!!!! !!!!!!!!!!!! !!!"""!!!!!!!!!"""###$$$"""!!! !!!"""#########""""""######$$$%%%%%%%%%%%%%%%%%%&&&&&&%%%$$$###"""""""""!!! !!! !!!###%%%$$$ !!!###"""$$$$$$$$$"""!!!!!! !!!  """#########$$$###!!! !!!$$$###"""###"""!!!"""5-"7/$8/$6."7."90$4+ 4+;2&=4(7."2)80%80&5.$7/%<3):1'7/#6."5-!:1%3*3*;2&=4(:0%8.#;1&?5*9/$6-!90%<3'8/#6-!80$7/#7.";3';2&80#;2&;2&:1%;2&90$<3':0$3):0$80#=4'9/#7-!5*3)8.":1&:1%6."6-":1&>4)<3'=3%RE2   - # 540/-'3'"?& ?#B(L5'O5(S3*Q/&X?8"""%%%'''******(((&&&)))>NNWhhS_bCOQ6BD3>?0:5090-.).$$) !#$'(& - - - - - - - - - - - - - - - - `R5(<2%8/"<3&@5*<3';3'<3'?6*>5);3'91%:1%?7+>7*>7*:4'81%<5)<5)<5)<4(:2&91%<4(?7+:2&91%=4(>6*<5)=6*=5*<4(>5)>6*;3';3'=4(:2&80$:2&<3';3';3'90$91%>5)>6*91%?8,:3'81%;4(=6*;4(;5(:2&80$:2&91%;3'80$4+ 6.#80%:2&70$70#80$90$6, 3)3)3)3(4*5, 6-"6.#7.#6."3*0'/'2)3*3* 4+ 5,!3+ 1(2*1)0(0'0'2(4,4,0)/(0)0)3+!3+"2) 4*!5+"/&-%2* 1)/'.&0(1(/'3,"2+!0)/(/) /(?-#A-"E2'F1%G2&?-#;+":+"9)6&7&:)7%6#6"5"8#='=';%9%7$5"0/-.)&(+,)))&  - -  !!         - -            -                 - -      - - -    - 0 -0 . -- -*  -" & ') * -+ * ( * ( &  -# # " -" # # $ -( " -# '       # ' # % $ +&    !!!!$$"#%%$%%& %& '!#$'!& '!& ("("'!'!& '!("(# $$$"""""" !!!!!!$$$%%%$$$""""""###!!!###$$$###!!! !!!!!! """%%%%%%%%%###"""""""""   """###!!!!!!!!!"""!!! ######"""$$$###$$$$$$%%%%%%!!!!!! !!!###"""!!!""""""""""""""" """ ###$$$"""!!!"""!!!!!!!!!"""""""""!!!!!! !!!"""""""""######""""""!!! !!!###$$$$$$%%%$$$$$$###$$$%%%$$$#####################$$$$$$############""" """###!!! !!! $$$!!!""" """!!! !!! !!!###""""""###!!!"""$$$""" !!! ######"""###$$$"""######$$$%%%%%%&&&$$$%%%%%%%%%''''''%%%$$$%%%$$$$$$######$$$###"""!!!!!!""""""""" !!!"""######&&&%%%###!!! !!!!!!!!!  """$$$######$$$$$$"""!!!"""###$$$$$$###"""!!!!!!###"""8/$8/#6-!5-!8/$3*3*;2&=4(5,!0(8/%81&5-#7/%;3):1'7/#6-"6-!91%5, 4*9/#;2&9/$8.#<2'?5*8/#5, 90%<3'6-!5, :1%:1%8/#;2&90$7.";2&;2&80$80$:2&;2&8/#7."90$7."90%7-"6, 4*2(7.":1&:1&6."8/$90%<2';1&8.!E:+yfK -  )*'830*"7$F+H,L0%O/*S2.K+"F& """%%%'''******)))%%%?SRSigLdb;SQ1CC3@A3><092)/(%#!-#& !#%!&*+  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A7'>5'91$6- 90#8/";3&>5(>5(@7*=4';1$90#=4'=3&;2$>6(?6);1$80#:3%>5';2%8/!;3%@6*=4(:1%;3'>5)<3':2&91%:1%?7+<5)=6)92&92&?8+>7+=6*<5):2&91%<3'?6*;3'90$=4(?7+=6*>6+>6+<4(=5)?7+=5)<4(=5):1%80$<3'<3';3'=4(:2&:1%>5)>6*:1&<5):2&91%;4(<5);4(;4(92&70$91%70#:1%7."6-"7.#70$:3'70$6/#80$:0%6,!4)4)3)3)5+ 6-"6."6-"6."4, 2*1)/'1)3*3* 4+!4+!1)1(3*2)1(0'/&0'5, 2)/&0(1*1)3+!3+!3)!3* 4*!0'-%0)1)0(-%/'/&/'0)1* /)/).(@-#?-"E1&H1#F/#>+!9*!5)"6( 8(9(9'5!5"6#7#:%>'<&9$9#8#3 //1-.))+&$%$    !       -  -                -      -        -  - -  - - -  -   -      -0 -. -. -- & # & ( -* * -* ( ' ( # # -$ ! " " # $ $ $ "  " "     - -     ! # " !  -   "!# "%%$$& $%$'!("%%' & (!$)#("("'!%("*$&!&!"""######!!! !!!!!!!!!!!!!!!###""""""$$$$$$""""""!!! !!! !!!###$$$$$$###"""!!!###"""!!! !!!!!!!!! !!!"""!!!"""### """$$$###!!!"""#########!!! !!!!!! """!!!!!!!!!"""""""""""" !!!!!!!!!###"""!!!"""!!!!!!!!!###%%%######$$$"""###"""!!! !!!"""#########$$$%%%$$$###$$$$$$#########"""######$$$%%%$$$###""""""###!!! ###"""!!!"""!!!!!!!!!###"""""" !!!"""!!!!!!!!!!!! """!!!!!!!!!""""""$$$######""" $$$%%%"""###""""""############%%%&&&%%%%%%%%%'''&&&&&&%%%%%%%%%$$$"""$$$%%%$$$$$$%%% """ """"""###%%%###""" !!!###""""""  !!!$$$######$$$%%%###"""#########$$$######"""!!!"""$$$###7/$5-!4, 7.#2)1);2&=4)5,!0(7/$70%3,!5.#:2';2'7/#6-!7."90$6-!5+9/$<2&9/$7-"<2'=3(8/#3*8/#<3'7."4, ;2&:2&7.";2&80$6-!;3':2&7."8/#90$<4(5, 6-!7."6-"7.#5, 5,!6-!5, 7."8."7-!8.":0%:0$90$9/$7-!?5(J>/   -  !$"4/,5,'3%@)E+J.'V<;J0/G("F'R:2 ###%%%'''+++,,,***ARRUhhOge>07653/6*'(#$ !#%!"$!#,-/  - - - - - - - - - - - - - - - - - - - - - - QD1=3%;2%91#8/"90#80";2%>5(>5(?7)?6);2%:1$>5(=4';2%>6)>6(;1$8/":2$=4'<2%6. ;2%@6*>4):1%:1%<3';3':2&90$91%>7+<5(<5)82%81%<5)>6*=5)=5);2&91%<4(?7+<3'80$<4(>6*<5)<5)=5*<4(=5)?7+=4(<4(=5)80$6.";3'=4(<3'<4(:2&:1%=4(=5):1&:3':3'92&92&;5(<5);4(92&6/#80$7/#80$7.#7.#6."70$:3'70$6/#80$8/$6+ 4)4)3)3)4+5, 6."6."6-!4, 4+ 1)/&2)3+3*5, 4+ 0'0'1(2)1(0'/&.&0(1)2*2*4, 2*1)3+!0(0(3+ 2*,$.'0)1),$-%.&/&0).&/(?-#A-">+ F0#M2#F/"?,":+#5)"3&7( ;)!7%7!6"5"7#9$;'<'7"7!7"6!22.3!00 1".*#     !#!      - -   - -     - -    -        -  -    - - -   - -      -       - . -- -, , %  % ' -( ( -) ' # % ) ( -     # % & $ "% % # %!            -    !# !"'!(!' %' '!&%'!)#& %$' )#%% )$)$)#(")#+%'!)$*%%%%""""""   !!!!!!"""!!!!!!############""" !!!"""!!!  """"""###$$$###"""""""""!!! !!! !!!!!! !!!!!! """ !!! """"""$$$###$$$$$$###!!! !!! !!!"""$$$"""!!! !!! !!!!!! !!!!!!!!!"""$$$"""""""""$$$###"""###"""""""""######!!!"""###$$$$$$$$$$$$%%%###$$$$$$""""""######$$$$$$###"""""""""### !!!###""" !!!!!! """$$$###!!!!!!"""!!!!!!!!!""""""!!! !!! """"""###$$$###!!!!!!!!!$$$$$$###$$$$$$###""""""!!!"""$$$%%%%%%%%%&&&'''&&&&&&%%%###$$$$$$$$$$$$$$$%%%###""" """ ###"""#########""" """###$$$  """"""###$$$$$$%%%%%%""""""##################"""###%%%$$$###3+ 2)5-!1(0':1%=4)6."1)6.#6/$3+!5-#;2';3(7.#6-!7/#9/#6-!6-!;2&>4)90$5, 90$<3'8/#2)7."=4(90$5, ;2&90$5, :1%90$6.";2&:1%80#8/#8/#:2&5, 7."8/#7.#8/$6-!5, 90$8/#8/"7.!7-!8.":1%:0%:0%:0%8.#;2&F;-fT> - -  !!)'&53/-+&;,&K1,R62J-+I&'C"F(K,"!!!###&&&(((+++---FPO[hjZhkCUV1IG*B@-@?0;<-,.3 1" !#% "*&(#''  - - - - - - - - - - - - - - - - - - - - - - ?5%80";2%:1$80"80"8/":2$>5(=4'?6)?6):2$;2%>5(=4';2$=5'=5';2%7/!91#<3&;2%5,;2%@7+=4(:1%;3'?6*=5);3'91%91%>6*=5);4'81$81$<4(>6*=5)>5);2&91%>5)@8,;3'80$=5)>6*;3';4(=5)<4(>5)?7+=5)=5)>6*80$6."<3';3'91%;2&:2&91%<4(<4(90%;3'91%80%;3(<5*;4(92'81%5-!7/$70$80$80$7.#5,!80$;3'81$70$80$8/#5+ 4)3)3)4)4*5, 7.#6."5-!4, 3+/'0'1)2*2)4+5, 1(/&/&2(0'0&.%.&1)3+3*3*4+ 1)0)2* /'1)4+ 0(+#/'2* 0(*"*#,%/'/(0) A-#A-!D/"L2#O4%G/#B.#<,%6(!3%8( :(7"8$:%7"4 7"9&:&7"0 6"7"4 12.0.2#,-,$  -#####    - -  -   -      - -   -      - -      -   -  - -   -      -            * -+ , - - 9! & % & -' -$ ! " -' &     " $ & ) '% ) & ( $        - -  !"!  $("'!'!'!("("(!(!("("' %("("'!'!'!(#'"("(#*%)$)$(#&!&!###!!!"""""" """!!!  """"""!!!"""$$$%%%$$$""" """###!!!!!!###"""###%%%$$$"""!!!!!! !!! !!! !!!!!! !!!!!!######""""""### """"""!!!!!!!!!"""!!!!!!###""""""######""""""###!!!  """""" !!! !!!!!!""""""""""""!!!###%%%%%%#########$$$###$$$$$$###"""""""""$$$###%%%%%%###$$$$$$###!!!"""""""""######""""""!!!"""#########!!!!!!   """""""""""""""###$$$$$$$$$###""""""!!!!!!"""!!!!!!"""$$$ """!!! """"""""""""##################"""$$$%%%%%%%%%%%%'''%%%%%%$$$"""###&&&###!!!&&&%%%""""""  """"""!!! """$$$"""######!!!""" !!!!!!!!!   ######"""$$$&&&%%%$$$######$$$###$$$$$$$$$###$$$$$$###""""""0(4, 0(/&8/$<3'6.#1)5.#6/$4,"6-#:2&;2'6-"5, 7-"8."7.!7-!<3'?5*:0%5, 9/$>4)8.#2)90$>5)90$5, ;2&:1%7.";2&:2&90$<4(:2&:1%80$90$:1&7."6.!8/$8/$:1&:1%5-!90$8/#8."7- 7-!8.";2&:1%;2&<2&8/#9/#@6)F:+       "$#55330.5,)H3.H0*J/)<(B. E)A!M4, """$$$&&&(((+++KQON^\SddETW4CF4DE,>=):9)35) !# -  !$% "'!#+,, - - - - - - - - - - - - - - - - - - - - - G<,:1#8/";2%<3&90#8/"80";2%?6)=4'@7*?6)91$:2%>5(<4';2%?6)>6):2%5- 7/";3%:2$4+90#=4(;3';2&=5)?7+<4(;2&;2&:1%>6*>5):2&80$80$;3'=5)=5)=4(91%8/#=5)@8,=4(:2&?6*?7+<5)<4(<4(<4(>6*@8,>6*>5)=5)80$7/#;3'<3':2&<3';3':1%;3'<4(91%:3&:2&80%:3(=6+:3'70%7/$3+ 7/$91&80%90%6-"4+ 80$92&70$80%8/$80$6,!4)3)3)5+ 6,!6-!6."7/#7/#4+ 2*0(0'0'0'2)4+5, 4+ /&1'/%/%0&.%.%/'2)1)1)2*0(0(3,"2* /'2*.%*"/'1).&)"*#-&.'?-#B-"F0%J1$Q4#M1#G/"C-#=+"7'6&:( 8%6":%:&6"37$7$9%7"7#8#6"33 23 03!,/,+% "    $$! "    -    -    - -  -   -       -            -  - -    -     -              + -, -- - )   $ ( & "   - $% -"  -$ % -% ' $  !         -   !!  #$%("("& %'!)#*$)"("(!&&)#'"'!& '")$'"&!'")$(#(#)$'"(#  """""""""   !!!"""""""""$$$$$$######!!!!!!!!!!!!"""$$$""""""$$$$$$#########$$$$$$$$$!!!!!!!!!!!!"""!!!###""""""!!! !!!!!! !!!!!! !!!"""######"""###$$$###!!!  !!! !!!!!!!!!  !!!"""$$$$$$######%%%%%%###"""###$$$$$$%%%&&&%%%$$$###""""""""""""###"""######""" """!!!"""######"""""""""######$$$"""!!!!!!   !!!#########$$$%%%%%%$$$"""""""""!!!###!!!!!!"""!!!###!!!!!!!!!!!!!!!""""""!!!###$$$######$$$$$$&&&%%%%%%'''%%%$$$$$$###%%%&&&%%%$$$$$$"""""""""  !!!###############&&&"""######!!!!!!  !!!"""!!!"""""" !!!""" """$$$$$$"""$$$$$$%%%$$$""""""######$$$$$$$$$$$$$$$$$$"""!!!"""###5-"1)0'8/$:1&5-!0(4,"6.$4,!6-";2&;2'7.#7-"8/#8/#8."7.">4(@6+:1%6,!:0%?5*90$4+ ;2&=4(8/"6-!;2&:1%7/#;2&:2&:1%>5)<3':2&:1%;2&<3'8/#6."8/#7.";2&;2&7.":1%9/#8."7-!8.!8."<2&:1%<2&;2&6, 7.!>4'@5'OB1 -  -  !"""(*)56211+/"8 9:"D(C'?=U?9!!!###$$$''')))NYVUdcRcdFWY;JO8GK0@A-<;(53)12!$(  $% ! &'&,1/  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - wfLF<,:1$90#;2%<4&:1$80"90#;2%?6);2%?6)A8+;2%;3&>5(<4&;2%?6)@8*:3%5,7.!;3&:1$2)5,:2&;3';3'=5)?6*<4(;3':2&91%=5)=5)91%80$80#;3'=4(=4(=4(8/#5-!<4(@7+=5)<3'?6*>6*=6*>6*>6*<3'?6*A9->6*=4(=4(90$8/#;3'<4(<3'=4(;3'80$91%:2&:2&:3':2'80%92';4);4(82&6.$3+ 80%91&80%:1&6-!3+70$81%70$70%7.$80$6,"4*3)4*6,!7."7."5-!6."7."4, 1)0'.&/'/'3*5, 5,!6-!2)5+ 0%/%0&-#,#-$0'0(0(2*2*1)2* 1)0'2*.&+#-&.&-&,$*"/(A-"B-!I0$M3#N3"I/"G/$D.#=*8':(:'238$;&7"47#:'7#7#8%8$3 5"23 //..,,)&  - !  $#!    - -    -    -       - -  -  -          - -    -           -               , -,,+)  -' & "    -! %$ " # -% & % $        "  -     "#!!#& &&' %'!)#*$+%("'!)"& &*$*$("'!*$+%(#'"(#)$(#'#'"&!(#*$ !!!!!!  !!!!!!"""!!!""""""!!!!!!""""""###$$$$$$$$$######""" """!!!!!!###$$$""" """######$$$######$$$"""!!!!!!!!!""""""!!!$$$$$$"""!!!!!!"""""""""!!! !!!######"""###%%%$$$%%%###""""""    """""" !!! !!!"""$$$$$$$$$###"""######""""""$$$%%%$$$%%%&&&&&&%%%$$$######!!! """"""!!!###""" !!!###$$$$$$#########"""""""""###  !!!"""###!!!!!!!!!!!!"""###$$$%%%%%%$$$""""""""""""!!! """!!!"""""" !!!######!!!######!!!!!!$$$$$$$$$###$$$&&&'''%%%((('''&&&&&&$$$$$$%%%&&&$$$$$$###!!!""""""!!!!!!###############$$$%%%$$$"""###"""### !!!###"""!!!!!! !!!!!!!!!"""###"""$$$$$$$$$###""""""###$$$%%%%%%$$$######$$$$$$"""###$$$%%%3* 1)80%:2'5-"0(4,"6/$4, 5-!:1%:1&8/#8.#8/#:1%9/#6, ?6*>5):0%6,!;1%?5*90%5,!;2&<3'7."6.!<3':1%7/#;2&;2&90$<3'90$91%91%:2&<3'7."6."7.#6-":1&;2&7.":0$90#9/#8."8."7-!;1%:0$;1&<2&8.":0$>4(;1$F;+!   - - $$#!'(",14<"=":";$B#F#K2,"""$$$%%%(((N`_QbcM`aDVX:LP6FJ/@A(;9)74!+( )&!!! !#% !"#%)..  - - - - - - - - - - - - - - - -  MA1@6(:0#:0#<3&=3&90#:1$91$;2%>5(90#=4'?7):2$<3&>6(<4&:2$?5(?7*:2%6- 8/!<3&80"0(2*80$;3':2&<4(@7+=5):1%90$80$<4(=4(91%7/#7/#;2&=4(=5)=5)7."3+;3'@7+;3';3'>6*>6*=6*>7*>6*;2&=5)@8,=5);3'<4(91%80$;2&<3';3'<4(:2&80$:1%;2&;3&<4(;3'7/%81&;4):3(93'91&4,!70%80%7/$90%6-!4+6-"81%6/#5.#6.#6-#7-#4)2(3)5+ 6,!8/#8/#6."4+5-!1(.&.&0(0(1(4+6-!6-!4+4*2'2'1'0&-$.%0'1(1)2*2* 1*2* 1)2)3+.&+#-&/'.'+#?-"B-"J/!J0!N4#J1"E- D-"B,"<(<*A/#;(4 46!:%:&7"4 6#8%:&8$4!3 26#3!0./-+' (&  !""  !     - -      -  - -           -   -   -   -  -   -    - -         -              +,,, 3  # $ !  "$ " -$ ' & % %"         - -  - """  %%& $%& '!)#)#& '!)#'!&,%,&)$'"*$*$+%)$)$*$)$'"% $'")$*%!!!!!!!!! !!!### !!!###$$$###"""  !!!!!!"""###$$$$$$###"""!!!!!!!!! """###"""###$$$"""!!!"""######$$$%%%$$$###"""!!! """"""!!!#########!!!"""###!!!!!!""" !!!!!!"""###$$$######$$$%%%######"""!!!!!!  ######""" ###&&&$$$######""""""""""""###$$$%%%%%%$$$%%%&&&%%%$$$$$$""""""""""""######""" #########$$$%%%%%%%%%%%%$$$"""!!!!!!""" """""" """"""$$$$$$###!!!!!!###!!!###%%%%%%$$$$$$######"""  """###$$$ !!!"""######$$$###""""""$$$###"""%%%&&&(((&&&%%%'''&&&&&&%%%$$$$$$$$$%%%###$$$$$$ """###""" !!!###$$$###%%%%%%&&&"""!!!!!!!!!""" """!!! """!!!  """%%%$$$$$$""""""######$$$$$$$$$$$$######$$$$$$$$$%%%%%%%%%%%%2)7/$90&4,!0(4-"6/#4+ 6-"90$:1&8.#8/#9/$<2&7-!2)?5*>5)8/#5, ;1%=4(8/#5, ;2&<4'90$:1%<4(91%8/#<4(<3'91%;2&7/#:2&;2&;3'=4(7."6-!:1%6-"90$;2&7.!9/#9/#90#9/"8/"7-!;1%:0$;1%;2&90#:1$<2%;1$C8*I=, '$    - - "!#0%9'7:7C& H)$C'"C)&WB> """$$$SiiTllQhiMceDZ]8OQ4JL2BD0<>#++ ! $%$!" !#$ !&'(//  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  o^GG<-<2%;1$<2%=4'=4&:0#;3%;3&;2&?6):1$>5(@7*;2%;2%>4'<3&;2%?6)>7):3%6.!8/"<3&8/"1(3+91%<3';2&>5)@8,=5)91%80$90$=5)=5):1%7."6.":2&=4(>5)=5)6."4+;3'?6*:2&:2&=5)>6*=6)=6*=5);2&=5)@8,=5);2&<3':2&91%;2&<3';3'<4(:2&8/#:2%=4(;3&<4(;4(80%80%:3(:2(82'81&6.#91&91&80%90%6-!5-!6."70$4-!5-#5.#5,"6,"2(1'2)4+ 4+5-!6."6."5, 3+2)0'0(2*0(0'3+6."5-!3*2(2(1'1&1'.%/%2)4+ 4+ 2+0)0)2+!2* 2)1),$*".&1).'A-"B-!F,H/H0 G/!E/"C-#=(8$<(A."=(8$7#7#<'<';&4 07$9%8$7$4!2 3!2!.0/.)'#  - - "#!!    -   -   -       -     -   -   -    -   -  - -  - -   -       -    - -               *-.- - < ! $ $  -# # $ % & # " !  #    -     #$"! !%&("&' %(")#("(!)#)#& (!.',%+%+%+%*%("'!(#*%*%)$(#'"(#*%+&+& !!! !!!!!! """###$$$###"""!!! !!!!!!!!!###$$$""""""""" !!!"""""""""!!!""""""###$$$%%%$$$###$$$######$$$###$$$"""!!!!!!"""######$$$###""""""###"""!!!!!!!!!"""!!! !!!!!!"""######$$$$$$#########"""!!!""" !!! !!!!!! """###%%%"""!!!""""""%%%&&&%%%$$$$$$###"""######$$$%%%%%%%%%$$$$$$$$$%%%$$$$$$######$$$ """$$$###!!!"""$$$$$$###%%%%%%%%%%%%&&&%%%!!!!!!""" !!!"""!!!!!!!!!"""#########""""""###"""!!!"""%%%%%%###$$$$$$###!!!###$$$"""!!! """"""""""""###"""######"""!!!"""$$$&&&&&&&&&&&&$$$%%%%%%%%%%%%%%%$$$######$$$$$$######%%%$$$"""!!!""""""###!!! !!!!!!  !!!"""###$$$$$$###""""""######$$$$$$$$$$$$%%%$$$############$$$$$$######6-#7/%3,!0)5-"6.#3+6-"80$:1&8.#9/$9/#<2&5, 2)>5)?6*9/#6,!;1&>4(8/#4+:1%<3':1%;2&<4(90$7/#<3'<3'90$;2&:1%:1%:1&90$;2&7."5-!=3(7-"90$<2'8/#:0$90#90#8/"9/#9/#<2&:0$:1$;1$8/":0#=3&;1$<2%E9*  *&    -  (-34;!6#:)"=& E# K)% XpsSnqKmnLjlUoqIac=WZ1NP2LL.HD(@;,12&  !#$ !!%--  - - - - - - - - - - - - - - - - - - - - - - - - -  -MA1B8*<2%;1$:1$;2%<2%90";2%<3':2%>5(90#=4'?6)90#8.!<2&=3&<2%>5(=6(;4'5.!6.!<3&:1%3)5, ;2&<4(;2&>6*@8,>6*;2&91%:2&?6*?6*:2&6."5-!:2&=4(?6*=4(7."6."<4(=5):1%:1%<4(>5)=5)>6*?7+<4(>5)A8,>5);3'<3';2&:2&<3'<3'<3'=5):2&7."80$<4':2%;3';4(91&80&:3(<5*81&80&80&;4)91&80%:0%7-!6."7.#6/#3,!4-#5.#6.#6-#2(0&2(4+ 5, 6."7."6."5, 4+2*0(1)3+0(0'4, 6.!5-!4+2'3(2(3)1'0'0&2)5, 4,!3+ 1*1*2* 1)0'/'-%*"/'?-"B-!I0%F."H0!F.B,D/#A-#9%8$>)<(:$:%9$8#7">*:&6"24!7$6"223"/.1 ,..-+$  !#%#!         -   -   -                 -  - -        - -   - -     -     -  -          ,0 . ' # -: #!! # % % % $ -"         - -   ##""!"& '!& '!("%'!)#)#)#*$*$& )#-&+$+%*$*$-'*$'")#+&,'+&*%)$)$-')#(#'" ######"""!!!"""############"""""" !!!""""""""""""!!!!!! ######""" !!!"""###%%%%%%$$$%%%$$$###"""###$$$###!!! """$$$%%%$$$$$$######"""!!!!!!!!!!!!  !!!""""""!!!"""$$$$$$%%%$$$###$$$### !!! """!!!"""""" !!!###$$$############$$$$$$%%%%%%$$$$$$%%%###"""""""""%%%%%%$$$###$$$%%%$$$###%%%$$$&&&$$$###"""###"""############%%%$$$$$$$$$%%%%%%###""""""!!!!!!!!!!!!!!!!!!!!!"""$$$"""!!!"""!!!!!!###""""""$$$###"""!!!"""###"""!!!$$$"""$$$### !!! !!!!!!"""######$$$$$$"""###%%%%%%%%%&&&$$$###%%%%%%&&&&&&&&&%%%%%%%%%$$$$$$$$$###%%%%%%""" """!!!!!!!!!  !!!!!!!!!!!!"""######$$$$$$$$$$$$############$$$######""""""!!!###$$$%%%%%%###$$$$$$###"""4,"1)6.#7/$4, 6."8/$90%8.#9/$8-";1$6, 4+=4(@6+;1%6-!;1&?5)90$5, ;2%=4(;2%:1%;2'90$7."<3';2&7/#91%90$90$:1%80$;2&6."7."=3(8.#;1&;2&9/#;1$90"8.!6- 9/":0#=3&<2&;1%:0#7. 8.!>4'>4'<2%A6(M@/ **, - - - -    - $%+0%:1)<,$18 C'D+@+N;2 [ssQqrLprInrLorJkn?`c>Y\8SU2OP/GH1F?1C:)50*#% !#$ !#!#**   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eU@G<-@7)<2%;1$9/":0#;2%90";2%;3&90$=4'91$=5(?6):1$8/"=3&>4'<3&>5(;4':3%3,4- ;2&=3'8.!7.";3'=5);3'?7+@9->7*:3&70$:3&@9-@8,:1%7/#4, 91%=5)?6*<4(80$80$<4(<4(90%:1%=4(>5)<4(=5)?7+=5)=5)@8,>5);2&;2&:2&:2&<3';2&;2&=4(;3'80$91$<4&:3%;4&;3'81%81&;4);4)92'91&80&;3(91&8/$:1%6-!5-!7/#6/#4-!4-#5.#5-#6,"2(0&2(4+ 5,!7."7.#6."5-!5,!3*/'1)4+ 2)2)4, 5, 5, 5, 3)4)3(3(1'0&/%2*5,!3, 3+ 3,!1*1)1* /'/'+$*"A-!B-!G0$F0%F/"F,F.E0$>+ 5";&@+ 9#:$9$;&8$9$9$7#25"8%4"3!3!/.--../.+)  - !#%&$"   -          -      - -   - -    -  - - -    - - - -   - - -   -    -    -  -            ') ' -& # 6 - - ! $ $ % -% -#           #" !$$& '!(!(!)"' ("*$*$("*$*$("&)!,%+%*$*$,&+%("(#*%,','+&*%'"+&&!'")$ !!!#########$$$"""$$$!!!!!!!!!"""#########"""!!!!!! !!!""" """ !!!###$$$###$$$$$$!!! """###$$$  $$$#########"""""""""""" !!!###  !!! !!!###$$$"""""""""######"""  !!!"""  !!!###$$$"""###$$$###$$$""""""###$$$"""###$$$"""$$$%%%$$$$$$%%%&&&%%%%%%%%%&&&%%%%%%%%%###"""""""""######"""$$$$$$#########""""""#########!!!!!!"""!!!!!!""""""!!!!!!######"""""""""!!!"""$$$"""!!! """###"""!!!!!!#########$$$### !!!###!!!!!!!!!"""###$$$%%%&&&&&&$$$$$$###$$$%%%%%%&&&&&&&&&&&&###&&&&&&&&&&&&############$$$%%%!!! $$$###!!!   !!! """"""  ###$$$$$$######%%%######################## !!!"""$$$$$$$$$$$$%%%$$$%%%$$$###0(5.#80%6."6."8/#90$8/#8."6,!:0#6- 5,=3'@7+;2&6-!:0%?5)91%5-!:2%=4(:1%80#:1%90$8/#<4(;3'5-!8/#90$:1%90$6-!<4(8/#7."<2'8.#<2';2&9/#:1$8.!5+6,90#;1$=3&=3'<2&8/"6,8.!=3&=3'<2%=2%C7(  +,+  - - -   -   -  &*0#-29#>)@+?,=(@&E)E+!]IB UwzGw|HvzGqtMrw@di9]a3VZ4SV5SU3PQ3FG5,*0&!" !#$ %+) ! !  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - MA1A7)@6(<2$<2%90#:1$=4&;1$=4':1$90#<4';2&=4'?6);1$8/!=3&<2%:1$=4'=6)92%4- 5. :1%=3':0$8/#:1%<4(91%=5)?8+<4(91%6/#:2&?7+?6+80$7."4, 80$=4(>5)<3'91%90$;2&<3':1%:1%=4(=5)<4(<5(=6)<4(<4(>6*<4(:2&:2&91%91%;3':2&;2&=4(;3'91%:2%;3%:3%;4';3'80%70%;3(;4);4);3(70%91&91%80$:0$4+2*6."6/#5.#4-#5.$6.$6,"2(0&2(3*5,!5-!6."6."6-"5-!2*.&1(3+3*3*5,!4+4+ 5,!5+!5+ 5+ 2)2(0'.%5,!5-!2*1*1*/'.'0(-&.'?,!B-!C."C."C0$A, @)J1 M4$>)8%>)='429$>(=(9%5!3 4"3!5#4#2 1 1 1 / .-.,*)#  - -$$%%"     -      -          -          - - - - -  -    -          -    - -  -              ( ) ( -' -$ -  - ! $ % % $ #    - -    """ !%%& &'!& %&("*$("(!)#)#'!'!,%-&,&*$*$)#,&*$)$*$,'+&+&*%(#*%&!& '"(#"""""""""############!!!!!!"""#########""""""  !!!!!!!!!"""""" """$$$###### """!!!###$$$""""""######"""###"""!!!######  !!!!!!!!!!!!!!!$$$######!!!!!! !!! """"""""" """ """"""!!!"""############ $$$$$$$$$$$$$$$###$$$$$$$$$$$$%%%&&&'''%%%$$$%%%&&&&&&%%%%%%$$$"""!!!""""""###$$$###"""""""""!!!!!!"""############!!! !!! !!!###$$$$$$"""!!!!!!"""###"""!!!""""""""""""###$$$###"""###$$$###"""!!!"""""" !!!!!!!!!###$$$&&&((((((&&&%%%$$$%%%###&&&&&&'''&&&%%%$$$&&&''''''&&&%%%$$$%%%%%%$$$%%%!!!!!!$$$###"""  !!!!!!!!! !!!###$$$$$$############!!!############$$$###"""!!!!!!$$$######$$$$$$%%%%%%%%%$$$###5-"7/$6."5-!8/$;2&9/$6, 7-":1#5,6, =4(@6+;1&7-!<2&?6*:1%6-!:1%>5(:2%8/#91%;2&90$=4(<3'4, 90$:1%:1%8/#5, <3'8/#8/#;2&8."<2&;1%9/#;2%8/"4+6,:0#;1$=3&>4'=4';2$8.!7- <2&=4';1%;1$>3%PA0    /%**  - -          .1 5!<B!>$@- =(<#D!I)F*G-#F/'A+&UE@ - - - VN{BzIy{Et|@mt;a\;^`5Y\1VX5VX4RT4OP1DD/((*&#  !#$!#!"(& !!"  - - - - - - - - - - - - - - eWBF;,>5'@6(;1$<2&:1$;1$=4';1$=4'90$90$<4'<3&<4'>6(;1$7.!;2%<2&:1%=4'?8*:3&70#70";2&=3':1$7/"80$<3'7/#:3'>6*;3'81$6/"92&>7+>6*90%6."3+8/#<4(=5);3'80#80$;2&<3':2&;2&=5)=5)<4(<5(=6):3':3'=5)<4(;3':3'91%7/#92&:2&:2&;3':2&91%91$:2$92$;3&;3'80%6/$92'<5*<5*;3)7/%80$80$7/#9/#3*1)4, 5/"5/$5.$6/%6.$5,"1(0&1'3*5,!4, 5-!6-"6-!5,!2)-%1)4, 3*4+5, 3*4+ 5+!5+!5+!3)2)3*1'2(5,!4,!0)0(0).'.'.&-%A- B- A- B."B0#>+?*H1#G/ ?&=(@+ /+0:$<'9$;':&4 25#6$5$2!3"//2"0!.,+'#   ! "$$#"      - - -                  - -          - - -  -                 -  -  -         ""!!* * ) ( $ - - - " $ $ % $      -     "#$#!#%%(!'!' %$$& (")#("(")#)#("*#+$*$)#*$*$+%*$*%*$,'+&*%*%)#-( )$'"(#)$)$!!!"""!!!!!!###%%%###"""######"""$$$$$$$$$""" ######!!!###$$$$$$$$$"""""""""###$$$%%%%%%######"""""""""!!! """""" """"""""""""!!!!!!!!!!!! !!!!!!""""""######### !!!!!!$$$$$$###  $$$""""""!!!"""###"""###$$$&&&&&&%%%######"""#########$$$%%%%%%%%%%%%%%%%%%%%%&&&'''%%%$$$$$$$$$###!!!!!!!!!$$$$$$###"""!!!!!!!!!!!!"""""""""###$$$!!!  !!!"""###### !!!!!!!!!!!! """"""!!!###$$$#########!!!!!!""""""!!!!!!"""######$$$!!!"""$$$$$$&&&&&&&&&''''''&&&%%%&&&''''''%%%$$$###%%%$$$&&&%%%######'''&&&###$$$###"""###"""!!!!!!!!!  !!!!!!""" """$$$%%%$$$$$$"""###$$$###$$$######$$$$$$######$$$###$$$###"""$$$$$$$$$$$$%%%%%%$$$$$$"""6.#5,!5, 90$>4):0%5+8."90#5+5+<3'?5*:1%7-!<2&?5*:1%5, 90$=4':2$80#:1%;3'90$<3'<3'4+:2&:2&90$8/#5-!80$6-!90$;2&8.";1%:0$90#=4&;1$6,7- 9/":0#=3&>4(=3'=4&:0#7- <2%=3'<1%=2&9/"D8)   *%)(  -       -  %)+19; 4 29> B'@(D-"@) P>8TGBMHEDEI_b_ - - - XJ~B|~@}>vGos?gd9ca4_\4XL/\T)[Z-PP-IJ,EE+@@-::  !!#$$*) "!"  - - - - - - - - - - - - - - - - - - - - - LA1?5'?5'A8*<2%=3';1$;2%>4';1$<3&:2%:1%>5)=4'<4'>5(<2%7.!:0#<2&:1$>5)>6)<5'92%70#;3&=3':1$6-!6.";3'80#;3'>7+=5):2&70#:2&>7+?7+;3'7/#3*8/#=4(>5);2&7."8/#:2&=4(;2&;3'=5)<4(<4(;4(<5):3':3'>6*;4(;3';4(:2&4-!:2&;4(91%:2&92&91%91%:2%:2&<5);4'6/#70$92&;4(;4);3(70$7/#80%90%;1%6- 3+4-!5."6/$6/%6.$5-#4+!0'/&2)4+6-"4, 5-!5-!5,!4+ 1).&0(4+ 3*4+4+ 3*4+ 4+ 3* 3*2)0'0'2*/'3+ 3+ 0(/'/(/'/(?,!B- C/!C/ E0"@, ;(?+E/#?);$A+='-*19%9%8$8$:&4!014"4#0//+,.,*,*!   "$$""!            - -   -  - -   - - - -         - - -    - -     -  -   -          -        "% ##! * + ) ' $ -  - " & -!     -      "$###%' & (!%%("'!#$'!*$("& )#)#(!+%,%)#(")#,&+%)$)#+%*$*%+&)$)%-(!)$'#'")$)#&!"""!!!!!!"""###$$$###%%%###""""""$$$%%%###!!! !!! """###""""""$$$%%%&&&#########%%%&&&%%%$$$%%%%%%""""""""" !!! !!!$$$%%%%%%###"""!!!!!! !!!"""######""""""""""""### !!!!!!!!!###%%%$$$ !!!"""%%%$$$######!!!!!!!!!$$$"""!!!%%%%%%$$$"""###"""!!!###$$$###%%%&&&%%%%%%&&&'''&&&&&&$$$######"""###"""######""""""""""""!!!""""""""""""!!!"""######  !!!""" """!!!!!!!!!"""#########!!!###"""!!!"""!!!"""$$$######"""###$$$######"""###%%%&&&&&&'''%%%$$$%%%%%%%%%%%%$$$$$$"""###!!!%%%&&&%%%$$$&&&%%%$$$#########""""""######""" """$$$$$$$$$$$$$$$###$$$$$$$$$$$$###$$$%%%%%%######$$$###"""$$$%%%%%%###$$$%%%$$$###$$$$$$$$$$$$###!!! 5, 5, 80$=4(8/"7.!6- 9/"5+4*;1%?5);1%6-!;1%>4)90$5, 90$=4':2$90$:1%<3'8/#<3';2&4+90$:1%80$7/"6-!7/#5, 8/#<3'9/#:1$;1%90#=4'<2%8.!8.!9/"9/";1$?5(=3&<3%;2$9/"=3'>4(=3'=3':0#@4&SE1    -&%$        ""'+)(028"9&:&9$F0(J?7MUP?OMAZ[5nl=qqRWW P}:|~:~Ayx=,67$79!25##   "$!""$ "(&!"!#  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - dUAG=.=3%@6(A7)=3&?5(<2%<3&?6(<3%;3%<3&<3&?6*>5)>5(=5(<3&7.!:1$=3'90$=5(>7*=6):3&70#;3'=4(<2&5-!7.";3':1%;4(>6*=6):3&70$:2&=5)>6*<4(7/#4+ 8/#<4(>6*;2&7."8/#;3'>5);3';2&<4(;3'<4(;4'<5(:3';3'>6*92&91%;3':2&7/#91%:3'80$92&:2&91&91%:2%:2&;4(92&5."6/#91&:2':3(:3(7/$5."91%91%92%91$1*3,7/$4-"5.$6.%5-#3+!1(1(1(2)5, 5,!6-"5-"4, 3+2)0(/'3*3*2)2)1(2)1)1(1)0(1)2)1(0(2*1*0)/(/(0)A- C-G1#I3"J2"E/ >*?+?*;&<'A, 2) /6"9%;(9%9%7$2/011 0 .-***+*(&  " ##!$#! - -      -          -  - -      -         -            - - - -  - - -  -  -    - -    -    ""#% % $"#!+ * ( & #  - -!              "##$"#&)"' ' %$$%& '!(!*#*#("("' %*#+%)#(!(!,&)#("'"(#*%)$+&(#*&,' *%(#% '"($&!"""######$$$%%%%%%%%%$$$!!!!!!######"""!!!"""   ######$$$%%%%%%(((%%%$$$$$$%%%&&&$$$###%%%%%%###"""$$$!!! """!!!!!!###%%%%%%%%%$$$"""!!!!!!###%%%%%%$$$###$$$$$$""""""!!! !!!"""###!!!!!! ###%%%$$$###"""!!!""""""###'''%%%&&&$$$###!!! """$$$###$$$&&&%%%$$$%%%''''''&&&%%%$$$"""""""""###$$$###!!! """!!!""""""!!!!!! """######   !!! !!!!!!""""""!!! !!!"""######""""""$$$""""""!!!!!!$$$$$$###$$$######%%%%%%######%%%%%%'''&&&%%%%%%&&&%%%&&&&&&$$$###"""%%%%%%&&&'''%%%%%%%%%$$$%%%$$$#########"""""""""###!!!   ######$$$%%%$$$$$$$$$$$$$$$%%%$$$$$$$$$$$$$$$$$$###$$$###"""###$$$"""###############"""###$$$###"""!!!!!!"""5-!8/#<4'90$6- 7.!9/#5+3):0$?5)<2&7-!90$=3'8."4+:0%>5);2&:0%;1&;1&8.#<3':1%4+80$80$6."8/#7/#7."4, 8/#=3(90$:1$<3&:0#<2%;1$9/":0#9/"8.!9/">4(<2%=3&<3%:0#=4'>4(>3'=2'9.";0$C7(   - %%% -   $(")0/348(>=/<>/ppAhd=`_:]h=Wg6T_&Y_W],JK-+.!&#$4" !"& "##$#$!""$!#!#)("#"$!! - - - - - - - - - - - - - - - - - - - - - - LA1D:,>3&?5(?5'<2%?5(<2%<2%?6)=4&:2%;3&=4(?6*?6)=5(>5(;2%7.!>4'?5):2%=5(?8*=6(81$70#90$<3'<2'6-!80$<3';3'<4(=5)=6)92%6/#91%;3'<4(;3'6."5, 8/#;3'>6*;3'7."90$=4(?6*;2&:2&<4(;4(<5)<5(=6*;4(<4(>7+70$70$92&81%70$:3'81%6/#91&81%80$91%:2%92%:3&81%5."6/$92':3';4(;4)80$6/#91%80$80#81$2*4, 7/$4-#4-#5.$5.$2*!2) 2)/&3*5,!6."6."5,!4, 4+ 2)1(0'3+ 3*0'/&0'2)0(.&0'/'0(3, 1)/'0(0(0(/(?, C-E-F. L4!K2 F/F/!B. ;&9$A,">*/-27#9&:&4 6!5!3 3!5#1 1/-*% '*))&" ! &&%#"!            -   - -    -  -     -    - - -  -  - - -  -   -  - -  -    -       -  -     - - -  """"#&!% $ $$ # !( * ) ' $   - -       -    "##$###$(!'!' %$& (!%' )#*$*#)#'!%$)#*$(#("'",&("% % )$*%*%*%($+&,')$&!$&"(#&!&!""""""%%%%%%$$$$$$###""""""###!!! """ !!!###$$$%%%&&&'''((('''$$$&&&&&&$$$###$$$%%%%%%%%%$$$%%%$$$"""!!!"""###!!! ###$$$###$$$######"""!!!""""""%%%&&&$$$$$$%%%%%%$$$"""######"""!!!!!!"""$$$"""###$$$%%%&&&%%%%%%%%%%%%######$$$!!!%%%$$$$$$&&&%%%###"""###############%%%%%%$$$$$$%%%&&&'''%%%###""""""######### !!!""""""""""""!!!###!!!!!!""" !!!!!!   """""""""""""""""""""###"""""""""!!!!!!!!!!!!!!! ###$$$$$$$$$######$$$$$$$$$###$$$$$$&&&&&&%%%&&&&&&%%%%%%%%%%%%$$$"""%%%&&&%%%&&&$$$$$$&&&%%%%%%$$$""""""###"""!!!$$$!!!  !!!######$$$$$$$$$###$$$%%%$$$$$$$$$$$$###$$$$$$$$$$$$$$$#########!!!!!!"""###$$$""""""###"""""""""""""""###$$$8/#<4'91$5- 7.!9/#4+1'90#?6)<2&7-!:0$<3'8."4*;1&?5*;1%:0$;1&;0%8/#=3(;2&5,!90$:1%8/#8/#8/#7."5, 8.#<3'90#:1$=3&:0#:1$:0#9/":0#8.!9/"9/">4(;1%>5'=3&9/"<2&=3'=3'<2&9.";1$@5&WH4    -  )#   -   !!!!!% *+3(&/&!8%D$=4+5OG;YS:LN=a_4&<2%?5(<2%;2$=4'<3&:1$:1$;2%=4(=5(?6)?7*;1%6- >4(>4(;2&=5(?8+=6*81$5.!7.":0%:1%7."8/#:2&;2&;3'<5(=5)81$6/#92&;4(<4(;2'6."6-!8/#:2&=5);3'8/#;2&?6*?6*:1%;2&=5)<4(<5)<5(>7*=5)<5)>7+70$7/#91%70$6.":2&:3'7/#5-!6/#70$:2%:2&91%92%92%6/#6/$91&91&:3';4(70$6."80$7/#7/"81$3,4-!70$6.$5-#5-#6/%4,#4+!1(0'3*5,!6."5,!4+ 4+ 4+ 3*/'/&2)1)/&-$/&3*0(.'.'-%/(3+ /'/'1*0)0)A, D.C*H.L3 G.C+F.D-;%;&C.#6".16"6"8%9$8!13314"1 0.*' $ (+'&$ "&'%#!     -        -    -         - -    -    -   -   -       -   - - - -     -      -  - - - -  !$ ""$&!#% #&!#!!!!  ( ) ( & $ 3      - -    #$$%"  #("' ' $$& $$& ("'!(!'!""'!'!'!'!("+%("% '"+&*%+&*%&")$+&*%&!% &!&!%!&!#!!!$$$%%%%%%$$$###"""!!!"""###!!!!!!!!!###$$$$$$$$$$$$&&&&&&%%%"""%%%'''&&&$$$&&&%%%###$$$%%%'''%%%$$$$$$&&&$$$"""!!!######"""!!!""""""!!! !!!!!!###&&&$$$###$$$$$$%%%$$$#########"""""""""$$$"""$$$&&&&&&'''%%%%%%###%%%###$$$$$$$$$%%%"""$$$%%%%%%######$$$$$$$$$"""!!!"""############$$$%%%&&&&&&&&&###############"""""""""###"""###$$$""""""!!! !!!"""!!!!!! !!!!!!!!!"""""""""###$$$""""""""" !!! """"""!!!"""#########"""###$$$$$$$$$###$$$&&&$$$$$$%%%%%%%%%%%%&&&%%%&&&'''&&&%%%&&&'''%%%'''%%%###%%%%%%&&&%%%""""""###"""""" ### """#########$$$$$$"""###$$$$$$$$$$$$$$$%%%$$$$$$$$$$$$$$$###"""######!!!"""$$$$$$#########"""""""""!!! """###""";3'80#6-!7."8/#5+0&9/#?6*;1%5+9/#=4(:0%3):0%?5*;2&9/$<2&<1&:1%>4):1&4+8/#:1%90$7.#6-"6-!6, 6-!91%9/#9/$:1%8/#90#:0#7.!9/"8.!:0#<2$?4(<2%>4'=3&9/"=3&=3&<1&;1%;0$<2%<2$A5%  - -  - - -* %!         +26)'#*37.975GDCCNHAJE73,E5$F0D4*E==\\^WhmQkxPmyDlp>nq>pr>op>oqBoq@rq@rsArr?vrvuCsvBvxBxyEy{Iw{GuBwkn5hq5`h4ac&a_*WW8PV6GP.CJ)C? 83!85#3,&" !!""#"#"#"#"#"#"$!#!'-,#$$%"#  - - - - - - - - - - -H=-@7)A7*?5'>4'=3&;1$>4'<2%:1$<3&<3&:1$:1%:2%<3'<3&=4'?6*:1%7.!=3'>4(:2%<4(>7*<5(70$3, 6."9/#;2&8/#8/#;2&<3'<4(=5)<5)70$3, 91%=6*=5)<3(6."6."80$91%<3'<3'80$<3'@7+@7+:2&<4(>6*<5(;4(<5(>7+=6*=5)=6*81%7/#92&70$6/":3':3'81%6/#5-!81%;3':3'92%91%:3&70$5.#70%81%:3'<4)80$6."70$7/#7/"80#4, 4- 6/#6.$6.$5-#7/%5.$4,"1(1)3+ 6-"6.#4,!4+ 2*1)4,!.&/&1)2)/&-$.%2)2* 0)/'-&0)2+ 0)/)2, >, D-J.H-L1"J1 C*E,G.C+<%@*A, 105!6"6#7#7#55 5 01/000!)$ &+*("  ! #%($#!      - - -   -          -   -    -    -     -   - -     -  - - -   -   -       - - - -    - - ""  # "%!$ $$$&!$" ! ( ) ( $  43       -   -      #$$##!#$'!%%$"%$$!%'!& ' ""& & ("&!'")$&!&!(#)$+&+&)$'"(#'"&!$% $ $ ####$$$############### !!! ###!!!!!!%%%%%%%%%&&&###!!!$$$%%%###%%%&&&%%%%%%%%%&&&'''%%%###"""$$$$$$###%%%###!!! !!!"""!!! !!!###&&&%%%$$$$$$$$$%%%&&&%%%$$$######$$$###""""""$$$&&&%%%%%%%%%$$$$$$%%%$$$&&&%%%$$$$$$"""$$$$$$###!!!"""###$$$###!!!"""""""""######$$$$$$%%%''''''%%%###$$$%%%###"""######$$$$$$"""###$$$""" """!!! """""""""!!! !!!!!!!!! """######""""""!!! !!!"""$$$###""""""""""""###""""""$$$%%%######%%%$$$###$$$$$$$$$%%%%%%%%%&&&))))))'''$$$&&&&&&%%%%%%$$$"""###$$$$$$$$$###$$$$$$###%%%###""" """#########%%%%%%"""!!!"""###"""###%%%$$$$$$###!!!######!!!!!!###"""!!!!!!###$$$############"""!!! !!!!!!!!!7."6-!6-!7."5+ 0&9/#?6);1%4+8."=3';1%2(:0%>5)<2&:/$<2'<2';2&>4):1%4+7.#:1%:1&8/$4+ 6-"7."6-!80$8/#:0%<2&8/#9/#8/!7. :0#9/";1$=3&?5';1$<2%:0#8.!<2&>4':1$;1$;1$<2%;1$>3$XI3         &#" - -  "!#* ")860:' ;.'4/-B><@60;&;(#AA@LTTP`cHbgGfk@gk6gi5ij7gi9fk:gm9gk:gj;hl8kj6nj5(@6)>3&=3&=3%:0#<2%;2%:0#=4&=4&;2&;2&<3&>5(>5(<3'=5(91$90#>5(>5)91$;3'=6);4'6/"2+5-!8/#<2&8/#8/#<3'=5)=5)=5);4'81$3, 81%>6*>5*;3'5-!7."91%:1%:2&<3'90$;3'@8,@7+:1&>6*@8,=6)<4(<5)>6*<5)<5)<5)81%7/#92&70$70$:2&92&91%91%91%80$:2&:3&92&92%:3'70$4-!6/#6/#80%:3(7/#6."70$7/#8/"80#5-!5-!5."4-"4,"5-#4-#4,"2+!1*1)3+ 6-"6.#4-!4,!1)0(3+ /&0'1)1)0'/&/&3*3+!1) 1) /(1*0)/(0)A, F.M1N2 S8'J1!C+F/I1"B+B+D-8#3335 7#5!5!5!234 1310.'$ &*+&!  "%%""  "!   - -                 - -                    -  -    -  -  -       -  - -   - - !##! # !% &!% $ $&!$ ""!!' %     -4) -    - -        -  - -  "#$%##"  $%$#$& %("& %%&!'"&!'"& $("*$*$'"&!(#'"$'"(#)%)$(#'"'"'#'"&"%!$&!&!"!!"""$$$######$$$!!!    $$$%%%$$$%%%"""!!!$$$&&&"""$$$'''&&&%%%%%%%%%&&&$$$###"""!!!""""""######"""!!!"""""""""!!!!!!$$$$$$###$$$%%%%%%&&&&&&$$$#########$$$%%%###$$$$$$$$$&&&%%%%%%$$$$$$$$$&&&'''%%%'''###$$$###"""!!!!!!!!!"""###"""###############$$$$$$$$$&&&'''$$$###%%%$$$###"""######$$$$$$$$$$$$$$$###  """!!!"""!!! !!! !!!""""""!!! """###""""""""" !!!######"""!!!""""""###!!!!!!###$$$#########%%%######$$$###%%%&&&''''''&&&$$$&&&'''&&&%%%&&&%%%%%%###"""###!!!###&&&%%%&&&&&&%%%&&&###!!! !!!"""###$$$$$$###!!!""""""!!!"""$$$$$$$$$###!!!######!!!"""""""""""""""######""""""###"""!!!!!! !!!""""""90$8.#8/#7-!1(9/#>5(:0$4*7-!<3';1%3*;1&>4);1%:0$=2'=3';1&=3(:1&5,!6-"90%;2&:0%5+ 9/$90$6-!90$8.":1%>5);1%:0$7.!7. :0#:0":0#>4&?5'<2%=2&<1$:/"=3&=4';2$;2%:1$;2%;1$:/"B5&  -   -  -  - &%$ - -     "0016!1-(%3=B-7:9?<8F?:NJBRV:NQ:XZ2VY3WZ3W\0X[2X[1V[0U]1T]0SZ0UY1Y[5Y[8VZ9UZ5VZ7V[7V\2UZ1RX3QY4RY6WY2ZT2ZT5XU-UK+9.2,'$%'.+*'!! #"%&$'#"" !!!!"""""#!#!#"#"$"$%%$!)/-"#%&#$!"   - - - - - - - - - - - E:+>4'>5'@6(>4'>4'=3&9/";1$<3&:0#=4&=4'=4'=4'=4(?6*>5)=4(=5(80#80#>4(=4(80#:2&<5(:3&5.!2+3+8/#;2&8/#6.";2&>6*=6*=5);3'81$4, 80$=5)=5);2'5-!8/#;2&:2&;3'=4(80$:1%=5)<4(80$=5)@8,>7*=6)<5)=5);3'<4(:2&80$91%:3'80$7/#92&91%92&:3':2&70#80$91%91%92&;3'70$5."70$7/#80%;4(70$70$80$70$7."7/#6-!6."7/$5-"4,"5-#2+!3+!2* 2* 0(2*5-"6.#4,!2+3+ 3+ 2*0(0(1)1(1(1(0'3* 1)0)2+!1* 1* .(.'D-M2O3!Q5#R7%L2"E-C,D-?(@*C,25 8#5!15!6"3 12 3 4!5"4!1//(&)$ $ $  " ##! #!     - - -              -                 -   -       -     -     -    - -   - - - - - -#  !$" $ !$ $ '#$$$#!"!   - 2  -  -     - - -   -    - !"#%%""!"!$$$#$&%("%%' '!&!% &"% "'!*$)#("(")$$'")#)$)$(#(#'"&!'"% $ % % )$$!! #$$$#########""" """ """ !!!"""""""""######$$$$$$%%%'''&&&&&&%%%%%%$$$###"""!!! !!!""""""###"""!!!###%%%###!!!!!!$$$%%%###%%%%%%%%%%%%%%%$$$###"""###%%%######$$$'''%%%$$$%%%%%%$$$&&&%%%%%%%%%%%%%%%%%%$$$###""""""""""""######$$$%%%$$$###"""%%%%%%$$$%%%%%%######$$$$$$###!!!"""$$$$$$$$$$$$$$$$$$""" !!!"""!!!!!!!!!!!!!!! """######!!!###"""!!!!!!""""""!!!  """######"""!!! !!!!!! !!!$$$###""""""!!!!!!"""$$$######&&&''''''(((%%%"""%%%'''&&&&&&&&&$$$$$$$$$#########%%%%%%%%%$$$%%%%%%&&&"""  """###$$$$$$###"""$$$""""""###$$$$$$$$$###"""$$$###""""""""""""!!!!!!"""""""""###""" """ !!!"""""""""8/$8/$7.#2)90$>5);2%4+7.!>4(;1&4+:0%>4);1%9/$=3'=3(:0%;2&:1%6-!5,!7/#90%8/$4+ :1%:1%6-!;2&90$:1%>4(;2&;1%7.!6- 7- 8.!:0"?5'@6)=3&>3'=3&;1$>4'>4'<3&<3&:1$<2%;1$8- ?3%aO; - -   -  - -   +#$#  "" !$&$&!# "*+ ' ':@+FN/GG+FD/JI.FG0NN-LL2IN2FM.IN)IL+IL*GL)DM+EN)GL)LM)GI3HL1DJ3EJ2FK:GO89B-9@(7;045+>5(@6)?5(?5(=4&9/";1$=3&;1$>5(<3&;2%:1%;2%?6*>6)=5(<4'90#90#>4(<3'7."91%;4'81$5.!1*3+8/#;2&90$6.!:1%>6*?7+>6*<4(91%6."91%;4(<4(;3'6."7/#:2&:2&;2&<3'8/#;2&>5)<3'8/#;2&=5)=6*<5);4(<4(;3';3':2&5."80$:3'91%7/#92&:3':3';4(:3'6."7/#80$92&:2&;4(70$5-!80$70$6/#;3'7/#6/#6/#6."7."6-"4+ 6-"80%6.#4-"3,!2+ 3+!2+ 1*/'0(4-!6.#3+ 1)4,!4,!0(0'0'2)1(2*4+!1)2)0(0(2* /)0)A,F.N3 P5"Q5#N3"I0!E-A+@*>)=(:%35 6!7"5!4 7$4!2 2 4"5#6$3!//.+&%" ! !  $$! ! ""    - -   -      -    -    -  - -    - -        - -  -     - -  -   - -       - -  - - - - - - - " !!!" ! "!##"$#!!           -        -         "%&#$#"$! !#%%$$%$( #%& %$%'!"& '!& &!'"(#&!&!&!)$'"'"'"&!&!'"$% $("'!#""  !###$$$$$$###""" !!!!!!  """### !!!!!! ###$$$%%%%%%&&&&&&&&&&&&%%%$$$###!!! """"""$$$###!!!$$$&&&%%%###$$$###!!!!!!!!!"""######$$$%%%%%%$$$$$$$$$######$$$%%%!!!"""$$$%%%%%%%%%%%%$$$$$$&&&'''%%%&&&$$$%%%&&&%%%$$$$$$###!!!""""""!!!###%%%%%%%%%$$$$$$$$$$$$######"""###$$$###""""""$$$$$$$$$###$$$%%%%%%###$$$!!!!!!"""###!!!!!! !!!"""""""""!!!!!!!!!!!!!!!""" !!!###""""""###$$$$$$"""!!!"""######""""""!!!!!!""" """$$$""" $$$%%%&&&&&&!!!$$$'''&&&(((&&&&&&$$$""""""""""""$$$%%%%%%%%%'''&&&%%%$$$ !!!!!!!!!!!!"""#########$$$###""""""$$$###$$$$$$$$$$$$###$$$###$$$###!!!!!!!!!!!!!!!"""""""""###!!!  !!!"""#########7.#3*8/#>5)<3&6, 8/">4(:1%5, 90$>4):0%9/$<2'<3'8/#90%:1&6-"3+5-!7.#6-"2):1%:1%4+:1%9/$:0%<2&:1%:1$6, 6, 7- 8/":0#>4'@6)=3&?4'>4';1%=3'>4'<2%=3&;2$;2%;1$8-!;0#E9*      -  *"'&   !!$$$%#%"%!$#% '& $%23%9:$98&;:)<<'<<(;>*;?&:>"@B=>!<>";=";=$:?#9?#;>%:=(7</2,/$15&,/#"&$'""!,(!0*&$"# %&,  $!&#"$"$!#!!!!"!"""#!#!#!#!#!"  %&&%+11!"%&$%""  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -A6'9/"<3&=3'?6)?6(<3&;2$7- :0#<2%90"<3&;2%91$8/#80#?6*?6*>5(<4':1$:1%>4(;2&7/#81$:3'70$5."1*3*7.":2&80$6-!90$>6*@9,>6*<5(:2&70$:2&<4(<3(:2&6."6."80$:1%;2&;2&7.";2&>5)<3'80$91%;3'=5)<5(;4(<5);3';3';3'81%:2&:2&70$6."91%92&91%92&92&6/#5.!6/#80$91%;3'7/#4- 81$81$5.":3'6.#6/$5-"6."6-!5, 3*5,!80$5-"4,"2+ 2+ 3+!2* 0(.&.'3, 6.#3+ 2*3, 2*/'.&/&2)1(1(3+ 1)0'/'0)1* /(D-G.M4 O4"N3!I/F.A*@)>)>*<)/16!5!34!5"22003!3 3!2 0 .,("  -  &'$$$   - -      -     -         - -            -  - -      -     -   -   -   -     -        - - - - -" !   !   !""            -  - -   """%!$$" "#!"!"#&#$$""$'!! %%$%% & %"% '"(#&!& % % &!$##$& #! ! !!!###$$$!!! !!!!!!###""""""!!!  """$$$%%%$$$&&&&&&&&&%%%%%%%%%$$$""" """######$$$###"""%%%&&&$$$$$$###"""!!!"""""""""""""""###%%%%%%$$$############"""###"""######$$$%%%$$$%%%$$$###&&&'''%%%$$$%%%&&&'''&&&%%%$$$$$$$$$###!!!"""###$$$############"""#####################$$$$$$$$$$$$$$$%%%%%%$$$$$$!!!!!!#########"""!!! !!!!!!######"""!!!"""!!!!!!!!! !!!"""!!!"""$$$###"""""""""$$$$$$###!!!!!!!!!!!!!!!!!!###%%%$$$!!!###%%%((('''$$$&&&''''''''''''&&&%%%$$$#########&&&'''&&&&&&&&&&&&&&&%%%"""   """###""""""############$$$%%%###""""""###""""""###$$$$$$$$$$$$$$$###"""""""""""" !!!!!!!!!  !!!"""############3+7/#>5)<3'5, 8/#>4(:0%6-!:0%>4(:0$9/$<2'<2'6-"90$;3'6."1)6-!6-"5,!1(90%90$3+7."7-!:1%<2&:1$90#6, 7- 9/":0#9/"<2%>4'=3&>4'=3&;1$=3&=4':1$<2%:1$9/";1$7- 6, B6(iX@     -   -  -   *+- - - "!$#%#$#$$#%"&#%%%%&$&"$ % #'(///,,+**))*-'*'*'('(%'$&$%#%$%$$%& '!&!##!!( !!""#"#"#"$!#"""""""#!#!#!" !   $%'')/0!"%&$%"#   - - - - - - - - - - - - - - - - - - - - - _P;=2$7.!<2&=3'?6)>5(;2%90#6,90#:0#6,90#:0#:1$;2%:2%?6*?7*>6)=5(;2%;1%=4(:2&8/#81$92&81%4-!2+1(7."90%8/#5, 8/#>6*@9-<5);3'92%70$:2&=5)=4);2'80$8/#80#:2&:2&80$5, 90$<3';2&91%:2&<4(>6*;4(;4'<4(;3';4(;3':2&:2&;3'70$6/":2&:2&80%70$70$5."5/"70$81$80$92&6."3, 81$80$7/#91%5.#5."6/$7/#7/#6-"3*5,!7.#4,!5-"2+ 2* 2+ 2* /',$.&4,!6.#4,!4,!2*1)0).&.%2)/&-$1(/'.%/'0(A, F-J0N4!P4#K0D+F.C,>'>(?* 9&,,13 4 13 0.00///// -($#  %&##%"  -   "  -  -    - -        -  -     -  - -  -   -        -            -     - -    -  - - -             -      !"!!"$#!  !   !#%"##!!!$!"$#""$#$#$#$#"#% #$"#!"! !!!!!! !!!!!!""""""######"""  """$$$%%%$$$$$$%%%$$$$$$%%%%%%%%%$$$"""!!!"""!!!""""""######%%%$$$###############$$$$$$$$$%%%$$$"""$$$$$$###$$$$$$### !!!!!!"""###$$$$$$%%%$$$"""$$$&&&######%%%%%%&&&&&&%%%$$$$$$$$$$$$$$$$$$ !!!""""""!!!###""""""###$$$######$$$$$$###"""""""""$$$$$$$$$$$$###"""###""""""!!!!!!!!!!!!  ######"""!!!"""""""""""""""!!!!!!!!!###"""!!!$$$$$$$$$"""!!!""""""!!!"""!!!!!!###"""######"""###%%%###$$$&&&'''&&&&&&''''''&&&'''&&&%%%&&&'''%%%###%%%&&&''''''&&&&&&&&&&&&$$$###""" !!!  """""""""######!!!###############$$$###"""######"""######$$$###$$$######"""$$$###"""!!! !!!"""!!!!!!!!!!!! """""""""$$$$$$90$3+7."<3':1%6-!90$>4(:1%6, :0%<3'9/$:0%=3(;2&4+8/$<4(7.#3*7.#5, 6-!1(90%80$4+7."6,!:1%;1%:0$:0$8.!8.!:0#;1$8.!:0#=3&=2%>4'=3&:1$=3&=4':1$;2%90#8/";2%7- 6,=2%I=.  -   -  - - +,(  !"$%$%$$$$%$$$"$#$$$$##"##$&#%"#"$!"##%$$$"""#"#"%#%$&#%"%"%#%#$%%&&((%%%#%"&$%&"%"#%)%)%(&)*&,$) "!#!""!!! !!""""#"###"#!" !$ &&&'-.*23 !$%$%"#   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - H=.9/"8."=3'>5(=5(<4&<3&90#7- :0#:0"8.!;2%;2%;2%<3&;2&>6*?7*>5(=4';2%;1%<4':3&80#;0$;0%82%5/"4*3*6."80$8/#5, 7/#=6)@8,;4':3'80$80$:3'=5)>5*=4):2&90$80$;2&:1%7."4, 80$<3'=4(;2&;3'=5)?7+<5(:4';3';4(;4(=5);4(;3'<4(70$5."91%92&81%81%81%7/#60#81%81$81$92%6."3+81$91%80$70$4-!4-!6/$90%90%6-!1)3+7/#5-"4,!4-"4-"4,"4,"2*.&/'3,!70$5-"4-"1)1*0(-%.&2)/&+",#/&/&0(C-F-F,L2 O3#G-C+F.D-='>(?+!9%4!3/3 +.13!/13!3".,,,*($  !%$ %"! !           -      -   - - - -  -    -       -   -  - -   - -  -  - -  -      -      -         -          !"!    !"  !! "!#!#$###"#!  !!!   !!!"""######!!! !!! """###""""""!!!!!!!!!!!!""""""&&&&&&&&&&&&$$$%%%&&&&&&%%%###"""!!! !!!""""""###$$$######$$$$$$$$$$$$$$$$$$%%%&&&%%%""""""$$$$$$&&&$$$### !!!###%%%###"""######$$$$$$###%%%%%%%%%%%%%%%$$$$$$$$$###%%%%%%###""" !!!"""!!!"""!!!!!!"""######$$$%%%$$$###""""""###$$$$$$######$$$"""######$$$### !!! """!!! """###$$$###""""""""""""###$$$#########!!! ###$$$$$$$$$$$$"""!!!!!!!!!"""###"""###!!!$$$'''""""""%%%%%%%%%&&&%%%%%%$$$%%%$$$$$$%%%%%%%%%&&&&&&""""""%%%'''&&&%%%%%%&&&&&&%%%$$$$$$###$$$ """!!!$$$$$$"""###"""""""""######"""!!!"""###"""###"""""""""############$$$###############!!!!!!!!!!!!""""""!!!""" ###""""""$$$%%%8/$4+7."<3':1%6-!90$>4(;1&6,!:0$=3(:0%;1&<2';1&5+ 90$<3(7/#6-":2&6."6."3*80$80$7/":0$7-!7-!<2&;1%;1%90#9/":1#;1$7.!:0#>4&<2%>4'<2&:0#=3&>4':1$<3&90#;1$;2%8.!7- :/#F:+m[C       -  /'$   ! #!$#&$&$&$&$%"%"&$'$%#"!  $$$$$$#%$&$&$&$&$&$&$&$&$&$&$&#&#%"%"$"$!$!"!!! !! #!" ! ! !!""##$##"#!!  -# $%#(--*55 !$%$%"#(*  - - - - - - - - - - - - - -aR=D:+7.!8/">4(@6*=5'<3&<3&90#8/":1$:0#:0#=4&=3&<3&<3&;2&>5)>5)<4'<3&;2%;2%=4';3&91$:/$;/$61$5/"5)5+6/#90$:1$6-!6."=5)>5*:2'91%7/$7/$:2'=5*?6*=4):1&7/#7.";3';3'90$7.":1%=5)@7+=4(;3'=5)>7*;4(:3';4':2&81%<4(<4(<4(;4(70$5-!70$7/#70$80$91%70$6/"71$81$81$91%7."3*90$:2%80$70$4-"4-!6/$8/$7/#5, /'0)6/#5-"2+ 4,!5-#5-#4,"2* -$/&2+ 6/$4,"3+!1*1)0(/'.%0'/&)!*!,$A, E-K1#K1!M2!K0 E*E,E.B+=';&<'9%5"6#7$-& -)/12-04#1 -+))(! "(('$"                - -         -   -   -   -  -   -  - - -  -   -  -           -   -      -        -              !! !!# """""$$$$$$###   !!!  """"""""""""""" """###$$$%%%%%%''''''%%%%%%%%%%%%$$$"""""""""""""""######"""###$$$$$$""""""$$$$$$$$$$$$$$$#########!!!!!!"""$$$"""""""""!!! ###$$$###$$$$$$$$$&&&%%%$$$###%%%$$$$$$%%%$$$$$$%%%$$$&&&%%%%%%$$$"""!!!!!! !!! !!!###$$$$$$&&&%%%$$$###$$$$$$%%%$$$###$$$$$$$$$$$$$$$&&&###!!!!!!!!!######"""!!!"""""" """###"""!!!!!!###"""###$$$!!!!!!"""""""""%%%$$$"""!!!!!!"""%%%######"""$$$'''&&&%%%&&&&&&&&&&&&&&&&&&%%%$$$$$$###$$$%%%%%%%%%$$$!!!"""%%%%%%&&&&&&&&&''''''%%%$$$###"""###"""$$$!!! !!!$$$$$$$$$$$$$$$###!!!"""""""""!!!"""######""""""""""""#####################%%%%%%###!!! """"""!!!  """#########80%8/$3+5-!:2&90$6-!90$=3(;1%5+ 90$>4)90$90$:1%:1%5, :1&<3(5-!5,!:2&6."4, 4+ 90$91%90$;1%8."8/"<2&:0$90#:0$9/#;1$<2%8.!9/">4'>4'=3&;1$:0#>4'>5(:0#<3&:0#;2%;1$9/"8.!:/#A7)I=-  -  -    6"!-#!$$&$ -   !##%#%#&#&"&#&#&$&$&%&%&%&%%  #"#$$&$&%'%'%'%'%&%&$&$%$%$%#$#$"#""!"!!!!!! "!#!"!" ! !!""$#$"#!" !  !!$($*/-0<;#"##!# !#$$&#$ (*   - - - - - - - - - - - - - - - - - - - - - - - - - - G<,?6(7.!8."@6*A7+@7*>5(<3&:1$90#;1$:1#:1#=3&=3&<3&<3&;2&<4(<4(;3&<3'<2&<3&>5(;3&70#;0$<1&72%70$6*5+ 80$:1%;1%7."7."<4(?6*<4)92'80%80%;3(>6+>6*;3'80$80%7/%:2'80%90%7/#;2&=5)>6*<4(;2&<5)=6*92%81$:3'92&91%<4(<4(<4(;4(92&6/#81%81%91%91%91%7/#6/#70$81$81%92%7/#2*6."80$7/#7/#4-!3,!5.#5,!5-!5-!0)/'4, 4,!2*4,!5-#5-#4,"2*-$1(2+ 2+ 3+!2+ 2*2* 0(.'-%.&0'*!+#C,E-J1$M3$N3#I.F+H.G. C,@*='6"4 15"3 +) ,/.-00/.+)*)$  -$'(&$#!  !!    -        -   -  -           -      - -      - -    -   -     -    - - - -       -                  ######!!! !!! !!! !!! !!!!!!!!!  """!!! !!!######$$$%%%%%%&&&%%%%%%###$$$$$$""""""!!!###$$$######"""!!!$$$$$$"""###$$$%%%$$$$$$%%%$$$###"""""""""######""""""""""""!!!"""$$$###"""$$$&&&%%%%%%&&&$$$%%%%%%%%%%%%$$$###&&&$$$$$$$$$######"""!!!  !!!!!!###$$$&&&%%%$$$""""""$$$$$$$$$$$$$$$$$$%%%%%%%%%&&&'''%%%### """$$$###%%%###$$$""""""###$$$###!!!"""###"""######""""""!!!""" !!!###### !!!############"""%%%(((&&&%%%%%%%%%&&&'''&&&&&&"""""""""###%%%%%%%%%$$$######$$$%%%&&&&&&%%%&&&(((&&&%%%###"""######%%%"""!!! !!!"""!!!$$$$$$$$$""" !!!###""""""###"""#########$$$$$$$$$######$$$$$$###$$$$$$###!!! """"""!!!!!!"""!!! """""" """######6.#91&91%2*3+:1%91%6-!8/#<2'90$2)7.">5):0%9/$:1%90%4, :2&;3'4, 4, 80$4, 2)4+8/$:1%80#:1%:0#;1%=4(:0$9/#:0$9/#:0#<2%8.!7- =3'=3&<2&:0#90#=4'=4'90#;2%:0#;2%:1$9/"7- 9/">4&G<-kY@  -  -   /((- %, %(!  -    ""###$#$#$%%(%(%'%'&&'%%$!!  !!"!""#$%%&%&%%$$$$$$$$$$$$#$####"#"#"#!"!" ! ! ! ! ! " "!#!"!"!##$#$"# !#$ !#/-!!$$$$"$!# !#$%&#$ (+)+  - - - - - - - - - - - - - - - - - - - - - - - - ^P;B8)=4&8/"9/#@6*B8,A8+?7)<3&:1$90#:1#:0#:0#<3%<3&;2%;2&;2&<3'<4'<4'>5(<3&<3&>5);3&4,:.#>3(:5':2&7* 5, 81%;2&;1%7."7."<3'>6*=5*91&7/$91&<4)>6*=4):1&80$92'91&:2':2&8/#6.";2&>5)<4(;3'91%<4(=6*91%7/#92&:3&81%:3':3':3':3'92%7/#92&:2&;3':3'81%6/#5/"60#81$92&92&7/#2*5-!7/#6/#6/#4-"4-"5.#5-"4, 5-!1).'2+3+ 1*4,!4,"4,!4+!2)-$1(1)0)1*1*2*2* .&,%,$.&/'A, D-F.H/!O3$M1!G,H-J0 G/ D-?*<'8#7#34 1' -* 11 1 0./..-()%" " %%'&#"!             -   -      -         -  - -   -                         -         -                        !!!!!! !!!######!!!""""""""""""!!! !!!"""!!! ###$$$###$$$"""!!! !!!"""!!! """!!!###$$$$$$$$$$$$%%%$$$$$$ """$$$""""""###!!!"""$$$###$$$$$$$$$%%%$$$###$$$%%%$$$###$$$#########"""!!!!!! """"""$$$$$$###$$$$$$$$$%%%'''%%%%%%%%%&&&%%%$$$$$$###$$$%%%######"""###!!!!!!!!! """"""%%%%%%%%%$$$"""!!!!!!######$$$$$$%%%%%%%%%%%%%%%&&&%%%###""""""&&&%%%$$$%%%%%%%%%$$$"""!!!###$$$"""""""""$$$###"""!!!  !!!###$$$$$$###$$$'''%%%%%%&&&''''''''''''$$$###"""###%%%%%%%%%%%%&&&###"""$$$%%%%%%&&&%%%&&&%%%$$$###"""""""""$$$$$$%%%"""!!!"""""""""$$$$$$###""" !!!"""""""""###"""###""""""############$$$$$$################## !!!""""""""""""!!!!!!!!!###""" !!!###$$$4,!5.#80%80%1)2):1%91%5-!7.";1&9/#1(7.">4)9/$7.#90$80$5,!;2&;3'4, 4+ 7/#5,!2*3*7.":2%8/":1$:0$:1%<3&9/#8."8."8.!8.!:1$7-!6, =3&>4'<2%9/"8/"<3%<3%91#;2%90";1$;1$8.!5+8.!>4(A7)H<,   - -   57;.,0*%&# -  !!#!$"%#$%$&$'%)&(&'&&$$##$$$%%&&&&'%'$&#&#&#&#&#&#%"$"$!#!# " " ! ! ! !!!! ! "!""$#$"$!"  - (+""+')61!!$$#%#%#$"#!" !"#$&$% !(+)+  - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -G=->5'<3&:0$90#?5)A7+@8*?6);2%:1$8/":1#:1#90#;2%;2%:1$:2%;2&<3'=4(<4'>5(;1%:1$<4':3&3+9-">3(;5(:2%6*6,!92&<3&:0$7."7/#<3(>6*=5*92&6.#80%;3(=5)<4(:2&91%;3)92':2':2'6."5, :1%>5*<4(80$;2&;3'<4(92&81%:3'92&71$:3'92&82%92&81$70$92%:3&:3&92&81%70$6/"6/#81$81%91%7/#3*4, 5-!4-!5-!4-!4-"6.#5."3, 5-!2*/(3+ 2+ 2+5-"4,"4+!3+ 2)-#/&/(1*1)0)2* 1*.&,%,$,$C,D-A)H,N/ L0G-I/K1!H0 D->)6!4 5!6"210../0 1!0 /0,*+)'! " $ &&$" ##! "       -  -      -    -  -   -    -  -    -  -   - -  -  -      - -  -   -     - -   -   - -                        -        ###$$$""" !!!"""!!! !!! !!!"""!!!"""$$$###$$$&&&%%%$$$"""""""""!!! !!!!!!###$$$$$$###"""$$$### """#########"""!!!"""$$$"""!!!""""""$$$######$$$$$$#########$$$######""" !!!""""""############$$$$$$%%%$$$%%%&&&%%%###%%%&&&%%%$$$$$$#########"""###!!!###!!!!!!!!! !!!###$$$&&&%%%######"""!!!"""%%%$$$%%%%%%%%%%%%%%%%%%&&&$$$$$$"""###&&&$$$$$$&&&%%%%%%%%%###!!!#########$$$###$$$######  !!!"""###$$$%%%%%%%%%%%%%%%'''((('''((((((&&&%%%$$$%%%%%%%%%&&&$$$%%%$$$"""######$$$$$$$$$$$$&&&&&&%%%%%%%%%%%%%%%###$$$### !!!"""$$$###$$$$$$$$$######""""""###"""###############!!!""""""""""""############""""""######!!! """""""""###"""""""""""""""###"""###5-"6.#7/$91%91&2*3+:1%90$5, 6-!:0%9/#2(8/#>4):0$7."90$80$6-":2&;3'6/#4, 6-"5-!4, 5, 7."80#6-!:0$:0$:0$;1%9/#;1%90#9/#8."9/"8.!8.!<2&>4'<2%7.!7.!;2%<3&:2$:1$8/":1$:1$7- 6,8."=4'=3&E:+m[B  -      """"""""""*).*$)-'# - - -   !!"!"#$%&%'&(&)%'$'$'$($($($($&$%$%$%#$#$#$#$##"#""!"!! ! ! ! !     !"#$"# ! #"*"&&#' ''%'"%#%#$##""!" !""$%$% !)+)+)+ - - - - - - - - - - - - - - - - - - - - - - -  - - - -_R=A8*<3&=4';1%9/#>5)?6*?7)>6(:1$91$8/!:1#;2$90":1$:1#80#:1$;2&<4(=5(<3'=4'9/#8/":2%:3&5- :.#=3(:5(91%7* 6-!:2&=4':1%7/#80$=4(>6*<5):2'7/$91&;3(=5)<4(;2&:2&;3(91&:2';3'6-"3*90$>6*=5)7."=5)91%;3'92&92&:3'81%81%:4'92%81%92&70#70$92&:3&:3&:3&:3&81%6/"70#81%70$70$6/#3, 4,!4-"3, 4-!5-"4-"70%5."4-!6/#4-!1)3+ 2+ 3+ 4-!5-#5,"3+ 1(-$.%0(2+ 1* 1*1*1)/'.&A, D-C+A)J/ M/ M/J.H.J0 I1!D-<'//4!4!2/--1 ..1 0 / ,)(''#%&'&%# "! ##     -    - -   -  -  -  -    - -  -     - -    -   - - -    -     -    -   -  -  -   -  -  - -                          -                  !!!$$$$$$!!! !!!"""!!!!!!  """!!!"""######$$$%%%&&&&&&$$$###$$$"""  """$$$%%%%%%""""""$$$###""" ###!!!"""###$$$%%%%%%###!!! !!!"""""""""%%%$$$$$$$$$%%%%%%%%%###!!! """$$$###$$$######%%%$$$$$$######%%%'''###%%%#########"""""""""!!! !!!######!!! """!!!"""!!!"""### ######%%%$$$###$$$%%%""" ###%%%$$$$$$%%%%%%%%%%%%%%%#########&&&'''&&&%%%%%%%%%$$$%%%"""###&&&%%%%%%$$$$$$$$$###"""!!!  """#########$$$%%%&&&%%%%%%%%%&&&'''(((''''''&&&%%%%%%&&&&&&%%%%%%!!!!!!"""$$$###!!!$$$%%%%%%&&&%%%%%%%%%'''$$$$$$"""$$$###!!!"""""""""######$$$###$$$$$$############$$$"""""""""######""""""""""""########################"""!!! !!!"""""""""""""""""""""!!! """5-"7/$7/#91&:2'4+4+ ;3'91%5, 5,!8/#8/#2)9/$<3'8/#5, 7.#8/$7."91%;3'7/#4, 5-!7."6-"5,!5, 7.!6- :1$:0#8/"8/#7.!:1$9/#7.!6, 7- 7-!8.";1%>4'<2%8.!8.!<3%=4';3&;2%:0#:1$90#6, 7- 9/"=3'>4'@5(H<-   - - !"#$$$%%%%%$&"$0:>58,.$#  -  !"##$$%%%$%$$$$#$#$#$#$#$#%#$#$#$#$#$"#"#""!"!"!! !!!!"!"!!!!!!!!!!!"  #$+-1+79%%()')#&"$#%#$"#!" ! !!!$%$%!")+)+)+  - - - - - - - - - - - - - - - - - - - - - - - - - - - - -C9):2$<3&<3&:1$:0#>4(>5(>6)=5(91#90#7.!8.!<3%8/!;1$91#8/";2&;3&=4(=5(;3&=4'90#7/"91$;4'80#:/$;2&94':1%9,!6-!:1%=5(;3&8/#7/#<4(=5);3(:2'80%91&;3(=5)<4(:2&91%80&80&;3(;3'5,!1)90$=5)<3'7/#;3'92&92&:2&92&92&70$81%;4'92%81%92%6/#6/#81$92%70$70$81$6/"4.!6/#81%70#70$7/#4-!5-"4,!2+ 4-!6.#6.#91&80$6."80%7/$2+3+ 2+ 2+2+ 2+ 4,!3+!0(.%.%0)1* 2+!0)0)0(+#C, D,B*E-L3"N3"M1 L0I/H/F.C,3, /111-' -.0..0 ,%$ &#   $ (((&# ##"%$      -   - -    - -     -         -     -  -               - -   -    - - -     -  - - -                            -                            !!!!!!"""$$$### """"""!!! !!!"""""" !!!"""###$$$&&&&&&%%%%%%%%%### !!!!!!""""""!!!!!!""""""!!!!!!!!!"""!!! """###%%%%%%###"""""""""""""""###$$$###$$$%%%$$$%%%&&&$$$""" !!!"""$$$%%%$$$%%%$$$$$$&&&%%%%%%%%%!!!$$$%%%""""""""" """""" !!!"""!!! $$$$$$ !!!""""""######""""""############$$$%%%###""""""%%%$$$$$$&&&&&&&&&&&&%%%"""###%%%&&&(((&&&%%%$$$###$$$%%%$$$"""$$$%%%&&&$$$#########"""  """$$$$$$"""###$$$%%%%%%'''&&&''''''''''''&&&&&&&&&$$$%%%###$$$######!!!%%%$$$"""###$$$%%%&&&&&&&&&$$$$$$###%%%%%%%%%%%%$$$ !!!""""""!!!"""#########"""###$$$######""""""###""""""!!!"""######"""######"""""""""###$$$$$$$$$$$$###""" !!!!!!"""###""" !!!!!!"""!!!:3'5-"80%7.#:1&:1&6-"6-";3':1&6-"6-"8/$7."3*80$<3'80$4, 8/#91%6."91%;3'5."2*5-!90$90$8/#5,!6- 5, 9/#7-!6, 6- 6- 9/#:0$6- 6, 8."8.!8.";1%=3'<2%90#8/";2%<4&;2%;2%:1$:0#9/"7- 6,9/#?5)>4(;1%G;-r_F   - -  !##$%%%&&(&)&(%(&(!#'35$') -   "##$#$"$"#"#"$"$"#!"!"!! ! !!! !   #&" ((-?@#$(((*'*&)#&"$#$#$""!" "!""#$$$%!")+)+)+)+   - - - - - - - - - - - - - -   - - ]O:?6'8/":2%=4';2%90#=3'>5(>6)<4':1$;2%7/!7. 90"7.!:1#90#90#<4'<3'=4(=5);2&=3(;1&6.!91%;4'90$:/#:2%94&;2&:.#6-!90$;3&:2&7/#6."<3(=5);3(:2'80%91&:3'=4)<3(:1%8/$6.$80%:3(;2'4+ 1(91%>5)=4(90$;3';3':3':3'81%92%70$92%:3'92&81%92&70#6/"70$82%6/"5.!5."4- 4-!6/"70$6/#70$6/#4-!4,!5-"4,!5.#6.#6.#80%91%6.#7/$6/#1*1*3, 3, 2+ 2+ 3,!4,!1).&-%-'/)1* 1* 0)A-!C,C*B*G/I2 J2 I0F-H/F/@)<&0- 24 0+( ( ,0/-/.)" " ($" &'&&$# " ##!##      - -   -   -  -   -       -  -     - -  -   - - -   -  -   - - -       -       -  - -("%"! #*%(#% #!!! #)$&"&"'"% #+& )$#""   '"&!% & $"!!' ( $#%$#  #(!)"&#"& ("("%   $(!)"%&#""  "*%)#'!&!% $!!"#(#)%*&(#&"#$% % $$% )$(#$"#&!&!% &!'"& (#&!!!!###""" !!!!!!"""!!!!!!!!!"""!!!""" !!!"""###%%%%%%%%%&&&%%%%%%###!!! !!! !!! !!!!!!!!! !!!"""!!!!!!######$$$&&&###"""""""""!!! """!!!"""###%%%%%%&&&%%%$$$"""###!!!!!!%%%'''%%%%%%&&&&&&&&&&&&%%%%%%%%%&&&%%%&&&###"""""" """"""  """""" !!!!!!"""######"""!!!###&&&###"""!!!"""$$$%%%%%%%%%$$$$$$$$$%%%''''''&&&'''&&&$$$###%%%&&&'''&&&%%%$$$###$$$&&&%%%###$$$$$$$$$$$$###$$$"""  !!!"""###""" !!!$$$%%%%%%%%%%%%&&&'''&&&%%%&&&&&&&&&$$$######### ### ###$$$$$$!!! """%%%&&&&&&&&&%%%&&&###!!!$$$%%%&&&&&&&&&!!!"""!!!!!!""""""######$$$"""###$$$$$$$$$######"""######"""!!!"""""""""######$$$######$$$$$$$$$$$$$$$###"""  """"""!!!"""!!!!!! :2':2'5-"80$7/$91&91&7/#5-!;2'90%4+ 6-!8/$6."4+7/#;2&80$6-!:2&91%6.":1%;3'4- 1(5, :1%;2&:1%8/#8/#4*5, 7-!6, 7."6-!7."9/#6, 5+8."7.!8."=3&=3&;2%:1#7.!90#<3&:2$:1$:1$8/"90#7.!5+:0$?5)=2&<1%C8*I=- - -    -   -   ""##%$%%&&(')&)')')'($&"65"/-#           - $% #!%*-. ''))()(*(*&(#%#%#$"#"#!"!!""#$$%$%!")+)+)+)+ - - - - - - - - - - - - - - - - - - - - - - - - - -  - - E<,>6(:2$;3%=4':1$8/"<2&>5(?7)<4&90#=4'80"4,91"7. 80"8/"80#;3&;2&<4(=5);2&=3'9/#4, 7/#81%7/"9."91$94&=3&<0$7-!8/"81$91$5."5.!92&=5)>5*;3(80%91&;3(=5)<3(91%7/#6/$70%:2';2'4, 1)91%<4(;3'7/#;3';3';3'91%81%92&81%81%92&92&81%92&70#5/"70$93&70$6/"6/#5."5."5."5/"5."81%6/#4,!5-"6.#5-"5-"5-"4,!7/$80%5-"6.#5."0)1)3, 2+ 1*1*2+ 3+!1).%,%,&/)1* 1* C- C,B)F,J1 F.E.C-B,D.A+:$/02//0,& -+1 .,/ 1!/& $ '&"  $)&%$ " #! #"     -               - -  -  -   -    - -    - -  -    -  -   -  - - -   -        -   -   -           $$$"""  !!! !!!###$$$!!!$$$"""!!!!!!"""$$$&&&%%%$$$$$$$$$$$$$$$###!!! !!! !!!  !!!""""""###$$$$$$"""$$$###"""!!!""" !!!###""""""$$$$$$$$$###$$$$$$%%%&&&######%%%&&&%%%%%%&&&&&&&&&&&&$$$###$$$$$$%%%&&&$$$###### """!!!!!!  !!! !!!$$$###$$$%%%$$$""""""###$$$""""""""""""###$$$%%%&&&%%%%%%$$$%%%&&&&&&$$$%%%%%%&&&%%%%%%%%%&&&&&&%%%%%%$$$$$$$$$%%%&&&$$$###""""""""""""!!!!!!!!!"""  ###$$$###$$$$$$%%%&&&%%%%%%&&&'''&&&$$$######"""#########%%%"""!!!"""###%%%&&&&&&'''&&&$$$$$$&&&%%%%%%%%%$$$"""!!!""""""!!!!!!"""$$$###"""######$$$$$$$$$############""""""##################"""$$$$$$$$$#########""" !!!""""""""""""!!! 7/$;3(;3(5-"7/$90%80%91%6."3+:1&;2&6-"90$:1%8/#5, 7.":1%90$7/#<3'90$6.":2&<4(5, 0(5, :2&;2&7."6."8."5+ 7."7-!5, 90$8/#7."8.#7-!5, 6-!8.#8.";1%<3';1%90#7.!90#<3&:1$90$90#6- 90#7.!4+;0$?5)=2&<1%?5(F:,q]D       - ! #"$#$#%$&$&%'(*)*(*()')"#.:5*'%# - -   -     #%$ *'(%-.0?@&'()()())*)*(*%'$%$%$$##""!!!!#"$$$%$%!")+)+)+),)+ - - - - - - - - - -  aU?@8)=6(=6(=5(<3&90#8.":0$<3&=5'<4&:2$>5(:1$6-:2$7.!8/"7/!7/"91$90$:2&;3':1%<2'7."4, 6/#81$6.!8,!91$94&>3'=0%7-!7/";3&92%6/#70$92&=5*?7+<4)80%:2'<4(>6*<5)92&7/$7/%80&:2';3'6."4, :2&>6*<4(:1%<4(>6*;4(91%81%;4(:3'81%81%92&81%93&70#5.!6/"92%81%81%71$70$60#5.!4.!5.!81%5."3+ 4,!5-"5-"4,!4,!3+ 6.#90%6.#5-"4,!0)1*2+1*1*1*2* 2+ 0(-%,$,&0)B- D-C*C)K0 M1 C*A*A,@,B/:'4 ).5#0*' ) *-..-+,/ +&'$  $%&&$ # ! ! $%%"    -             -    -   - -  -  -  - -  - -        - - -    -  - -       -   - -  - - - - -            """###!!! """"""!!!!!!""""""#########$$$###!!!!!!!!!"""$$$%%%#########$$$$$$$$$"""    """###"""$$$%%% !!!%%%$$$######"""$$$"""############%%%$$$$$$%%%&&&&&&$$$%%%######%%%%%%&&&&&&%%%&&&%%%###!!! ######%%%$$$$$$""" """"""!!! """###%%%%%%&&&%%%$$$######$$$$$$###$$$%%%###!!!!!!###%%%''''''%%%$$$%%%$$$%%%%%%&&&%%%%%%$$$%%%&&&%%%%%%%%%%%%$$$$$$%%%$$$""""""######### !!! """$$$###"""###$$$###$$$%%%$$$%%%&&&%%%"""!!!""""""!!!$$$ !!!%%%###"""$$$$$$%%%&&&%%%'''&&&$$$$$$&&&$$$$$$###"""!!!""""""""""""!!!######""""""###"""###$$$$$$$$$###########################"""######$$$###$$$###"""!!!!!!  !!!!!!""""""!!!!!!!!!7/$6/$;3(:2'5-"7/$91&91&:2'5-!2*80$:1&5,!8/$:1%80$4, 5-!;2&91%8/#;3'91%8/#<3'<4(2*/'5, <3';2&5-!8/#:0%8."9/#6, 2)8.#9/#8."7-"5, 5, 7-!7-"6, 9/#<2&;1%:1%8/#:0$=3'9/#8.";1%6- :0#7.!5,;1$?5(<2%<1%@6)C8*G;+         !!#$#%#%"% $"%%(')(*)*()(*)+&(%54,,%./&"$&!$$'#&%#'! ## $!%!"# $$""&%%" !'!$(#,&%1$',!%*$(/13$%')(*(*(*)***)*'($&$%$%$$##!!!!""#$$%%&%&"#(**+),*,)+ - - - - - - - - - - - - - - - - - - - - - - - - F=-<5'<5'@9+>6)=4'90#7-!:0$<4'>6(=5';2%>5(:2$8/!:1#6.!8/"8/"90#91$80$:2&;2&:2&=3'8/#6."82%:4'8/#9-":3&;5'>3'=0%7-!90#:3&;4'81%70#91%>6*=4);2'80$:2&<4)=5)<4(81%80%91&:3(=5*=4)8/$6-!;2&>5)<4(:2&;3';4(<4(:2&81%:3':3&81%92&92&81%:3&70#4-!4- 70$81%92%6/#81%6/#5.!6/#6/#81%4, 1)1)3, 5."5-"5-"2*4,!7/$5-"3+ 2+ 2*3, 2+0)1*2+ 2+ 2+ 1).%,$+%C- D,B*G-P4$K/A&B*B-@-<+3#+*/ 0-)% -$ ( )-.,+)*+(%   -%(&(%!  ! %$$"   -       -  -    -              -  - -         - -    - -        -     - - - - - - -       !!! ###"""!!!"""$$$"""!!!###$$$###"""!!!!!!!!!"""###$$$######$$$$$$$$$###"""  !!!!!!!!!###$$$###$$$$$$ !!!"""""" """!!!$$$###!!!$$$$$$$$$%%%%%%%%%$$$&&&&&&###$$$%%%$$$$$$###%%%%%%&&&'''%%%"""!!!"""######$$$#########!!!!!!!!!"""""""""!!!"""!!!###&&&$$$%%%'''&&&%%%$$$$$$$$$%%%&&&&&&%%%""""""!!!!!!###$$$&&&&&&%%%$$$###""""""###"""###&&&$$$%%%%%%%%%%%%%%%######$$$$$$###"""#########  !!!###$$$#########$$$$$$$$$$$$%%%%%%%%%$$$!!!"""######""" !!!"""$$$!!! """###"""%%%%%%&&&&&&%%%&&&&&&%%%###%%%######""""""!!!!!!"""###"""###############$$$""""""###$$$$$$###############"""""""""""""""###"""############""""""!!! !!! !!!"""""""""!!! 5-"6.#;3(:2'5-"6.#90%:1&;2'6."2*7.#:1&6-!8/$<3';2&7."7."<3'90$8/#:1%:2&:1%>5)>6*5, 2*6-!;2&:1%5-!90$90$6,!7-!7-!4*8/#8/#8/#7."5, 5, 7."6-!4+7.";1&;1%<2'90$:1%>4(6- 7-!:1$6- ;2$:1#6- ;1$?4'<2%<2%?6)>4'B8)     -  - - - - -  "" ##"#"%$'$($(&)(*)+*+*+*+)+),*-,/&)%(%(%(%(')(+)+)+)+)+)+(+(*'*(*)))****+)+(*(+)+),),),)+)+)*'()*'*(*(*(*)*))()&'$&$&$&#%##""""#$$%%&%'&'"#(*)+*,*,*,)+  - - - - - - - - - - - - - - - - - - - - aS>@8):3%:2%A:,=5':2$7-!6, ;1%>6)@9+>6(8/"=4':1$7. 90"5- 7/!90#:2%:2%90$:2&;2&<3'=3'8/#6/":3'<6):2%:0$<5(<7)?4(>1&8.":1%;4';4'81%5."81$>6*;3(80$80%90%<4)<4(:3'80$7/$80%:2'=5*<4)7.#5-!:2&>6*:2&90$91%;4(;3'7/#70#92&92&82%:3'92%81$92&81$6/"70$:3&92%93&4-!71$6/#6/#81%81%81%3, 0(1)4,!6/$5-"5-"3+ 4,!5-"3+ 2*2*3, 4-"2+ 0(2* 3+!2+ 2+ 1).%C- D-E-E,J0 P3$I-C(D+C-@-8&/*./ .+' $ ( /-,+)(')'$!  " &(! $$"$#&$!     - -  - -             -     -   -         -   - - -             - - -   - -  - - - -   """!!! !!!"""""""""$$$%%%"""!!!""""""""""""!!! !!!""""""!!!""""""############""""""!!! !!!!!! !!!######!!!""""""!!!!!!"""""""""###""""""$$$%%%%%%%%%###$$$&&&%%%%%%&&&&&&$$$%%%$$$%%%%%%$$$%%%&&&'''$$$!!! $$$$$$&&&$$$"""###"""###""""""!!!"""$$$"""### """######&&&&&&)))'''$$$$$$%%%%%%%%%&&&######$$$###"""""""""%%%###$$$$$$###"""###$$$"""###$$$######%%%'''%%%%%%%%%%%%$$$!!!#########%%%###""" !!!  """#########$$$$$$###$$$%%%$$$%%%&&&&&&%%%"""###$$$"""######"""!!! """### !!!!!! &&&%%%%%%%%%&&&&&&&&&### """!!!!!!!!!!!!!!!!!!"""######"""#########"""!!!"""############$$$$$$###""""""###"""###"""""""""############"""""" !!!!!! !!!!!!!!!!!!7/%3+ 6/#;3(:2'6."5-"8/$90%:1&7."2)7.":1%6-!8/$<4(:1%5, 5, >4)8/#6."90$;2&:2&>5)=5)4, 3*6.!:1&:1%7.":1%90$6, 7-!9/$7-!:0$9/#8.#8."5, 5, 9/#9/#6,!8.#;1&;1&<3'8/#:0$>4(6, 7-!:1$8."<3&;1$7.!<2%?4(<2%<2%?6(=4&>4&I>.    - - -  - -  -  !"#%$'%)&*(*)+)+)*()()(+(-(,',&+&+&+',)-),(,'+'*&*'*'+(+*,+-+.,.,/,/,0-/-/-/-/-0-/-/,.)+(+(+'*')()&'&($&$'%'$&$%#$"#"$$&%'&(&('(&&'*)+*,*,*,)+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -C7*<3'7/#92%>7*;4'7/"4+5+<2%>6)>7)>6(8/":1$:1$8/!8/!6- 7/!90#:1$91$80$:2&:2&<3';1%6-!5-!:3'=7*:1%9/";4'<6(A4)?2'7.!91$;5':3&81$4-!70#>6*=5*;2'6.#7.#<4(=5):3'5."5.#7/%80%91&91%6-"5-!:2&>6*:2&7."7/#:3'<4(91%70$93&92&81%92&81$70#81%81$6/#81$:3&92%:3'6/"70#70$70#81%81%70$5-!2+2*3+ 6.#7/$5.#4,!5,!4,!3+ 2+3+ 3,!4-"1* 0)2+ 3,!3+!3+ 1)D-D-F-H/L2"K1!H-D*D+D-@+8$+,1",')''/,-+($&'&'$  # %%&(#! ! " $##!     -    -  -    -       - - -     -  -     - -                    -   -      - - -!!!!!! """""""""$$$""" !!!!!!!!!"""""" !!!!!!!!!"""###""" !!!"""###$$$###!!! """!!!!!!!!!!!!!!!$$$###!!!"""""""""!!!"""$$$""""""""""""###%%%%%%$$$$$$$$$$$$&&&&&&%%%$$$$$$%%%######%%%$$$$$$$$$%%%&&&%%%"""!!!"""###%%%$$$$$$$$$###""""""$$$"""$$$###!!! !!! $$$###''''''((('''$$$"""###$$$''''''%%%$$$&&&$$$""""""###$$$###$$$'''$$$"""!!!###%%%%%%%%%"""###%%%%%%######%%%%%%###!!!"""###!!!######""" !!!!!! !!! """###$$$""""""$$$%%%#########$$$%%%&&&'''&&&$$$$$$%%%$$$""" !!!"""""" """%%%$$$!!!###((($$$%%%"""!!!"""!!!!!!!!!!!! !!!!!!""""""###"""!!!"""!!!!!!!!!"""###$$$$$$$$$""""""######""""""!!!!!!!!!"""###"""""""""""" !!!!!! !!!!!!2*5-"3+ 5-":3'91&5-"5-!6.#80%<3(80$1)7.";2&6-"90%=4(:1%4, 6-!?5)9/$6."90$;3':2&>5)>6*6."4, 7."90$:1%8/#:0$:0%6-!9/#90$7."90$8/#8/#8/#5, 5, 90$:0%8."8/#;1%<3'=3(8/"90#=4'7.!8.":1$9/#<2&9/"7.!=2&>4';1$<2%>5(<2%:1$D:+  -   - -    !"$&&('(&*%+&*&''''&'''('(((())))))()(*()()'('(()()*)+*,*,*,*-+-+-+-+-+-,-,.,.,.+.)+'*'*(*')')&(%'&'%'$&$&#%#%$&%'&(&)'(%%'))+*,*,*,)+)+ - - - - - - - - - - - - - - - - - - - - -_P<:/"90$80#:3&=6)=6);3&6-6,<2$;3&=5(<5(91#:2$:1#9/!9/"7.!8/"90#:1$91$80$:3&;2&<3'9/$4+ 3, 92%;5(8/#7-!93&:5'@3(>1&6, 8/":4&;4'81%4-!70#=5*:2'91&8/$5,!;2'?7+;4(6."5.#80&92'91&90%6."6."91%:2&91%7."7/#:2&;4(81%81%:3'92%70$81$70$6/#70$81$6/#82%:3&81$92&60#70$81%81%70#6/#70$5-!2*2*3+ 5.#6/#5."4-!4,!3+ 2*2*2+ 2+ 4-"/(1)2+ 2+ 2+ 2* E-F-H0K1"L3$F.D+D*D+F/!@*9$--0!+&" " '/ 0!/ ,,**&&&&&'*)&## ! $'%"   -                   -     - - -   - -  - -   - - - -    -         - - - -  -    - - -!!!  ###"""######!!! !!!"""#########!!! """###$$$!!!!!!!!!"""###$$$###"""###"""!!!!!!!!!!!!!!!!!!!!!######!!! !!!!!!!!!!!!!!!!!!!!!!!!"""######$$$%%%###&&&&&&%%%"""%%%######$$$%%%$$$"""%%%%%%"""$$$'''%%%######"""#########$$$###!!!""""""$$$######%%%$$$!!!"""!!!"""%%%%%%&&&%%%%%%$$$######%%%''''''%%%$$$&&&$$$"""###$$$###!!!###'''%%%""" ###%%%%%%'''$$$$$$%%%$$$############$$$$$$$$$###"""###"""!!!!!!"""!!!!!!"""!!! !!!"""""""""!!!"""###$$$$$$###$$$&&&$$$$$$%%%&&&%%%###%%%$$$  !!!"""###%%%$$$#########"""!!!!!!!!! !!!!!!"""""""""!!!!!! !!! !!!!!!"""######""""""######$$$###!!!""""""""""""###!!!!!!!!!"""!!! !!!!!! !!!3+ 2*5-"1)3+ 91&:3(6.#5-"80$:1&:2&7/#0'7.#;2'7.":1%=4(90$3*5-!?5*;2&8/#:2&<3'91%=5)>5)7/#5, 7/":1%;2&8/#8/#9/$6, 90$90$8.#:0%90$8/#8.#6,!5, 8."8/#6-!6-!9/#<2&=3'8."9/#<2&8/"90$:0$8/#;1%8."7- <1%>3';1$<2%?5(<3&:1$A7(SG5  -   #! %#'%%&$'%(%(%'&(&('(')')')')')')')')&(%'&(')')(*(*)*)+)+)+)*)+)+*+*,+,,-,.,.+-)+(*(*')&(%'&''(&'$'$&#&$&%'%'&(%& ()%'')(*),*,*,)+)+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -F;-9/"=5(;3&:3&=6(=5(<4&90"8. =3&<4'<5(;4&:1$;2%<2%:0"9/"8.!9/"90#91#91$70#91%;3&;3&80#4- 3,70#:3&6.!6- :4&:4&?2'6+:1&80%6.#6-":2&=5)<4(91%80%:2';3(;3(:2&8/#7."90$91%80$7.":2&:3'=6*80$92&:3'81$6/#70$70$70#70$70$5/"70$81%70#81$70#70$92%81%5."4-!6/#4-!2*2*3+ 4-!4,!5-"4,!4,!3+ 2*2*1*/(1*0)0(1*1*E-E-F-I0K1"J0"E-@*?(B*B+<&3#1 /!+*'&&++/!--*-*(#%((***&%" #  " ##       -    -   -   - -   -   - - - - - -  - -      - - -      -     - -   -      -   - - - !!!!!!"""#########!!! !!!###$$$$$$!!! !!!!!!""""""!!! """""""""""""""###%%%%%%###  !!!!!!!!! """###!!!  !!!!!!"""!!!!!!!!! """$$$$$$###"""%%%&&& ###$$$$$$$$$###$$$$$$$$$%%%%%%%%%(((%%%$$$######"""!!!###$$$"""""""""###!!!###"""$$$%%%$$$###"""$$$&&&&&&%%%###&&&######$$$%%%%%%$$$$$$%%%###$$$$$$$$$""""""$$$%%%$$$!!!!!!$$$$$$%%%&&&&&&&&&%%%$$$############%%%&&&&&&$$$""""""!!!!!!"""###!!!!!!$$$###!!!!!! !!! !!!"""$$$!!!"""$$$%%%%%%$$$%%%$$$###$$$$$$%%%######%%%###  """###""""""###"""!!!"""!!!!!!!!!!!!"""######"""!!! !!!!!!!!!"""!!!!!!""""""###$$$""" !!!"""###""""""""""""!!!!!!!!!!!! !!!""""""!!!7/%2* 1)80&5-"5-":2';3(6-"5,!80$:2':1&8/#1(8/$:1%5, :1%=4(:1%5, 8/#?5*;2&80$<3'=4(90$=4(=5)90$5-!7/"91%:1%7."7."8/#6, 8/#90$8.";1%9/#7-!8."6-!6,!6-!6-!4+5, 7."91$;2&7-!7.!;1%:0#9/#8/"8.":0$9/#7-!<1$?4'<2%=3'A7*>5';1$=3&H=- -   !"#%#%"$$%&%&%%$%%'(')&(%(&)'*'*')')&)&)&)&)&)')'*'*(*(+),*-*-+.*-*-*-*-*-*-+-+-,.,/+.*,)+(*')&(&('('(&(%'$&$&%&%&%& !'(()()&'')(*)+*,*,*+)+(* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -aR6*91%7/#5-"91%<4(;3':2&:2';3(;3(;3(91%6-!6.":1%:2&8/#6.":3':3'>6*7/#92&92&81$70#81$81%81%81$70$5.!6/"81$70$92&81%6/#81%81%4-!4-!80$5-!1*2+ 4,!4,!3, 5-"5-"4,!4,!3+ 1*1*2+ 4-"3,!1*1* F-E-G.G.H/ D+B)?'>(A+>(8#0-+('%&+- ,)**+-,)%#$'((($  ! $" " %                  -       - -   -     -   - -   - - -         - - -     -   -    - - -  """$$$$$$"""!!! !!!######"""!!!!!!$$$$$$"""#########""" !!!###%%%&&&$$$!!! """!!! !!!""" """!!!!!!!!!###""""""$$$!!!!!!""""""!!!'''&&&%%%###"""$$$&&&###%%%&&&%%%%%%%%%&&&$$$%%%###""""""### !!! !!!###$$$###""""""######$$$&&&$$$%%%$$$$$$$$$###""""""%%%&&&%%%$$$$$$###&&&######%%%######&&&$$$"""$$$&&&&&&%%%$$$&&&'''&&&$$$$$$###%%%%%%$$$%%%&&&&&&$$$######""""""###!!!"""$$$$$$###"""!!! !!!""" """###%%%######%%%&&&%%%$$$$$$$$$%%%%%%$$$######$$$%%%###"""  !!!""" !!!""""""!!!!!! """!!!!!!######""""""!!!  !!!!!!!!!!!!!!!""""""######!!!!!!######"""!!!!!!"""!!!!!!"""!!!!!!!!!""""""!!!"""70%1)1)5-#3+ 2+ :2':2'5-"6-"7.#;2':2&80$3+90%90%3*90%;3'90$5, 8/#>4(;2&90$<3';2&7/#;3'=4(90$5-!6.":1%;2&8."6-!9/$6-!8.":0$7.";1&8."3*;1%3*7-"7-!7."4+4+7."7/";2&7-!6- :1$:0$7-!7.!8/":0$:0$9/#=2%>3'=2&?5(@7)=3&:1#=4&D:+[O;  !!""##$$%%&%'$'&((*(*()()()()'(&''((((((('(())*)**+*+*-+.+/,/,/,/,/+/+.+.+.+.+-+-+-+-)+(*')')')')()')&'$%%%%%""&''((*(*(*(*(*)+*,*,*,)+(* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - B7(<3&;1%;3&92%:4&=6)>7*=5'8/"6+:0#;4':3%91$8/":1$<3%8/!8.!8/"9/"9/#6.!80$81%91%<3';2&;3'80$6/"92%;3'70#6.!;4&91$91$7.!5-7."92%:3&81%3,80$=5)>6*;4'70$6.#91&:2'7/$5-"80&:2(;3(;3(80$4, 6-!;2&<3'80$7/#92&:3'>6*:2&92&92&92&81%81$81%81%81$71$5."6/#92&92%81%70#5."70$70$4-!4-!80$6."1)3+ 4,!4,!4,!6.#6.#4,!3+!3+ 3+ 2+ 3,!3,!2+!F,F-G.G.G.E,A(>%<$?'@*<'6"2-( % %$ ',- ))''*'('($&# $ $ # " !  $(%$!  -     -      -           - -   - -   -   - -   -        -     -  - -        - -!!!!!!!!! !!!###""" !!!  !!!###$$$######"""!!!"""""" """###$$$### """"""$$$%%%###!!!!!! !!!!!!!!!!!! !!!!!!  ###"""!!!!!!!!!!!!#########%%%%%%%%%###""""""$$$%%%$$$&&&&&&&&&&&&%%%%%%######$$$$$$%%%### !!!$$$$$$######!!! %%%%%%%%%%%%&&&$$$###%%%$$$$$$$$$&&&&&&%%%%%%$$$$$$$$$$$$$$$######$$$%%%%%%%%%%%%$$$$$$$$$$$$$$$%%%$$$$$$$$$$$$$$$$$$######%%%%%%%%%$$$$$$""""""!!!!!!!!!"""###""""""""" """###"""$$$$$$"""%%%###$$$%%%$$$$$$$$$###"""%%%&&&&&&%%%%%%""""""###   !!!!!! """!!!!!! !!!######"""!!!  !!!""""""""""""""""""######"""#########""" """"""!!!!!!!!!"""!!!!!!""""""!!!80%80&2* 2+ 80%5-"6.#<4);3(5-!7/$7/$;2'91%8/#4, :1&90%3*90$;2&91%5-!8/#<2';1&90$:1%8/#6.":1%<3'90$4, 5, 90$=3'90$5, :1%7."7.":0$8/#<2&7."5, 9/$6,!8."8."7."3*5,80#7.";3&8/"6, ;1%;1%9/#:1$9/#9/#:1$;1%=2&<2%<2%?4'>4&9/":1#=3&?6(MB2        ! " " "!#$%$&%&&'&(())+*,)+)+)*(*(*(*(*(*)+)+)+)+*,+,,-,.,.-.-.,.,.,.,.,.,.,-,-+-+,+,)+(*(*'*'*(*(*')&'&&$#&(&('((*(*(*(*(*(*)+)+*,*,)+(*(*   - - - - - - - - - - - - - - - - - - - - - - ^O:@6(<2&:1$;3&92%:3&=6)?7*<4'90#4*9/"<5(<4';3%91#;2%<3&8/!8/":0#90#90$6-!91%92%92%<3':1%;3'70#5."91%;3'70#7/";3&:1%91$6-!3*5-!91%:3&81%4, 80$=5)=6*:3'70$6.#7/$80%5-"3* 6.$80&:2'<3(:2&7."7/";3&:2%70#70$81%92&;4(92&92&:3';4'92&70$60#70$81$71$4- 5.!92&93&70$4.!4- 6/"60#4-!3,5."5-!2*3+ 3,!3+ 4,!6.#6.#3+ 4+!4,!4,"3,!3+!2+ F-E-G.I/I/E,B)@(>'@)>(9%5!4 /+' ')**, +'%')'$&("## # "   -#%%%" -  -   -  -     -     -   -    - - - -  -     -   - - -  - - - -        -    - -    - - !!!!!!"""!!!!!!!!!"""!!! !!! !!!"""$$$$$$###$$$"""!!!"""""""""!!!"""$$$%%%#########%%%%%%###!!!!!!"""###""" !!!###!!! !!! !!!"""!!!!!!"""!!!"""######%%%$$$$$$!!!!!!"""###""""""###%%%%%%&&&###$$$$$$%%%&&&%%%&&&$$$""""""!!!###$$$"""!!! !!!######%%%$$$"""%%%&&&%%%&&&%%%%%%%%%%%%%%%'''$$$$$$$$$$$$$$$$$$$$$$$$%%%$$$######$$$$$$###############$$$%%%$$$"""#########$$$$$$%%%%%%%%%###"""""""""######$$$""""""!!!"""###!!!!!!$$$###!!!$$$######$$$%%%%%%$$$######%%%)))((('''$$$"""###### """### !!!!!! !!!!!!!!!!!! !!!!!! !!! !!! !!!""""""""""""##################"""""""""###"""!!!!!!!!!""""""!!!""""""!!!5-"80&80&2+ 3+ 70%5-"5.#<5*<4)4, 6.#80%:1&80$7.#5, :1&:1&3*8/$<3':2&6."9/$<2&:0$8.#8/#7."6.!90$<3'90$5, 5, 7."<2':0%6-!;2&8.#7.":0%8/#;2&9/#8.#9/#8."8/#90$9/#4+6- :1%8/";2&8/#6- ;1%<2&90#;1%8."9/#:0$;1%=2&;1$;0#>3&?5(;1#;1#=3&?5(I?0_R? -   " " #!#"$"$"$"$$&$&$%$&&'&(')(*)+*,)+)+(*'*(*)+*+)+(*(*)*+++,,.,.-.-.,.,.+.+.+.+.,.+.+.+.*.)+)+(+(+(*'*'(%%&(')&(%(')(*)+(*(*(+)+)+)+*,*,)+(*(*  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -D9*=3&<3&;2%;3&;3&;4'=6)=5(;3&;1%5+8."=5(=5(<4':1$<3%;2%7. 90#;1$7/"80#5-!91%:2&:2&:2&90%;2'80$7/#:3'<5)7/#7/#:1%:1%:1%7."3*5-!:1%;3'92%6."80$<5)<5):2&70$5.#80%91&7/$4,"7/%81'91'<3(<3'90$80$<4';3&7/#81%;4(93':3(71%81%:4';5(:2&91%7/#3+7/#6."1*3,81%92%70$4-!3, 5.!70#5."2+4-!5-!3+ 4,!3+ 2*2*3+ 2+3* 5,"4,"2* 1*E,F-G,I/J0 J0 E,C+A*A+A+>(6#3!20-) ),/!. ,)()+(%" $""# # "  #'&"              -        -     - -  -  - -           -      - - -  - -  -     -  -`__^^^]\\\[Z """###!!! """""" !!!"""!!! !!!#########$$$###"""###!!!###%%%###$$$""""""%%%$$$$$$$$$###"""!!!###"""!!! !!!"""###!!! !!! """!!!  !!!!!!###$$$###!!!######""""""###%%%%%%%%%"""!!!###%%%$$$%%%&&&%%%"""######$$$######""""""%%%###"""$$$%%%!!!"""###%%%''''''###""""""$$$%%%$$$$$$%%%$$$&&&%%%%%%%%%%%%$$$###$$$###$$$$$$$$$$$$#########%%%%%%###$$$%%%%%%%%%%%%%%%%%%%%%$$$###""""""###$$$%%%!!!!!!!!!$$$###"""!!!#########$$$######$$$$$$$$$&&&&&&$$$%%%''''''&&&&&&$$$###!!!!!!$$$### """!!! """!!! !!!!!! !!!!!!!!!  !!!!!! !!! !!!!!!"""######""""""###""" """###"""""""""!!!!!!!!!######"""###1)4,"80&7/$0(2*80%5.#7/$<4):3'5-!5-"80%80%80$6."4, :1%;2&3*7.#<4(;2&7.":0%<2'9/#7-!8/#8/#7."8/#<3':1%6-!6-!8/#<2';1&8.#<2'9/$9/#:1%7.":0%90$8/#9/$7."7."90$:0%5- 5, 90$8/":1%8/"5, ;1%=4(:0$<2&7-!9.#9/#:0$=2&;0$:0#=3%?5';0#;0#=3%?5'D:,LB3 - -  !!$"$#%$&$&$&#%#%#&$&%'%'')(*)*)+)+)+),)+)+)*(*(*)+*,*-+.+/+/,.,.+.+.*.*-*-+-,.,.,.+.*,*,)+(+(*&(!"&(')')')')&('('))+)+(+)+)+)+)+*,*,)+(*(*() - - - - - - - - - - - - - - - - - - - - - - - - - - -bS?=2%;1%<3'<3&;3&;3&;4'<5(;3'<4'90$5*8.#<5(=6)<4':1$;3%:1$4+90#;1$6- 7."5, 8/#:1%:2&:1&90%;3'90%7/$91%:2&7/#8/#91%:2&;2&90$5, 6-!91%;3';2'80$80$;4(:3'70$5."5.#81%:2'6.$2+ 80':2):2';3(<3(:2&:2&<3'90$7/#7/#92&82&92'81&70$92&:3':2&91%6/#4-!6."5-!2*4, 70$91%80$5."6/#5."81$5-!3+6.#5-"3+ 3,!3+ 2*2*1)0(2)2)2* 3+ F,E,E+G-I/H.E,D+A*A+@*;&5$3!3!3"-*-.0!1#-&')**%#"   !!" ##%'#        -  -   - - -       - -  -    -  -         - - -      -     -         -  ddddcccbbbaaa``__^]]]\[[YXX@@<>?=?@?AB?BBADD@CD?BBACDBDDACB!!!"""!!!!!!!!!######"""!!!""""""!!!!!!"""######$$$###""""""######""""""!!!!!!###%%%$$$######!!!!!!!!!"""!!!!!!!!! """###""""""###!!!"""###"""!!! !!! !!!!!!!!!$$$%%%###### $$$###!!!!!!""""""$$$%%%###!!!"""###$$$%%%%%%%%%&&&%%%###$$$$$$!!!###""""""######!!!$$$%%%$$$ ###$$$&&&&&&""""""!!!"""######$$$%%%&&&&&&&&&'''&&&%%%###""""""###%%%######""""""#########%%%&&&'''&&&&&&&&&%%%###$$$%%%&&&###!!! ######!!!!!!"""$$$###$$$""""""###$$$$$$######$$$###$$$&&&(((&&&%%%&&&$$$###%%%$$$&&&!!!!!! !!!######""" !!!!!!!!! ###"""!!!!!!!!! !!!!!!"""!!!!!!!!! !!!!!!!!!!!!   !!!""""""!!!!!!###"""!!!""""""!!!!!!!!! !!!!!!"""###"""5-"1(5,"90&7.$/'1)80%4,!6/$<5*:2'4,!3, 5.#7/#90%7/#2*8/#:1&4+8/#=4(;2&7.";1&=3(90$8."90$91%8/#80$<3'80$4+5+ 9/#=2';1&9/#<2':0$90$;1%6-!9/$9/#7."8/#7-!6-!8.":0$7/!4,7/"8/#:1$6.!4+;2&?6);1%<2&8."9/#7-!:/#>3'<1%;0$>3%?5';1#;1#<2%>4&B9+H>0^P>  !"$$&$&$&$&$&$'$($(%(&(&(%(&)'*'*(*(*'*'*'*(+)+),*,+,+,+,+,+-+,*,*++,+,+,+,+,+,*,)+()%&')')(*'*')'(&'#&&()+)+)+)+*,)+)+*,*,)+(*(*(* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - E;,9/#9/#;1%;2&:2%:2%:3&;4';3&<4';1%5+8/#;4'92%:2%91$:2%<3&6- 90#:1$5, 7-"5, 6."80$91%91&:2'=4):1&80$80%91&80$7/#90%;2';2'90$5, 4, 90%;3';2'80$7/#:3':2'70$5.#6/#81%:3'6/$6/$6/%92(:2(:2':2':1&;3';3'80$7/#7/#:3'70$:3'71%71$81%92%92&91%6."6/"6."4, 4, 6/#80$6/#5."4-!6/#5."70$1)4-!7/$7/$2+ 3+ 3+ 2*3* 3+ 3* 2)3+ F+F,G-H. F,F-E,C*C+B+?)=(6&1!/01 /-0 2!10 ,(*+)'&#!   !#$&#   -   -  -           -       -    - -   -           -        - -       - -  nnnoooqqprrrsssuttuuuvvv<96><9=;9=<:?>=BAADCCECCC@@'%&DFGDEGDEGCEFCEFCEFDFGDEFCEFDEFDFGEFGCEFACCABCCEECEEBCDCDEBDDBCD@@ABCBBCB !!!!!!###"""!!!"""######"""!!!"""###"""############""" """###"""###""" !!!"""$$$###"""""""""###"""!!! !!! !!!"""%%%###$$$"""""""""!!!!!! !!!"""!!! !!!!!!!!!###!!!"""!!!######"""###""""""$$$######$$$"""!!!###$$$%%%%%%%%%%%%$$$###$$$$$$###$$$###"""###$$$%%%&&&%%%'''$$$$$$$$$%%%'''%%%$$$$$$""""""""""""###$$$%%%%%%'''&&&&&&'''$$$!!!###$$$%%%$$$###"""!!!!!!"""###&&&''''''&&&&&&&&&$$$###$$$%%%%%%###!!!!!!""""""!!!!!!"""###%%%&&&&&&%%%%%%%%%&&&&&&$$$$$$$$$###$$$&&&&&&%%%%%%%%%###"""%%%%%%&&&!!! !!! ###"""  !!!!!!!!!"""!!!!!!!!! !!!!!!""""""   !!! !!!!!!!!!!!! !!!!!!"""###"""!!!!!! !!!"""!!!!!!"""###5-#1(5-"90&6.#.'1*80%3+ 5.#;4(92'4,!4,!6/#8/$:1&80$2*5,!90%5, 90$?6*;1%8.";2&?5);1&8/#:0%;2&90$;2&?6*90$3*3*9/#<2&:0%8/#<2&9/$9/#;1%7-"8.#8/#7."8."7."6-!7-"9/#7/"5-7/"91$:1$7.!4+;2&@6*;1%<2&9/$9/$7-!:/#?3(>3'=2%?4'@4'<1$<2$=3%>5'B9+D;.F<.  !"$&'&'&(')&)&('(')()(*(*(*(*()')')'*'*(*(*)+)+*,*,*,*-*,*,*,*,*,),)+)+*+((!"')')(*(*(*'*')&(%'$'&((*(*(*(*),)+*,*,*,*+()(*(*&( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - eVBB8+90$:0$;1%<3&:2%92%:3&;4':2%;3&9/#4*7.!;4'<5(<5'91$92%>5)7/"80#80#5, 6.!6-!80$:1&:2'80&91&<4):1'7/$8/$91%80$5-!7.#:1&:1%8/#6-!2*8/$;2':2&7/#6.":3':2'70$5.#5.#6/$81%3, 4-"5-$91(:3)92'80%7/$:2&<4(:2&80$4-!70$92'<5*:3'71$71$81%91%92&6/#91%7/#5-!4-!6/#7/#4-!4, 3, 4-!5.!6/#5."4,!7/$4-!1*1*2*2)3* 3+ 3* F+F,F-H/ I/!G.E,D+@'@(C,@)<'3$0!,///1!3#4%4$.(*. -*'%!     !#%&!    -    - - -        -  - - -     - - -  - - - - -    -      -           -   - - - - - -||{~~CA?A?>;98<:9>=>?>=>===<<;76566311.  !!!!!!!!!!!!""""""!!!!!!"""######$$$$$$######!!! """######$$$"""!!! """$$$$$$###!!!"""###"""  !!!######!!!""""""!!! !!! !!! !!!!!! !!!"""###$$$###"""$$$!!!#########"""###$$$$$$$$$$$$$$$$$$$$$######%%%%%%$$$###"""$$$$$$&&&&&&&&&&&&%%%&&&'''&&&&&&&&&%%%$$$############""""""$$$%%%%%%%%%&&&###!!!$$$%%%$$$$$$""""""!!!!!!###"""%%%&&&%%%&&&&&&%%%$$$###$$$%%%$$$"""!!! !!! !!!!!!###$$$%%%%%%&&&$$$%%%(((((('''%%%$$$$$$%%%%%%&&&%%%$$$$$$###"""$$$$$$$$$ !!!!!! !!!!!!###!!!!!!!!!!!!!!!!!!"""!!! !!!!!!    !!!!!!!!! !!!!!!!!!"""###"""""""""!!! !!!!!!"""!!!###:1'6-#2)6-#90&6-#/'3,!91&3+ 7/$<4)92&4-!4,!6.#7/#80$80$3*5,!90$5-!:1%>5):1%8."=3(?6*;1&9/#;1&=3':0%;2&A7+:1%4*5, 8/#:1%90$8/#<2&8."7.":0%7."8."9/#6-!7."7."6-!8."8/#7/!6. 91#:2%:1%90#4,;1%>4(:0%;1%:/$:0$8.#:/#?3(?4'>3'?4'?4&<1$=3%>4&?5'B8+B:-B9,YL: -   "#%'((((((('''''&'&&&%%%%&&&'&&%&%'%'%($($'%(&)&)%($'$&#&"%"$!#!"&(')()()(*')')'('(&(&(&('*(+(*(*),*,*,*,*,*,*+()(*(*')+..  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -G7):2%92%=5(6.!7."8/"5, 5, 4, 7/#:1&:2'80&91'<4*:1'7/$91%:2&7.#3*5,";1':1&90$5,!1)7/#:2&:1&6."6.";4(<4)81&7/$5."81%92&3-!2+ 4,#80':3):3(80&5."7/$:2':2'91%70$70%81&;4)70%6/#70$60#7/#80$6."80%6."6."6."80$5."3, 3, 4-!4- 4- 6/#6/#5-"6.#4-!0)0(1)0(2)E+F,F,D,H0H.G-D+@'<$@(H0"A*;&,,)*/ 1"2#3$4$0!+*./ -)('# %  !#%$#         -               -  - -  - - - -     - - - -   -     - -          -  - -  - - - - - - zyx~}|987987;::>=<==<>>=@@?@@?@@?CCBBBA??>=>BBACCCBBCAABBBCCCCBBCAAABAAAAABBBCCCCCCCCCCCCCCDDCECBDBBCBBBCBCCCCDDDDDDCCCCCDEEEFFFFFFGGGFFFFEE434EEGEEFGFGEEEA@@==<=<; !!!!!!""""""!!!!!!!!!!!!!!!"""###%%%%%%$$$###!!!!!!###$$$"""""""""""""""""""""$$$###!!!!!!"""""""""  !!! !!!!!!"""$$$###""""""###""" !!!  !!!!!! !!!###""" $$$%%%$$$%%%$$$$$$###$$$######$$$$$$###$$$$$$$$$$$$%%%$$$&&&%%%%%%###"""$$$%%%$$$'''&&&&&&(((&&&'''%%%%%%%%%$$$$$$$$$$$$%%%$$$""""""###$$$######$$$""""""$$$$$$%%%%%%""""""###$$$######%%%$$$$$$$$$%%%%%%%%%%%%%%%$$$$$$""" !!! !!!###&&&%%%%%%'''$$$%%%&&&&&&(((&&&&&&$$$%%%&&&'''&&&%%%$$$######%%%&&&!!!  !!!"""""""""!!!"""!!!!!!!!!"""!!! !!!  !!!!!! !!!!!!!!!"""#########"""!!!!!! !!!"""###4+!90&5,"2)6-#90&6.#0(4,!91&3, 6/$;3(91&5-"4,!6.#8/$80$8/$2*7."8/$5, :1%>4(;1&7-!<2&=3'9/#8.";2&=4(;1%<2'@7+;2&6-!6-!8/#90$80$8/#<2'8/#7-!90$8/#8/#8."7-!7-!7-!6, 7."7.!7.!7.!:2%:2%:1%:1%4,:1%=3':0$9/$9.#;0%:0%:/#?3'?3'?4'?4'>3%<1#=3%=3&>4&A7*A8+>5)C9, - -  !"  !!!!!! %''('(')')&(&(&'%'&'(*')')(+)+)+)+)+)+*,*,*,*,*+(*()(*')%' - -  - - - - - - - - - - - - - - - - - - - - - - - eUAC9-;2':0$;1%<3&<3&<4'81#92%92%80#90$7-!3(6-!92%:3&=6):3&92%<5(5.!5- 7."5, 5, 5, 8/$:2&81&81&70%:3(:2'90%80%:2'8/$4+ 6-":1';2'90$5,!0(7/#:2&91%5-!6/#<4);4(81&70$71%:3';5)5/#2+ 3+"6/%81':3(80&5-"6.#91&91&70$70%70%92':3(70%6/#81%6/#5."5."5-!6."8/$5-"3+4,!3+4-!5-!4-!3, 5."3,!6/$5-"7/$4-!0(/'1)E+F,F,G.G.E,E+E,C*;#8 @)E.A*0". **,- / 2$1#1",& ,0!/+)&$## $! "&%#"     -    - - - -        -        - - - -  -   -                      -  - - -  - -   OMKSQPWUT\ZY`^]ecbkihpnmuts???AAABBBDDDBBB@AA@@@@@@BBBBCCABBCDDCDD011@=>B@ADBCDDCEEEEEEFFFEEECCCDDDCCDAAAAAABBBBBB@@@@@@DDDCDDCCCAAAAAAABBBBBCDDBCC???BBBCDDBBBEFFDEEEEEEEEDDDCCCCCCCCC  !!!!!!###### !!!###!!! !!!$$$%%%###""""""!!!"""###""""""#########"""######""" !!!""""""!!! !!!!!! """###$$$$$$!!!!!!"""!!!!!! !!! !!! !!!"""""""""$$$###"""###$$$$$$%%%%%%%%%&&&'''$$$###%%%%%%$$$$$$$$$$$$######$$$###""""""###$$$######$$$&&&''''''(((&&&"""&&&&&&$$$$$$$$$###$$$$$$%%%$$$""""""#########$$$$$$###%%%&&&%%%&&&%%%"""###%%%$$$!!!###!!!$$$$$$$$$&&&%%%$$$$$$%%%&&&$$$"""!!!!!!!!! !!!$$$&&&&&&%%%&&&$$$&&&&&&'''%%%$$$$$$$$$$$$%%%&&&%%%&&&&&&$$$%%%$$$%%%'''%%%""" !!!"""!!!!!!""""""!!!!!!!!!!!!  !!!   !!! !!!!!! !!!!!!"""###############"""""""""######1)3+ 7.$4+!2)5-#80&5-".'1*80%4,!5-";3(91&4-!4,!7/$91&:1&8/#1)7."8/#5, ;1&=4(;1&5, ;1&=3':0$9/$<3'>4);1&;2&?6*;2&7."7."8/#8.#91%91%;2&9/#6-!9/#8."8/#9/"6, 8."6, 6, 8."7.!7."7.!<3&;1%90$90$6, :0$=4'<2&:0$8.";1%;0%;0$>3'>3&?4'?4'=2$<1#>4&<2$=3%A7*@7+<4(@7*`S>   ! !     !!"!"!"#"#!# "%&'''''('(&('('(&(())+)+)+)+*+)+)+)+++*,+,*+*+*+(*()(*(*&('.+ - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - G<.?5*;1&8/#90$<3&;3&=5(81$;4'92%80#90$6,!3(6-!92&:3&<5'92$70#:3&6.!5- 7."5-!5-!6-"8/$:1%6.#6/$70%<4)91'7/$7/$;2'90%5-!6-";3(;2'92&6.#1)7/$91&91&5-"7/$<4);4)81&70%92'<6*=7+60$2, 2+!4-$6/%91(92'2+ 3,!81&80%7/$70%81&:2(:3)6/$5."81%5."4,!4,!3+ 3+ 7/$5-"3+ 5-"7/$80%6.#3, 5."5.#4-"5."4-!6.#4-"0(E+F,F,I0I0F-D+D*E,B):#9"A*A+?)/!-,,.!- -0 0"-()./ -*(&%"###%##%'#       -  - -   -      -     - -  -  - -  -      - -     -   - -     -      - - -   -  - -   <<5)<3';1&=3(>4);1%;1%>5):1%7."8/#9/#8/#;2&:1%:1%8."6, 9/$9/#9/#:1$8.";1%5+5+9/"8."7/"6.!<3';2%:0$:0$6- 9/#=3'=3';1%8.":0$:0$;1%=3&=3&>4'>4'<1$;1$>4&=3%>4'A8+A8+=4(=4(I?0   ! ! !! !"!!   !!"!#"""!     !! !"!"!" $&&'''&''(()(*)*)+)+)+*+)+(*)*)*)+*+*,*,*+)+*+)*()(*(*&(%&(., - - -   - - - - - - - - - - - - - - - - - - - - - - - eU@B8+=4(;1&8."8."<2&91$:2%81$<5(:3&91$:1%7-"4)6-!:3&;4(:3&6/"5/!92%7/"6.!7/"5-!6-"6-"7.#7.#70%5.#6/$<5*70%6.#7/$;2':2'6.#7/#:2':2&:2&70$4,!7/$70$80%6.#7/$;4);4)92&81&81%;4(<5)71%4."4-#5.$70&70&5.#2* 5.#:2'91'6.$70%81&:2(;4)5/#3,!80%4-"3, 4,!3+ 4,!7/#5-"3+ 4,!6.#6.#5-"4-"3,!4,!5.#5.#4-!4-!E,F,F,F-G/G.B)C*B)B)>&:#<&@*@)3"1 /!,*,,++-+(+/ / -(%'$#####"#%%%       - -   -  -     - -     - - - -   -          - - - -              - -     - -   ==>BBCBCCCDEEFGDEEDDEDDECDDCCDCCDBDCACB@BA@BA@BA@BA@BBBCC@BBACB@BB@BA?@@899A@?CCCDEDDDDDDDDDDDDDBBBBBBBBBAAABBBCCCCCCAAAAAABBB!!!######!!!"""###"""!!! !!!"""###"""!!!!!!!!!""""""""""""###$$$$$$###""""""$$$!!!!!!""""""!!!!!! !!!######"""###"""!!!!!!"""!!! !!!!!!"""!!! """###"""###$$$$$$$$$###""""""""""""######%%%$$$###$$$&&&%%%$$$$$$$$$###$$$$$$%%%%%%&&&$$$###!!!""""""$$$'''''''''&&&&&&&&&&&&%%%%%%$$$%%%$$$$$$%%%%%%""""""######$$$$$$%%%&&&&&&"""###'''%%%%%%%%%%%%%%%###$$$!!! %%%'''%%%###""""""###%%%&&&%%%$$$""" !!!!!!###"""%%%$$$$$$$$$%%%%%%######&&&&&&&&&%%%%%%%%%%%%%%%&&&&&&&&&%%%&&&&&&%%%$$$$$$!!! !!!!!!!!!!!! !!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!! !!!!!!""" !!!  ######"""""""""###############5.#1)4+!7.$5,"4+!7.$8/%3+ .&2+7/$5."6.#:2'7/$4,!5-"5."7/$91%7.#/'7/#91%8/#>5)>5)90$5, ;1%?5*=4(;2&<2'=3':0%:1%=4(:1%8/#:0$9/#90$;2&91%;1%8."6-!:1%90$8/"<2%:0#=3'5+4*8.!8/"8/#5- <3&<3&;1%;1%7.!9/#=3'=3'=3&9/#90#:0$<2%=3&<2%>4&>4'<2$;2$>4&=3%>4'B9+B9+=4'<4'D;.dWC    ! !! ! !!'''(&)()'*(+)+)+),)+)+(+)+)*)*),),)-*,)+)+)+)+(*)+(*&(%&&/+ - - - - - - - - - - - - - - - -  - - - - - - G=-@6)>5)=3':0%9/#<2&80$80$81$;4':3&91%:1%7-"4*6.":3':4'92&6/"4- 70#70#6.!7."5,!7."6-"7."7-"82&82&4."92':3(5-"5.":2'<3(7/$91%80$:3'70$70$5."7/$7/$70$5.#6/$;4(;4(81%92&81&:3(:3(81&70%60%6/%81'6/%3,!0(5.#<4):2'4,"7/%70%92';3)5.#3-!7/$6/#5.#7/$4,!5-"7/$2*1)4,!5."6.#4-"3,!3, 3,!5.#5.#F,F,F,E,H/G.C*A)D+C*@(=&=(?*;&:%0!/.-++,, )''*. +*+($%&%""""#"#%!"     -  -   -  -    -                   -  -  -           - -  -  -  -     ->>?BBCCCDCCEDEFDDECCDBBB??@!!!"""!!!!!!"""###"""!!!!!!###$$$######"""!!! !!!"""!!!"""%%%&&&&&&""""""""" !!!###""" !!!""""""""""""""""""!!!"""!!! """""""""  !!!""""""###%%%%%%%%%######""""""#########%%%#########!!!###%%%%%%%%%$$$$$$$$$%%%((((((%%%$$$$$$%%%%%%''''''&&&'''%%%'''''''''%%%$$$$$$###%%%%%%$$$$$$######$$$$$$$$$$$$$$$%%%&&&###%%%%%%$$$%%%%%%&&&%%%%%%%%%$$$&&&''''''$$$###"""###$$$&&&'''&&&$$$$$$"""!!!!!!""""""#########"""$$$$$$$$$&&&&&&&&&'''&&&&&&%%%%%%$$$%%%&&&&&&&&&&&&&&&&&&######!!! !!! !!!!!!###!!!!!! !!!""""""!!!!!! !!!""""""""" !!!  !!! !!!###"""###!!!!!!$$$#########70%5-"1)4+!7/$5,"4+!8/%90&4,!-&3+ 70$5-"5."91&6.#3+ 4,!5-"5-":2&80$0(90$8/#7.">5)?5)9/$5, :1%?5)=3';1%<2'=4(;2&:0%<3'<3'90$9/$90$:0%:1%90$;2&:0%8/#<2'8.#7.!;1%:0#<2&6, 5+7- 7."8/"3+:1$<3&;2&<2&8."9/#<3&;1%;1%:0#9/#;1$;2%=3&<2%?4'?4'<2%=2%=3&<2%=4&C:-B9,<3&=4(?8+G?1       $%&''((*(*(*')')(*)*)+(,),(+)+),*-*-*,),),)+)+(*)*(*'(%&$&'.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cS?A7)=3'>5)<3':0$6-!:0%8/#8/#92%81%92%70$6-!5, 4*6-!91%;4(;3'70$3,5.!6/!6. 6.!5, 7.#6-!6-!6-"71%93'81%:3';3(3,!6.#<4(;3'91%:2&92&:3'92&70$3,!6/#81%70%5."6.#;4)<5)80%6/$6/#:3';4(81&6/$5/$81&92'70%3,!.'5.#;3)80%3,!6/$70%70%81&4."4-"70$70$5.#6.#3+ 5-"7/$4,!2*4,!5-"6.#5-"4-"4-"5.#F-F,F,E+D+E-D+B(C*E,@(<%?)?*<(7#./ .-/ .!0$."-!+''+-,&&'%$%$%"##  "!        - -    - -          -   -    - -    -  - - -  - - -        -   -       -    - -!!!"""""""""#########""""""$$$###"""!!!!!!  """ !!!%%%&&&%%%###""""""!!! !!!###!!!  !!!"""!!!!!!  !!!!!!!!!"""""""""""""""!!!"""!!!!!!!!!!!!$$$###$$$$$$###""""""###$$$###$$$$$$"""$$$""" ###%%%((('''%%%$$$$$$&&&(((((('''%%%%%%'''&&&''''''%%%%%%###$$$%%%$$$%%%$$$$$$###$$$%%%$$$""""""###$$$%%%%%%$$$%%%(((&&&###%%%%%%%%%'''''''''%%%&&&%%%$$$$$$&&&'''###"""!!!###%%%%%%&&&$$$$$$$$$###"""######""""""#########$$$$$$%%%'''%%%&&&&&&&&&&&&&&&$$$###%%%%%%%%%'''%%%%%%'''$$$### !!!!!!!!! !!!"""!!!""""""!!!"""######!!! !!!"""###"""!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!  """"""###""""""############""""""""""""###5.#70%4-"1(5,"91&7/$5-"90&:2(4,!.&3+ 7/$5-"6.#:2'5."2*4-!6."7/#<4(;2'2):1%90$6-!=4(?5)8/#6, :0%>5)<3':0$;2&=3(;2&90$<2&>4)8.#7.";1&;1&:2&8/#;2&;1&9/$=3(8."7.!:0$8/";1$9/"8.!7-!7.!7."2*7.!:1%;2%<2&8."9/#<2&:0$:0$;1%90#;1$:0$<2&=2&>4'>3&<2$=3&=3%;2$=4&C:-B9,:2%=5(>7+G?1 !"!!! !  #&')(*')(*'((*)***)+*+)+),)-*-*-*,*,)+)+)*)*(*(*(*&(%&$% &'.45 - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - -C8)<2%<3'>5)<3'9/#3*8."7/#80#92%81$82%70#5-!4+4*6-!90%;4(;3'81%3- 5.!6-!6-!6-!4+7."5, 6."6.!71%82&92';4)81&5-"7/$;4(;3'92&:3&:3&93&:3'6/#2+ 4-"71%70$4-"5.":3(:3(70$5."4-"7/$92&92&6/$5/$82'82'91'3,!.'6/$80&5-#4,"7/$81&70$6/$4."5.#81%7/$4-!3, 2+4,!6."5-!3+ 3+ 3+ 6.#70$4."4-!G-F,?(D+C*A)@'B)B*?':$:$>(<(8%*,/!.!,- .!."1%0#)&),. 0!+'# $##%)%!!!         - - - -   -  -   -        - - - -  -     - - -   -  -  -        -    - -  -  - -  - -"""###"""############""""""$$$"""!!!!!! !!!!!!!!!""" !!!###$$$###"""!!!"""###"""!!!  !!!!!!!!!  !!! """"""$$$$$$######"""!!!!!!  ######$$$###""""""""""""######$$$%%%$$$%%%###!!!###%%%&&&&&&%%%###$$$&&&&&&''''''&&&%%%(((''''''(((((('''$$$(((&&&%%%&&&$$$###$$$$$$$$$$$$$$$######$$$&&&%%%$$$&&&(((%%%!!!&&&%%%&&&'''''''''&&&###$$$%%%%%%%%%%%%%%%!!!"""###$$$&&&&&&$$$###$$$###""""""###$$$######$$$$$$%%%&&&&&&&&&&&&%%%%%%&&&&&&%%%$$$###%%%&&&%%%&&&$$$&&&&&&%%%$$$""""""!!!!!!!!! !!!""""""""""""""""""###""" !!!"""###!!!"""!!!  !!!!!!""""""!!!!!!!!!  """""""""###!!!"""###""""""""""""""""""$$$2+ 5-#6/$3+!0'4+!:1'8/%5-"90&:2'5-".&2+ 6.#4,!6.#;3(80%4,!4-"6.#80%<4(80$2):1&:1%6-!=4(>4)9/#6, :0%?5)=3':0$:1%<2';1%9/#;2&?5):0$5+ ;2&;2&;3'8/#;1%90$8/#>4):0$9/#;1$9/":0$:0$9/#8.!7.!7/"4,6- 91$:2%;2%8/#9/#<3';1%;1%<2&:0$:1$;1$<2&<2%=3&<2$<1$=3&=3&;1$=3&A9+@8+80#<4'=6)D(=(7$(*+,- ,.!/".".", (&(*,,)&$! """$'#!    -    - -    -       - - -    - -  - -        - - - - -         -  - - - -     - - - - - -"""######!!!"""!!!""""""!!!"""###"""!!!!!! """######"""!!!"""$$$$$$### ###""""""""" !!!!!!""" !!!  !!!!!! """#########$$$&&&$$$$$$###""""""!!! """###$$$###"""###"""!!!!!!"""###$$$%%%$$$$$$$$$###%%%"""###$$$$$$###$$$&&&&&&'''&&&&&&'''&&&((((((((((((((('''%%%###&&&$$$$$$%%%&&&%%%%%%&&&"""$$$&&&&&&&&&'''(((&&&$$$%%%%%%"""%%%%%%%%%%%%%%%%%%###%%%"""%%%%%%$$$$$$###"""%%%&&&$$$###%%%$$$#########&&&$$$###&&&%%%&&&'''&&&''''''&&&%%%&&&&&&'''&&&$$$$$$$$$%%%'''''''''&&&%%%%%%$$$!!! !!!""" !!!!!!""""""!!!"""""""""!!! !!!!!!!!!###""""""!!! !!!"""""""""######!!!!!!!!!!!!###"""""" !!!!!!!!!""""""!!!!!!""""""""""""######"""###6.$3,!5.#70%3,!0(3+ 90&7/%5,"8/%91&5-"/'3+ 6.#3+ 6.#;3(7/$3+ 2+5-"91%=4)7/#3*;2&:1%7."=3'=3(9/#5+ :0$?5*<3'90$90$:1%9/#8.#<3'>5):0$5, ;1&;2&<4(90$:0%7-"6,!=3(;2&<2&=3';1%9/#9/#9/"8."7.!8/#6.!6.!:1$:2%;2&90$8."<3&=3'<2&;1%90#:0$;1%;2%;1$=3&<2$;1$=3&>4&;1$<2%@7*@7*91$;3&=6)?8+JA2 "!#"""""""%''(()(*'+(+))&(!#&((*),*-+,+*))((&&%&))')()()(*&(%'#$#% $#+.  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -@5&:0#<2%<4'<3'<2&;2&6,!7."7."7/#70$70$81%81$8/#6,!4*4, <3';3'92&92%60#80$80$7."4+4*8.#4+ 6."70$92&:3(81&91&6.#3,!5."81%:3'92&81%:3&;4(;4(80$3+2+70$80%6.#4-"92':2(6.$4-"4-"70%81%6/$3-!60%4."70%3,!2+ 5.#80&70%5-#5-"6.#81%70$4-!3,!4-"5.#5-"5-"5."5-"5-!4, 2*2*4-"5-"I/G-D,B+@)@*=%>'@(>'9#6 9$=)9%3!*)*,- - .!/"-!)''++++'$&'%'##$&##!   -       -     -   -    -    -    - -   - - - - -  -  -  -     -    -  -     -  -    - - - - - """""" !!!"""###"""!!!!!! !!!!!!!!!""" """"""######""""""######""" !!!$$$$$$$$$"""############!!!!!!"""!!!!!! !!!!!! !!!###$$$###"""$$$%%%%%%%%%$$$"""#########"""######$$$###"""!!!"""!!!"""######%%%%%%"""###%%%######""""""###$$$###%%%'''(((&&&%%%'''&&&%%%'''&&&)))))))))'''&&&&&&%%%&&&%%%&&&'''&&&'''&&&######%%%&&&&&&'''((((((&&&###%%%$$$############%%%%%%&&&%%%%%%""""""$$$%%%$$$"""!!!"""$$$###$$$&&&&&&%%%$$$######$$$###$$$&&&''''''%%%$$$&&&%%%%%%&&&&&&&&&&&&%%%%%%%%%&&&&&&'''''''''&&&%%%### """"""!!! !!!!!!!!!"""""""""""""""!!!!!!!!!!!!"""######"""!!!"""!!!!!! """!!!"""######!!!!!!"""!!!!!!!!! """"""!!!!!!!!!!!! !!!"""######"""######5.$2+ 4-"6/$3+!0(3* 90&7.$5,"8/%80%2*.'4,!7/$4,!6.#;3(7/$3,!2*5-":2&?6+:1&6-";2';2&8/#<3'=3(9/$5+9/#?5*<3':0$90$:0%8."7.">4(?5);1%7-!;2&<2'=4(:1%;1%7-!4+;1%;1%<2&=3';1%8."8.!7-!6, 6.!90#8/#91$;2&:1$;2%:1$6- :1%=3';2%8/#7."90#;1%:0$;1$=3&<2%;1#=3&>4';2$;2%@7*@7+;2&:2&;4(>7*F>0iYA !! !!!""!!$&'((*&*'**+))&'&'()(*)+*+**((''!%'!#$$''()'(')()'(%'$%#$#%#"&44 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -hV??4&90#<3%=4(<4(;2&;2&8."7."6."70#81$71$70$6/"80$7-!4*4+;3':2&:3';4(81$70#8/$8/#5, 4*7."4+ 5."70$92&92&6/#70$5.#3, 5."70$:3&81$6/#92&;3':2&7/#3+1*7/#70$6.#5.#:2(:3)7/%6/$6/$92'71&3-"4-!5.#2+ 1*1+ 2+ 5.#70%6/$4-"5-"5-"70$92&4.!2, 5."5.#5."5-"6.#5-"5-"4,!2*/(J0H.E,D,A(>'<%=%@)@(;$8!<&>)9$5"(+)+,*,-.!-!)$'.#."/!*&$$ &($#""$!   - -   - - -   -    -   -          -  - -      -    -   -    - -     - -  -    - -    - -  - - -"""!!! !!!!!!!!!!!!######!!!  """###"""""""""###!!!"""###"""######""""""!!!"""$$$%%%$$$$$$###############!!!""""""!!! !!! !!!""""""!!!""""""###$$$%%%%%%######"""""""""""""""######!!!!!!"""######"""###%%%%%%###$$$%%%$$$###$$$#########%%%&&&(((&&&%%%%%%&&&'''&&&''''''(((((()))''')))'''$$$$$$%%%&&&&&&%%%$$$&&&'''&&&$$$%%%%%%&&&'''((('''&&&&&&%%%############$$$$$$%%%%%%%%%#########&&&%%%###""""""$$$$$$%%%&&&&&&###$$$$$$#########$$$###$$$$$$$$$&&&&&&&&&###&&&$$$%%%$$$$$$%%%'''%%%&&&(((((('''%%%###!!!!!!!!! !!!""""""!!!!!! """"""######"""!!! !!!!!!""""""""" !!!!!!!!!!!!###############"""###!!! !!! """!!! !!!!!!!!!""""""""""""!!!80&6/$4-"6.$6/$3+ 0(4,!91&7/$6-#8/%8/%2*0(6.#80%5-"7/$:3'91&5-"3+ 6.#:2&=5):1&8/#;2&:1%7.";2&>4(;2&6,!9/$?5*<2'90$:0$;1&9/#7."=4(>4);1&8.";2&<3'<3':0%;2&8."4*9/#:0$:0$<2&;1%:0#9/#6, 6,7.!90#90#90#:1%90#:1%<4'5- :1$;2&:2%6-!6-!:0$=3&<2%;1$>4'=3&:0#=3&>4&<2%<3%@7*@7+;3&:2&<5(?8+C;.L@0   ! "!#"$#$#$##"# &'()&)(*))'($%''((')'*() &(#&&%%%$###" #$#%%&&&'')')'(&'$%#$#$'%%94 - - - - - - - - - - - - - - - - - - - - - - - - - -D8*:0#8.!:1$<3'=5)<3';1&8/#7."6."70$82%92%71$5."7/#7-"6, 4,;3';4'<4(;5(70$6."6."8.#7-!5+ 6-"4, 4-!6/#70$81%6/#81%70$3, 4-"81%92&6."4-!91%:2&81%7/#4+1)6."6/#6.#5-#92(;3)70&7/%81&:4)92'5.#5."6/$4-!3, 2, 2,!5/#60$6/$3,!3, 4-!80$80$4, 1*2+6/$6.$5.$6/%5-#4-"3+ K1 I/E,D+B*?';%;%>'A);$7 ='B,>(8#'((-&,,*,- +)'&(* )&#%&&'&##"!#   -      -    -  -       - -      - - - - - -   - - -     -    -   -          - - - - -######!!! ######""""""""""""!!! !!!###%%%%%%###############"""!!!""""""!!!""""""!!!$$$%%%"""###$$$######""""""######"""###!!! """!!!"""###"""#########%%%%%%$$$######"""###"""!!!!!!######"""!!!###""""""######%%%$$$"""$$$%%%$$$$$$"""%%%######$$$%%%%%%$$$$$$&&&&&&%%%%%%%%%$$$%%%%%%###$$$''''''&&&%%%$$$%%%%%%%%%&&&&&&&&&&&&$$$&&&$$$$$$&&&&&&''''''(((&&&%%%$$$$$$"""###$$$$$$$$$$$$'''&&&%%%&&&%%%#########!!!$$$$$$%%%&&&%%%$$$###"""######$$$######!!!%%%&&&%%%&&&%%%&&&%%%&&&%%%###$$$$$$%%%%%%'''(((%%%"""!!!!!!!!!!!! !!!!!!!!!"""!!! !!!###"""""""""!!! !!!!!!!!!""""""!!! !!!"""!!!!!!"""###!!!!!!"""###!!!  !!!"""!!! !!!"""""" !!! 81&:2'7/$4,"6.$6/$4,"1)4,!;2(91&8/%91&:2'5-"2*80%91&6.#80%;3(92'6.#4,!7/#:2&=5):2&7.#:1%80$5+ :0%>4(<3'7-!9/$?5);1&9/#:0%<2';2&8."=3'>4(;1%7-":0%;2&;3'90$:0%8/#4+7."9/#9/#:0$9/#;1%<2&7-!6, 7.!9/#90$8/":1$8/#80#:1%6.!<3&;3&:1$6.!7.!:0$=3'<2&;1%=3'=3&<2%=3&>3';2%=4&@7*?6*;3&<4(<5)>6*=5)C9*      !!""##$%$&$&#&#%$%$%$$&&''())*)*()((((&'!%''(!&'&%'&%%%%%$#"$" !$#%%!%%%$%')'(')&'$%#$"$$% +( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - - @6(7.!5,8/";2&;2&;2&:0%8/#7."6."6/"5/"81$81%70#7."6, 4*6- <3'<4(<5(:3&6/#6."6."7.#7-"7-"7.#5,!4, 6/"81$81%70$92&92&3, 5.!:3'81%3, 2+81$:2&81%80#4, 1)6."5."5.#5-#91'92(6/%6/%81&:4(92'6/$4-"70$6/$6/$5.#3,!4-"70$82&5."3,!5-!91%8/#3+0)2+5.#5-#5-$7/&5-$K1 J0F,E,A(>&;&8$:%=';$7:#A*@+;&1+ '*)+'*+,+&&)(''$ $(()&$#"#!              -     - -     -    -   - - -      -   - - -     -  -  -  -      - - - - - !!! !!!$$$############"""!!!!!!"""$$$%%%$$$$$$"""$$$$$$###!!!!!!""""""""""""""""""#########$$$######"""!!!""""""###"""!!!!!! !!!!!!#########$$$$$$$$$$$$###"""""" """"""!!!!!!!!!"""###""""""""""""!!!######%%%$$$"""###$$$###"""!!!###"""""""""%%%$$$###&&&'''&&&&&&%%%&&&''''''%%%&&&%%%''''''&&&&&&%%%&&&'''&&&&&&'''&&&%%%&&&###%%%%%%$$$$$$%%%'''''''''&&&&&&%%%######"""$$$&&&'''&&&%%%%%%%%%$$$$$$$$$######""""""$$$$$$$$$############$$$$$$$$$###%%%&&&%%%$$$&&&&&&''''''$$$$$$###$$$%%%$$$%%%%%%### !!!!!!"""!!!!!!!!!!!!"""""" """"""""""""!!!!!! !!!!!!!!!!!!!!!!!! !!!""" !!!""""""""" !!!""" !!!""""""!!! """"""4,!91&91&7/%4,"6/$7/%4,!1)5,":1'91&8/$:1&;2'6."3+ 7/$91%6."91%<3(:2'6."4,!7/#;2'=4(;2&8/#:1&80$4+90$>4);2&5+ 8/#>5);2&90$;1%<3'=4(90$=3'>5);1&7."9/#;2&<4(90$9/#9/$6,!9/#:0$90#9/#6, ;1$<2&8.!7-!8."90#90#7.!;2&90$8/#80#6-!<3&=4';2%80#7/"9/#<2&<2&<2&>4'=3&<2%<2%>4';1$<3&A9,?7*:2%;3';4)<5)?7+A8*hXA ! ! "!"!"!"!"#"$#$$%$$%#%#%#%#$#$#$""$%&((*(*(*()'( %'"%'"&'$%'$%&%$$%%$$$$#$$%%&&%&"$&'('(')&'$%#$"##$$$%00 - - - - - - - - - - - - - - - - - - - - - - -  - - RD3;0#6, 4+7- ;2&91%:1%8/$6-"6-"6/#70#6/#70#70$70$7."6,!2(5, :1%:3&;4(:3'6/#6/#6.#6-"6,"7.#8/$5,!3+ 6.#80$81%70#81$81%3+5.!;3'91%3, 1*80$:2&91%80#4, 0(6-!5."6.#6/$:3(;3)81'70&82':3(92'6/$4-"6/#7/$70%5.#2, 2+ 6/$82&6.#5-"5."80$7/#4, 1*4-!5.$5-$5-$K1 K1F,C*A(?'<'8&7$9%9#7!9"@*A+>)7"8#1+)*+)&(+))%))'%"!#(.,($" " "   -    -    -        -  -   - - -     -    -       -           -  -       -  - - - - -!!!!!!!!!###$$$$$$$$$$$$######""""""######%%%$$$"""""""""######################## !!!###############"""!!!"""!!!!!!###!!!"""!!! !!! """"""###$$$######$$$###"""######%%%$$$"""""" $$$ !!!#########$$$$$$&&&%%%$$$$$$$$$############"""!!!!!!!!!###%%%%%%'''(((&&&&&&(((&&&((('''&&&&&&&&&'''&&&%%%%%%&&&'''''''''((('''%%%%%%$$$$$$%%%%%%$$$$$$%%%&&&&&&$$$&&&(((&&&&&&%%%$$$%%%&&&&&&&&&&&&%%%&&&'''$$$###!!!  """$$$%%%$$$$$$$$$$$$$$$%%%######$$$$$$$$$&&&%%%''''''$$$$$$$$$######"""$$$###"""!!!!!!!!!!!!""""""""""""  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! !!! !!!!!!!!!!!!!!!  !!!!!! !!!!!! !!!0(4-!:2'92'70%3+!5.#80&6-#2*5,"90&90&7/$91&:1&5-"3*7.#8/$6-"91%=4(;2'6."5-!8/#;2&=4)<3'80$<3':1%3*8/#>4):0%4+8/#?5)<3':1%<2&=3(<3':0$=3'?5)<2'8/#8/#:1%=4(:0$8."90$7-":0$9/#7.!7.!3)8.":0$8."7.!8."90#8/"5,;3&91$90#8/"7.!;3&<4';2&91$6.!9/#:1%;1%<2&=3&=3&;2%90#<3&:2$;2&@8+>7*91%;3(<5*<5)?7*?6(H=-     !!!!"""#"#"$!# "! !!" ! !&((+),)+)*'(''('')&)"%&$%$%$#&$$$$&%(&(&'''((')')&'$%#%#$#$#$ !'(,,57 - - - - - - - - - - - - - - - - - - - - - - - - - - C8*8/"7-!4+5,:2&:1&90$7.#6-!5,!6."70#5/"70$71$92&8/$7-"2(4*90$92%93&:4(81%6/#6.#5,!4+ 6-"7.#4,!3+ 6."80$:2&91%91%91%2+5-!;3';3'6."2)7/#;2&91%7/#2*.&4+ 6.#80%80&;3):3)81'70&92(:4(:3(70%4-"5."5.#5.#3-"1+ 2,!5.#60$4-!5."5."5."5-"4, 2+5."6/$K1 L2 F-A)>&;"='?+9&7#7"7!8"?)C->)3:%<'4 /-,).)+)'&*('%" #% (,+)&"!"   - -   - -   - - -  -           -   -  -  - -     - - - - - - - -   - -           -   - - -  !!!$$$$$$$$$$$$###"""#########$$$$$$$$$$$$!!!"""###$$$$$$$$$$$$$$$$$$$$$"""!!!###""""""######!!!  !!!""""""""""""!!!###$$$%%%$$$###$$$$$$$$$######$$$$$$"""""""""!!!!!!$$$!!!###$$$###%%%&&&&&&%%%$$$$$$######$$$$$$#########"""!!!!!!######$$$&&&&&&&&&&&&&&&&&&'''%%%&&&((((((((((((&&&%%%%%%&&&''''''&&&%%%%%%%%%$$$###%%%%%%&&&%%%%%%'''&&&'''&&&(((((((((%%%&&&''''''&&&&&&&&&$$$%%%%%%###!!! ###%%%$$$$$$#########$$$%%%###$$$$$$$$$%%%$$$%%%'''### """""""""#########!!!!!! !!!""""""""""""""" !!!!!!"""""""""!!!!!!!!!!!!"""!!!!!!!!!!!! !!!!!!!!!!!!  !!! !!! !!! !!!1)5-"91&91'7/%4,!5-#:2(80%4,!5-"91'90&7.$80%;2'6.#3+ 7.#8/$6-"91%<4(:1&6."6."8/$:1&=4(<3'8/#<4(:1%3)9/#>4(90$4+9/$>5)<2':1%<2'>4(<3';2&=4(>5)<3'9/$8.#:1%>5);1%90$;1%8/#:1%7-!6, 8/"3)6, 9/"8."7.!7-!80#8/"4+90#8/"91$80#7/":2%:2%91$80#7."9/#:0$:0$;1%;1%<3&;1$8/":1$:2%;3&@8+@8,;3':3'=6*<5)=4(=4'E;+    ! !!!!!!""""# "!    !!!!!!! %&(*),(+(*()))(+(+'(#%&$%$#%%$$&!%'&(')(()())')')&'%%$%#$#$#$#"$&)2;> - - - - - - - - - - - - - - - - - - - -   - - - - -fVB@6(8/"7-!4+6- :1&90%7."8/#7.#5-!6."70$6/#81%92&;4(90$7-"3*4*8/#91$92&:3'92'70%4,!4+ 4+ 5,!6-"5,!4, 6."81$:2&80$;3'80$2*4, :2&;3'6."2*7/#;2&80$7."1),$2*5-"80%80&92'81'7/%6/$81&93':4(70%4-!4-"5.#5.#4-"1*3,"4-"5.#3,!5-"3, 3+3, 2+2+5."N3 G-C*>';$;$8#:&7"5!6!6 :%A+>)22:&<(7#00.(',*)'(*+("  !$%&(&$" %$!!       -  - -   -      - -  - -   -     - - - -   -     -         -   - -     -      - - -   !!! """#########$$$######$$$######""""""!!!!!!######$$$###%%%%%%$$$###"""###!!!!!!######!!!!!!!!!"""$$$"""!!!###"""!!!!!!###%%%$$$###"""%%%%%%$$$$$$###$$$&&&"""######!!!!!!###!!!"""######$$$%%%'''&&&%%%%%%$$$"""$$$%%%###"""######""""""$$$###%%%&&&$$$%%%%%%&&&%%%(((%%%%%%)))((((((((('''%%%%%%(((&&&&&&%%%$$$%%%$$$%%%$$$$$$$$$$$$$$$$$$%%%&&&&&&$$$&&&((('''&&&&&&((((((''''''###!!!"""###"""###%%%$$$############$$$%%%$$$$$$%%%$$$$$$$$$$$$%%%###!!!""""""%%%%%%###"""!!!!!!""""""######""""""!!!!!! !!!!!!!!!!!!!!!!!!!!! !!!"""""""""!!!!!!!!!!!!  !!!!!!"""!!!!!!"""!!! !!!!!! !!! 5-#2+ 6/$91'91&70%5.#5-#:2(90&6-#7.$:1'90&6.#80%;2'6."2)6-"7/$6.":2&=5):1%6."7.#8/$:1&=4(;2&7/"<3':1%4+9/$>4):1%5, :1%?5)<3':0$;1&=3(<3'<3'=4(>5);2'8/#7/#:1%=5)80$7/#:1%5-!:1%8/"7-!:0$7-!6, 90#:0#8."7-!90$91$5, 6.!6.!:2%91$6.!80#:2%;3&91$6.!7."9/#:0$;1%:0$=3&:0$:1$90#:1%<4'@8+A9-:3';4(>7,;4(=4(>5(B8*gU?       ! !!""#"# ! !!"""""! ())+(+(*(()*(+(*'(&''('(&'&'')(*(*(*(+&*')&(%%$%#$#$#$  !&+. - - - - - - - - - - - - - - - - - - -     - - - - -H=/<2&7.!5+4*8/";3'90%6-!8/$90$5-"4-!5."6/"81%93&;4(80$7-"4*4+7."80$81%82&92'60%4-"5,"5,!5,!6-"6-!5-!7/#70#91%6/"<4(:2&2*4, 91%:2&5-!2*7.":1%7/#90$3+0'2*6.#7/$7/%91'92(80&6/%81&:3(;4)70%5.#5.#6/$6/$4-"1* 4,#4-#6/$5.#4-"0)0(1*1)N3!G.A)>&:$;$<&:%7!6 8"8"8";%;%318#7$9%7$5"4#.)'**)()(('!  -# ''$&&#!"&#  -     -   -    -          -  -  -   -   -    -        -       - -     -       -  &  !!!  !!!!!!"""!!!"""######$$$######$$$###"""!!! """"""$$$%%%%%%$$$%%%$$$%%%### """"""#########"""!!! """&&&###!!!"""###""""""###""""""!!!###%%%$$$$$$%%%###$$$%%%""" !!!!!!!!!""""""#########$$$%%%&&&&&&&&&%%%######$$$######$$$###"""$$$%%%$$$%%%(((&&&%%%%%%%%%%%%$$$%%%(((((('''''''''%%%!!!###%%%%%%$$$%%%$$$###$$$%%%&&&&&&&&&%%%%%%&&&%%%$$$###"""$$$(((((('''&&&'''((('''$$$ !!!!!!!!!!!!#########%%%&&&%%%$$$&&&%%%$$$%%%###$$$%%%$$$%%%$$$$$$$$$$$$%%%$$$"""""""""!!! !!!!!!"""$$$######""""""!!! !!!!!!!!! !!!"""!!! !!!!!!  !!!!!!!!!!!! !!!!!! !!!""" 70%5.#0(4,!80%80&80%5-"6.$91'90&6-#7.$90&7.$5,!91&;3(6."1(5-"7/#6-":2&?7+;3'7/#7/#8/$:1%=4(:1%6-!;2&;2&6,!9/#?5*=3'7.";2&?5*=3'9/#:1%=4(=4(<3'>5)>6*;2&8/#90$:1%<4(90$80$:1%4+:1%9/#7.!;1%9/#7- :0$9/#8."8."9/#:0$5- 5- 6.!:1%:2%6.!80#:2%91$80#6-!6-!8/#9/#;1$8/"=3&;1$:1$90$91$=5(@8+@8+81%<5*>7,<5)=4(>5(?5'G;,  ! !!!!! ! ! ! ! ! ! !!!!!!! ! &''))*((()'*)*)))))*))(('''(')(*(*),(+'*')&(%%$%#%#$#$  !(34 - - - - - - - - - - - - - - - - - -     - - - rbKC9+:0$8."3*4*8/":1&8/#4+ 8/#8/$5-!4-!4-!5."70$81%92&91%8/#5, 5, 7.#80%70%81&81&5.#3,!4,!5,!4+ 7."7."6."8/#7/#80$6."=5);3'3+5-!90$91%5,!3*6-"90$6."7/#5-!3+4+ 6-"6.#6.$92';3)80&6.$6/$80&81&5.#5/#6/$70%6/$3,"1* 4-#5.$7/%4-"2+ /(0(N3!H/@)='8"9">&>&8"48!9";%=':$8#04 ;'<(6#4"4"2 *(,(%%)-)(" ! $ %('%%#"#!#       - -    - -     -    - -    -    -  -        - -     -      -             '!%  !!!!!!"""!!!!!! !!! !!!!!!###%%%$$$$$$$$$###"""!!!!!!"""###&&&%%%$$$%%%$$$$$$%%%###$$$""""""###$$$$$$"""!!!!!!""""""###""" ###"""$$$%%%###!!! !!!###$$$$$$!!!"""###$$$"""### """ !!!%%%"""$$$###%%%%%%%%%%%%%%%###!!!"""###%%%"""!!!!!!###%%%%%%&&&((($$$"""###$$$&&&%%%'''((('''(((((('''### """$$$&&&%%%%%%$$$######$$$&&&%%%&&&&&&$$$$$$&&&$$$$$$$$$%%%&&&&&&''''''((('''%%%"""!!! """$$$$$$$$$&&&'''&&&&&&%%%$$$$$$&&&$$$$$$%%%''''''$$$$$$$$$%%%$$$###"""""" !!!!!!$$$!!!!!!""""""""""""   !!!    !!!!!!!!! !!!""" !!! !!! !!!4-"70%4-".'3+ 91&;3(80&3+ 6.$80&90&5-"5,"8/%6-#5,!:1&<4)7/$2*7/$8/$5-!:1&?7+:2&7.#7.#7.#90%<3(90$5, :1%:2&6,!8.">5)>4(90$<2&?6*>4)9/$;1%>5)>5)<4(>5)?6*;2&8/#:1%:1%<3'91%91%;2&4+:1%8/#6, :1$9/#:0#;1%8."8."5+8."90$4+2*5- 91$91$3+7.":2%:1$7/"5- 6-!6-!7.":1%;1%>3'<2%9/#90#90#>5)@8*>6)92%92'<5*>7+=4(<3&=3&E:*          '(()'('(())*)*(*')((''&&&&'(()(*)+)+(*(*&($%$%#$"$#$ !"!"((,98 - - - - - - - - - - - - - - - - - - - -     K@1?5(8."8."2(5,6- 7/#5,!3*6-"6."6."5-!4.!5.!70$71$80$90$8.#5, 4+7.#80%70%70%81'3-"1*2*3*4*7."7."6-!7."8/$80$8/#<4(91%4, 6-"90%:1%6-"4+6-"90$7/#6."6."3+4+ 6-"5-#6.$92(;3)80&5.$4-"6/$81&6/$5.#6/$81&6/$3+!1* 3+"6/%5.$3,"0*N2!I/@)=(8"7!>'C+;#57 8!:#<&?)<'6 39%=):'6#6#2 .( +1#-(&)(+&  -$ &&$%$"!             - -               -     -           -         -   -    - - -   -    -&*$)#% """ !!!!!! !!!"""!!! !!!###%%%%%%###$$$$$$######%%%$$$###%%%%%%%%%$$$ $$$$$$######"""######"""!!!!!! #########"""###$$$###$$$###!!!!!!!!!"""$$$"""""""""###$$$%%% !!! """### """###%%%%%%$$$######$$$$$$"""###"""!!! !!!###&&&'''&&&'''$$$$$$$$$$$$&&&&&&''''''&&&&&&&&&&&&$$$$$$&&&&&&&&&#########$$$###$$$$$$$$$&&&'''###%%%(((&&&&&&&&&$$$%%%&&&&&&'''&&&%%%$$$"""!!!"""""""""  !!!!!! !!!"""%%%######$$$&&&'''&&&$$$###%%%&&&%%%%%%%%%((()))%%%$$$$$$%%%######"""""" """#########!!!!!! !!!!!!     !!!  !!!"""!!! """""" !!!!!!!!!2+ 5.#70%3+!0)4-!91'91'70%6.#7/%80&80%3+!2*80%6-#5,!90%;3(7/#3+ 91&8/$5,!:1&>6*:1%6."7."8/$:1&=4)90$5, 90$:1%6,!7."=3(=4(90$;1&@6+?6*:0%;1%>5)>6*<3'>5)?6*<3'80$:1%:1%<4(;2&:2&<3'5, :1%9/#6- 9/#8.!;1%:0$7- 7- 5+8."8."3*3+8/#<4'91$2*7/";2%90$6.!6-!6-!4+6.";1&;1%<2';1&9/#9/#9/#=4(@8+>5);2&<4(@8,@8,>5);2&<3&@6'[K5#$%'&''')*(*()'('(''&&%%%&&(()(*(*(+(*(*&($%$%#$"$"# !&&'++- - - - - - - - - - - - - - - - - - - -      F=.=4'90$7."3*6- 7.!7/#4+ 2)5-!5,!4-!2+2, 2+6/#81%80$80$7.#4+ 2(7.#6.$6/%6/%70&3,!1)2*4+ 4+ 8.#6- 3+5-!90%90$90$:2&6."4+ 7.#;2';2'8/$4+ 5,!8/$7/#7."6-"2)2*6."7.$7/$91':2(81'5.$3,!5.#81&6/$3-"5.#70%5.$3+!2+!4-#7/&4-#L1 I/A*>)7"1='E-@(7 8!>(<%=&>(>(='6 8#;';(;'8%3 2++,.,*))'&"  " &&&%%" "  "            -       - - -   -     -         - -     -   -    -  - - -      -     *$.(-&("*$)$#!!!!!!""""""""""""###!!!"""$$$%%%%%%%%%$$$&&&%%%$$$$$$$$$$$$$$$%%%%%%$$$!!!###### ###$$$$$$$$$$$$"""""""""!!!######### """###"""!!!$$$###!!!"""""""""###$$$##################"""!!!!!! !!!######$$$###$$$$$$$$$### !!!###"""!!!"""!!!!!!!!!###&&&''''''''''''%%%$$$$$$%%%&&&###'''&&&$$$%%%%%%&&&''''''((()))&&&&&&&&&$$$"""%%%%%%%%%%%%&&&%%%'''(((%%%&&&'''&&&&&&&&&$$$"""$$$#########"""$$$%%%%%%###""""""###$$$!!! !!!"""%%%$$$###"""$$$%%%$$$$$$$$$$$$&&&$$$$$$%%%&&&&&&%%%%%%############""""""!!!!!!###"""""""""!!! !!!   """!!!!!!!!! !!!"""""" !!!!!!"""0(4-"6.$2+ 0(5-"91':2(70%5.#7/%6.$6.#1*0(80%6.$3+ 80%;3(5-"0(80%6.#5-";3'>6*:1&6."7/#90%<3'>5)90%5- 90$:1%6-!8."<3'=3(9/#:0$?6*@6*;1%:0%>4)>6*:1%<4(>5*<3(80$91%91%=5)<3':1%<3(7."<3';1%8."8."6, ;1%:0$7-!8."8/"7.!7."4+3+80#<4'80#1)7.!;3&:1$5- 4, 5, 2)5-!;1%;1%;1&:0%9/#:0$9/#=4(A8,?6+<3'>5*B:.A9-?6*;3&<3&:1$@5& ! !     #$&()*()((&(%(&'''&'%'&(')()()(*'*')'(%($&#%#$"#"# !,%'-)+ - - - - - - - - - - - - -      WL9@7)=5(;2&6- 4,5,6- 6."4+ 3*7.#6-"2*1)/)1*4."60#7/#7/$8/#5+ 2(7.#7/%5.#71&6/%3,!1)3* 5, 5, 8/#5,2*5-!90%90%91%:1%6-"5, 7.#:1';2'8/$3* 5,!8/$7.#8/#6."1(1)5-"6.#6.$80&91'80&5.#3,!6/$92'70%4.#5/$60$4-"2+!2+"5-$K0 I/B+7"7#29#G/!D-=%9":%=(:%:%='7"7!8"9$>):&5"6$3 +( -,/-*()($!  -  &('#"   !    -      -           - -  -    -  - - -        -    -       - -      -        -     )#+%-',%)#)#'#!!!!!!! !!!!!!######$$$###!!!"""$$$%%%$$$%%%%%%$$$$$$$$$%%%$$$$$$$$$###"""###"""###!!! #########"""!!!!!!!!!""""""!!!!!!!!!!!!###%%%""""""###""" ###""""""###$$$###!!!"""######"""""""""!!!!!! """!!!"""!!!###$$$###!!!!!!""""""###"""""""""!!!###$$$&&&'''(((((('''&&&%%%"""&&&'''&&&((('''###'''&&&&&&&&&&&&'''(((%%%&&&%%%###$$$&&&&&&%%%%%%%%%&&&'''&&&%%%%%%''''''&&&%%%%%%###"""""""""$$$###$$$%%%%%%%%%&&&$$$$$$$$$!!! ###$$$$$$######$$$###"""$$$#########$$$$$$&&&$$$######$$$###"""""""""!!!!!!!!!!!!"""$$$###!!!!!! !!!!!!  !!! !!!"""!!! !!!!!!!!!!!!###""" /(/(3,!70%3+ /(6.#:2(:2(70%5-#80&7/$7/$1)/'80%6.#2*6.#91&2*0(7/$6.#5-!;3(>6*91%7."8/$:1&;2&>5*:1%5, :1%;2&7."9/#=4(=4(9/#8/#>5)?5*;1%:0$=4)>5)8/#;2&>5)<3'8/#90$:1%<4(:2&90$;2&8/#;2&;1%90#9/#7- :0$;1$8."9/#:0$6- 7."4,2)80#:2%80#1)80#=4';2%4,4+4, 2*7.";1&:0$9/#9/#8."9/#:0$>5)A9-@8,=4)>6*B:.A9-?7+<3'=4'90">3$   &(')')&)%'&'&'')')')()()()(*')&('(&'$&$&#%#$"#!# !! "()+-/  - - - - - - - - - - - - - - - - - - - - -   G>/>6)<3';3&7/"3*4+6.!7/#5,!1(4+ 5,!3+ 1)1+ 1*3."60$6/$6.#6."4*0&8/$92&93':4(:3(4."2*3+4+ 5, 8/"4,4+5,!7."80$80$:2&8/$5,!7.#90&:1&7.#2)5,"90&8/$8/#6-!2)1)4,!6-#6-#80&91'7/%4-#4-"70%:3(71&4-"4."4.#3+!2*!J0I/B+6"6"6"6#<(A+?(;$;$<&:%7"7#9#8#26!=)9%;(6#1/) * //,-(''%  "&'%$     "  -       -    -    -  -      -   - - -  -      -          -    -  -             ,&,%,%-&.(-'*$*$(##!!! !!! """$$$$$$$$$""""""$$$%%%%%%&&&'''###$$$%%%$$$%%%$$$$$$"""""""""!!!""" ###%%%###"""!!!!!!"""$$$###""""""######!!!###$$$######"""!!!""""""!!!###%%%$$$"""#########""""""!!!!!! """ !!!###$$$!!! """""" """"""###$$$%%%%%%%%%%%%'''&&&&&&&&&%%%''')))'''((()))&&&%%%%%%$$$&&&'''(((&&&$$$&&&###$$$&&&&&&%%%&&&''''''&&&&&&'''&&&&&&%%%%%%$$$$$$&&&###"""!!!!!!!!!$$$$$$&&&%%%%%%$$$###$$$$$$""""""!!!$$$%%%%%%#########""""""$$$$$$###$$$$$$%%%$$$$$$######"""!!!!!!!!!!!!  !!!""""""   !!!"""""""""!!!!!!""" !!!!!! !!!""""""!!!4,#/'0)4-"6/$5-#-&5-":2(91'6.$4,"80&91'81&0(0(7/%4-"2*81&<4)6.#1)80%6.#5.":2'=5)91%7."8/#:1&;2'>5):1%7.";2&;2&7-!9/$?5)=3(90$6, =4(@6+:1%90$>5)?6*8/#;2&?6*<4(80$91%:1%:1%90$90$;2&7."90$:1%:0$;1%9/"8.":1$:0#:1$;1%7.!7.!5- 0(7/";3&;3&5- 91$<3&:1$3*4+3+2)7."90$8."9.#:/$7-!8.";1%>5)@8,@7+=5)?6+A9-@7+?6*=5(=4'90"<2$XK6  ! ! ! $%'(')&''&(&&('(')()(*(*(*()')'(&&%%#%#%#$#$"#!" $(*%)+ - - - - - - - - - - - - - - - - - - - - - - - - - - -  gZEA8+>5)=5(:1%7/"2*2)6.!91%8/$2)3*5,!3,!2* 0)/)3-!60$7/$6."3+2)0&8/$:2'92&93':3'5.#3+ 3+4+4+ 6."4+3+5, 7."80$80$:2&80$5,!7.#:1&:1&6-"1(5,!9/%9/%90$5-!2)1)4, 6-#6-#:2(92(7/%5-#5.#81&:2(70%4-"4."4."I/H/C,9$6"7#7$8':(:&8#9#8":$9#9$;&7!7"6"4 6"5"3 4!1-* */2!0 ..(%"  )###  " !           - - -  -  -       -     -      -   -   -   - -   -             -   -      -',&+%+$,%0) .(+%+&)##!!!!!!"""!!!"""%%%%%%%%%######%%%%%%%%%%%%%%%%%%$$$%%%"""#########$$$"""###"""###"""###$$$######$$$"""$$$%%%%%%###$$$%%%"""""""""############""" ############$$$%%%"""###""""""###"""!!!!!! !!!!!!!!!"""######%%% !!!"""$$$%%%$$$$$$%%%%%%$$$&&&'''''''''%%%&&&&&&(((((((((((((((&&&&&&&&&(((((()))&&&%%%%%%###$$$'''&&&&&&'''''''''&&&&&&(((''''''$$$######$$$&&&$$$######""""""###&&&&&&%%%$$$###""""""""""""!!! """"""""""""!!! #########$$$%%%%%%%%%%%%############"""!!!!!! !!! """"""!!! !!! !!!!!!  !!!!!!!!!!!!!!!"""""""""!!!!!!!!!!!!  !!!!!!!!!!!!6.%6.$0(/(3,!81&4-"-%5-":2'91'6.#4-"70%91&91'1)1)7/%4,"3+ 91&=5*7/$2*80%6.#6/#;3'=5)91%6-"7."90%;2'=4):2&80$<4(;2&6,!9/#?5)=4(9/$5+<2&?5*;1&8/#>5)?6*90$<3'?6*=5):1%:1%:1%91%:1%:1%<3'7/#8/#:0$90$<2&;1%8.";1%;1%:0$;1%9/#8/"6.!-%7/";3&:2%6.!:2%<3&91$6-!7."8/#4,6-!9/#:0$<2&:0$8."9/$;2&=4(@8,?6*=4(?7+A8,>6*>6*>5(=4'90#;2$G<-   ! ! ! !    !!%&&'%'''(''('(')')()()()')'(&'%%#%#%$$#$"$"#!"  '),*,.$% - - - - - - - - - - - - - - - - - - - - -    G?0?7*>5)?7*;2&6-!3+3*6-!91%90$3* 3*6-"5-#5-#/)1*4."60$5."3, 2*2(/%7.#:2'71%82&:3'5.#2*2)3*5,!7/#5- 5- 5, 5, 5-!7.":1&90%5,!7.#;2';2(90%2)5, :0$90%8/$6."2)1(4+ 5-"5-";3):2(7/%6.$6/$80&70%4-"3,!H/G.C,<(7#6"6#6%6'8'9'7#7"9#:$;&@*:%4334 5!2101.//-.0.-(%   #$"     !!   -             -       -     -  -   -   - -  -     - -     -  - - - -  -             0*!,'/)-'+$*#.'0* .(+%,&)$$ """"""""""""$$$&&&&&&%%%######%%%%%%"""$$$%%%%%%%%%$$$$$$#########$$$$$$"""######"""###$$$!!!!!!%%% """$$$#########!!!""""""$$$###"""######""" !!!$$$$$$"""###%%%%%%$$$"""###""""""!!!!!!  !!!""""""""" """######!!!!!!"""$$$######$$$###$$$&&&'''(((''''''&&&&&&&&&&&&'''''''''&&&''''''&&&''''''(((&&&&&&'''%%%%%%&&&%%%&&&&&&&&&&&&&&&'''((((((&&&&&&&&&######%%%$$$###$$$%%%######%%%%%%$$$###$$$###"""###$$$!!! !!!"""###"""%%%&&&%%%&&&%%%$$$%%%"""!!! !!!"""!!! """"""!!!   !!!!!! """""""""!!!  !!!###""""""!!!!!!""""""!!!!!!""""""!!!!! !!!!!!!!!1)6.%5.$0(1*70%92'5.#/'5-":2';3(70%6/$80%91&:2'2+ 1)7/$5.#3, 91&<5*6.#4,!6/#6/#5-!;3'>5*91%5-!6-"90$<3'=4):1%90$=4(;2&6, 8/#?6*=3(:0$5+;1%>5);2&8.#>5)>5):2&<4(>6*=4(;2&:2&91%80$:2&;2&;3'8/#9/#:0$9/#<2&<2&9/#<2&<2%7- 90#;1%6-!5- 2*80#;3&91$7/";3&<3'6.!7.!90#:1$7."8/":0#<2%<2&;1$9/#:1$;2&=4'@8+?7*=4(?7+@8+>5)>5(=5(<3&90#;2$F;, !!!     #$&)&(&('('(&('(')'('('('(&(%'#&#&$%#$#%"#"#!" &&)+,.#$ - - - - - - - - - - - - - - - - - - - - - - - - - - - -   D<.<3(>6*>6*:2%6-!2)3*80$:2&8/$4+ 4+ 6-"4,!4-"/(0*3-!70$70#4, 5,!3*/%6-#92&70%82&:3'6/#2*2)4+6."8/#7.!6.!4, 7."80$90$91%7/$4, 5,!;2'=4):1&2)4+8/#8/$8/$7/$2)0'3+4,!6.#:2'92'6/$5.#5-#6/$6/$4-#G.D,B-!?+:&5!6$3$6&4$5$37";&<'?*?*9$0/136"5"002!1 1 1!/--+**"  "$$#!  "      - - -  -      -      -  -      -   - -        -        -     -                  /)1,".(1*!.(+%,%.'0* /) +%*$)$&!""""$$$######%%%&&&%%%%%%$$$###$$$$$$$$$$$$$$$!!!"""$$$$$$$$$$$$%%%######"""""""""!!!### !!! ###"""$$$$$$!!!######$$$############"""!!!$$$###"""###$$$$$$$$$###"""""" !!!!!!!!!!!!""" """###"""###$$$""""""#########"""###$$$"""######$$$$$$%%%'''(((((('''&&&&&&&&&&&&&&&(((''''''((('''&&&'''&&&'''%%%''''''&&&&&&''''''%%%%%%&&&&&&&&&&&&'''&&&%%%&&&&&&%%%$$$&&&$$$%%%%%%%%%&&&$$$$$$$$$#########!!!!!!###""" !!!"""!!!###%%%&&&$$$%%%%%%$$$"""!!!!!! !!!!!!!!!""""""!!!"""!!! !!!!!! !!!!!! !!!######"""!!! !!!!!! !!!!!!!!!!!!"""!!!""""""!!!!!!!!!"""!!!!!!""!!!!!!!###0)6/%4-#/(2+ 81&:3(6/$1)4,!91&:2(80&7/$80%91'81&2*1)6/$6.#2+ 80%91&4-!2*6.#5."4-!;3'?6+:2&6-"7."8/$<3(=5):1%80$=5)<2&5+ 8.#?6*>4):0%5, ;1%>4(;1&9/$=4(=4(<3'=4(>5)>5);3':2&91%90$<3'<3'<3'90$;2%;2%7.!<2&;1%8."<2&:0#5+:0$;1%5, 5- 5- 80#:2%90$80#:2%;2&7."6.!8/#7/"7."90#:0$;1%<2&<2%9/#:1$;2%;2&>5)?6)<3&?7*A8,?6*>5(=4'<3&:1$<3%C:+VI6 ! " " ! !  $%&'&'&'&'&'&(&('('(&(&(&'%'$&#%##"$!#"#!#!" '*,-.0"#%& - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - MD4@8,<3'=5)>5)91%6-!0(0'7/#:1%7/#4+ 5,!7.#3+ 3,!0*1+3."71$80$5."7.#4*1(6-"91&71%92'93'5."1)2)5, 7."8/#7.!6-!7/#80$7/#7."91%7/$3+ 3*90&;2'90%2)4+ 8.#8/#80$80$2)/&2*4,!6/$81&81&6/$4-"4-"6/$G.D-?*?+=)>+<':&:)9*!6&4#5"9$<'@)<&;'7#1117$7#4 3 3!3"1 2!.,.0 -)$ !  "%         -    - -  -        -      -    -    -  -  -  -  - - -   -     -  -  -     -   -  -    -      /)2,"/* 1+!0* 0* .(.'.(-&/)/)+%*$+%)#$"""$$$%%%%%%&&&'''%%%$$$$$$$$$$$$$$$%%%%%%$$$!!!!!!%%%###$$$###$$$###!!!!!! !!!"""$$$ !!! !!!### ######"""""" """$$$"""!!!"""###""""""$$$!!!###$$$$$$###$$$$$$###"""!!!!!!""""""!!!"""""""""""""""%%%%%%$$$###"""$$$&&&!!!$$$$$$"""###%%%&&&%%%$$$'''((((((&&&%%%&&&$$$%%%&&&((('''&&&'''&&&%%%&&&'''&&&&&&&&&&&&%%%&&&'''&&&$$$$$$&&&&&&%%%&&&'''&&&%%%%%%$$$$$$&&&'''&&&%%%&&&&&&&&&$$$###"""!!!!!!!!!!!!!!!!!!"""!!!""""""!!!""""""###&&&%%%$$$$$$###$$$"""!!!  !!!!!! !!!!!!!!!!!!!!! !!!!!!  !!! !!! !!!!!!""""""  """!!!"""!!! """###""""""!!!!!!!!" ! !"""!!!""!$$#2+!1* 60%5.#0)5-#92':2(6.$2*5-"80%91&91&7/$70%91&7/$1)2* 7/%6.#1*7/$70$3+ 3+ 70%6/#5-!<4(?7+;3'80$8/$8/$<3'=4)90$90$=5)=3'5+7-!>4)?6*:0%5+ ;2&>5);2&:0%<3'=4(=4(=4(>5)>5):2&90$:1&:2&<3'<3'<4(:1%<3&<2&6, ;1%;1%8."<2&8."5+;2%;1%5, 6.!5- 6.!91$:1%90$<3&<3'7/"7.!7."7.!7.":1$:0$:1$=3&<2&:0$9/#90#;2&@7*?7*<3'?7*B:-@8+>5(>5(=4'<3%=4&A7*H=. !!!  "#$&%'&'%'%'&(&(&'&'&'&'&'%&$%#$##"#!" "!"!" $(**,.!"%' - - - - - - - - - - - - - - - - - - - - - - - - - - -    E=/>6*>5*>5)>5);2&6.!2)4,91%;3':1%5,!5,!6.#4,!4-!0)1+4."6/#6/"6/#7."4*2)5,!80%81&:4(;4(5."1)2)5, 6-!8/#7."5, 7/#91%7/#5-!90%7/$2*2*8/$8/$6-"2)4+ 7."6."7/$80%3+/'2*5-"6/$91&81&6/$4,"G.D-@*>*<(9%='@(?*@. ;, 4$3"7%;'8#8!7!>(<'5"3 5"9%7#4!3 4!3!2!-.,-,-+$  """! -   -    -       -  -       - -     -         -  -  -  -        -              - -   -         -'3.$3-#0+!2,"1+!/)/)0) /)/(1+!0* ,&,&,&)#$###$$$%%%&&&&&&%%%$$$######$$$$$$$$$###$$$"""###$$$######$$$###""""""!!! !!!""""""!!! $$$ !!!!!! #########!!! #########$$$###$$$"""######!!!"""######### !!!#########"""!!! ###%%%$$$$$$%%%&&&$$$###!!!###$$$$$$###%%%&&&$$$%%%''''''''''''%%%%%%%%%&&&'''((('''%%%%%%&&&&&&&&&%%%&&&'''&&&%%%%%%'''(((&&&$$$&&&%%%%%%######&&&&&&$$$###&&&'''&&&'''%%%&&&&&&$$$###$$$"""!!!!!! !!!"""""""""$$$%%%###!!!"""!!!$$$%%%%%%$$$###"""""""""!!!  !!!!!!!!! !!!!!!!!!  !!! """"""###""" """!!! !!!!!!!!!"""######""""""""" !# !"!!"""#"""""!5.$/(.'5/$5-#1*6/$81&80&5.#2* 4,"7/$:2'70%80%80%;2'80$1)3+8/$6.#3*91&:2'6.#3+ 91%7/#5-!<4)?6+;3'91%80$8/$:1&<4(80#91%=4(=4(6, 6-!<2&?5):0%5+ <2'?5*;2&90$:2&=4(<4(<3'=4(=4(90$7.":2&;2&;3':1%<3(90$:1$;1%7-!;1%:0$9/#=3':0$6- ;1%90#5,6.!5- 5- :2%:2%7/";2&;3&7."7."8/#7/"8/"<3&;1%;1$=3'<2%9/#9/"9/#<3'A8,A8,;3&@8+C;.A8+>5(?6)>5'=3%>4&>5'C8)iX@      #$%&%'&'&(&'&'&'%'%'%&%&%&$%#$""!" ! ! ! !!()&+, !%'&' - - - - - - - - - - - - - - - - - - - - - -     YN;B:->6*>5)=5)=4(:1%6-!2)4+80$;2&:1%6-"5,!6-"5-"4,!/(0*5/#70$80$81%4+4+4*5, 70$81&;4)<5)70$5-!4, 5, 4, 7."6-!4+7/#91%8/$6-"91%7.#2)3*80$7/$5,!0'3*6-"6-"7.#7/#3+0'3+ 5-"5.#7/%70%H.E-@*<'<(;'<&A'C)C,@,7'1!3"7$8$8"3 7!@+?*9%5!4!5"5!23 4!/-.+.0!-)%! ! #$#   - &"#!                 -    - -   -  -        -     -   -     -    -   -       - -   - -  1* /(.(2,"2,"2,"1+!0* 0* 0) /(/(0)/)/(+%.'/)!+%% """###$$$%%%&&&%%%%%%$$$###"""%%%#########$$$###$$$###"""!!!"""######!!!!!!###$$$"""  ###""" ###$$$###$$$""""""#########!!!$$$!!!""" """#########!!!!!!"""""""""$$$$$$""""""$$$$$$###$$$%%%$$$!!!!!!%%%%%%######&&&&&&$$$%%%&&&&&&&&&&&&&&&&&&$$$%%%&&&'''(((&&&&&&((('''&&&&&&''''''&&&%%%'''((((((&&&$$$%%%%%%%%%$$$$$$%%%&&&%%%&&&'''''''''&&&%%%$$$###!!! !!!!!!!!!  !!!"""""""""!!!###""" !!!!!!"""$$$$$$"""#########""""""!!!!!!!!!!!!   !!!!!!!!!!!! """### """"""""" !!!""""""!!! !!! ######"""###"""###!!" !!"#"""""""""6.$5-#/(/'7/%4-"1*70%81&70%5-"2*2* 70$92'80%7/$80%:1&80%2)1)6-"6.#5,!6-":1&6.#5,!;3(6-"5-"=4*?6+;3'90%80$8/$90%<4(91%:1%>5)>4(7-!6,!90$=3':1%5+ ;2&>4(:0$7."90$<4(<3';2&<3'<3'90$6.";2&;3'<3':1%=5)8/#;2%<2&8.";1%;1$;1%?5(;1%7- 9/#8/#6- 6- 4,5- :2%:2%5- 90$:1$7."8/#91$7/"7."=4(<3&;1%=3'<2%8."8."8/"=4(A8+@7+;3&A9,D<.@7*<3&=5(<3&;2$=3&=4&?5'L?.!"$%&'&'%'%'%'%'&'%'%&$&$%#%"#!"!! ! !  ! **&.. &'&' - - - - - - - - - - - - - - - - - -    - - - - - - - - - F=/=5)=5)@7+?6*=5);2&7."3*5, 80$90%:1&7.#6-!4+!4-!1*/(0*60$6/#70$91%4+1'4*4, 70$81%:3'<5)70#5-!5,!4+ 4, 80$8/"3+6-!7/#7/#6.";2'7.#2)3+ 80%80%6-"0'3+ 7/#6.#6.#5-"3*/'2* 4,"4,!H.G-B+;':%;'=(>'C(F-F/":&1 1!0!3"7!35 ;&B-:%5!12 5"5"2 2.,,,,-..,$ ! $##!   -!   !      - - - -      -  - - -   - - -  - -   - -          -    -    -    -      -  - - -     -  ,%/(2+!/(1*!2,"4.$4.$2,"0* 0* 1* 1* 0)/(0)0)+$-&.(*$'!"###$$$$$$&&&'''&&&$$$#########$$$%%%!!!!!!!!!!!!######### """$$$"""######%%%%%%### """### """$$$$$$######"""$$$#########"""### ###### """"""###!!!""""""!!!$$$%%%"""!!!###$$$$$$$$$$$$""""""$$$&&&%%%$$$###$$$%%%$$$&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%'''((((((''''''''''''''''''&&&%%%%%%'''((('''&&&%%%%%%$$$###$$$%%%'''&&&'''(((&&&&&&&&&&&&######"""!!!!!!###"""!!!!!!!!!!!!"""""""""!!!""""""""" """%%%######""" !!!!!!!!!"""!!!!!!!!!!!! !!!!!!!!!!!! !!!"""!!!!!!""""""""" !!!""""""!!! !!! """"""!!!""!""!!! """"""!!!""!5.$2+!/'0(81'4-"1*7/$91'70%4,!0)1*80%91&70$5."7/$:1&:1&4,!/'4+ 5-"5-!90%<3(7.#5-"<3(4,!5-"=4)?6+;3'90%8/#7/#90$=4);2&:2&?6*>4)7-"6-!:0%;1':0%5+:0$=3(90$6, 8/#<4';2&;2&<3'=4(90$7.":2&;3'<4(:1%?6*90$<2&<2&8/";1%<2&<2&>4(;1$7-!8."90$8/"5- 4,6.!;2&:2%5- 8/#:1$8/"90$:1$6.!5- =3'<2&<2&=3';1%7- 8/"8/#>5)@8+?6)<4'A9,C;->5(90#;3%<3&;2$=4&=4&<2$B7("#$&%&$&$&%&%&%&%&%&$%#%"$"#!" !    #+((/.&(&'"# - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - -^O:B9,=4(=4(@8,?6*=5);2'7/#3+6- 80#7."8/$6-!5,!4,!4,!3, 1+3-!61$2,3, 4- 6-!1(3*4, 6/#60#92&;5(6/#7."6-"5-!3+7."80#6-!6."6-!80$7/#91&6-"2*5,"90&:1&8/$2)5-!90$7.#6."5,!3* /'2* I.H.D,>);':&9$9$=&B+I1%>(43 3"2!44. 4=(=(6!0- , 13!3!3 /+,.++,-)$ # #$"   #!#    - -   -   -  - -   - -    -     -    - -  -      -   -       -       - -  -         - -    -&+$0)3+"2+!1+!2,#4.$4.$2,"0* /)0)1* -&.'0)1) -&-&.(*#'!"$$$$$$$$$&&&'''&&&###"""###$$$$$$$$$""" !!!"""###$$$$$$###"""$$$!!!""""""###$$$%%%!!!!!!!!!"""###$$$"""#########""""""######"""!!!""""""#########"""&&&!!!!!!"""$$$!!!######""""""###&&&&&&######$$$%%%%%%%%%$$$"""%%%&&&$$$###%%%###%%%%%%%%%%%%&&&'''&&&%%%%%%&&&&&&''''''''''''&&&''''''&&&&&&''''''&&&%%%&&&'''&&&%%%%%%%%%%%%######'''(((&&&&&&''''''&&&%%%###""""""""" !!!!!!!!!######"""######%%%######"""!!! $$$###""" !!!""" !!! !!! !!!!!!!!! !!! !!!!!!""" !!! !!!""""""!!! """!!! !!!! !! !! !! !! !!!""!""!"!!2+!4-#0)/'0(7/%4-"0)5.#81&70%3+!0(2* 6.#91&6/#5-"7/$:1&:1&4,!.&5,!5-"5,!80%;3(80$4,!<4(6."5,!<3(>5*:1&8/$6."6-!7/#<4(:1&90$>5)=4(6-!6,!:0&<2'90$7.";1%>5);1%6-!8/"<3';2&<3'?6*<4(8/#8/#:2&<3'=4(:1%>6)90$;2&<3'9/#:0$;1%;1$=3';1%8."8/":1%91$5- 3+7/";3&91$5- 8/#:1%91$:1$90#7.!7.!=3'=3&=3'=3&;1$7.!:1$80#>5)A8+@7*=5'A9+D<.>5'7/!:2$=4';2$=4&>4';2$@5'gV@#$$&$&$&$%$%$%%&$&$%"$!#!" !   '*'+/,&(&'"# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - -?4'?5)?5)?5*@7+>5)<4(:1%6-!2*6-!8/#7/#90$5,!2)4+ 7/$4-"1*1+5/"3, 1)2*5, 3*3*3+6/#60#93'<5)6/#7/#6-"6-!3+7."8/#6.!6."5-!80$7.#91%8/%2* 5,"90&;2(8/%3+ 4, 7.#6-#5-"5,"4,!H.I.F-C+<(:%:&7"4;'@,#<(4!38$8$7"6!6!/ / 9&A- ;'-+ 01 /.1 002"-,++)'%%%#"  -"! !    - -                -    -   - -        -                     - - -        -   0).'-&,$2*!3,"3,"1*!2,"5/%60'5/%0* /(1* 1* -%/'1*2*!.'-'.()#&!#$$$$$$###$$$%%%$$$###############""""""!!! """$$$%%%%%%###""""""###!!! """%%%&&&!!! """""""""###$$$ """"""!!!###"""######"""!!!###""""""!!!"""###$$$###"""###$$$""""""###!!!"""&&&&&&&&&###%%%&&&%%%%%%###$$$$$$%%%"""!!!$$$%%%&&&'''&&&&&&'''&&&'''&&&$$$%%%''''''''''''&&&&&&&&&&&&%%%&&&&&&&&&'''%%%&&&''''''&&&$$$&&&&&&%%%%%%'''(((''''''&&&%%%%%%%%%%%%######!!! !!!!!!!!!######"""""""""$$$###"""""" !!! !!!!!!""" !!! """###"""!!!  !!!!!!    """""""""!!!!!!!!! !!!!!!!!!!!! !!!!!! ! !! !!!"! "! "! !! !! ""!2* 2+!4,"1* 0(1)7/%5-#1*4-"91'92'3,!0)1)7/$91&7/$5-"8/$:2&:1&5-"2*8/$5,!3+ 91&<4)7/#2*<3(7/$5,!<3(>5)91%7/#6-"5-!7/#;3'90$7/"=4(=3'5, 5+ ;1&<2':1%9/#90$;2&8.#4+8/#<3&90$<3'?6*<3'90$;2&;2&<3'=4(:2&<4'90#;2%<3&9/#:0$<2%9/"9/";1$90#9/#;2&:1%6-!4+90$<3'90#5, 7/":2%:2%8/"8/"8/":1#>4'>4'?5)>4';1$8.";2%91$>5(A8+@7*=5'A9+D<.?7)7/!;2%=4':1$=3&=4';1$>4&I>.!"$%$%$%#$#$$%$%$%#$"#!" "!!!!"%*'%$&&'"#  - - - - - - - - - - - - - - - - - - - - - -        - - - =2%=4(?6*?6*>5*=4(<3'91%5-!2)7."8/#80$8/#6-!4+ 7/#6/#6/#4-!/)5/#5."3+4, 6."3*1(2*5.!60#:3';4(6/#7/#5, 5, 4+7/"7."7."7/#7/#7.#7.#:1&8/%4+!4,"8/%:1'7/$3+ 3+ 6-"6-#4,"H.H.G-F,@(=&8#7"5 7$;*!9( 2!05!9$8$9$9$:&4!07#A.!;)0+ /3"3!//.+/0 .+*)&!  ##!         - -    -        -         -   - -    -  -                     -    -    - -   2+ 1*/(-&-&2*!4,#4-$3,#4-#60&60&60'2+!2+!2+!0).'/(2+ 2+!/(/(/(+%&!$$$$$$###$$$$$$###############$$$$$$###### !!!"""%%%%%%"""$$$$$$###"""###$$$"""$$$%%% """###!!!"""!!! !!!!!!###!!!"""#########!!! !!!"""###""" !!!###"""###$$$###$$$###""" """###%%%$$$%%%&&&%%%$$$###"""%%%%%%%%%###!!!%%%%%%%%%%%%&&&%%%%%%&&&'''&&&$$$%%%&&&%%%%%%%%%%%%%%%$$$%%%%%%%%%&&&&&&&&&%%%%%%''''''&&&&&&&&&'''&&&%%%&&&&&&%%%%%%%%%######&&&&&&###!!!""" ############"""###$$$######"""###"""!!!!!! !!!"""###"""  !!! !!!!!!"""###$$$###"""!!! !!!!!!!!!!!! !!!!!! !" ! "! #!!"!!!!!"!!4,"2+!1* 4-#2+!.'3*!7/%5-#1)2+ 70%92'3,!/(1*70$:2'7/$5-"7.#90%91%4,!4,!91%4+ 1)8/$:2'4,!2);2'6.#6.#<3(=5):2&7.#6."6."80$;3'90$6."=4(=4(5+ 2);1&=3(:0%7-"7-";2&90#3*:1$=4'80#;3'?6*<3'90$<4(;2&;2&<4(;2&;3&80#;2%<3&8/":0#<2%8.!9/"<2%;1%:0$<2&:0$8."5+9/$<2':/$5+ 7- :1$:1$8.!7.!90#;1$>4'>4'?5(>4':0#7- :1$:2%>6(A8+?7)=5'A9+D<.@8*91#=4'=4';2%=4'>5(;2%=3&G<."##$"$#$$%$%$%"$!# " !!  ! !"(*!#$&'"# - - - -  - -  - - - - - - - - - - - - - - -      G:+:/#<2'?5)>5)=4)<3(<3'90$4+0'5, 8/#7/#7/"6-"4+ 7.#6/#5."5/#2- 4.!81$5-!70#7."4*2)3+5/"60#:3':4'70#7/#4+4+4, 8/#6-!7."80$90$6."80$80%7.$4+!2* 6.$80&7/$2*2*4,!5-"G-G-H.B*@(>';%8"8":(8(2"-04!7#8#9$6"6"204!8%2 0///0.-,( *+./+& "  ""  ! !     -    -          -   -                -     -          -     - - -      -    .&.'2+ 3,!0)/(/'3+!5-#6.$4-#4-#5/$5/$60&1+!3,#2*!/'.&0)3,!2+!/(0) /(,&% ###"""$$$%%%$$$$$$###"""###$$$%%%%%%"""""" """&&&%%%"""###%%%"""###$$$$$$$$$"""!!!!!! """"""###!!! ###"""""""""!!!"""""""""""""""!!! """""""""""""""############ """"""$$$ !!!$$$!!!###%%%$$$$$$###"""$$$######%%%&&&'''%%%$$$###%%%&&&&&&%%%%%%&&&&&&%%%###$$$%%%$$$&&&%%%$$$$$$######$$$%%%&&&&&&%%%&&&%%%&&&(((''''''&&&&&&%%%$$$$$$$$$"""$$$'''%%%%%%%%%$$$ !!!  ###$$$$$$%%%######%%%$$$$$$"""###""""""!!!!!!#########"""!!!   !!!!!! !!!!!!"""###$$$######""" !!!""""""!!! !!!!!!   !      !5.$2+!2* 2* 4-#3+!0(4+"7/%6.$2+ 3,!6/$81&4-"0(2*70%:2'5,!3+ 7/#:1&91&3+ 4,!:1&6.#5-!80$:1&5-"2*91%6-"6."<3'>5);3'6-"5-!7."8/#91%8/#6-!>5)>4)5+ 0'<2'@6+;2&6-!6,!>4(=3'7.":2%<4';2&<3'=4(<3'90$<3';2&:1%;3':2&91$80#:1%<3&9/#:0$<2%8.!8.!:0$:0$:0$<2&9.#:0$5+ 7-"9/$<2'8.#:0$<2&=3&6,7- :0#<2%>4'=3&=4'=3&:1$7. :1#<3&>5(@7*>7);4'A:,C;-@8*;3%>6(>5(=3&?6(?6);1%<2%D9,eUA!!"##$#$#$#$#$"# !!   $+* !"%'"# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    @5'9/"=3&@6*?6*>5*=4)=4(:1%5, /'3+7/#6."6-!5, 3*5-!5."4-!4.!.(3- 70#7/#7/#6-!4+3*5-!60#6/"92&;4(81%7/#3+3+5-!8/"5, 5-!7/#6."7.#90%6.#6-#2* 1*5-"7/%5.#1*0(G-F-E,D+B)@(=&;%9$9%9&2",..16":%:&:&:&7$.- 2) ) +04#/+*)(+,..+(#   -   -              -     -          -   -                         -   -  -     -     -     /(-&.(2+ 3,!0)/(1)4,"4,"4-"1+ 2,!4.$5/$4.$0)3,"3+!1* .'1)5-"3,"1) 1* 1*!,&&"""""""###$$$%%%$$$###"""###%%%&&&$$$ """!!!"""###$$$%%%""""""$$$###$$$$$$"""$$$"""  """$$$###"""!!! """"""#########"""!!!!!!!!!"""!!!!!!""""""!!!""""""###### !!!"""!!!  !!!"""$$$"""!!!###"""###%%%&&&&&&%%%$$$$$$%%%&&&''''''&&&&&&&&&%%%######%%%&&&'''%%%%%%$$$$$$###$$$%%%&&&&&&$$$&&&$$$$$$((('''&&&'''%%%%%%""""""$$$###%%%'''&&&%%%%%%###!!! !!! """%%%$$$%%%$$$$$$&&&$$$#########"""!!!!!!  """""""""""""""!!!  !!!!!!!!!!!!""""""!!! !!!!!! """!!!""""""###"""!!!!!!!!!######"""!!! !! ! !! !!!"5-#1)1)2* 3+!3+!2) 3+!7/%6.$1*4,"92'92'6/$1*1*6/$91&3+ 2*7/$:1&80%4,!6.":2'8/$7/$91&;2'6.#1(7.#6."6-"<3'>6*=4)5, 5-!7."7/#91%7/#5, >5)>4(6-!2(;2&@7+>4)8.#8.">5(=3'91$:1%;3&;2&<3'<4(;3'8/#:1%;2&;2&<3':2&:1%80#91$=3'9/#:0#<2%9."8.":0$:0#8/";1%7-!;1%5+ 6,!8."<1&9/#<2%=3&:1$6, 8.!:0#<2%>4'>4'>5(>4';2%8/!;2$=4&?6)A8+=7)82&@:-B;/@9,=5)?7+?6)=3&A7+@7*:0#;1%A7*G<.!""#"#"$#$"# !! $+#!1)' %&"# - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - [K9=2%9/">4'A7*@8+>6*<4(:3'91%5, 2(3*6."6."5-!4, 2*3, 5.!4-!2,2, 3- 6/#4, 5.!6-!5+2)4- 6/"5/"70$:3'91%80$4+3+5, 7."5,3+5-!5,!7/#80%5-"5-#1*0)4,"6.#5-"G.F,D,D+C*B)@(<%;$9%6#2 ,/1!7$227#:&;'=)6#, -3!0( *01!.)**)&*+)'('$         - -   -   - -             -       -      -  -        -    -           -2+ 3+!1)/(0)2,!4-"0*0)3*4,!5.#3,"2+!2+"4.$3.$3.#0* 1* 2* 1)/'1)3+!2+!0)0) 2+"+%& !"""###$$$%%%%%%$$$""""""$$$%%%%%%###"""""""""###"""###%%%%%%###&&&$$$%%%$$$###%%%""""""!!!"""""""""!!!!!!"""###"""######"""!!!!!!!!!"""!!!!!!!!!!!!###"""###""""""###$$$###$$$!!!  !!!$$$$$$%%%$$$!!!"""###%%%%%%%%%%%%###$$$%%%&&&&&&&&&%%%$$$%%%%%%&&&&&&%%%&&&&&&&&&&&&%%%%%%%%%%%%$$$%%%###""""""###&&&'''%%%&&&&&&%%%$$$###&&&%%%&&&&&&%%%$$$###!!! """!!!###$$$$$$%%%%%%$$$'''%%%###%%%$$$###""""""!!!  !!!!!!!!!!!!!!!""""""  !!!!!!!!!!!!!!!###""" !!!!!!!!! !!!!!!!!!!!!!!!###""""""###"""!!!"""#########5.#2+ ! !! !!!"#6/%5.$1* 1)2+!2+!2* 1(2) 8/%6.$1*4-"81&70%2+ -&2+91&:2'5-"3+90%:2'90%5-"6.#91%6.#7.#91&;2'6-"1(5-"6-"6."<3'?6*;3'3+4+7/#80$;2&80$4+ >5)>4(8."4+>4(@7+>4)8/#8/#?6*=4':1$:1$:2%90#;2&=4(:1%7."80$<3';3'<4(;2&:1%90#:1%>5(9/#8.";1$9.!9/#;1%:0$9/#;1&7-!:0$5*8."9/$;1&:0$<2&>4(9/#9/":0#:0#;1$>4'>4'?5(>5(<2%90#<2%=4'@7*B:-=6*71%?9,C5)?7+=4(;1%@6*?5):0$<2&?6)C9, !"!#!#!" !   -$"+(&.,*$&"# - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - -F:+:0#9/!=4&@7*@8+=5):2'81%80$6-!2)3*6-!7.#5-!4-!5.!3, 3,0*1*5.!4- 5."5-!7/#6."4+1(3+70#6/#70#92&80$80$5, 3*3+6.!5, 3+4, 5,!6."7/$6.#5-"0)0(4,"I.F-D+B)A)B)@(>&;$<':'3"-.4#6$;'9%5!5"6#7$7$2, -./,)/1!.,,*+**)&# %# "       - -     -    -   -             -  -  -   -     -    -     -     -  - - -          -  - 3+!2* 2* 3+!2* 0)1* 3,!4-#1* 0)3*5-"6.#3,"2+!2,"4.$3.$3-#0*0)2+ 1)0(2*4,"3+!/(0)2,"+%' "!!!"""$$$%%%$$$""" !!!###$$$&&&&&&###"""!!!"""######%%%%%%$$$%%%$$$$$$&&&%%%$$$"""!!!!!!"""!!!!!!"""""""""!!!"""""""""###"""!!!""""""!!! """!!! """!!!"""###!!!$$$%%%###%%%$$$######!!!!!!!!!!!!!!!###'''&&&%%%$$$!!!!!!###!!!%%%&&&&&&$$$###%%%&&&&&&%%%$$$"""$$$%%%&&&'''&&&''''''&&&%%%&&&&&&&&&%%%###"""###""""""###$$$%%%$$$%%%&&&&&&&&&%%%&&&&&&''''''$$$!!!!!! """###$$$$$$###$$$###$$$"""$$$$$$%%%&&&$$$!!!!!!""""""!!! !!!!!!!!!"""!!!!!!""" !!! !!!!!!!!!"""###### """""""""!!!!!!"""!!!""""""!!!!!!!!!""""""!!!"""""""""###! 5-#3,!0)5-"70$2+/)-&3,"6/%5.$0)1* 6.$5.$2* 1* 3,"4,"3*!1(1(8/%7.$0(5.#82'81&3,!.'1*80%:2'6-"5,!91&;2'90%5-"6."90%7/#5-"90%;2'7.#2*6.#6.#6-!;2&?6*:1%6-!5-!80$90$<3'80$2*<3'?5*8/#7-">4(@6+>4)9/#7-!?5)=3'90$90#:2%90$:2%=4(<3'7."7.";2&;3'<4(91%80#7/":1$@6*90#8.":0$8-!9/"<2%;1$9/#;0%8."9/$6+ 8.#:0%:0%:0$<2&=3&:0$:0#;1$:0#;1$>4'>5'@6)>5(<2%:0#<2%=3&@7*B:,<7*83&?9,C4(;1%>4(<2&90#<3&=3'?5(ZL9  ! !   %'&$*+'.0.$%#$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - -dR=B7(;1$9/"=3%A7+@8+=5):3'81%7/#4+ 1(2)5-!7.#5-!4, 4-!3,2,0)3, 5.!3, 4, 5-!8/#8/#4, 1(3*8/#8/#6."8/#80$7/"5-!2+3,5-!5-!3+ 4, 4,!5-!6."5-"3+ 0(I/ G-D+A)@'A)A)?'<%<'=*7%0/2!6$='<&>):&9&4"3 4!/( ( -& ( *+/ 0 -,****''"   - -   - -  -    -  -    -          -  -      -         - -  -    -      -   -         -   -  - -  3+!3,"2+!2+!3+!1* 0)2+!3,"3,"1* 0)3*6.#6.$4-#4-#5/%50&3-#3-#0+ 0)1* 1)0)1*5-#3,!1)0* 2+",&(!#!!!"""$$$%%%$$$""" !!! ###$$$$$$$$$%%%""""""$$$$$$"""###%%%%%%$$$&&&%%%"""'''### ###""""""###!!!!!!!!! !!!"""!!!!!!"""!!! """ !!!""""""""""""!!!!!!######$$$%%%%%%%%%"""$$$######!!!!!!!!!"""###%%%&&&%%%$$$ !!!$$$$$$###$$$%%%###%%%&&&'''&&&%%%$$$"""%%%%%%%%%''''''(((''''''&&&$$$%%%&&&&&&&&&######""""""###&&&$$$$$$%%%&&&&&&''''''%%%%%%'''&&&###!!!!!!"""!!! !!!!!!######&&&"""###$$$$$$$$$######$$$%%%&&&$$$!!! !!!"""!!! !!!""""""""""""""""""   !!! !!! !!!"""""""""""""""###"""""""""!!!"""""" """"""""""""!!! """""""! 4,"4,"0)4,!70%3,!0*0*3,"5.$5.$0)0)5.#4-#2* 2+!4,"5-#3+!/&2(:1'8/%0)5.#93'82'3-"0)3, 92'=5*8/$1)8/$;2'91&6-"6-"80%6-"6-":1&<4)80$2*6-"6-"5, ;2&?7*:2&80$7.#80$:2&<3'8/#3*:0%>4);1%9/#>4(?5*=3'8."6- =4'<3&90#:1$;3&:2%:1$;2%:2%7."8/#;3':2&;3'80#7/"5- 90#@6*;1%:0#;1$8.!9/#<2&;1%:0$:0$8.#9/#8."9/$:0%:0$;1%;1%;1%;1%:0$;1$:0$<2%?5(>4'?6)>5(;2%90#<2%<3%@7*A9,<6);4(A;.D=0?8,;3'?6*>5(<2&>4(<3&;1%>5(>5(=4'B8*       !! "..+/,-68<#$#%   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - E9*?5';1$:0"=4&A8+?6*=4);3(81&7/$4+ 1(2)5, 6-"3+3+4, 3,3, 2+3, 4-!4, 7."7."80$8/#4+0(4+90$7/#7."90$8/#6."4- 2+4, 5-!5-!3, 4,!3,!5-"6/#3,!J0 H.D+F.B)B)B*@(>&>'=)9&3 /3!6#9#:$;%9$9#9$7$2 3!0)" '(% % +0 .-,(*/)#$%!"    -      - -       -  -  -   - -  -                 -        -    -  -    -  -     - - -  - - 1* 3+!3+!3,"3,"3+!3,"1)/(2+!3,"3,!2+ 1)3*5-"6.$5.$4-#60&60&4.$4.$2,"1+ 1*0)0(2*7/$5-#2+ /(0),%(!%!!!"""###%%%$$$$$$#########$$$$$$###$$$%%%$$$######$$$$$$$$$###$$$###%%%$$$"""$$$$$$###$$$"""######"""$$$!!!!!!!!! !!! !!!"""!!! """"""""""""""" $$$$$$$$$%%%$$$$$$%%%###""" !!!###$$$$$$$$$###!!!""""""%%%%%%###%%%$$$###%%%%%%&&&&&&&&&%%%$$$&&&&&&&&&'''&&&'''''''''%%%%%%&&&''''''&&&%%%$$$%%%$$$%%%$$$%%%###$$$%%%&&&''''''%%%$$$''''''$$$######"""!!!!!!!!!""""""###$$$$$$###$$$$$$###%%%$$$$$$$$$%%%$$$"""!!! !!! """"""""""""######!!!!!!   """!!!"""!!!"""""""""""" !!!!!!!!!!!!"""""""""!!!!! !! "" 5."4,!0)3,!70%5.#2+!1+ 3,"4-#4-#0(/(5.$4,"3+!3,"4,"5-#4+!.$3) <3*80%3,!4-"60%81&4-"0*2+6/$;3(:2'6."7.#:2'91&6.#6-"90%4,!4,!90%;3(7/$1(5-"6-"4,=4'@8+<4'80#6-!6.":1%;2&8/#5, :1%>4(<2'90$<3'>4)<2'7.!6- <2%;2%90#:1$;2&:1%;2&<3&90$6."8/#;2&91%;2&80#80#6-!90$?5);1%;1%>4':/#:0$<2&;1%:0$9/$8."9/#9.#:0$9/$;1&:0#6- <2&<2&;1$:0#:0#=3&?6)=4'?5(>5';1$90"<2%<2%@8+A9+=6)<5(B;.C<0?7+:2&>5)>5)<3'>4(=3':0$=3'?5)<3&?6'  -  -"%%%% -)&96!"%'%&!"$%  - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   -  B7(>3&:/"9/!<3%>4(=5)<3(:2(92'80&6-"2)3)4+ 5,!3*3*4, 2+3+3+3+4, 6-!80$7."90$90%5-!2)4, 8/#7."7."90$8/#6/"4, 3+4- 6."5.!2+4-!5-"6/#J0!I/ E,B+E,E-D,@(>%>'>)<(5#14!7$5 8#8#;&:%9$7#9&7$3!+$ -(+)&# &+-+-/++-*%$!                    -   - -       - -            -       -           - -      - - - - - - - -%0'2*!2* 3+"3+"3,"4,#1) .'1* 3+"2+!3+!2*2)4,!5.#5/$3-#60&61'50&4.$2,!2,!3,!2*0(2*7/$6/$2+ 0)2+!.'*#' !!!###$$$%%%$$$$$$ ###$$$###$$$%%%%%%$$$######"""$$$$$$$$$$$$""" ###$$$%%%$$$!!!!!!###$$$######%%%!!! !!!!!! """###"""!!!"""""" !!!###### !!!###%%%%%%&&&%%%###$$$######### !!!"""$$$&&&%%%$$$#########%%%&&&&&&###!!!"""###%%%$$$%%%%%%%%%&&&'''%%%%%%&&&&&&''''''&&&&&&&&&&&&&&&&&&'''%%%$$$&&&%%%&&&$$$$$$$$$######&&&'''%%%%%%'''''''''&&&%%%###!!! !!!"""###!!!######$$$$$$%%%&&&&&&%%%$$$$$$$$$$$$%%%###!!! !!!!!!!!!!!!""" !!!"""###"""!!!!!!  !!!  !!!!!!!!!!!!!!!""""""!!!""""""""" !!!!!!""""""!!!""!"! "!!!!3+ 5-"3, /(1*6/$5.#3,!2+ 4,"5.$4-#.'/(5.%5-$4,"3,"4,"6.$4+!.%2)=4*90&3+!4-"70%81&4.#0)0)6/#:2'91%6."7/$:1&80%6-"6-":2'6-"4, 8/$:2'6-"/&7/#80%5, =4(A9,=5(6.!4,5- 90$=5)90$3*:1%>5)<3'8/#;2&>4)<3'8/"7.!;2%;2%80#:1$:2%91$<3&=4(91$6-!8/#:1%:1%<3'91$:2%7/":1%=4'90#<2%?5(<2%:0$;1$:0$:0$9/$8."9/$:0$:0%=2'<2'9/#8."<2&<2&9/"8.!9/"=3&@6)>4'?6(>5':1$9/"<2%;2%A8+A9,>7*<5(@9,B;.?7+91%=4(<4'<2&>4(=3'8.";1$=3'<3&=4&WK7  -    '",)/%*.$=:$%&''(')  #$  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -  - - - QD2?5&=3%9/!7- ;1$;1%<3';3(:2(91'90&6-"2(2)4+ 5,!3* 4+ 4, 2)2*3+3+3+5,!8/#8/#:1%8/$6-"4+5, 7/#7/#7/#80$8/$6."2+2+4- 70$6."1)4-!J0!I/!E,B+F-!E,D,B*=%;#='<(7$15"8$:%5 7!9#8#:%9%7$5"3!0( % (($ &$  &*-+,.+))($#                   -   -     -   -         - -     -   - -      -   - -   -  -     -   - - - -  0'3*!.&0(3+"1) 3+"3,#4-$4,#1*!/(2*!3,#3,#3,"2* 3*5-"6.$6/$5/%71'71(60&4/$3-"3,!4-"4,!2*3, 7/$6/$1*1* 4-#0(/'+$$!!!$$$&&&&&&%%%###%%%###$$$$$$###""" ######$$$######$$$###!!!######$$$###"""!!!"""###$$$$$$%%%###!!!""""""!!!!!!######""""""""" """!!!""" !!!"""######""""""###$$$%%%$$$###$$$!!!"""$$$###$$$"""$$$%%%&&&%%%$$$###$$$%%%&&&$$$"""######$$$'''$$$$$$&&&%%%''''''$$$%%%&&&''''''&&&'''&&&%%%$$$$$$%%%'''%%%$$$&&&&&&%%%'''&&&%%%###$$$$$$###$$$%%%&&&&&&&&&%%%$$$$$$###!!!!!!""""""!!!###%%%$$$%%%%%%%%%&&&%%%###$$$$$$$$$%%%$$$!!!!!!!!!""""""!!!"""!!! !!!!!!!!! !!!!!! """"""!!!"""!!!"""""""""###"""###"""!!! !!!!!!!!!"""!!!#! #!$" ##"!#$3+ 4,!2+ /(0)5.#5.#3,!2* 4,"5.$4-#.'/(6/&5-$3+!3+!3,"7.$3+ /&3* ;2(7/$2+ 4-"70%70%4.#.'/(6/$<4):2'6.#80$91&80$6-"5-!:1&6-"4,!80%<3(6-"-%8/$80$6.!<3'@8+<4'5- 4,6.!90$=4(:1%6-!<2&?6*=4(9/#;2&?5*=4(90#9/"=4&<3&8/":1$;3&:1$<3&>5(;2&7/#:2&;2&;2&=4(:2%;3&90$;2%=3'9/#;1%?4(=3&:0$:0#9/":0$;1&:/$9/#9/#9/$=3(>4);1$9/#<2&;1$8.!7- 9/"=3&>4'=4'>5(=4':1$90#=4&<3%A8+A9,>7+=5)@9,B;/>7+7."90$;2&;2%>4(>4'9/#=3'@6*<4&<3%C:+     -  %!)$&&&+-7>"#%&'(()()%& !!" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - -F;,=3%=3%9/!7-;2$;2%:2&;2':2(81&7/$4+!1'2)4+ 5,"4,!4,!3+1)3*4, 4+ 3+5-!:1%;1&;2&7."5,!2*3+7.#80$91%80$8/$5."2+3+3, 80$5."J1"I/!E,@)B*F. F-C*@'<$=(=)7$2 5":&>'=(;&;$<%9$:%9%8&4"0) $% )(" " &%)-+))*(&&%         -   - - -     -    -       -  - - -   -  -           -  -     -  -  -  -       -   - - - -  2) 0'3+"0(0(2*!2*!3+#3+#6.%5.%2+"0) 3+"5-$5-$3,"3* 5,!7/#70%6/$81'60&61'60&5/%4.$4-"5-"6."5,!3+ 80%7/$3+!4,"5.#1* /(-%#"""$$$%%%$$$######"""############!!!!!!$$$$$$$$$$$$###"""###$$$#########$$$$$$$$$"""$$$$$$$$$###"""!!!""""""!!!!!!"""######"""###""""""###"""!!!""""""#########"""###"""###"""######$$$$$$%%%$$$$$$$$$'''&&&%%%$$$$$$%%%&&&###""""""$$$$$$&&&%%%###%%%$$$&&&%%%###%%%'''''''''&&&%%%%%%%%%######%%%%%%&&&'''''''''%%%&&&&&&&&&&&&$$$############&&&(((&&&###$$$$$$$$$""" !!!#########$$$%%%%%%$$$###$$$$$$$$$######!!!!!!"""###"""""""""""" !!!"""!!! !!!"""!!!!!!"""!!!!!! !!!""""""""""""###""""""""""""######!!!!!!!!!!!!!!! "!!$!$!$" $$$"$%!$$2*3+ 3+ 0)1*5.#5.#3+!1*3,!5.$5-#.'0)70'5-$3+!3+!3+!7.$4+!0'5,!;2(6.#2+ 5.#81&92'6/$.'/'6.$;3)<3)80%70$:2'81%6.#4,!80%5-"3+ 91%=4)7.#.&:1&91%7/";3&?7*<4'4,5- 80#7/#:1%;2&:1%<2'>5)=4(8.#;1&?5*=4(:1$:0#>5'=4'8/":1$=5';2%<3&>5)=4(90$=4(<4(<3'=4(;3&;3&:2%=3'>4(:0$;1%>4'<2%:0$:0$9/#:0$=3':0%8.#7-!7-"=3'?5*<2&;1$=3':0#8.!6- :0#=3&=4'=4&>4'=4':1$:0#=4&<3%@7*A9,>7+=6*A9-B:.=5);2&:2%:1$;2&?5)>4(9/">4'@6*;3%;2$A8)                   ! #')! )(&235 "#%$&&(()))''## !  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - -^P4(;3';2(:2(81'7.$4*!1'1(4*6-"5,!4,!4+ 2*3+2*3+5-!6.":1%:1%<3':1%7."2)1)5,!6."7/#7.#90$6."3+4-!4, 70$I0"E- @)>(@(A)D,E+A&A)A,:&3 4!8$;$<&>(='<%:$9$;&9&3!0-' ""'(%!  $ )+,)& **(''%    -     -     - -             -   - - -       - -      -       -    -   -    -  -   - - -   - -   1) 3*!0(0'2*!0(1)3+"2*!4,#4,#6.%5.%2+"1) 3,"5-$4,#2*!2*5,!80%91&70&81'60&71'60&50%5/$5.#7/#6."4+ 3+ 91&70$5.#6/$70%4-#1* 4-"*#$$$&&&%%%$$$!!!!!!"""%%%%%%###$$$%%%######$$$$$$%%%$$$$$$""""""#########$$$#####################"""!!!!!!######!!! """"""!!!"""""""""!!!!!!!!!"""!!!"""$$$$$$"""###""""""$$$&&&%%%$$$%%%"""$$$$$$$$$###%%%''''''&&&$$$$$$$$$###"""###$$$$$$&&&&&&&&&%%%"""%%%%%%$$$%%%&&&$$$%%%&&&%%%%%%%%%$$$###%%%$$$&&&'''((('''&&&&&&&&&'''&&&$$$$$$$$$###$$$'''(((&&&""""""###$$$"""  !!!!!!!!!#########$$$%%%$$$$$$###$$$###!!! !!!#########"""""" !!!"""!!!!!!"""""""""######"""""""""""""""###"""!!!"""$$$###""""""###"""!!! !!! !!!!!! !!!$! $! "!"!"# "#"#0)4,!5-"1*2* 7/%6/$3,!2* 4,"6.$5.$0)1*!7/&5-$2+!2* 3,!7/$5,"3* 5,":2(7/$2+ 5.#93'93'5.#0)/'80%<4)<3)80%6/#92'91&5-"3, 80%4-!4, ;2'=5)6."/&8/$:1%8/#<3'?7+<4(6.!6.!92%8/#;2&=4(:1%;2&@6*=3(6,!:0$>4)=4(;1%90#=4'>5(90#;2%>5(;2%<3'>5)<4'90$=4(=5)=4(=5)=4'<3';2&>4(?5);1%<2&?5(<2%:0$;1%:0$;1%=3'9/#7-"5+6, <1&>4(;1$;1$>4(9/"8.!6, :0#=4'=4'=3&=4&=3&:1$:0#<3%;2%?6)@8+>6*>6*B:.C;/>6*;3'<3'<3&=3'@6*?5)8/#=3&?6);3%80">6'RF4 - - -     - - - - -   -   - -  ").!+"".)-5CH!!$%$&$'&(')(*)*&'!" !  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - -I?0?5(=3%@6(<1$8. ;2$?6*;2&:1'91'80'7.%4+!2(1'2)5,"4+ 4,!5-"3*2*3*4+6-!6-!6-!8.#=3(<3'6-!2)2)5-!6."7."6.":1%6."3, 4-!I0"E- @)>(?(>'?'A(D)D+D,=(5!27#A+;&8#=&=&;$9$8#9$:&3!,*' # -!'- &  -" &&'**)((&$$"  -        -    - -      -  - - -          -            -  -     -  - -  -     -        - -    -1) 1) 2*!0'0'1) /'1)3+!2* 3+!4,"5-#4-#2+!1* 4,#6.%4-#2+!2)4+ 7.#90%70%70%5/%71&60&60%6/$5.#80$6."4, 6."91%80%6.#7/$80%4-"4-"4-"4-"3+!6."5-!0)-&-%+$.'0)2+ 92(6/%60%6/%4-"2+ 1*4-"6/$6.#81&91&80%5-"%%%$$$###$$$!!!!!!!!!###!!!###%%%$$$$$$$$$######%%%$$$%%%""""""%%%$$$###""""""###"""!!!""""""###""""""""""""!!!"""!!!""" """""""""###""" $$$!!!############$$$$$$$$$$$$"""###%%%'''%%%$$$$$$"""######%%%###%%%%%%%%%$$$%%%&&&%%%###""""""""""""&&&&&&&&&%%%######&&&%%%%%%%%%$$$%%%&&&%%%&&&######$$$&&&&&&&&&%%%&&&'''&&&''''''&&&&&&$$$$$$%%%$$$$$$$$$&&&$$$!!!!!!!!!"""!!! !!!!!!!!!!!!!!!"""###$$$$$$#########"""###  !!!#########"""!!! !!!"""!!!"""###"""###$$$$$$##################""""""###$$$$$$###"""######"""!!! !!!"""!!!"""##"#"#""# "#!"!"0(4,!6.#1)2+ 70%6/$3,!1*4-"6/%5.$0)2+!70&7/%4-#4,"7/%:1'7/$3* 5,":2'80%1*4-":3(93(6/$1*1*:3(=5*<3)6.#6.#:2':2'4,!3+ 7/$5-"5-!<4(>5*6."0(8/#91%8/#;2'=4);2'7/#6/"92%:2%=4(>5);1&<3'?5*>5)6,9/#@6)>4';2%8.!<3&?6):1$;2%<3&:1$<4'>5)<4':1%<4(>5)<4(=5)=5(;3&:2%=4'>5(:0$<2&@6)=3&90#;1%:0$:0$<1&7-!6,!3)6, <1&=3'9/#9/#>4(;1$9/"6,:0#=3&>4'=3&=4&=4':1$:1$<3&<3&?7)A9,>6*>6*A9-B9-=5);2&<3';3&<3'?6)?5):0$=3&@6*:2$7/!<4&E;,       -    -      -   $('(- "3+,0<<$%&'&(&(&(&)'*(*')$% !"  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  iZCE;.>4'=3&A7)<1$7- 90"<2':2&90&70&70&7.%5+"3* 1(2)5,!4+ 3+ 4+ 3*1)0(2)5-!6-!6,!7."<2';2'4+2)2*6-"7.#7.#5-!7/#5-!I0!E- @)?)?*>(='?'@'D,F/!>)6"126!='=)6"<%?';%9#9$7"1-,(& % &(*)$! -" &&'''*&'$!   - -    -      -        -       -       -    -  -     -           -      -  -   -       -0)/'0)1)0'/&/&1(0'2* 3+!1* 2* 3,"4-#5-#3+!3+!5.$80'6/%4-#3*5, 7/$91&92'81&60%71&71&71&6/$5."80%7/#5-!5."81%81%6.#7/$80%5-#5-"6.#5-"4,!5."4-!4, 3*5+ 1(1(2*5-!5."3, 3,1*0(+#.&0(0(70%3,"6/%6/%5.$4-"3,!5.#6/$6/$81&7/$4,!1*2*5-!5,!3+!!!######!!!!!!!!!!!!$$$$$$%%%&&&%%%###%%%###"""$$$&&&###"""###%%%%%%$$$###"""$$$###############""""""""""""!!!""""""!!! """###!!!!!!###""" """"""!!!"""!!!###$$$###""""""$$$$$$%%%&&&%%%###$$$$$$######%%%%%%%%%$$$$$$%%%&&&'''%%%###""""""!!!"""%%%&&&%%%%%%$$$$$$$$$###$$$######$$$%%%%%%$$$%%%$$$&&&((('''%%%$$$&&&&&&&&&((('''&&&&&&&&&$$$###""""""""""""""""""!!! !!!!!!"""!!!!!!!!! !!!######""""""######""""""!!!  !!!"""""" !!!""""""!!!#########$$$$$$$$$$$$#########$$$######$$$$$$$$$###"""######""""""!!! ############"""""""#$"#$ "# !!0(4,!6.#1)3+ 7/%5-#3+!1*4-"7/%5.$0)2+!70&7/%4-#3+!6.$8/%5-#1(4+!:1'7/%0)4-":4(;4)71&.'2+ 91'<4*<4)6.#4,!80%80%5-"6.#91&7/$6."<4(>5*8/$2*7/#90$7.#;2'=4):2&80$7/":2%<3'=5(=4(90$<2'@6+=3'5+:0$A7*>5(;2%6, <2&>4(;2%:1%<3&;2&=4(>6)=4':1$;3&=5(<4'=4(<4':2%:2%>4(>4(:0$=3'A6*=3&:0$;1$9/"8.#:0$5+ 5+ 3)7-"<2'>4(:0#9/#>4(>5(;1$7- 9/"<2&>4'>4'>5'?5(;2%;2%=4&=4'A8+D;/@7+?7+A9-A8,=4(;2&=4(;2%=3'?6)@6*;1%<2&@6*:1$7.!<4&C:+"    "!#  &'"!!2!#3 $/+.,34#$'''(')(*')&(')(*')%'!""#  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   G=.A7*>4';0#?5(:0#5+7.!8/#:2&91'7/&7/%7/$6,"4* 3*2)5,!5,!3*2*1)1)1)1)4+4+ 6-"6-":0%:1&3*2)3+6."6."4+4, H/!E. A*='=)=(<'='?'A)F/!F2%8%00/3<(A,@+?(=&;$:$:%8$1* +(& %)*&&&# %&&'&&')%%"     -        - -  -           -  -   -   -        -    - -    -            - -       -      /'-&/(/(1* 1) /&.%-$/&0(2) 2* 1)1)2* 4,"6.$4,"4,"6.%91'7/%5.$4+ 6-!7.#7/$6/$6/%60%82'82'71&6/$4-"8/$8/$5-"6."92&:2&6."6."80$6."6."7/$6.#5-"7/$5."3, 4+ 5+!3*2)4+ 5-!6/#4-!6/"3, 0)/'0(1)4,!70&5.$81'81'70&5.$6.$6/$70%92':3(80&4,"2* 2* 4,!7.#5,!2*4+ """$$$###!!!!!!!!!!!!""""""$$$!!!$$$%%%$$$"""###"""$$$$$$$$$%%%&&&%%%$$$###"""$$$$$$#########""""""######!!! !!!""""""!!!######!!!!!!### !!!!!!!!!######$$$###$$$###$$$$$$###$$$$$$%%%&&&%%%%%%%%%###$$$%%%%%%$$$###$$$%%%$$$$$$###""""""""""""%%%$$$$$$$$$###$$$ """#########%%%$$$&&&&&&%%%%%%&&&'''%%%$$$%%%'''&&&&&&''''''%%%&&&&&&"""!!! !!!!!!!!!!!!!!!"""""""""""""""""""""""""""!!! !!!"""""""""###$$$#########!!!!!!!!!!!! !!!######""" !!!######""""""""""""###$$$$$$###""""""$$$$$$$$$###$$$$$$######"""#########"""!!!!!!!!!""""""""""""!!!!!!!"#""##""2+1)2+3+ 1*4,!6/$4-"3,!1*6.$81'6/%1* 3,!70&7/&5.$3+!5-#6.#5,"0'3+ 91'7/%0)5.#93(:3(6/$-&1*7/$;3)<4)5-"4,!7/$7/$5-"6.#80%7/#7/#;3'=5)91%4, 8/#8/$8/#=4(>6*:1%7/#7/"91$;2%<4'<4(7.";1&@7+<2&5,<2%A8+?5(;1%5+;2&>4(90$8/#;2%=4(?6*?6*=4':1$;2%=5(=5(=4';3&91$90$<3'?6):0$<2&A7*=3&9/";1$8."7-"9.#5+5*4*8.#<2'>4(:0#8."=3'>5(<2%8/"9/"=3&>5'?5(>4'?5(<2%;2%<3&;2%@7*D;/@7+?6*A9-A8,<4(:2&=5(<3&>5(@7*@7*;1%=3'@6*:1$8/"<3&A8*OD3'%## "#" )"#& % ("#('%(!$)"$)"$+%''&&-'),''.%&,#%'%#' !.$$0##," *'#,+,;189AE !%&'(')(*(*'(&'&(')(*'(#% "# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -     F<-A8+>4(8.!>4'9/"2(6, 7.":2&:2'7/%6.$7/%7-#3*2)1(4+ 5-"3+ 2*1*2*2*1)3*3*8/#6-"8/$90$3+2*3*4, 7.#H/!E. A+=(<(<(<(='?'A(D- D.";'0017%7$?+?*;%?(@)<&;&:&6#3!,) & $ (*'#" " %'''&" $$$"    -   -       -      - - - -   -   - -  -   -        - -     -   -     - - - -         -      .&.',%.'.'2+!1)0(0'/&0'1(2)3* 3+!1* 2+!5.$7/%4,"4-#6.%91'70&5.$5, 8/#80$6.#6/$70%82'93)82'71&6/$4-"7.#80$7/#6/#:2&;3'7/#6."80$6."6."90%90%7/$7/#6.#6.#6-"6-"4+ 3*4, 4, 6/#5.!6/#4-!1*/'1)4,"6/$70&6/%70&6/%80&80&5.$5.#81&91';4):3(6.$4,"5,"6.#80%5,!0'3+ 3+ 6-"7/#######"""""" """!!!!!!!!!"""""""""###$$$###!!!###$$$$$$$$$%%%&&&(((###"""!!!%%%$$$!!! !!!"""######!!! """###!!!"""$$$"""!!!"""!!!"""!!! !!!!!!$$$$$$#########!!!$$$$$$%%%$$$$$$###%%%$$$$$$&&&$$$$$$$$$&&&$$$"""###%%%$$$$$$""""""#########$$$$$$$$$$$$"""""" """!!!"""###%%%&&&&&&&&&"""&&&'''&&&%%%&&&((('''''''''&&&$$$$$$$$$###""" !!! """###"""""""""###$$$$$$$$$"""!!!!!! !!!"""###############""" """!!!  !!!"""!!!!!!######"""#########$$$###""""""""""""$$$%%%%%%$$$$$$%%%###"""############"""""""""!!!"""!!! !!!!!!!!!""""!!#!!3+3+5-!4,!2*4-"70$6/#3,!2+ 5.#70%5.#1* 1* 6.$5.$4-"3+!5-"7.$6-#1(3* ;2(80%0)5.#92'92'5.#-&2+ 6/$<3):2(6.#5-"80%80%6.#7/$;3(7/#7/#;2'=5)91%4, 8/$90%7/#=4(?6*:1%7."6.!80#80#;2&=4(6-!90$A7,<3'7. <3&A7+?5);2&5, ;2%;2%91$:1$<3'<4(>6*?6*>4';2$;2%=5(=4(;3&80$80#90$:1%?5):1$<3&@6)<2%7- ;1%8."6,!8-"6,!6+ 5+7-"<2&>4(9/#7-!;1%=3&;1$9/"90#=3&=3&?5(=4'>5(<2%<2%<3&:1$@7*D;/@7+?6*C:.B:.>5);3'<4':2%=4(@6*?5(;1%>4(>5)91$8/#<4'@7*E<-   !!""""###$$%$&%! %&&('*(+(+')&'%'&)'*()&'!""$  - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  TH6D:,C:-?5)9/"?4(9."2(6,8/#:1&:2(70&6.$8/%7.#3)0'/&2)4,!3+ 2+ 2*2*2*1)3*4+ 80$6."8/$8/$4+ 2*4+ H/!E- A+;':&;(<)<(?(A)E.!H2'=(3 004#<) <)=)@*;$:$>'<%;%8$3"0( & -'%()$   ! $&%%"  -! $!     - - - - - - -    - -  - -   - - - -     -         -       -  -    -  - -     -      - -    -    -    .'-&.'0) -&,%.&1* 0(0(0'/'0'2)1)3* 4-"3+!4,"80&7/$4,"5-#6.$92'81&5.#4+ 8/$80%6.#6/$60%71&93)82'5/$6.$4-!6-"80$7/#6."92%:2&7/#5,!90$7."7/#80$90%8/$7.#6.#81&7.#8.$4+ 3*5-!4, 6."6."70$5."1*-&2+ 6/%7/%81&6/%70&7/%81&92'6/$6/$92'92'<4);3)7/%5.#7/$80%91&5-!2*5-"4, 6-"6.#5-"5-"############!!!!!!!!!!!!!!!!!!!!!""""""$$$$$$"""$$$$$$$$$$$$$$$%%%%%%"""!!!"""%%%%%%"""!!! !!!$$$$$$###"""!!!"""######!!!###$$$###""""""""" !!!!!!"""!!!$$$$$$""""""###!!!"""###$$$$$$$$$###"""###"""%%%###%%%&&&'''&&&###"""%%%$$$""" ###%%%$$$###$$$$$$%%%""""""###!!! !!!###%%%&&&%%%%%%&&&&&&'''&&&&&&'''((('''%%%%%%%%%"""#########$$$ !!! """"""""""""###$$$$$$$$$$$$###!!!!!! !!!###""""""############"""""""""!!!  !!!!!!###"""!!!""""""######""""""""""""###$$$$$$%%%%%%$$$$$$###"""###$$$#########""""""!!!!!!!!!!!!""""""!!!!!!"!!" 4, 3+4, 4,!3+ 6.#80%70$3,!2+ 5-#81&5.$0)2+!80&6/$4-"3+!5.#91%7.#3* 2)91'3,!0(4."92':3(6/$.'2+ 80%:2'90&4,!2*6.#91&6/$6.#=5)80$7/#:2&=5)91%3+8/#:2&6.";3'?6*;3'80#8/#91$80#<3'>5)6-!8.#@6+=3'8/";2%?5)?5)=3'8."<2&;3&:1%:2%<3';3'=4(?6*>5(;2%:1%=4(<4';2&8/#7/"90$8/"=4'90#<2%>5(;1$7- ;1%8."8."9/$7-"6,!5+ 7-";1&=3&9/"7- ;1$<2&;1%90#;1$=3&?6)>4'>4'>4'<3&<3&>5(:1$@7*B9->5)=4(B9-B9.?6*=4(;3&91$=4'?6)<2&;0$>4(=4'90$7."=5(A8+D:,bS>  !! " " #!$!$"%"&#&$'$'$'$'%(&((+(+(*(*&(%(%(&)')'(#% #$#$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   -F=/@7*C9-=4(:/#<2&6+1'4*7.#91&91'80&7/%80%8.#4* 0'/&2)3+!1)2*1)2+3+ 1*1*3+6."5-!7/#90%4+ H/!E- A+=)6#7$:(<*=(@(B-G3'@,!5!102!8&;)>+?+<&<&9#<&;$7"8$0-+' % (*$   -#'&%%# #!"              - -       -   - -   -  -       -     -      -    - -  -    -  -   -      - -    /(-&,%-'0) .'-&-&/'/(1)0(/'1)1(/'4+ 6.#5-!5-"91&70$4-"4-"4-"81&80&4-"4+8/$80%7/$81&81'71&82(71'5/$5.#4,!6-"8/$7/#6.":2&:2&7/#5, :1%90$8/$90%:1%90%7/$6.#91&6,"8/$4+ 3+ 7.#4, 5-!6/#81%5."0),%1*3,!4,"70&6/%81'92'92';3)91&7/%81&92&;4);3(6/$5-"7/$90%91&8/$6-"90%5-!7/$91&6.#5-!5-":1&"""###%%%$$$###!!!"""""" !!!###!!!###%%%$$$$$$$$$###!!!###$$$%%%"""""""""$$$$$$$$$$$$!!!###$$$$$$%%%$$$""""""######"""###%%%$$$!!!"""!!!!!!!!!"""%%%!!!$$$&&&$$$###"""!!!"""######"""$$$###"""""""""$$$%%%%%%%%%&&&'''&&&$$$%%%&&&&&&"""###%%%$$$###%%%%%%%%%""""""###""" !!!!!!"""%%%&&&$$$&&&''''''((((((&&&&&&&&&&&&############"""$$$######"""!!! """$$$###"""$$$$$$$$$$$$$$$""""""!!! """""""""!!!!!!""""""######!!!!!! !!!!!!!!! !!!!!!"""""""""$$$###"""###$$$######$$$$$$$$$#########$$$###""""""""""""!!!!!!!!!"""###""" !!! ! 5-!3+ 3, 5-"5-"7/$80%6/$3,!1*3,!70%5.$0)3,"92(81&6/$4,"5-"80%6-#3* 3* :2'3+ /'4-"93';4)70%0)2+ 7/%:1':1'5-"2*5-"91&6.#6.#=4)90$7/#:2&=4):1%3+7/#;3'6.";3'?7+<3'90$91$:1%90$=4(=5)6-!7."?5*=3'8/":1$=4'?5)=4'90$;2&<3':1%:1%;3';2&=4(?6*>5(:1$:1$=4(=4(<3'90$8/#:1%7/"<3'9/#;1$>4'<2%8/";1$8."9/#;0%8.#7-"6,!9.#<2'=3&:0#8/"<2%<2%:0#:0#<2%>4'?5(>5(=4'>5(=4'<3&@6);2%A8+A8,;2&<3'A8,B9-?6*=4(<3':1%=4(?5);1%:0#=3'=4(:1$6.!>5(A8,A8*G=.  ! !!"!"!#"$$%%&''')'((*))()&)%(%(&)'*()&'!" !#$#%  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -     -fWDD;.<3'?6*:1%9.#9/$3)2(4+7/#92&:3'91&7/%8/%9/%5+!0(0(3+ 3,!1)2*1)1*2*2+2*2+3, 3*5,!H/ D- A+?,!:'5"8%;)?*@(?)B.!?,!6$1 2 6"9&;(:'<(<'?):%7#8#;&8$7%/) ) ( )))%  -#'&$ %&%$          -     -   -        -    -   -     -        -  - -   -              - - - - -    - - - - -0)0).'-&+$,%.',&,%-&/'1)1*1)0(1(1)0'3+ 6."6-!4-!81%81$4- 2+ 3-!70&6/%4-#0(7.#81%70%92'92(81'93)82'5/$6.#5."7/#80$7/#6."<3'<3'80#6-!;2&91%8/$;2'<3':1&80%6/#:2'6,!7-#3*3*7/#4-!5-!5."92%6.#0).'2+ 4,"5.#70%70%:3(92'92':3(92&92'92'92';3(:2'4,!1*80$90%:1&80%90%:2'7.#7/#80%7/$6.#7.#7.#:2&91&:3&"""!!!$$$%%%$$$"""!!!""" """"""###$$$###$$$%%%"""!!!$$$%%%%%%$$$###$$$$$$#########"""#########$$$$$$""""""###"""!!!"""$$$$$$$$$!!!!!!"""!!!"""$$$"""%%%&&&%%%"""!!!""""""$$$$$$###"""!!!###"""###%%%%%%%%%$$$%%%$$$&&&%%%###%%%&&&###%%%%%%$$$###$$$$$$$$$!!!!!!###""""""!!!"""###%%%%%%$$$$$$%%%&&&''''''%%%$$$###""""""$$$$$$""""""$$$%%%%%%$$$"""!!! """$$$"""###$$$$$$$$$######""""""!!!!!!!!!"""###"""!!!!!!"""""""""""" !!!!!! !!!!!! !!!"""""""""!!!###$$$$$$$$$###$$$$$$###############$$$#########"""!!!"""!!! !!!!!! !!! !!!6-"5-!7/#7/$5-"5-"7/$70%3,!0)3,!70%6/$1* 2+!81&81&6/$4,!5-"80%6-#3* 3* 91'4-"0)5/$92'93(70%2* 2* 5-"8/%:2'80%3+ 6-"91&6.#6-";2'90$7.";2&>5*:1%1(90%<3(7.":2&>5*;2'8/#80#:1$:1%=4(<3'5, 8/#?5*<3'8/"90#<3&>5(<3'80#:1%<3';2&;2&<4(<3'>5)?6*>5(:1$:1%>6)=4(=4(;2&:1%:2&80#<3':0#;1$>4'<2%:0#:0$8."9.#:0%8.#6,!6,!8-";1%<2&:0#8.!<2%;2%9/"9/"<3&>4'?5(>5(=4'?6(>4';2%@6)<3&B9,A8-<3'<3'A8,B:.@7+=5)=3(;1%=3'>4(;1%8."=3'>5(90#6.!=5'A9+?7*@7)   !!""##$%%&'')()()'(%(%(&(')(*()$%   !"##$ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   -D:,A8+80#<2&9/#7-!:0$7-!2(2)6."91%80%6.#6/$7.$7-#4* 1(0'3* 4+!1(3+ 2+ 2+ 3+ 1)2*2+2+1)D- @+<):(6$8&;)<(@(E,C->* 7&1 2!<(=(<'>)=);'='<'9%8$:%7"4 2 ,( +),.'$$ ! $$'$! $$#            - -      -     -        -   -     - - - -  -   - -  - -     -  - -            - -  -   - -  - - -0)0(/(.'-&+$*#-&+$)"-%0)3,!2* 1)2*0'2*0(2*6."6."4- 70$6/#3,2+ 6/#70&5.$4,"2*6."80%80%91'92(92(=6,:3)6/$7/$7/#:2%91$7."7.#;3'<4(80$6.":2&90$7.#;2&:1&:1&:2'80%:2'6-"5+ 2)2*5-!4-!4, 5."81$5."0).&2* 6.$80&82&92':3(81&81&<5)92&:3(92'92'<5)<4)7/$4, 8/$8/$:1&80%:1&91%6."6.#8/$:2&6-"7/#90%91&91%80$80$:2&"""!!!"""$$$$$$$$$###$$$""" """!!!!!!###"""###$$$&&&$$$###$$$%%%%%%$$$$$$$$$%%%$$$$$$###""""""###"""###$$$###""""""###"""#########"""!!!!!!""""""!!!###$$$$$$%%%&&&######!!!"""###$$$###""""""###$$$$$$$$$###$$$%%%&&&&&&&&&%%%$$$&&&%%%$$$$$$%%%$$$###$$$$$$###!!!###$$$######""""""###$$$&&&$$$###%%%%%%%%%%%%%%%""""""!!!"""$$$""""""$$$&&&&&&$$$#########""""""!!!!!!!!!$$$$$$"""$$$######""""""""""""!!!!!!!!!!!!######"""!!!""""""!!!!!! """"""!!!  !!!""" !!!!!!"""""""""###$$$$$$$$$$$$$$$###"""############$$$$$$$$$###""""""""""""!!!!!!  !!!5-!6."5-!7/#7/$5-"4-!6/#70$3,!1)4-"81&70%1+2+ 92'81&7/%4,!5-"90%5-"2)3* 90&5.#0)2,!:3(;4)6/$2+ 3+ 4,!5-"90&:1&6.#90%<3(7.#5-":2&90%6-!:1&?6*:1&0&8/#;2&7.";2'>5*;3'8/#90#80#:1%=4(<3'7."8/$=4)<3'8/"8/#;3&>5(;2&8/":1%<4(:1%;2&=4(=4(?6*@7+>5(91$:2%>5)<3'<3':2&90$90$8/#<3':1$:0$=3&;2%:0#:0$8/#8.#9/$8.#7-"7-"8.";1%=3&;1%90#<2%;1$9/"8.!<2%>4'?5(>5(>4'>4'<3&;1$@6)=4'A8+B:.>5)=4(A8,C:.A8,>5)=3'<2&<3&=3';1%8/#>4(?6)91#6. <4'A9+?7*<4&WI6  ! "!#"$#%$&%&&'&'&'&'&(&(')'(&&"#  ! !"#"$  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   -?6(>6)7/"=4(<3'7-":/$8.#2(1(4,!6.#5."3, 80%8/%6,"3* 1(/&0'0(1(2*3,!1)1)0(1)2*D- @+<):(:'9';)<)<'?)D. D.!:'2#1 ?)?(@+A,>*>*?)=(<(9&5!4 2/.+,// 1",('% # ! # %$&#  ##               - -   -       -  -  -     - -  - - - - -  -   -  -  - -   - -         -    - - -   -    -1)3,!1)/'.'.'-%,%)"-&-&-&.'0)4,"2+ 1)2)/&4+!2*2*5-!5-!4- 70#6/"2+2+ 70$6/%4-#4-"4, 6."80%91&92'92(92(;4*92(6/#6/#80$:2%91$6-!6-":2&<3(80$7.#91%8/#5-!:2&:3':2';3'81%91&6-"5,!3*2)4, 4, 2+5.!6/"5-"2+ 0(2+ 5.#70%71%6/#71%6/#6/$<5*:3(;4(:3'81%;4'<4(80$7/#90%91%91%91%90%80$6-!7/#91%:2&6-"80$:1&90%80$70$80$92&6/#80$###"""######$$$""""""###""""""%%%"""!!!$$$###"""$$$&&&&&&$$$$$$$$$%%%%%%&&&&&&&&&###"""######"""%%%#########$$$$$$###############!!!!!!!!!""""""!!!""""""%%%""" """!!! !!!######$$$""""""###"""$$$$$$%%%$$$###&&&%%%''''''$$$$$$$$$$$$$$$&&&%%%$$$"""###%%%###!!!"""""""""$$$###$$$###%%%$$$######%%%%%%$$$###""""""######"""!!!!!!"""###$$$%%%$$$######"""######"""""""""##################"""!!!!!!!!!!!!"""!!!!!!######"""###""""""!!!!!! !!!"""!!!!!!""" """""""""!!!!!!""""""###$$$###$$$$$$$$$$$$###"""###$$$######$$$$$$######""""""""""""!!!!!!!!! """4, 6."6."80$6.#4,!5-"70$6/$4-!2+4-"6/$71%3,!2+ 91'81&7/$4-"6.#91&5,"2)5,"80&4-"1*4-"92'92'6/$3,!4,"7/$90&;3(:1&5-"6-"<4)7.#2*7.#8/#5,!:0%?6*:1%/&6."92&7.#<3(?7+<4(8/#8/"6.!80#<3'<3'7.#90$>5*<3'7/"7/"<3'>6);2&7.":1%>5);2&:1%=4(=4(>5)@8+?6)91$:2%>5):1%;2'91%8/#7/#7."=4(;1%9/#;1%<3%:0#:0$8/#8."9/#8/#7-"7."8.";1%=3':1$8.!;2%;1$9/"7- ;1$>4'?5(=4'=4'>4'<2%:1#?6)>4'@7+C:.?7*>5)B9-C:.@7+<3';2%<2&=3'>5(=3':1$>4(?6):1$7.!<3&?6)?6)91$=3% ""$$%%%&%'&'&'&(&('(&'#$! ! ! !!#"#  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   _P:A7)@7*:1$?6)?6)7-!8/#7-"1(1(4,!6/#7/$4-"6.#6-#7-#3) 0(.&/&1(0(0(/'0)0(0(C- A+=)9'9(9(:(<*<(=(@, C/$=)5!2 07"D-!E."C- @+?)?(?)>)6"30, /) ----,)%% &$ %%$##"!     -     -  -   - - - -  -  -       -    - - - -   -          -  -       - - -          -   - -    -    -%.&0(2* 0(.'/(/(-%,%)!-&/(/(0)0)3,!2* 2)2)/&4+!3+ 2*4+ 4, 3, 70$80$3,1*5.#5.$4-#4,!3+5-"91&91&92'92(:3(:4)92'5.#6/#91%;3&;3&6-!6-"<4(>5*91%7/#8/$6-"5-!:2&;3';3':3'70$81%7.#7.#5, 4+ 5,!5,!4,!4+ 7/#6."4+ 2*2+ 3,!5.#5/$3,!81%5."6/$<5*<5):3':3'92%;4(;4(91%91%;2':2&90%90$80$80$7/#80$:2&80$80$91%91%:2&80$7/#92&;3'7/#3, 5."5.! """###"""""""""###"""!!!!!!$$$###"""$$$###"""###%%%%%%&&&%%%%%%&&&%%%%%%''''''###"""######$$$$$$###$$$######%%%$$$###%%%"""""""""!!!!!!!!!!!!"""############ """$$$$$$$$$%%%######$$$###&&&%%%%%%###%%%%%%&&&&&&$$$######$$$$$$%%%$$$$$$############"""""""""###%%%&&&$$$$$$$$$###""""""$$$$$$###"""!!!###$$$######"""!!!###$$$$$$&&&%%%$$$%%%######!!!""""""""""""######""""""######!!!!!!!!!""""""!!!""""""""""""######"""!!!!!!!!!!!!"""!!!!!!"""!!!!!!!!! !!!"""###!!!!!!!!!"""######$$$$$$###############$$$###""""""$$$$$$###""""""""""""!!!!!!"""!!! !!!6.#6.#6.#7/$80%7/$4,!4-!91&92&4-"2+5.#6.$81&4-"3+ 81&70%7/$5."7.#91%4+!3*7.$80&4-"1*4-":3(93(70%4,"3,!80%<3);3(80%6-"6.#;2'8/$2*90%8/#5,!90%@7+:1%2)7/#:2&7/#=4(@7+=4(7.!6- 8."80#<3'<3(90$:1%>5*>6)8/#7/"<4'?6*;2&6.":1%>5);2&:1%;3'<4(>5)@7+?7*;2&<3'>4(;1%<2';1&90$7."80$<4(;1%8/":0$<3&:0$:0$8."8."9/$:0%6-!8."8/#<2&?5):1$6- <2%;1%90#8/"<2%>4'>4'<2%=4'?6(<3&90#>5(>5'@7+C;.?7*>5)B:-B:->5)90$:0#;1$=4'?6)?5(<2&>4(@7*:1$8/"<3&>5(>5):1$<2$  !!""$#%$'%&%'&&%&&'&'"" ! ! ! ! ! !!"  - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - -     E:*?6(?5(:1$>5)=4(5+7-!7-!1'0'5-!6.#6/$7/$3+ 3* 7.%4+!0'/&.%0'1(.&/'/(B- A+>*9(6%6&7&:(@+?*>*@-#;* 7$4!2 7#<'A+G1%I3(C-!?)=':$9$2- / + 04"2 3")&'" %# $ ''(%#" -      -    -  - -   -   - -  -  -   - - - - -  -   -  -   - -     - -    -  -  -  -               -    -   -0(/'/'/'0(3+ 1).&1)0(-&,$)".&0)0(1* 0(3+!3+ 3+ 4+ /&3*3+ 3*3+4,!4-!81%92&4,!2*4-"5-#4,#3+ 3+6.#91&70%91':3(:4);4)92'5.#6.#70#:2%;3&8/#7.";3'<4(90%8/$90$7."6-":2&<4(<4(:3'70$80%90%7.#5,!4+ 4+ 3*4+ 5,!91&7/$3+2*3+ 3,!2,!5.$6/%60%6/$92'>8-;4)81%70%70$:3'<4(91&:2':2&:1&91%90$80$7/#7/#6."80$90$80$7/#80$90%80$70$80%91&5."4-!5."5-!3+ 6.####"""###!!!######"""!!!!!!"""$$$###"""######"""""""""#########$$$%%%$$$$$$%%%%%%######$$$%%%%%%$$$$$$%%%###!!!############""""""######!!!!!!!!!"""###$$$###$$$###""" """######"""###"""###&&&$$$%%%%%%###""""""$$$%%%%%%"""!!!"""######$$$###$$$$$$######!!!"""$$$$$$$$$&&&%%%%%%$$$$$$###!!!!!!"""""""""###$$$%%%&&&%%%$$$"""###%%%%%%%%%&&&%%%%%%$$$""""""###"""""""""""""""!!!!!!"""###!!!!!! """""" !!!!!!!!!""""""""""""!!!!!!!!!!!!"""!!! !!!""""""""""""!!!!!!!!!"""""""""!!!""""""###$$$$$$""""""######$$$###"""""""""$$$$$$###"""!!!!!!!!!"""!!!!!! !!!!!!8/$6.#7/$7/$7/$7/$81%4-!4-!:2':2&3, 1)6/#7/$81&3,!3+ 81&81&70%5.#6.#8/$5,"4+!80&91'5.#3,!5.#:3(92'70%4,"3+!80&<3);2(90%6.#:1&;3(80%3*<3(8/#5, 8/$@7,90%4+80$92&7/#<3(?7+<3'5- 4+6-!7.":1%;2'90%:1&>5)?6*7/"6.!<4(?7+;2&5-!:2&>5);2&:1%:2&<3'=4)?7+?6*;2&<2'>4);1&;1&;1&:0%7/#90$<3':1%7/"90$;2&:0$:0$9/#7-"9/$:1%8.#8."8.#<3'@6*90#5+=3&<2%;1$;1$=3&?5(>4'<2%>4'?6)<2%90">4'=4'@7*C:->5(>5(C:-B9,=4'8/":1#:1#=4&?5(?5(<2%>4'@7*:1#9/"=4'>5)>6):1%<2$XJ6 ! " "!##$#$#%#%"#   !!"!"!!!"!"""!" - - - -  -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - -B8)>5'=4&:0#=4(;2%4*6- 4*-#-$4-!5.#6/$82'5.#5,#7-$4+"2)/'-%0'/'/'C- A+?*>)9(6&6&7'<(C,D. A-"=*!8'2"2 4":(>*@+A-!B-!G0$@)8"6 2, /0.0/02!*$  &%'(''&%$!     -         - -         - -  -   - - - -     - - - -  -    -           -  -  -             -  -  - -0(.&1)2*1)/'1(3+ 3*/&1(3*!/(/',$.'1* 1* 1)-%2) 5,"4, 4, 0'2*4+ 3+4, 6-"6."91%92%4,!3+ 4-"5.$4-#3, 4+ 7/$70$70%70%;5*;4);4)92'6/#6."5."80$91%6-"7.":2&;3'90$80$:1%7.#5-!91%<4(<5);3'80$91%8/$6-"4+ 5,!5,!5,!6-"6-"8/$5-"3+1)4+ 5,!4."70%4-#93(71&93(<5*81&6/$6/$6/#92';3(91&:2(:1&:1&8/$6.#7.#5-!6."6."7/#7/#7/#7/#91%91%90%7/$7/$92&5-"5-"6.#5."5-"5."3, 2+5."""" """"""!!!!!!!!!"""!!!!!!""" !!!!!!"""!!!"""###$$$%%%$$$%%%%%%############$$$%%%###$$$$$$"""!!!#########$$$"""""""""!!!"""!!!!!!"""###$$$###"""""""""!!! """###############$$$%%%$$$###%%%$$$"""!!!!!!!!!"""!!! !!!$$$###$$$"""###$$$$$$$$$""" $$$$$$%%%&&&&&&%%%$$$###"""!!! !!!######$$$%%%&&&&&&'''&&&$$$###$$$&&&&&&%%%%%%$$$###"""""""""!!!""""""$$$""" !!!"""!!!"""!!!!!!!!!!!!###"""!!!!!!""""""!!!!!! """"""###"""!!!!!!"""!!!""""""!!!"""""""""###"""""""""""""""######!!!"""########################$$$"""!!!!!!"""###"""!!! 4+ 8/$8/$6.#6.#6.#6.#7/$:3(6/#6.#:3'92&3+1)6.#70$70%1*0(7/%91'81&4."2, 6/#5,!3*6.#91&70%3, 4-"92':3(81&3,!1)7.$:2';2'91&6.":2'=4)7/$1(:1&8/$5, 7.#=4(90$4+7/#92&7/#<3(?7+<3'6- 4*5+6-!91%:1&90$90%>5)=5(6.!4, <4'@7+<3'5-!;3'=5);3';2&;2&;2'<3(>5)=4(:1%;1&=4(:1%90$;2&;1&8/$80$;3':1%90$:1%;2%90#:1%:0%8.#:0$;1%8."7-"8/#<3'?5)7.!5+=3&<2%:0#;2%>4'>4'>4'<3%>4'?6)<3%:0#=4'<3&@8*C;.=4'>5(C;-B:,<4&90";2$;1$?6(?6(>5';2$=3&?5(:0#90#=3'>5(?6);2%:0#C8*   !!"!"!"!" " !   !!"!"!"!""""""### - - - - -  - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  cT>@6(?6(@6(:1#:2%80#3*6-!3)-#0&0)5."80&6/$4-#4,"2) 2* /'/'-%/'D- A,?*A, <)8'8(8(;* @,@*C, B-!=) 9'2!0:):';'C/"E1%B-!?);$243000./,( ()($ # '''%&% $ #" !    -      -       - -      -    - -    -       -   - - -        -      - -  -  -             - - - 2* 1*0(3+ 4,!2*0'2)4+!1)/&/&1(1)0(-%/'3+!3,"1).%2)4,!4+ 4+ 1)3+4,!4+5,!6."6."91&80$3, 3+ 5-#70%5.$5-!4+ 6/#80%80&81&<5*;4);4)92'7/$7/#6/":2&:2&6-"7.#:2&<4(:2&91%:1&7."4, 81%<4(=5);4(81%91%90$7."6-!5, 7.#5,!6-"5-!6."5-!4+ 1(4, 6-"70%81%5/#6/$6/$;4(<5)92&70$5."6/#81%:3'81%91%91%91%80$8/$7/#5-!5,!7.#7.#7.#91&;2':2&:1&;2&90$91%:1&6-"6."5-!5-!6.#7/$5-"4,!70$7/$3+ !!!!!!"""!!!###!!!""" !!!!!!!!!!!!"""""""""###&&&%%%$$$$$$$$$$$$$$$$$$"""$$$$$$$$$$$$######""""""######$$$$$$"""  !!!!!!""""""""""""""""""### !!!###"""!!!###$$$"""###%%%%%%&&&$$$"""###"""""""""""" """$$$$$$######$$$$$$&&&%%%######$$$"""%%%%%%$$$$$$###!!!!!!!!!!!!"""%%%&&&&&&$$$$$$&&&'''&&&$$$###%%%&&&%%%%%%%%%###"""!!!"""""" !!!!!!"""###"""""""""""""""!!!###!!!!!!""""""!!!######"""###### !!!"""###!!!!!!!!!!!!""""""""""""!!!###### !!!###"""""" !!!!!!!!!"""########################"""###!!! !!!""""""""" 3+ 4,!7/#7/$6.#6.#6.#6.#70$<4)7/$6.#:3';3'6/"3+5.#70%80%2+ 2+ 81&92'70%4."4-"70$6-"3+ 7.#:2'80%2+4-":3';4(81%2+ 1)80%:2';3(6.#6.":2&<4(7/#3+:1%8/$7."7.":0%90%5, 7/#91%7/#<4(@7+=4(7-!4*4*5, ;2&<3'90%8/$>5)=5)7/#4, <4(@7+<3'6-!:1%=4(;3';2';2':1&;2'=5)<4(:1%90$<3':0%:0%;1&90$8/$7.";2&:2&:1%<3'<3&8/#:1$;1%9/$;1&;2&8.#7-!90$<2&<3&6, 7-!=3&<2%9/"9/";1$>4'>4'<2%=4'?6)<3&;1$>5'=4'A8+C:->6(?6)C;.C:-=4':1#=4&;2$@7)@7)>5';1#<3%<3&8/!9/#=3'?5)?6);1%9/"A7( ! " " ! !!"!"!"!! ! - - - - - -  - - - - - - - - - - - - - - - - - - - - - -  H=->5'?6(@7):2$<4':2%5, 6,!3)+",#.'5."6/%4,"3+!2*!2) 4+"1)-%F.B,@*E.!?+7&6'7( :*!=,!>+ =(@)?);&8$5#4"5#8%>+B/"D1$B.!>(6!17"9$21,)+.(% '+()&  -'%" $# ! $ -  - -  -     - -      - -        -  -  -   - - -  -  -  - - - - -  -     - - -  -  - -    -   -    -     - -  - 0(1)1)1*1)5-"6.#2*/'2*3+ 2)/&.&1(3* 0).'0)3,"4,"1(/&4+!6-"6-"4+ /'2)4,!4+ 5-!7."8/$:1&91%4-"4-"6/$80&6.$6-"4, 6.#91&81&:3(;5);4):4)81&70$7/$7/#;2&:1%6-"7/#80$:1&91%91%<3(8/#4, 80$;3'<5);4(81%:2&:0%:0$7."7."8/#6-"6-"5, 7.#7."4, 1(4,!4+ 70$70$5/#70$92&:3':3(92&81%81$70$;4(92&81%70#8/#90%:2&:1%7."6."6-"90%7/#7/#91%:2&;3';2'<4(;2&;3';3'7/#6."5,!5,!6.#90%7.#6.#7.#7/#7/#5."4-!5-!!!!  ###""""""""" """!!!!!!"""!!!"""""""""###%%%$$$%%%%%%$$$%%%%%%$$$$$$$$$###"""$$$$$$### ###############"""!!!!!!!!!!!!"""!!!!!!!!!!!!"""""""""!!!###### !!!$$$$$$""""""$$$%%%%%%$$$"""###$$$"""###"""""""""%%%$$$$$$""""""###$$$$$$%%%###$$$###"""###"""""""""!!!!!!!!!"""###%%%''''''%%%%%%%%%&&&&&&%%%%%%%%%%%%&&&$$$%%%###"""######"""!!!!!!!!!""""""###"""""""""!!! !!!!!!!!!!!!!!!$$$%%%$$$###$$$""""""!!!"""!!! """"""!!!!!!#########""""""!!!"""######"""!!! !!!######!!!"""""""""""""""###"""!!! !!!"""!!!!!!4, 3*5,!8/$80$8/#7/#6/#6/#80$;4(6/#5."81%:3'80%4-!5-"80%92'6/$5-"92'92'6/$5."5."7/$6-"3+ 6.#;3(81&1*5-";3(<4)91&3+ 1)81%:2';3(5-"5-!90%<3'7.#4+:0$7-"6-"90%>5);2'6-#91&92&6/#;4(?7+<4(6- 4*3)3*;2&>5*:1%6."<4(>7*81$5-!=4(?6*:2&6-!90$=4(;2';2&;2':1%;2'=4(<3(90$8.#;1&:0%;1&:1&7.#7.#5, :1&:2&90$=3(=4(8.":0$;1%90$;1%:0%7-!7-!90$;1%:1%7-!:0$>4';2%9/"7- 9/"=3&>4'<2%=4'?6)=3&<3%@6)>4'A8+C:->6)>6(B9,B9,=4';2$?5(;2$?5'?6(=4&:1#:1#<2%9/#90#=3(@6*?5):0$9/">4&   ! ! !!"!"!! - - -   - - - - - - - - - - - - - - - - - - - - - - - -     F<-=3&?6(@7)<3&;4'81$4+5, 4*/&/&/(6/$6/%5.$4-#3,"3+"4,"F.C- A+H0 D. A- 7&2#6':)<* :(9%;&>(<&9$9%:'8%9&;'@-!A-!C/#8$.33:$5 0)' )+-((+*&&" $'$! "  !    - -  - -       -    -         -  -   - - -    -   -         -       -         -  -     - -   - -*"+$/'0(0(2)1)4,!5-"2*0(3*3* 1)/'/'3* 3*!2) 0(1) 3+!3*!0'/&4+!5,!5,!2)/'1)6."6-"5-"6.#80%:1&91&4,!4,"70%91'6.$5-"4,!70%:2'81%:3';4(:3(;4(:3(81%6."6/"91%8/#6-!7/#91%<4(;3'91%<3(90$5, 70#92&;3';3'81%;2&8.#90$6-!90$7."7.#7."5,!7."8/#6-"2)4+ 4,!5.":3'81%81%81$92%;4(81$81%81%;4'81%81&81%80$6."6."91%91%7."80$7/#;3'90$8/#90$91%;3';3'=5)<4(<4(<4(91%80$6."5-!7/#8/$7.#7.#91&7/$6/#6/#6/#5."70$81% ### !!!!!!!!! !!!!!!!!!!!!""" ###""" ###"""###%%%%%%%%%$$$$$$&&&%%%%%%$$$%%%$$$""""""######"""""""""############"""###"""!!!!!!!!!"""!!!"""###"""###"""###"""!!!!!!#########!!!$$$%%%###$$$ !!!$$$%%%%%%$$$""""""######### !!!$$$###""""""!!!!!! !!!!!!"""""""""!!!"""###$$$$$$&&&'''&&&%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%###"""###"""!!!!!!""""""###!!!!!!"""""""""!!! !!!"""######%%%$$$%%%$$$###$$$#########  !!! !!!"""!!!"""""""""!!!"""$$$$$$###"""!!!!!!"""!!!!!!"""""" !!!"""""""""""" !!!!!!"""5-!3+0(4, 80$91%80$7/#6/#6."7/#92&6."5-!91%:2&80$4,!4-"80%:3(6.$2+ 81&:3(6/$5."5."80$7.#3*5,!;3(91&2+ 5.";4(;4)91&3+ 2*91&<4)>6+91&7.#:1&=4(7."4, :0$;1&6-"8/#<3(:1&5,!91&:3'6/":3&=6):3&3+3+5,7-":0$?6*91%4- :2&>6*91%6."=5)?6*:2&6.!91%>6*;2':1%;2&90%;2&=5)=4(90$7.":0%;1&<2';1'7-#6-"3*90%91%80$=4(>4(8.":0%;1%9/#:0$8/"5,7-!90#;1%;2&90$;2&=3&;1$:0#7.!8.!=3&=4'<3&=4'?6(=4'=3&A8+=4'@7*B9,=4'>5(B9,@8*:1$;1$>5';1#>4'?6(>4&<2$=3&>4':1$;1%=3(?6*?5):1%:0$?5'YK7   ! "!""!  - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bT>B8);1$=4&?6(<4&:3%70#4,5, 4+0'/'1*6/$6/%5.$5.$4,#G/ D- B+D+C,A->+7&4$8(=)@);(8'9%;%=&:%<':'9&8$9&;):(:&4 05!7"121-)(+--+&((''$ &'#! !    - -  - - - -    -     - -    -     - -  -  -          -  -   - - -   -     -  -       -   - -    - - -  - -* ( ( *"0'/'.&0'0(3+4, 3*1)4+ 5,!3* 0'/'4+!4+!2* 0(0(2* 3*!1(1(5,!5,!4+ 2(0(2)7/$6.#5-"6-"7.#90%:1&5-"4,!8/%91'80%6-"5,!81&:3'91&:3(<5)93':3':3'70$7/#70$80$7/#6-!7.#:1%=5);3':1&:2&;2'6."6/#:3':3';3'81%;2&9/#9/#:0$8."90$8.#8/$6-"7."7."5,!2)4+ 90%70$80%92&81&81%81%<5):3'71%92&6/#92'70$82&81%6."4, 7/#7/#7/#80$7/";3&:2%80#91$:2%:2%:1%=4(<3'<3'<3':1%:2&91%8/$80$80$6."80$;2'90%6.#6/#81%92%82%81%81%92&:3'!!!###!!!!!!!!!!!! !!!""""""!!!!!!!!!"""###""""""$$$###$$$&&&%%%######$$$''''''%%%$$$%%%%%%!!!!!!###!!!!!!"""!!!!!!######""""""""""""!!! """###"""""""""!!!"""""" $$$%%%!!!$$$%%%$$$%%%%%%%%%###$$$"""$$$######"""!!!""""""!!!"""%%%###"""""" !!!!!!###$$$#########%%%&&&%%%%%%%%%&&&&&&&&&%%%&&&''''''&&&&&&&&&%%%$$$"""!!!"""!!!!!!!!!!!!!!!""" """###$$$"""!!!!!!"""$$$%%%%%%$$$%%%%%%######""""""######  !!!""""""""""""###"""###""""""""" !!!!!!!!!""""""!!!!!!"""  !!!8/$7."3+4+ 3*6-"80$:1&91%6/#6."6."7/#91%5."3, :2&:2&80$4-!5-"81&:2(5.#1*92':3(6/#4-"5."91&8/$2*3+ ;3(:2'4-"6/#:3(:3(81%3, 3+ 91&=5*<5*90%6.";2&>5)8/#5, :0%<2'6-!7.#;2&8/$3*80%;3(5."92%<5)92%3,4,7-!6,!9/$;3'90$4, 91$>5)91%6."=5)?6*;3'80$:1%>6*<3':1%;1&:0%;1&>5*>5)90$8.#;1&=3(=3(;1'7.#5,!2)7/#80$80$<4(>5)8/#:1%:1%90#:1%90#7.!8/#:1$<2'<3':1%:0$:0#90#:0#9/"9/"=3&>4'<3&<3&>5(<3&<2%B8+=4'?7*B9-<4'=5(B9,@7*91$:1#=4&:1#=4&?6(=4&<2%=3&>5(<2&;2%<3'?6*?6*:1%<2&>4'E;,  ! " !   - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  F<->5(:1$<3&>5(;4&82%70#4, 5, 5-!0(0'4-"6/$5/%6/%6/%D- B,?)D,='=)=+8(8';*>(D(A):(9&<$>%;#9$:&9&6#7%:'>+7$136"3/./21-/ . -+)% ''()# %$!      -   -   -         - - -  -   -     -  -  -   -  -  -   -        -    -   -       - - -   -  - - - - -.%-#* )!( *!0(0(0'1)1)4, 6-"3*1(4+ 6-#4+!2)1(4,"5,#3* /'0(3*!3+!2)2)5,!5,!3)2)3*3+7/#5-!4, 5-"6."80%90%5,!4+!7/$8/%7.$6.#6."91&:2'81&:3(<5*93':3':3&70$81%91%90$8/#6-"7.#:2&=5);3'80$:2&;2'80$80$91%92&;3'80$;2&8/#:0$7-!3*6-!8/#8/#7."7.#7.#4+ 2)5, :2&80&:2'81%92'92&:3'>7,92'6/$60%3,"81'92(60%7/$6."6-"8/$6."7/#8/#80$;2&:1%80"91$:2$:1$:2%;3';3'<3'<4(:2&;3';3':1%:1%:1%6."91%;2':2&70$81%81%81%92&92&:3'<5)81%92%5."60#"""###!!! """!!!"""$$$$$$""" !!!""""""$$$$$$###%%%###%%%&&&%%%$$$###$$$%%%%%%$$$!!!###$$$#########!!!!!!!!!""""""###"""!!!"""!!!"""""""""!!!!!!"""""""""""""""######%%%$$$%%%###$$$&&&$$$$$$''''''%%%&&&%%%###"""!!! !!!!!!###!!!""""""!!! !!!""""""&&&%%%$$$$$$&&&&&&%%%###%%%'''&&&$$$%%%&&&'''&&&&&&%%%$$$$$$###"""!!!""""""###""" !!!"""!!!"""$$$$$$"""!!!!!!"""$$$$$$######$$$$$$###"""###"""!!!""""""  !!!#########""""""!!!"""###!!!"""!!! """""""""!!! !!! !!!6."8/#7.#7.#5, 1(7.#90%91%91%7.#7/#7/#80$:3'6."3+70#81%70$4-!5-"91&;3)5.#1*81&92'6/$6.#7/$:2'90%2)3+ <4);3(5."7/$:3(:3'81%4-!4,!:2'>6+=5*91&6-":1&=4)8/#5, ;1&<3'6-"7.":1&7/$3*80%:2'5."92&>7*:3'6."7."7-!4*7-":1%7/#4-!91%=5)91%6."=5)?7+<3'90$:2&>6*<4(:0$90$90$;1&>5*<3(90$90$=3(;1&;1&;1&90$7."2)7/#80$91%=4(>5)90$91%91$90$;3&;2&7/"8/"91$;3';2&90$8."9/":0#;1$:0#:0#>4'?5(<3&<3&?5(=4&;1$A8+=4'@7+B:-=4(=4(@8+A8+>5(;1$=3&;2$=4&?6(=3&;2$=4&>5';1%8/#:2&?6+>5*90$<2&?5(D:+      "!" ! - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  C:+>5(<3&=4'>5(:3%81$60"4,5, 6."1)0(3,!71&71'D. B,@*E-A+;';'<):* :* =)?&>%='=(>'>%@'>%;"=':':'7#6#8&6#4!23, -1.13 3!/!*)*)'%'&'(" %$!  -   -    -    - -      -  - - -      -   -  -  -     - -     -  -  - - -  -  -  - - -     -      - - -  - -2) 2(0%.#+!)!*")!/(.&0(2*1)3+6-"2*1(5,"7.$3* 3* 3* 5,"5-#3+!0(3* 5-#5,#2* 3*5,!5,!4*3*4, 3+6."5,!3+7/$7/$80%90%6-"6-#90&90%6-#6-#6.$91&:2'81&:3';5):3':3':3'70$80$:2&:1&90%7.#7.#:2&<4(;3'6.":2&;2'6."91%91%91%;3(81%;2'7-"8/#9/$7."90$90$8/#6-"6."8/#3*1(6.";3(;4*91'91'92(80&;4)>7,70&5/$5.$1+!6/%71'4.$6.#6-"7.#90%7/#80$6."8/#:1&91%80#8/#80#;2%<4':2&;3'=4(=5);3';3';2&:1%:2&:1%80$80$;2';3'81%:3'92&70$81%:3';4(<5(:3':3'5."4.!6/"6/"  !!!!!! !!!!!!%%%$$$###""""""###%%%$$$######%%%%%%$$$$$$$$$%%%%%%&&&&&&###"""###$$$$$$######!!!!!!""""""######### """### """"""!!!"""""""""############%%%%%%$$$$$$$$$'''%%%%%%&&&%%%$$$&&&'''%%%""""""!!! !!!!!! !!!"""""""""###############$$$%%%$$$%%%&&&%%%$$$%%%&&&%%%######$$$###$$$%%%%%%##################$$$""""""###!!! """#########"""!!!!!!"""$$$###$$$!!!"""###$$$$$$""""""""""""!!!  !!!$$$$$$###""""""""""""###!!!"""!!!!!!!!!"""""""""""""""!!!!!! !!! !!!6-"6-"7.#7."6-"3*1(6-"90%91%91%90%80$80$91%;4(6/#5-!80$;3'70$5-!5-"91&<4)5-#1*81&91&70$5-"4-!:1&8/$1(5-!=5*:3(5."70%:3(;4(92'6.#5-":2'>6+>6+:1&6-!:1&=4)90$5, ;1%=4(7."6-";2'8/$3*91&:2'5.!92&>7+;4'7/#:1$7.!5+7-":1%7/"6.":1%>5):1%7/#<3'>6*;3'80$:1%?6*>5):0%9/#8/#;1&>5*<3(8/$8/$?5*90$;2&;2&90$8/#4, 8/$:2&:2&=3'>4(:1$:0$90#:1$<3'<2&7."8/"8/#:1%:2%90$7.!;1$<2%;1$;1$;2%>4'?5(;2%<2%@6)>4';1$A7*=4'@7*B9,>5(>6)A8,@8+>5(<3%>5'<3&<3&?6(=4&;1$>6(<4&90#7."90%>5*=4)7-"90$?5)A7*    " "  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _Q<@7)>5(?6)?6)?6):3&82%70#5- 7."8/$0(0(3,!E. B,@*F. C-@,9'8%9'7(:(='?(<'9$;'A)B)C+A)<$<$;%:&9&8%7%6$5"4 - , /3 4!6#4"1 0*%((($ %''# # -             -   -   -  - - - -              - - -   - -   - -  -  -   - - -  -             - -   - -    .&0(2) 1(0&.$* *",$)".'-&0)2+1*4, 5,!3*1(4+ 5+!4+!3* 2)4+!4,!3+!2)3* 6.$5,"2)2)5,"6,!5+ 5, 5, 1(4+ 6."4+ 7/$7/$7/$80&7.$7.#90&:1&7.$5-"7.$:2':2'91&:3';4(93&92&:3&81%80$:2&:2&80$6-!7.#:1&<4(:2&5-!;2';2&7.#:2&:2&:2&;3'81%;2&6."90$8/$6-"7/#7.#6-"6."7/$5,!1(1(5-"91&80'70&7/&:2(:2(:2);4*5.$4-$3-#1* 3,#3,#1*!3+!5-#7/$:2'80&91&7/$7/#91%80$90%7/#7/";3&;3&:2&;2&=4(=5);3';3';2&:2&:2&:1%90$7/#:1&;2&80$:3':3'6/#82%=6)=6*<5)<5(;4(6/#5."70$70$70$4, 7/" !!!""" """!!!#########$$$$$$###!!!###$$$$$$$$$#########"""###%%%$$$%%%%%%%%%$$$!!!###%%%$$$"""""""""######"""!!!!!!"""""""""###!!! """!!!""""""############$$$###%%%&&&&&&%%%%%%$$$&&&&&&$$$######$$$&&&%%%""""""!!! !!!  """!!! """"""######$$$###""""""%%%%%%$$$&&&&&&$$$$$$%%%%%%%%%$$$############$$$$$$$$$###$$$###############"""""" ###$$$###"""!!! !!!"""!!!!!!""""""############!!!""""""""" !!!  """#########""""""$$$"""!!!###""""""!!!"""######""""""""" """ !!!!!!!!!4+ 6-"6-"6-!6-"6-"4+2*5,!91%:1&:2&:2&91%91%80$;3'7/#5-"91%<4(80$4, 5-"81%;3(5-#2*81&92&7/$6/#6/"80%90%3+ 7.#<5*:2'5.#70$92';4)92'6.#5-"91&>6+=5*80%5, :1%=4):1%5, ;1%=4)7."6-"=3(90&4,!:2':2'5.!92&>7*:3'8/#80#8/"6, 8/#;2&80$5-!80#=4(:2&80$;3'>5);3'80$90$?6*?6*<2';1%8.":1%>5*=4)8/#8/#?6*90$=3(=3(:1%:1&7.#80$91%;2&;1%=3':0$8."8/":0$;2&;2%9/#8/#8.":1$;1%;1%8.":1%7-!;2%90#:1$=3'?5(<3&<3&@6*>4(;1$?6)=4'@8+B:->5)>6)A8+?7*<3&;2%>5(=3&;2%?6(?5(;1$=4&;3%90#91%;3'>5*<3(5, 7."?5)?5(XJ7  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   D:+=4'=5'?7*@8+@7*:2%81$6/"5- 8/#90%0'E.!B, A+C+C-@,<*7&6%6&6$9#;%<(<*9':$>'B*B*>&<$=%>'='=);':'6$4!1, , /5"4"3 2 2 0.*&&$#! ! -%%           -  -  - -     -     -  -   -     - - - -   -           -  - - -     - -         -  - - -    3+"2*!.&/'2) 1(2(.$+!*",$*"-%-&0)2*1*4-!3+ 3+ 1(2(4* 4+!2)1)3+ 4,!3*3*3*7/$6-"4+ 2)6,!6-!6,!6."4, /'3+ 90%6-"7/$8/$90&90&7.$7/$90&:2(7.$6.$80&:3(:2'91&:3';5)92&82%93&92&80$91%91%7/#5,!91%;2';3'8/$5,!;2'90%6."80$81%;3'<4(70$;3'7/#80$7/#6."80%8/$5-"3+ 3+ 3+ 1)2*5-"7/%4-#3,"7/&80'4-$2+!81(1* 0)0) /(2+"/(-&/'2* 4,":2(80&70%7/%6/$91&6.#6/$80%80%91%:2&;3'<3'>5)=5):2&;2';3';2&91%:2&80$7/#80$:1%70$:3'92&5.":3'<5(<5(<5)=6*:3&5."5/"81%92&81%8/#5-!6-"4, 5-! """!!!######"""###$$$$$$$$$$$$"""######"""""""""$$$%%%%%%$$$&&&&&&%%%$$$""""""######"""!!!"""######""""""!!!$$$###"""######""""""#########$$$$$$###$$$$$$&&&&&&'''&&&%%%%%%%%%&&&&&&############$$$###""""""!!! """ !!!"""!!!"""$$$"""$$$###!!!"""###&&&%%%&&&&&&$$$$$$$$$$$$$$$#####################$$$#########""""""$$$######"""!!!"""$$$$$$"""!!! !!!!!! ###"""###$$$!!! !!!"""""" !!! """ !!!!!!"""######""""""!!!!!!"""$$$###!!! !!!###""""""###!!!"""###  !!!3*5,!5,!5, 6-"6."7."4+ 4+ 6-!:1%:1&:1&:1&91%91%8/#:2&7/#5-!80$<3'7/#0(3+ 7/$92'6.#3, :2':3(81&70$70#90%8/%4,!80%<4)92'5.#70$92&;4)81&6/#5-":2'?7,=6*:2&7.":1&=4(90$6-!<2'=4)7."7.#<3(90&5,!91&91&5/":3&>7*;4'8/#6-!8."7-!8.#<3'91%4- 7/#=4(;3'91%<4(>6*<3'80$7/#>6*?6*=4(<3'8.":1%?6+>5)8/#8.#=3(;1&>4)=4(;2'<3'7/#80$90%91%:0$<2&90#8."90#<2&=3';1%90$8."6- 90#90#:1$90#;1%7-!9/#7.!90#<3&>4(=3'=3'?5)?5);2%>4(>6)B9,C:.=4(=4(@8+@7*;2%:1#>4'<3%;1$?6(>5(90#<4&<4&80#:2&=5*>6+:2'4+!6-"=3'<3&D9*    - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - -    B8)=4'<4&>6)?6)=5'70#81%81%5, 7-"E/"C- A+A)A*C-!=)6%6&6&7&8$9!9%9'8(;&<%;$?(>&8!:#?(>(<'=);(;(6#4!.+ /125#3!.-+****%! $#! ""    -        -    - -    -   - -     -  -   -   - - -         -   -  -  -           -  - - - - -    - -2+"3,"1* ,$-%0(1'2'.$,"+#-%,$.'/'1)2*2*6."3+1)/&0'3)3*1)2)5,!6-"3+ 3+3+90$7.#4+ 2)6-"8/#8/#8/$5-!0'3+ 7/$6.#80%80%:1&:1&7/$7/$:2';3(8/%7.$91&;3(:2'81%:3(=6+92&:3'93&92&91%80$90%80$7.#:1&<4(;2&7."4, 91%8/#3+ 6."92&;4(;4(80$91&6.#6.#6.#6.#80%80%6.$4,!4,!2* 0(0(2*4,"1) 0)1* 3+"3,"2+!0),$*#+$*#,%,%,%.&1)2* 6.#3+!4,"6.$4-"7/%6.#6.#81&6/#;3(<4(;3';3'<4(<4(:2&;3':1%:2&91%;2&80#6."91%:1%7/#:3'70$6/";4(<5(;5(<5)<5):3'6/#6/#81%;4(:2&7/#6-"7/#5,!3+ 4,!4,! """"""###"""""""""###$$$%%%%%%###%%%%%%###""""""$$$%%%&&&$$$###%%%&&&%%%###############!!! """###"""###"""""""""$$$$$$""""""!!!!!!###$$$$$$###"""""""""%%%%%%&&&%%%%%%'''%%%$$$$$$###$$$$$$!!!$$$""""""###"""  !!!""""""######""""""%%%$$$$$$%%%%%%$$$$$$#########$$$###$$$$$$"""""""""###""""""""""""""""""""""""###""""""###"""###$$$###"""!!! !!!### """### !!!!!!""" !!!!!!!!!""" !!!"""############""" !!!"""""""""### """"""!!!!!!"""$$$######!!!7.#3*3*5,!5,!4+ 6-!7."7."5, 4, 6-!91%90$90$91%90$90$90$<3(90%6-!90$=4(7/#.&4+ 80%:2'6.#4,!:2';3(92&71$81$8/$7.#5-"91&<4)91&5."80%;3(<5)80%5-"4,!91&?7,=6+;2'90$;2&=4(:1%7-"<2'<3'6-"7.#:1&8/%6-"91&81%5.":3&=6*:3&7/#8/"8."8."8."<3':2&5."8/#=4(<3'91%=4(>6*;3'80$6-!>5)>5)=3'<3'8.#:1&?6+>5)9/$8.#;1%<2'>4)>4)<3';2'6-"80$91%8/$:1$<3&:1$90#:0$;2%<2&;1%90#7-!6- 9/#90#90$90#:1$8."8."7.!90#<3&=3'=3'=4'>5)>4(<2&>4(=4(@8+C:.>5)>5)B9,@7*90"90"=4&91"91#=4(=4(8/";2$=4(90$91$>5)?7,:1'5,!7.#;2&<2&A7) !   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  XI5>5'=4'=4(>5(<4':2$4-!70#80$F/"C.!B, B,A+@)?)<'8%8'9';&<%9%9'8(;(=';#:#:#;%8"9#=(?)=(=(<)7$3 /, -24!3!4"4#0/-(' ((*$"#"""   -  -         -    - -   -  -  -   - -    - - - - - - - -    -  -  - -   -  - -    - -           - - - -    -1*!1*!2+"3+"1) ,$,$0'0'0&-#-#,%.&.&1)0)0)2+ 2+6."5,!0(/&1(4*3* 1)1)5-"7/$5-"4,!4+ 8/$7."4+ 1(6-!8/#7.#7.#6-"1)3+ 7/$6.#7.#90%;3(;3'80$8/$<3(<4(90%7."90%;3';3'81%;4(?8+92&:3'93&:3'92&80$90%90$8/#8/$<3(;2&80$5,!8/#5-!2*5.";3';3':2&80$80&6.$5-#5-"4,!4,"5-"4,!2+ 0(/'1)+#,%-&&2* 5-#wvuuusqqolljeecggfppovvu|{{3,"4-"2*2*0(1)/(0(1)3+ 2* 4,!4,!7/%6.$92';3(;3'<4(=4(:1%80$91%8/#:1%;2&;3'8/#7/#:1%91%70#;4'70$6/#92&;4(;4(<5)=6*;4(6/#6/#:3'92%91%6."7/#91%6.#3, 4,!5."3+ 7/$7.#!!!  ######""""""%%%###"""%%%$$$$$$&&&%%%"""!!!"""#########$$$###$$$%%%%%%###"""#########""" !!!""""""""""""######"""!!!%%%$$$"""!!!############ !!!###&&&&&&(((&&&&&&%%%%%%%%%###"""%%%%%%$$$$$$###"""""""""    ######!!!"""!!!"""$$$%%%###&&&%%%############%%%$$$"""######"""""""""!!!!!!!!!!!!!!!!!!!!!"""######"""!!!"""!!!"""""""""!!!!!!!!!  !!!"""###"""!!! """######"""!!! !!!!!!!!!!!!""""""###""""""""""""!!!!!!""""""###$$$######""" """######"""!!!90%6.#2*3*5,!7."5, 6-!7/#7."5, 4+7.":1%90$90$91%7/#80$:1%=4):1%6."91%>5)8/#.&4, 91&:2'7/$5-":2';3(91%80$81%90%7.#6-"91&;3(80%4-"81&<5)<5*81%5-"4,!80%?7,>6+;2&:1%<3(>5*;2&8."<2';2'6-!7.#;1&90%7/$92'91&4- 81$>7*:3&80#7."8."9.#8/#;3';3'6."90$<4(:2&80$<4(>5);3'90$5-!>6*?6*<2';1%9/$:1%=5)>5):1%8.#:0%<2'=3(>5)=3(:1&4, 7."90$8/#:0$<2&;1%:1$;1%:0$;1%:1$8/"7.!7-!90$;1%8/"7.!:0$90$90#8.":0$<2&=3'=3'>4(>5)>4(=3'>4(;3&>6(B:.=5)<4(@7+@6*9/"9/!?6(90"80";3&;2&80#;3$<3'8/$90"=4'>5+:1&6-#:1$<3%=4)>5*  - - - - - - - - - - - - - - - - - -  -  ?4%;2%?6)?6)>6)<4'80#4- F/"D.!B, C-!C- B,!@*<&:%;);+!=( ?'>):(8(:(=(A)?'8!9"8":$:%<'=(=(=(:'4"0-+ ,03!6$3!3"2 -,**,(&&$#   -    -  - - - - - -   - -       -            - - - -     -  - - - -   - -       -          -  - - - -  -2*!3,"1* 0) 2+!3,"1) -$-%/'/'/&.$.$-$-%.&0(0(0(3,!2*2+5, 1(/&1(3)4+ 2)1)5-!7/$6.#5,!5,!8/$7.#6-!2)6-!7."4+6."6.#3*3+ 8/$6.#6.#91&<3(<3(80%80%<3(=4)91%7."91%;3';3'80$;4'=6*82%92&:3':3':3'91%90%80$7.":1%<3(<3)90%6-"7/#6."3, 6/";3';4(:3'81%92'6/$3+ 3+!3,!3+ 1*0(-%2+!/'( srqrrpqqouusttrrso{|x}}{wwutusrrqqqpnomllk( *"*"+#0(2* 3+!5-"6.#80&91&:2&91%;2':2&:2&90$7."91%;3';3'7/#80$;2&:2&81%:3&6/#6/#92&;5(<5)<5)<5(:3'71$92&=6*:3&92&91%91%92&70$5-"3+ 4,!6.#7/$5-"6-"6-!2)7."!!!  $$$$$$!!!"""%%%###"""###"""$$$$$$######""""""###""""""############%%%$$$"""###$$$###$$$#########$$$###"""###$$$###"""###""""""!!!!!!!!!"""###!!!!!!"""###$$$###%%%%%%%%%%%%&&&$$$######&&&&&&###$$$###!!!  !!! !!!$$$$$$$$$$$$###$$$%%%%%%############$$$$$$$$$%%%%%%######"""""""""###!!!!!!!!! !!!!!!!!!!!! """"""!!!!!!!!!!!! !!!""""""!!!!!!"""###"""#########""" !!!$$$###"""  """"""!!!""""""""""""###"""#########!!!!!!""""""######!!!!!!######"""""" 80$91%7."2*3*5,!7.#6-"90%7."6."4+4+7/#:1%90$:1%:2&6."7/#90$;2&90$6.":1&=4(80$1(4, 80%:2'80%6.#;3(<4(91%70#80$:1&8/$7.#91&;3(70$4-"81%;4)<5*92'5-"3+ 80%?7,>6+:1&90%<3(?6*<3'8.#<2&:1&5,!6-":1&:0&7/$91&81%4- 70#=6)<4(90$7.!9/$9/$7.":2&;4'7/#90$;2&90%7/#<4(<4(;3'90$7.">5)>5);2&:0%:0%:1%<3'>4);1&90$;1&<2'=3(>4)<3':1%4+4, 80$90$<2&<2&:1$:0$<2&9/#:1$:1$9/#8/"7.!;2%<3&8."7-!:0$;1%:1$8/":1$;2%=3'=3'=3'>4(>4(=4'=4':2%=5(A9-=4(:1%=4(>4(8/!8/!A8*91"91#;2&8/#8/"<3%<3(8/$80"=5'>5*90%6-#90#;2$<3(>5*WK8 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    :0#:1%@7+>6*=5(<4(F/"D.!B- D/#D-!C,!C-"?);&9':*!<(>&?(>*<+;';'='>&>'<%8"8"<&=(<(<)9&7%8&4#-) -.--1 3"0//++*('&&%%#      -        - -  - - -     - -       - -     -     -  -   -     - -       - -      -     - - -  1) 3,"4,"3+"2+!3+"3,"4,#1) .%.%/'/&/&0&/%-%.%.%.&.&/(3+ 1*2*6-"3+0'1(3)4+ 2*2*6-"7.#5-"5,!6-"90$8/$6-"3*6-!7.#3*6-"6.#3+ 2*7.#5-"5-!91&;3(<4)80%80%;3(<4)90%7.#:1%:2&:2&7/#;4'>7*92&81%:3';4(;4':2&:1&90$8/#:1&;2':1'6.#6-"80$92&6/#5.!81%:3(91'92'92'7/%3,!4,!3+ 0(,$5-"\\[lmjrroturrrpttr{{ztttgggaaaccckkkȢ{|yiigcda^^]VVU``_ddc,$.&3+!4,"6.$80&90%90%;3'7.#5, 6-!7.#91%;2';2&8/#80$:1%80$5."93&92%60#92&<5)<5):3';4';4(81%92&=6);4':3&:1%91%92&80%4-!4,!70$91&6.#7/$5-!3*4+5, 1(0(4+"""!!!!!! ###"""!!!!!!$$$$$$######!!!###$$$"""""""""############"""""""""""""""###$$$$$$%%%$$$$$$&&&$$$$$$###"""!!!"""$$$$$$"""!!!!!!"""""""""""""""""" !!!###$$$###$$$%%%%%%%%%$$$$$$$$$######%%%%%%######!!! !!! !!!###""""""$$$###%%%%%%$$$###$$$%%%%%%############$$$###$$$$$$$$$###""" """""""""""""""""""""###""" !!!!!!!!!""" !!!""""""""""""#########"""!!! """"""!!!"""""""""!!!!!! """###"""!!!######!!! """"""######!!!""""""""""""###"""!!!###"""""" !!!"""70$91%91%8/#4+2*5, 7.#8/$7.#8/#6.!3+4+ 8/$;2'90$;3&:2%6.!6."7/#80$8/#5-!91%:2&80$3+6-"91&:2'7/$6.#;3(;3'80$6/#7/#90%8/$6.#80%:2'6/$4-!81%<4)=5*;3(5-"2*80%@8->6+90%8/#;2'=4(;2&9/#<3';2'7."6-"90%90%7/$91&92&4- 6/#<5)=5)91$7.!:0$9/#5, 90$;3'80#91%<3'91%6.";3'<3';3'91%80$>5)=4(;1%;1%;1&;1&;1%=3':0$9/#<2&=3'<2'=3(;2&90$4+5-!:2&90$;1%:1$8/#9/#<3&8/":0$;1%90#9/#8/"=3'<2&9/#8.";1%;1%:1$9/#;1%<3&=3'=3'<2&>4(>5(=3'=3':1$;3&@7+<4(<4(@7+@6*90"7. @8*91#<3%=5(91%90#;3%<3(7.#7/!>5(>5*7.$5,!90#<3%;2(>5*D;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    YK78.":1%>6*=4)<4(D.!C- D/$D0$@)>'@*=(:'8'9&;#>&?*<*>)>):%9"9!9"8"7"6"6"=)>+=*:'4"3!2!,*-000/.-*+*))'%$ # &%$#   -        - - -        -     -   - -         -           -    -   -       - -  -  - -  1)5-#2+!4,"4,"3+!4,"5.$4,"3,#2*!/'/'0(2)0'0&/%.%.&.&/',%.&0(0(3+ 6."3*0'2)4*4+ 2*2*6-"7.#6-!5, 6-"8/$7.#5, 3*6-!8/$5,!5-"6.#3+ 1)5-!5-"5,!90%:2'=4)90%90%<3(=4):1&8/#;2&;2':3'70$;4(?8+:4'93&;4(;4(;3':2&:2&80$8/#:1&;2(;2(8/%6.":2&81%5."70#81%91'70&81'92'5-#2* 2+ +$&ffcffdfgejjjfff___\\\[[[``````]]]WWWRRRVVVOOOLLLOOOPPPVVVYYY^^^```___ddduuu}}}mmjYYVWWVddc5.#/'0)3+!6.#6-"6."90%7/#5-!5-!6-"90$:2&;2&80$90$:1%90$5."81%92&70$92&<5(;4(81%:3'>7*92&92%;4(;4(;3';3':2&92&70$5-"7/$80%6.#6."8/$7."6-!6-!4+ 3*1(2)3+5, 2)/&"""###""""""!!!!!!""""""######$$$$$$$$$$$$"""!!!!!!!!!"""######$$$###!!!!!!!!!"""$$$%%%%%%$$$###$$$###""""""""" """$$$### """"""######"""!!!!!! """!!!######$$$$$$$$$$$$$$$###$$$%%%$$$######!!!  !!!!!!##################%%%%%%######$$$%%%###$$$$$$%%%%%%%%%#########!!!""" !!!""""""!!!"""#########"""!!!"""!!!!!!!!!!!!  !!!""""""######"""###"""!!! """ """!!! !!!"""!!! !!! !!!!!! !!!!!! ### !!!""""""###"""!!! """6.#4, 6."70$7/#80#6-!3+5,!7.#8/$90$:1%80#5, 3*7.#<3(:1%;3&:2%7/"6."7/#90%90%6."5-!:2&80$4, 6.":2':2&6.#5-"91&92&7/#6."7.#8/$8/$6-"7/$;3(70$4-"81%<5)=5*;4)5-"1)70$?7,>6+80$7.":1&<3':1%9/$=3'<3(8/$6-":1&90%5-"7/$81%4-!6/#<5(<5(90$7-!8.#8-"5, 90$:2&7/#91%<4(:2&6.":2&<3';3'90$8/#=4(=4(:1%;2&=3(;2&;1%<2':0%9/#<2'<2';1%;1&:1%:1%5-!90$=4(90$90$:0%6,!:0$<2&8/#:1%;1%:0$90$8/"=3';2&:0$8/#;1%:1$90$90$<2&=3'=3'<3&<2&>4(?5)=3'>4(90#<3&@7+;2&;3'?6*?6*:1#90"@8*;3$<4&=5):2&:1$<4%=4)7.#6. >5)?6+8/$6-":2$=5'<3(=4)A8* - - - - - - - - - - - - -  - - - - - - -    -B7)8."<3'=4)D. C- A+F1&B,!;%>(@*<(8'8%9!;!>(?+ <'9%=(:%7"5346!9%7#8%=*:(9'2 ..++.0 /1!3$-,+(*)&&# $%&"  !   -   -      -   - - -            -     -  - -      -  - - -            -  - - - - -       - - -/'2* 1)6.$4,"3,!3,!2+ 4-"6.$4,"3+!2*!.&.%1(2)1'0'/%.%.&/'1)-%-%/'0(3+5-!2)0'3)4+5,!4+2)6-"7.#6-!4+5, 6-"6-"4+ 3*5,!8/#5,!5-"80%7.#2*3+ 4,!3+ 80%91&<4)90%90%<3(=5):1&7/#<3(<4(<4(81%;4(>7+;5(:3';4(:3':3'91%:1%:0$90$;1&<2'<3(8/$2*70$92&2+6/"60#81&6/%70%70%1)/(0(```ffe```aaa]]]QQQNNNLLLJJJHHHGGGLLLMMMJJJJJJDDDEEE======???FFFMMMPPPRRRLLLFFFHHHOOOUUU___\\\fffppp``]_`]llkmml2* /'2*4+ 7/$:2&80%5,!4,!6-";2&<4(;3'90$91%:1%80$5."93&<5)81%6/#82%<5)81%;4(>7+92&92%;4(;4(:3&91%80$91%80$6.#70$6/#4,!6.#7/#91%6-!3*6-"5, 2*2)2*6."6."2)0'6,!9/#3(######""""""!!!!!!!!!!!!######$$$$$$%%%%%%"""!!!!!!!!!!!!"""######"""!!! """#####################$$$""""""""""""!!!"""###""" !!! !!!!!! !!!""" """"""###""""""#########$$$%%%$$$$$$$$$"""!!!!!! !!!!!!!!! !!!"""%%%$$$$$$###$$$%%%$$$$$$$$$%%%###$$$###"""%%%%%%######"""""""""!!!!!!"""###!!!"""#########!!!!!!!!!!!!!!!!!! !!!!!!""""""######""""""###"""!!!###!!!!!! !!!     !!!  !!!!!!!!!"""######!!! 6.#6.#6."6."7/#7/#7/#6."4+ 6-"8/$8/#8/$:1%:1%7."4+ 8/$<3(;2&;3&:2%80#7/"8/#:1&:1&91&70$:3'7/#3+6.";3';3'7.#5-"70$81%6/#5."7/$80%8/$4,!7/#;3(80%5.#80%<5)<4);3(5-"0(7/$>6+=5*8/$7.#:1&<3';2&9/$;2&;2'7.#6-!:1&90&4,!6.#70$4- 6/#<5(;3'8/#7-!8.#8."6-!91%:3&80$:1%=4(<3'7."91%<4(;3'7/#7/"<4(=3(:0%<2&>4):1%:1%<2';0%7-"<2'<2':0$:0%:0$;2&8/#:1%<3'9/$90$<2&8/#;1&;2&8/#:0$:1%9/#:0$8.#=3'?5*:1%7-!9/#:0$8/":0$;1%<2&<3&<2&<2&>4(>5)=3'>5(7/!<3&@7+:1%<3'@7+A8,:1$90#?7(<3%<4'=4(:2&91#<3%<3(7."5,<4'?6+8/%6-";3%>6(>5*=5)?6( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   >4&7."E. C-B+D/#D.#A+?)?*?*<):&:#; =%@+;'8#:%8#@*9#2018$;(8%7$6#6#1,+,/.+0 2#2".*')+)*(&%" #"      -     -  -           -  - -    -         -       - - - -   -   -       -       - - - -3,!1)2* 2+ 2* 6.$4,"3,!4-"3,!4-"4-#3,"3,"2*!-%-$1(0'0'/&-$,#.%0'3+ 0(1(1)1(3+5-!2)0'3*5+ 6-!5,!3*6-"7."5,!3*3*7."7."5,!4, 5,!7.#5-!4+ 8/$80%3+ 4+ 6.#3+90%90%<3(90%80%<3(<4(80$6-"<3(<4(<5)91%:3'=6);4(92&92&70$92&90%90$:1%90$;2&<3(;2(8/$5,!5."92%1*4- 6/#5.$5.$4-"3,!+$-%dddaaaXXXQQQMMMFFFBBBAAABBBAAA???>>>@@@>>>:::;;;555:::444222999===@@@AAAEEEBBB???AAAJJJKKKNNNQQQTTTZZZYYY```ghemnlnnmqpp0(0(3+ 80&80%6.#3+ 3+ 91%;3';2'90$:2&;2&80$70$:3';4'92%:3':3'<5)81%;4'<5)70$70$:3&;4(;4';4':3&92%81$70$70$6/$5-"7/$7/#90%5-!4+ 7.#5, 2*3+5, 80$8/#2(5+ 8."5+ 2(4+6-!7/#8/$ """###"""###!!!!!! !!!"""######$$$$$$$$$######""""""!!!!!!"""""""""""""""!!!"""#########""""""###############"""!!!"""###!!! !!! """!!!!!!"""""""""!!!"""############""""""!!! !!!!!! """###$$$$$$$$$$$$%%%%%%$$$$$$%%%%%%$$$%%%$$$$$$###""" !!!######""""""!!!!!!""""""$$$$$$"""###!!! """!!! !!!!!!!!!""""""###$$$###""""""!!!"""#########"""!!!!!!!!!   !!! !!! !!!""" !!!!!!!!!""""""3+!6.#6.#80$80$:1&91%7."4, 3+6-!90%90%8/#90$90#7."5,!90%=4(;2&<4':2%80#7/"90%;3':2'80$80$;3'80$4+ 6-";2'=5)91%5-!80%92&6/$5."6."7/#7/$3+ 7/#<3(90%7/$90%<4)<4);2'6-"1(80%>6+=5)80$80$;3'=5)<3':0%<2';2'6-"5,!<3(:1'3+ 7/$70$4-!81$=5)<4(8/#7- 9/$9/$7.":1%;4':1%;2&=4(<4(7."80$=4(<4(7/#7."<3'=4(:0%<2&=3':0$:0%=2';0%5+ =2'=3(<2&<1&90$<2'8/#:1%;2&90$:0%<3'90$90$9/$7-"9/#90$7."8/#8/#<3'>5):0$6-!8/":0$8."9/#9/#:1$;1%;1%<3&>4(>4(<3&>5(90#<4'?6*;2&=4)@8,?7+;3&:2$<4&:1$<3'>5)<3'90";3%<3(7/"4,:1%=4)90&7.#=4&?6)>5+=4)>5(TE1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - -  `Q=E. C-C,E- C, C, A*A+A, @+ >)=%="=%?);'6!29$A+7"6!3, -18%;(8&4"2 0.*' ) /3#/ ,./($ &# (*(($! ##    !  - -       - -                   - - -  - -  -      - - -  - - -  - -  -     -      - -  -   - - -1*4,!3,!3+!3+!1)2*6.$4-"5-"4-"4-"4-"4,"3,"3,"2* -%-%0'/&/&.%-$,#.$0'5,!2)3*3*1)3+5-!3*1(3*5+6-!3*2*4, 6."6-!4+ 3*6-!7."6-!5,!5,!7.#6-"4,!7/$90%4,!5,!80%3+ 91&:1&<4)91&80%<4(;3(7.#5,!;3';3'<4(92%:3'<5);4'92&92%70#92&:1&90$90#:0#<2&<3(;2'7.$5-"80$7/$2+2+3,!2+!1*!.'2+\\\bbbSSSTTTHHHAAA???999666666777777555333444111...///222555555333555444999888999888666777;;;:::@@@EEEFFFGGGHHHKKKTTTaaanolopnqqp70$-&3+ 5-#5-#3+!4-"81&:2&;3'6-!<3&<3&91%80%;4(:3':2&>7*<5);4(5."92&<5)81%70$70$:3':3&:3&;4'92%92%93&81%6/#6.#7/$70$7/#7/#4+5, 4, 3+5, 7/#:1%80#4*7-!8.#6, 4*6-!6-"6."5-"3+ 5,!4+7." ###""""""""""""###$$$""""""###$$$###$$$############"""###$$$###"""""""""""""""""""""#########"""######""""""""""""""""""$$$$$$!!!  !!! """######""""""###$$$###$$$$$$###!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!"""######$$$&&&&&&$$$$$$$$$$$$$$$%%%$$$###""" !!!""""""""""""!!!!!!"""#########"""###!!!!!!!!! !!!!!!!!!"""######"""######"""""""""""""""###"""!!!  !!!!!!!!!  !!!!!! !!!!!!###"""!!!""""""!!!!!! """4,"2* 5-"6.#7/#91%<3(:2&6-!4+4, 6-"80$8/$6."7/"7."7."4+ 90%=4)<4(<4':2&91$7/#91%<3(:2&7.#90$<3(91%5, 6-!;1&>6*;2&4, 80%;3'80%5.#6.#7/$7/$3+ 6.#:2'91&90%:1&=4)<3(;2'7.#2*:1&?7+=5):1%90%<4(>6*:1&7/#;3';2'5-!4, <3'=4)3+ 6.#70$4- 81$<5(<4(8/#6- 9/$:0%8/#:2&<4(:2&;2&=5)=5)7/#7/#<4(<4(80$7/"<3'>5);1&<2'<3':1%:0%=2';1&5+ =3(>4(=3'=3':1%;2&8/#;3';2':0%;1&<3':0$8."8/#8."90$:0$7."7-"8.#;2&>4(:0$6, 6- 9/#9/#9/#8.":0$;2&;1%<2&>4(=4(<2&=4'8/"<3&?6*;3'=4)B9-?6*:2%;2&<3&;2%;2&>5*>5*:1#<3&=4)8/#5-:1%>5+<3(7.#;3%>5)?6+>5)>5'>3$ - - - - - - - - - - - - - - - - - - -  - -  E. D-D,H0!I0#D+A(>&>(A, A,!B)A%@&@(:&6!36!:%;%8"3/05!8%:(9'3"0/-*)+.0!0!-,)% !# -&&&&%&#"        - - -   - - - -            -      - -  -  - -     - -   -     - -  - - - - -    -     - - -   - - - -3,!1*2* 1*3+ 3,!2* 3+ 6.$5-#4,!4,"4,"3,!3,"3+!1* 1).&/&0(0'1(1(/%.$.$1(5,!3*3+ 4+ 2*3+5-!4+3)3*4*6."3*3*3*6-!6-!4, 4+7."8/#6-!5, 4, 6."5-!3+ 6.#7/$2*4,!80%4,!80%91&;3(91&90%=4)<3(7.#7.#;2'<4(:3'92&;4(=6*;5(93&92%70$:3';3'90%;2$<2%<2&;2'<3(91&7/%80$81&3,!3, 3,!/(,%2+ ___[[[PPPDDDDDD???:::222222...------......---//////---+++---///000000+++)))777888555333000+++...---555>>><<<>>>>>>@@@GGGNNNYYYgheopmppoqqp3,!0)1* 0(2+ 70%80%;3'80#;3&:0#90$92';4):1&<3'>5)=4);3'91&;4*<5+81&70%91%;4':3&81$92%92%92%81%81%81%7/$7/$81%6."8/#3*5,!6-!6."7/"80#81%5-!2(6,!:0%7-"5+ 7."7.#7/#5-"5-"6.#6."2).%,#1(3) """############$$$###!!!"""$$$$$$$$$$$$###$$$$$$%%%"""###%%%%%%$$$$$$$$$$$$"""""""""###$$$$$$#########""""""###""""""$$$$$$$$$"""!!!!!!!!!!!! !!!!!! """###%%%$$$###"""#########$$$$$$&&&### !!!###""""""""""""!!!"""  !!!"""""""""$$$%%%%%%%%%&&&%%%%%%############"""""" !!!!!! !!!"""!!!""""""""""""!!!"""   !!!######$$$"""!!!"""#########""" """"""   !!!"""!!!  !!!!!!!!!!!!!!!!!!"""$$$###!!! !!!###5.!4,"0(4-"7/#7/#;3'<4(90$6-!4+5,!6."6."5-!6-!7.!7."8/#5,!8/$=4(<4(;2&:2&:2%7."8/$;3':2&8/#90%<3'80$5, 6-!<2'>5):1%3+90%;3(80%6.#80%80%7.#4+ 6-"91&:2':2';2'<4):2':1&6."3*91&?7+>5*91%80$<4(=5)80$6.";2';3'5-!3+<3'>5*3, 5-"80%5."80%=5*<4)7."6-!8/$90$80$:1%<4(:2&:1%=5)>6*8/#7.";3'<4(91%7."<3'>5)<3'=3'<2';1%;1&=3(=3(7,!=3'>3(<2'<2&:1%;1&:1%=4(=4(90$:1%<2&9/#7-!8."8/#:0$:0$7-!6, 7-!:0%=3(9/#6, 7-!:0$9/#8/"8.":0$=3';1%;1%=3'<2&;2%=3&90#<4&@7+<3(<3(B9-=4(91$:1$<3&:1$;2&>5);2&80!;2%=4)7."7. <3(?6+<3(90$=4&>5)>5*=4(<3&;1" - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - -  - E. D-D-D+D,F,D+?&;#='@+ C+D)C(A)?)8#21:%?*9#41, 4 =):(6$7&//,+**-0!1"0!,+'% !" ))$$#""##  !   -  - - -             -       - - - -   - -     -         - -  -      - - -  - - - -   - - - -1* 4.#3-"2+ 3+!3,!3+!3+ 4,!4,!7/$5-"4,!4,"4-"3+!2+!2+!1) 3,"0(0(1)1(1(2)/&.%.$2(5,!3*3+ 4,!3*3*4, 2*3*3)4*6-!4+3*3*6.!6."6-!5,!8/$90$5,!4, 4+ 6."5-!3+ 6.#6.#2)5-"90%8/$;3(<4)<4)91&91&=4)<4(8/$90$<3(<3(91%91%<5)>7+;5(92&81%70$:2&;2'90$:1$:1$;2&;2(<3);2(7.$80%91'1*1+1+(!YYYZZZPPPJJJEEE===???999555///---++++++)))***++++++,,,+++***)))))))))******&&&)))111333111---+++)))******...444777;;;999888===FFFJJJTTT```ghemnlmml81&1* .'0)81&92&;3(90$<3'<3'91%81&:2'80$:2&<4(;3'91&91'<4*=5+91'81&:3';3';3'91%7/#6."6.#6/$6.$7/%6.$4-!7/#6."80$5-!8/#8/#7/"80$91%6."2*2)7-!9/$7-"6,!7."6-!6."6.#6.#6.#6."0(-$.%3*3)0&.%0'4+ """""""""###""""""$$$%%%"""###%%%$$$"""###%%%%%%%%%###"""###%%%&&&%%%%%%%%%$$$"""%%%$$$$$$%%%%%%$$$$$$###!!!"""###""""""###""" !!!""""""!!!!!!  !!!!!!######!!!$$$$$$""""""""""""###$$$%%%%%%###"""""""""###""""""$$$###""""""!!! """""""""###$$$%%%$$$###"""###$$$"""!!!"""!!!!!!!!! !!!""""""!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! !!!###""""""###"""#########"""""""""#########!!! !!!!!! !!!!!!  !!! """"""######!!!""""""92&81%0*1)1*5-"7/#80$<3'<4(80$6-!4+5,!7."6-"7/#:1$90#6.!7.#5,!8/$<3(<3(:1%91$:2%6."7/#;2':1%7."90$<3(8/$5, 7-"<2'<3(8/#3*90%;3'91&6/$90%90%80$7.#8/$:2&:2&;2'<3(=5);3':1&6."3+ 91%?7+>5*91%7/#<3(=5)80$7/#<4(=4(6."4+ <4(<4(3+ 5-"7/$5-"7/$=5*<4(80$6."8/$80$7/#90$<3(:2&80$=4(=5)80$6.";2&=4(91%5, :2&>5)<3'=3'<2&;1%=3'>4(>4(7-"<2&=3(<1&:0%:0$;1&:1%>5)=4(:1%;1%<2&9/#6-!8."8/#8/#9/#6-!5+5, 90$<3'8."7-!90#:1$7-!6- 9/#90#<2&;1%;2%=4';1%:0$<3&90"<3&@8,<3'<3(A9-=4(80#91$<4'90#<3'>5):0$7/ :1%;2'7.!80">5*?6+;2(90$=4&>6*=4)=4(=4';0" - - - - - - - - - - - - - - - - - - - - - - - - -  - - -D. D-E-G.D*B)B)C*>%<$='A*F+E)A(?(;&5 14:%9$6!3/05!=*8&9(1 1!.-(' +.-/ ,(+*'# '-%" "#! !$"!  -   - -  - - - - -  - - -     -      - - -  -   - - -    -      - -           -  -     - -  - - - -3* 0(1* 2,!2,!1+ 2+!3*!3+!4,"6.$4,"80&6/$3,"4-#4-"2+!1* 3,"4,"4,"1)1)3* 2)1)3*0&0&/%1'4+ 4+ 4+ 4,!3+ 3+4+2)3*2)3*6-!4, 3*3*6-!6."6-!4, 8/#80$5,!4, 3+6-"6-"3+ 7.#6.#2*6-"80%80%:2&;3(:2'8/$80%<3(=4)90%90%<3(<3(91%91%<5)>7+<5)92&70$6/#:2&;3'91$:1$;2%;2'<3(<3);3)6-#70$6.#/(/(UUUXXXNNNGGG@@@<<<;;;:::888///,,,---...***'''&&&&&&((('''(((''')))&&&'''%%%'''$$$$$$&&&)))+++---''')))(((''''''***...111666444666===DDDDDDIIINNNQQQZZZdebhhgfff/(0)70%81&;3'91%:1%;3&81%80&91&7.#90$;2&;3'91&92'<4+<4*92'91':2&92&;3':2&80$7/#7/$5-"5-#6/$5-#3,!6.#7/#;3'6."7.":0#:0"9/"8/"6,3*6, 9/$:0$8.#8.#9/#7/#90$:2&7/$80$5."1(/&0'4*4*1(0'1)2)3*2)0'/&1(1(1(7-"1*  !!!$$$"""""""""###$$$$$$%%%$$$"""######$$$$$$""""""###$$$%%%%%%%%%%%%%%%%%%###$$$###%%%%%%$$$$$$$$$######$$$###"""!!!!!! !!!###"""!!!!!! !!!###$$$###"""!!!""""""""""""###"""###$$$$$$$$$"""!!!#########"""!!!######"""!!!"""###"""""""""""""""$$$$$$$$$$$$###"""""""""!!! """""""""######"""!!!  """ !!!!!!!!!"""$$$######"""###$$$###"""############""""""  !!!!!!!!!"""!!!""" !!!!!!"""""" !!!81%70$80%1*1*3+ 7/$80$91%<2'<3(90$6-!5,!7."8/$80$80$;1%:0#7.!6-!6,"8/$<3)=4(:2&80$;3&7/#80$;3':1%7."90$>4)9/$6,!8.#<2'=3(7."3*91%;3':2&80%91%91%91%80$91%<3(:2&:2&<3'=5)<3(:1&6-!2*90%?6*?6+;3'91%<4(>6*:1%7/#<3'<4(6."4, ;3':1&3+ 4,!5."3+ 6.#=4)<4)80$5-!7."8/$7/#90$;2'90$7/#<4(=5)8/#5-!:1%<4(80$4+91%=4(:2&;3'<3';2&>5)@6*<3'7.";1&=3';1&:0%90$<2';2&=5)=4(;1&;1&;1%9/#5, 8/#8/#7-"8/#7-!5+6, :0%;1&9/#7-!9/#:0$8."7-!9/#90#;2%;1%<3&>5(;2%:0$<3%8/!<3&@7+;2'<3(@8,=5):2%;3&<3'7.!<3'=4(:1$80!;2&:1&7.!90"?6+>5*90&7.";2$?6*>5+=4'<3&;1$SE2  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C-!D-E-K1J1B)?%C)F-A(=&>(B*F*B(>':'7$4 4 ;&8#:%14 , 15"6#;)4"0 02"+' )--()**+,,('*$  -## -##"!    -  - -  - - -  - - -   -  -      - -  - -          -       - -        -  - -  -       - - - -2+!4,!5-#2+ 2+ 2,!2,!2+!3,"4,"3* 4,"3* 5-#7/%7/%4-#3,#2+"1*!1) 3,"4,"3*!1)2)4+!4+ 2)4* 1'0'/%0'3*5,!4,!5,!4, 5-!4, 3+3*2)2)7.!7-!4+3+5, 7."6-!4+7/#90$5-!6-!4+ 6-!6-"3+ 5-"6."4, 5-!7.#7/$:1&<4);3'80%90%<3(>5*:1%91%<3(<4(92&81%:4'=6*;5):3'81$70$;3'<3(:1%:1$;2%;2'<3(=4*<3)6-#6.#5-!,$LLLSSSFFF@@@:::666777555444///---,,,***+++&&&$$$######$$$###$$$%%%'''"""$$$"""!!!!!!!!!$$$%%%&&&%%%$$$%%%###$$$"""%%%***222222333888===@@@AAACCCGGGNNNOOO\]Zdecaa`0)4-"91&;3(7/#6."7/#7/$91&:3'80$90$:1%:2&:2':3)<4+:3(81&80&91&91&:2&:1&8/$7/$80%6.#6.#6.$7/$6/$5-"6.":1&7/#7.!:0"8/!9/!90#6, 3)5+9/$;1%9/$8/#8.#8/"8/#:1$:1%7/"5-!3*0&2(5+5, 1(0'1(2)4+ 2).%.%2)0'/&1(/&1)-$+"-#0&2(3*5, 6-!7.";2'91&81&70&6/%5/$3-#2+!3,"2+!1* /( !!!###!!!#########$$$$$$$$$######"""###""""""###"""###$$$%%%%%%%%%%%%&&&$$$###$$$"""###$$$###$$$#########$$$$$$"""!!!"""#########"""!!!""" """###!!!######!!!!!!""""""$$$######%%%$$$$$$###!!! ###$$$######!!!""""""!!!!!!!!!###"""!!!"""""""""###$$$###$$$$$$###"""!!! """!!!!!!"""######"""  !!!!!!!!!###!!!!!!###"""!!!"""###""""""###$$$$$$###!!!!!!!!!  !!!"""!!!  !!!!!!""" ######### """70$7/$4-"4-!/(0)2+ 70$7/$90%=3(=4(90$6-"5,!7."90$91%80$:0#90"7-!6,!6,"8/$=4)=4(;2'91$<3&90$80#=4);3'8/#:1%>4(90$7-!8/#=3'>4)7."4+:1%;3'91%80$:1%:2&91%7/#:1&>5*<3(:2&<4(>6*=5);3'6."1)8/$>6*@7,=4);2&=4)>6*:1&7/#<4(=5)6."4, ;3'80%2*3+ 5-"2+ 6.#=4)=5*90%5-!6."7/#7.#:1%<3(90%7/#<3'=5)80$5- :2&<4(7/#4+90$<3':1%;2&=3'=3'>4)=4(;1%8.";1%<2';2&:1%:0%=3'<2&:0%=4(90$8.":0%9/#3)7."8."7-"9/#7."6, 7-!;1&:1%9/#7-!9/#:1$:0$8/"8.":1$;2%;1%<3&>5(<2&<2&>4'8/!<3&?7+;2&;2&?6+>5*=5)<3'<3&7.!<3'=4(:1$6-8/#90%5-8/"=4)=4)6-"6-!:2$>5*=4)<3&=4';0$@5' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   A,!D-D,K1 L2 G.?&@&D*D,B+?(@*B+?'=%8%7$4"08#?*=(24 13 7#6#7%2!///,*& )-+('')*(*)%&%##!   !     -            -  -     - -   -  -  -  -    -   -  - -             -    - - - - - - - - -1)2* 2* 4,"5-#2,!2,!3-"3-"2,!4.#3+ 3* 2* 3+ 5-"92'81'4-#3,"2+!3+"2+!4,#4,"3* 1(4+!5,"4+!4* 3)0'/&.%1(4, 5-!6-"5-!4, 6-"6-!4+ 3*2)3*6-!5, 3*2*4, 7."6-!4, 7/#80$6."6."4, 6."6."3*4+ 6.#6-"5,!7.#6.#80%<4(<3(80%7/$:1&;3(:1%:1&<4(<4(91%70$:3'<5);4(:3'81%70$;3'<3(90$90#90$90%91'<3);2)5-#4,!2*.'UUUBBB;;;666555222000///......///,,,(((&&&#########!!!"""!!!!!!###""""""$$$%%%$$$ !!!!!!$$$%%%$$$###""" !!!$$$&&&---......111444666;;;:::<<<@@@AAAFFF\\Zaa`7/$3,!80%91&6/#80%81%70%92'<5):1&:1%91%:2&:2';3);4*92(81&70%92&91&91%91%6."6.#7/$4,!6.#5.#7/$6.#5-"80$91%7."8/":0#:0"90";1$8."8.!7-!8.#;1%9/#7."8/#9/#7-!90$80#7.!4+2(0&2(6, 7-!2(1(4+4+4+ 3*0(/&5,!2)2)2)1'3*.%,#.$/%0'0'2*4+4+3*3*5, 6."5-!5,!80%6.#3+ 91';3)5."91%<4(92&81&81'5.$6.%:1'90&8/$7/$5.#4-#2+!2,"3-#1+ 0)1* 1) /',%!!!!!!###"""""" """#########%%%&&&$$$$$$"""###"""###$$$$$$!!!!!!&&&&&&&&&%%%%%%$$$###""""""############$$$"""#########"""""""""$$$$$$###""""""!!! !!!!!! """!!! """"""###%%%###$$$%%%%%%$$$###!!!"""%%%%%%###### """!!! !!!!!!"""!!! !!!"""!!!"""###$$$#########!!!!!!!!!!!!!!!"""######!!!"""###!!! !!!""""""!!! !!!""""""!!!!!!!!!!!!""""""###%%%%%%$$$$$$""""""  !!!""""""  !!!!!!!!!!!!"""######"""2+ 3,!3-"4-"1*.'/(3, 80%6.#80$=3(<3(90$6."6-"8/$91%:2&80$8/"7.!7-!6,!5+!8.$=3(<3'<3';2%<3'90#80#=5)<3'7/#:0%=4(:1%7-"8."=3'>5)8.#5, ;2&=4(80$80$91%:2&91%7/#:2&?6*<4(:1&<3(>6*>6*<4(7.#1)8/#?6+@8,<4(:2&=4)>5*90%7.#=4)>5*6-!4, ;3'80%1)1)4,!3+ 6.#<4)>6*;2'7.#7/#8/$6-!:1&=4(80$6.":2&=4(80$5, ;3'<3'7/#4, 91%<3'90$:1&=4(=3'=3(<3':1%8/#:1%<3'<2&;2&;1&=3';1&8/#<3'90$8.#;2&8."4*6-!6-!6-!8/#7-"6-!7-!;1&90$9/#7-!8.";1%;1%9/#8.":1$;1%;1%<3&>4(;1%:0$>5'8/!91#>5)90%:1&>6*>6*=5)90$;2&7."<3'?5*:1$4,8/#90%5-7/"<3(<3)6-"5- :1#>5+=4*<3&<3&;0$>3& - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - C,D,D,L2!J0F-C*C*D,A)@)A*A+@*<%8#8%5"13!:'<(<'8#5!0/12 3"/) ,++% '(*))*(''&'(%%%$"  ! !    -             - - - -    -   -   -   -  -     - -   - -  - -     - - -      - - - - - - -1*.&/'1)2* 3+ 4-"3,!3-"3-"3-"2,!4.#5-"5-"2* 3+ 5-#92'5/$3,"4-#5-$5.$4,#5.$5-$3+!2)4+!4+!4+ 5+ 2(.%/&/&2)5,!6."6."5,!4, 7.#6."4+ 4+3*5, 7."5, 2)2)5,!5-!6-"4, 7/#8/#6."5-!4, 6."7/#4+ 3+6.#7.#5-!7/#6.#80$=4)=5*91%90%<4)>5*:1&;2&=5)<4(91%80$;4(=6*;4(:3'81%70$;3'<3(91$80#7/#7/$8/&;2):1(4,"0),$XXXEED;;;666333111---&&&***+++''''''&&&"""!!!###!!!!!! !!!$$$"""###&&&###$$$""" !!! $$$###### !!!######***)))***---000///---222777777888<<5)<2&8."8."=3'>4)8/#5+ ;1&=4)90$80$:1%;3':2&8/#;2&?7+=5);3'<4(>6*>6*=5)7/#1(80$?6*@8,<3(:1&>5)>6*80$6-"<4(=5)5-!5-!;3'91%3+ 0)2*4,!5-";3(>6*<3(8/$8/#91%4, ;2&=4)7/#5-!:1%=4(90$4, ;2&;3'7/#6-!:1%<3'90$:1%>4)<3'<2'<3';1&8/#:0$=3(<2'<2';1&<2';1%8/#<2'9/$8.#=3'7."8."7."5+ 5+ 7."7-!8."7-!9/$8."7.!6-!8.":0$:1$:0$8.":0$:1$:0$:1$<3&;1%:1$<3&8/":1%=4(8/$:2&?6+>6*:2&4, 80$5, :1%=4(90#4,90%90%7. 91#>5*=4)7.#7.!;2$>5+=4)<3&=4';1%>3& - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    A, C+C+I/J0G-E+F-F-D,B+@)A*?(>';&5"4"2 16#:&;&8"5!5!1* 02!.,)*,&'*)$ %')(((&&'&$###"""    -      -      - - -     -         - -    -        -  -               - - - -   - - - - - -1* 2+ 3,!/(.&/'1)2+ 2+ 1*3."4/#3."2,!3-"5-#5.#2* 2* 6/$71&4-#2+!5-$6.%6.%4-#6.$5-#4+!3* 3* 4+ 4* 2)2(/&/&0'2)5-!6."6."6-"4, 5-!7."5, 2)3*5,!6-"4+ 2*2)6-!7.#7.#5,!8/$91%6."5,!4+ 5-!7.#5,!2*5,!7/$5,!7/$7/$8/$<3(<4)8/$7/$;3(=4):1&;2'>5*=5):2&81%<5)=6*;4(:3'81%70#:2&<3(91%80#7/$80%80':1(91(4+"0(3, NNN???555222...+++((("""&&&'''$$$###"""!!!!!!""" !!! """!!!"""###"""$$$ !!!!!!!!!!!!###(((&&&$$$"""!!!!!!!!!!!! $$$(((+++)))***+++***...000222444555CCCPPPYZXRRR0)4-"4-"5.$92'70%92'<4(<3';2&:2&:1&91&:2(:2):3)70%70%91%80$7.#6."6-!5-"7/$5-"80&6.$80%6.#7/#90%6."8/$<2%:0#9/!:0"9/#7- 7-!9/#<1&;1&9/$6, 6,!8."90#:1%:0%7."4*3)3)2(4*4*4*4*4*7."6-"5, 1(2)5,!3*1(4+4*1'-#,!/%1'0'2(4, 5-!6-!6."5-!5-!5-!4-!70#6.#3,!2* 5.$6/$7/%4,"2*7.#6."4, 6."8/$80&6/$6.$6.#4-"0)1)5.!70$4-"4-#6/%1* 3+"6-$4,"5-#3,"1* 2+!2,"2,!1+!/(/(/(.&,%+$ """###!!! ###%%%&&&%%%$$$$$$%%%%%%'''&&&%%%"""!!!###"""""""""$$$&&&%%%%%%$$$""" !!! !!!###!!!!!!!!!$$$###"""###"""!!!$$$"""!!! !!!!!!""" !!!###%%%$$$############""" """$$$&&&$$$!!!###!!! !!!!!!!!!!!!!!!!!!"""!!!!!!#########$$$""""""""""""!!!!!!"""!!!!!!!!!!!!"""!!!!!!!!!"""!!! !!!!!!""""""!!! """######!!!  !!! ###%%%%%%%%%######"""  """!!! !!!!!!!!!"""!!! """!!!!!!!!!91'7/%6.$2+ 3,!4-"4."1*0)0)4-"91%80$:1%;1&:0%8/#6-!8/#80$7/#7/#81$8/!5,4+4*2(6,"=3)<2';2'90$:1$:1$90$;2&:2&7.":2&?6*=4(9/#8/#=3(>4)8.#3*91%=4):1&91%;2&<3'<3'8/$;2'@7,>5);2'=4(@7+>5*>5*7/#1)91%>5*@8,=4):1&<3(>6*8/$5,!<3'<4(6."7.#<4(;3(5.#1)2*4,!4,!;3'?6+=4)90$8/$<4(5,!;2'>5*90$6.":2&=5):1%5-!:2&<4(90$7.";2&=4(:1%:2&>4)<2';2&<2';2&7."90$>5)<3';2&:1%;2&:0%9/$=3'9/#:0$=3'7.":1%90$6,!5, 7."7."9/$7-"7."7-!6-!7."9/#90#:1%:0$8/":0$:0$8.":0$=3';1%8/">4'90#;3&<3'6-!:2&@7+?6+:2&7.#8/#7.#:2&;3'8/"3+90$8/#6- 90$>5*>5*8/$6- ;2%=4*;2'<3&?6)<2&=2&UG5 - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - ?,!B+C+D+E,F-F,F+G,E,C+B+A)?)<&9$9$5#0-4"9&:&=)7!7 0.,02!1 --.& $ (+'$ %('(&'%##$#! ""          -  - - -    - - -    -     -   -  -   - -    -     -     -   -          -   -  - - - - 2,!0)1* 3,!3-"0)/(/(1)2+ 0*/)3-"4.#2-"1+ 5/$3,!4-"2+ 1)4-"6/$5.$4-#5.%5.%5.$5-#5.$5-#4+!3* 4+!5,!4+ 2(1'0'/&/&2)5-!6-!7."5,!4, 5,!4+ 2)1(2)4+ 5-!4+3*1(5, 6-"5, 4, 80$80$7.#6-"4+5-!8/$5,!2)5-!7/$5-"7/$8/$8/$;3(;3(80%6.#:2'<3(:1%:1%=5)<4):3'92&;4(=6*;4(:3'70$6/#91%:2&91%80$70$80'80'80'7/&0(*!QQQ===888222...((()))&&&!!!!!!"""!!!!!! !!! !!! """&&&$$$$$$######""" """!!!###&&&((('''&&&&&&+++,,,***///222666>>>HHHTUSRSS4-"0)2+!5.#81&70%:2':3'<3'<3'>5)<4(81&81';4*;4*6/%6/$80$7/#6-"4, 5-!5-!6.#4,"7/$7/%80%70%91&:1&7."5-!<2%:0#9/"<2$:0#7.!7-!9/#;1%:0$7-"4+8.#8/"7."90$90$7-!4+5+4)4*6, 6,!5+ 4*4+ 6-"6-!3*1(2)4+1(1(3)3)1(0&/%0&1'2(5+80$7."6-!7/"4, 5-!6."7/#81%7/$3,!2* 6.%81'80&5-#1)7.#6-!5, 7.#90%:2(80&6/$6.$6.$2*2+6/#92&5-#4-#70&1+!4,#7.%4+"4,"3+!1*!2+"/* 2,!0* .'/(1) /'-% !!!######!!! !!!$$$$$$%%%&&&''''''&&&&&&&&&$$$"""!!!"""""""""!!!###%%%%%%###$$$###!!!!!!  """###""""""######$$$######""""""""""""!!! !!!!!!###!!! """###$$$$$$###""""""###$$$$$$###%%%%%%$$$"""###!!!!!! !!! !!!"""""""""###""""""######!!!######"""!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!""""""!!!!!!!!! """"""!!! !!! !!! !!!###%%%$$$$$$######"""  !!!"""!!!  !!!######!!! !!!""" 6/$81&6/%6.$2+ 4-"4."3,!2+ 1+ 1*3-!7/#80$:1&;1&:0%7."6,!7.#7/#6-"6."80$90"6- 4*2(0&5+!<2(;2';2&8/"8/"90#90$<3';3&80#;2&?6*>4(9/#9/#=3(=4(7."3*91%<4(:2&:1&;2';2'<3(8/$<3'@7+<3(;2&=4)@7,=4)>5*7."3*91%>6*@8,<4(91%;3'=5)91%5-!;2';3'6."7/#=4);3(7/$2*2+ 7/$8/$=4)@7,>6*7."80$=4(6-":1&?6*:1%8/#;3'>5):2&6.":2&=5)90$6.";2&>5):1%:1%=3'=3'<2'<2'<2'7-"9/$?6*=4(;2&;1%<2':0%:0$=3(8/#<3';2&7.":0$;1%8/#8/#9/$8.#9/#7-"8."8."8."9/#90#:0$<2&9/#7-!:0$;2%9/#:0$<3&:1%9/#=5(91$<4';2&5, 91%>6*>6*91%6."7/#90$:1%:1%90#4,:2$80#4+!8/$>5);2(7-%2);2&=4);2';3%?6)=3&=3&C8* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -=+"@+A*A'A(B)D,D+G,E+D+B*A)?'<%9$8$4"2 2 -2 ;);(4 6!42-03"1 +-((% # **$ $'%#%'$! " " ! ! " !      - -    -   - -       - - - -  - -      - -   -       -       -           -    -     - - - - - -2,"5/$5.#3,!3-"4-"2+ 2+ 3+ 2+ 3,"2+ 0*3.#3.#3-"3-"3-!2+ 2+ 1*/(2+ 4.#6/%6/%7/&5-$5.$5.$6.$6-#4+!3* 4+!5,!4+ 3)2(1(/&/&2)6-!6-"8/$4+ 3*3+5-!3*/&0'3*5, 4+3*1(5, 7."4, 4+ 5-!5,!6-!6."6-"7/#90%6-"3*5,!7.#5,!6."8/$80%<4):2'91&6/#:2';2'8/$80$<3(;3'91%92%:3'=6*;5(92&6/#7/#91%<3'80#7/"81%7/%70'6.%3+"-%FFFDDD555333...+++&&&%%%###    !!!"""!!!""""""  """'''&&&%%%$$$$$$(((***(((+++---333;;;BBBMMMSSUMMN1* /(3,"5/$6/#91&:2&:1%;2'?6+?6+81%70&<5+;4*70&70%80$7/#5-!4, 4, 5-"80%3+ 4,"7/$80%:2'91&90%8/$80$=3&;1#:0#=3&:0#7-!7-!:0$=2';1&6-!3)8/#8."5, 8."8/#6, 4*4*5+ 6,!5+ 6,!6, 5, 6, 6,!5,!3*2*5,!6-"4+3*4*3*1'/%.$.$/%2(5+7."6-!6-!8/#5- 6-!7/#8/$91%90%4,!3+!70%:2(81'5-#3+ 80$7/#5-!7.#80$81&81'4-#7/%6.$3+!2+ 6/"92%6/#4-#60&0* 2+"5.$5,"3+!2+ 2+"2,"1+!4-#0*-&0)3,"1) .&"""""""""###"""!!! !!!######$$$%%%'''&&&%%%######$$$$$$ !!!!!!!!!"""###%%%$$$$$$###!!!"""""" !!!############""""""###"""###"""### """"""!!! !!!!!! !!!"""!!!"""""""""""""""###$$$$$$"""###############""""""###""" """!!!"""""""""""""""""""""######!!!"""###"""!!! !!!!!!!!! !!!""""""!!!!!! """"""""""""!!!!!!""""""!!! !!! !!! """$$$$$$######""""""!!!!!!!!!!!!!!!!!!!!! !!!"""""""""!!! !!!!!!4-"4-#6/%6/%4-#2+ 4-"5."5-"3, 3+3+2,70$91%:1%:1%90$6-"5, 7."7/#6."5."6."8/!6- 2)0&0&6,":0&<2';2&8/"7/"8/#:1%>6*<4'91$;2&>5)=4(90$:0%=3(=4(6."3+91%<4(:2&91%90$:2&<3'90%<3'A8,<3(:1&=4)@7+=4)>5)7.#5, :2&?7+@8,<3(91%;3'=5):1&5-!:1&:2&5-!6."=4(;4(80%2*4,!6.#7/$=5*?7+=5)5, 90$<4(7/#:1&?6*91%7."=5)?7+<3'7/";3'=5)91%6-!:2&>5)90$8/#;2&>4(=3(=3'>4(7."9/$?6*>4(;1&;1%<3':0%:1%=4(8/#=3(;1&7."9/$;1&;1%;1%:1%9/$8.#7-"8/#9/#90#90#9/#:1$<2&:0$8."<2&;1%9/#;1%=3'90#8/":2%80#=5(<4'6-!91%<4(:2&7/#8/$:1%:1%;2&=4(8/#8/";3$80#4+!8/$;2%8/&6,$4,;2&=4)90$;2%>5'=3%<3%A8) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<+">+ ?*?'=#A(?'@(@(C)B(A)@(?'<%9#8"8$4#0./3"5#17#7"1003!2"/-),+# -# $ (&%&"  -! $" " #!  ! #    -  - -         -         - -     -   -               -   -     -   -     - - -  - - -2,!1* 1+!60%5.#3,!3-!6/$1*2+ 3,!3,!4-"2,!/)3-"5/$0+1+ 3,!2+ 2+ 3,!1)2+ 6/$6/%6/%6/%5-$5-#6.$7/%5-#5,"3* 4+!7.#4+ 2(3)1(0'0'2)6."6-"80$3+4, 5,!6-"4+1(/&2)5,!5, 3*2)5, 7."5-!5-!8/$6."7/#80$6."8/$90%8/$4,!4+ 6."4,!5,!7/#90%;3(<4)92&80%:2':2'8/$90$;3':2&91%:3&<5)=6*<5)92&6/#6/#:1&:1%91$7/"70$81&6.%5-$0(+$III::9223--.***+++&&&$$$!!! !!! """ !!!"""### """$$$'''%%%"""###"""$$$''''''((()))...555;;;FFFKKLMNOJJJ*#0)5.#60$81&92&90$<3'@7+?7+92':2)=6,<5+92'91&92&80$5-!6-"7.#7/$80%2+ 2* 3+ 7/%:3'91%91%6-"5-!<2$:0":0"<2$8.!6,7-!:0$=2'<1&7-!3)9/#90$7-!6, 7-"5+ 1'2'7-!8."7-"8."8.#8."7-"6, 5, 2*1(5, 6-!3*3)5, 5+ 1'/%-#.$0&1'4*8/#7-!6- 90#7."6.!7."7/#90$:1&6.#5-"80&91'91'6.$6.#:1&90$6-!8/$80%91'91'5.$70&7/%4-"2+6."91%6/$4.$71'1+!3,"4-#4,"5-"3,!3,"4-#2+"5.$1* /(/(0) 0* -&!!!"""######""""""!!!!!!""""""!!!$$$$$$$$$%%%%%%###"""###%%%$$$"""""""""!!!!!!"""$$$$$$###$$$!!!!!!!!!  !!!"""###"""""""""""""""""""""###"""###"""!!! !!!!!! !!! """"""""""""###############$$$######"""###""""""###""" """""""""!!! !!!"""###""""""""""""######"""!!!!!!!!!!!! !!!""""""!!!"""""""""!!!""""""""""""######"""  !!!###$$$#########!!!!!!""""""!!!!!!""""""!!!!!!  """"""!!! 1* 4-"2+!3,"4-"3-"3,!5.#6.#6.#5-"3+ 3, 3, 81%;3';2':2&91%6-"4+ 6.#6/$7/%4,"3+5,2*1(/&1(7.#;1'<2';1&80#8/#91$;2&?7*=5(:1%:1$=4(=4(90$:1%<4(=4(6-!3+91&<4(:2&80$7/#;2'<3'80$<3'A9-<4(91%=5)?6*>6*=4(80$6-!:2&?6+?6+;2'90%;2'=5):1%6-!:2&91%4+5-!=4)<4)80%0)2+3+ 5-"=4)>6*=5)5-!80$<3(90$;2&>5)80#5-!<3'>6*;3'7/#;2&<4(:2&7.":1%>5)90$7.#<2&<2&<3'>5)=4(9/$90$?5*=3':0%90$<2&:0$:1%>4)90$=3(;2&8."8/#;1&<2&<2'<2':0$7-!7-!8/#:0$:1%8."8."9/#:0$;1%9/#<3&90$8/";2%=4'7-!6-!91$70#:3&;4(6/#:3'<5(70$6."7/#:2&;2&<3'>5):2%6. 91"8/#4+!7.":1$9/'5,#5, ;2&<3(8/#;2%<3';2%=3'?6( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -=+"=+!>*<&:"@'D,B*>'@(C)A(?'>'<%:#6 324"2!1 3"01 3"3!5!3/232/*% +*( # %%%$!    !#"#!            - - - -    - -     -          -     - - -         -    -      -    -         - -0)2+!3,"2+!1+ 3-"4-"3,!4.#5/#2* 0(3+!4,"4,!2, /)2,!5/$1, 1+ 4-"4-"4-"4-"3,!3-"5/#6/%6/$4,#4-#6.$5.$7/$6-#4+!3* 4+!5,!4+ 2(3)1(0'/&1)6-"5-!7/#4+ 4, 5-!8/#5-!2)0'4*7/#6."4+3*4, 7."5-!6."91%:1&90%90$7."6."90&:1&6."3*6.#5,!4+ 7/#80%:3'<4):2'91&:2'91%7.#80$<3';3'92&92&<5)>7+;4(81%6/#5-!91%;3'6.!80#7/$80&6/&4-#+$LLL>><444//0**+%&&&&&!!!!!!   !!!######$$$!!!""" """$$$$$$$$$'''+++---444<<5*80%:3)=6,=6+;4):3(:3'91%7.#6."8/$:2';3(70%6/$5-#70%91&7/$91%6-!6-!;1$7- 8. :0#8.!4*7- ;0%<2&<2&7-"4*:0%90#5, 8.#7-"4*0&0&7-!8-"7-!6, 6+ 5+5, 5+ 6-!2*1(3*3*4*4*7-"5+2(0&-#/$0&1(5+9/"8.!6-:1$8/"80#8/#7."90%;2'8/$6.#90&;2(:3)6.$5-":2&;2&7."8/#91&;3(91'70%80&80&4,"1*5.!80$6/$3-#5/%0* 2*!5-#5,#2* 2* 3,"2,"3,"5.$3,"/(/(0) 1* .'$$$######$$$###"""!!!"""###"""###$$$%%%%%%&&&%%%$$$$$$$$$###"""""""""###!!!"""!!!$$$%%%$$$###!!!###!!!!!! !!!###$$$""""""!!! !!!"""!!!"""###"""###$$$$$$!!!"""""" !!! """"""""""""######!!!"""###### !!! ###""""""!!!!!!!!!!!!"""!!!!!!!!!""""""######""""""!!! !!! """""""""!!!!!!""" !!!###"""""""""######!!!!!! !!!"""""""""###""" !!!""""""""""""""""""!!! !!!!!! !!!""""""!!!!!!"""4,!2*2+ 4-"1* 3-"3,!3,!3,!5.#6.#6/#6/"3, 3, 4, 91%=4(<4(;2':1%5, 1)4,!6.#7/%5-#3+3*1)0(1(3* 7.#;2'8/%90$:1%:1%:2&=4'?6*>5)90$8/#;3'<3'8/#8/#=4(=4)6-!3*:2&=5):2&80$6.";2&<3'8/#<3'@7+;3'91%>5)>6*?6*=5)90%6.":2&?6*>5*;2'90$:2&<4(91%5-!:2&;2&5-!5-!=5)=5*81%0(2*2*4,!;2'>5*<3'7.#:1&<4(90%:1&=4)80$5-!;3'>5):2&7.":1%<4(:2&8/#:2&>5);2&:1%<3';2&=3(?6*=3(:1%:1%>4)<3';1&:0$<3'90$9/#=3';1%<2'<2&90$9/#;1%;2&<3'<3':0$6, 6-!7.":0$:1$6, 8/#:0$:0$:0$7-!;2%90#8.":0$:0$6, 8/#:3&80#6/#91%6.":3&<5)92&6."6-"91%90%<3'?6*;3&;2%<3%7.#3* 8/#8/";1)5,#5- :1&;2'8/#90#91%7."<2'<2'N@0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -=*!=+!=*9&8#:$A+D-A+A*C)E*B*?)>&<$8$8#5!..15#8%4"3"3!5#2 4"3 35"3 /.+,-&# %&# " $" - - ! !!!   -      -     -  -      -       -   - -   -  -      - -    -        -   - -        - -2* 1* 1* 2+!2,!1+ 3-"3-"1+ 2, 5.#4-"1*0)3+ 2+ 3+ 3-!1*1, 4."2-!2, 4."4-"4,!3+ 3+ 5.#5.#5.$5.$5-#5.$6/%6/$6/$6-#3* 2)5,!5,!5,!4*3)0'.%/&1)7.#5-!4, 4+ 3+5-!7.#6-!4+1(3)7-"6-!3*3*5, 7/#6."6."80$:2&7."8/#6."5,!90%:2'6.#2*7.#3+ 2)7/$7.#:2':2':2'91&:2'90%6-"90$<4(<5):3'92&<5)>7+;4(70$4-!5."91%;3'81#6/!6/#6/%6/&2+!1*!AA@43200/,,,''($%%%%%### """#########&&&(((***///444???EEEHJIDDD/(3,!5.#81&91%80$<3'?7+=5*6/$:3)=5+<5+;4):3':2&:2&80$80$90%;3(;3(91&91&80&91&;3(80%91%6-"8/#<2%7- 7- <2%9/"4*8.":0$;0%<1&6-!4*7-!8."6, 90$9/#5+0&/%5+6,!6, 4*4*4*6, 7-!7-!2)1(2)3*5+6, 6, 6+ 4)1'-#0&1'2(5,8/"8/"8/"<3&;1$;2%:1$8.#:1%<3'8/$6-":1'=5*:2(7/$6.#;2'<3'7/#7.":2&:2'92(70%92'81&4,!1*6.!81%70%3-#5/%2+!3+"5-$5,#4+!1* 4,#4-$4-#3,!3,"1* 1* 1* 2+!.'"""%%%$$$######"""###$$$$$$"""###%%%$$$&&&%%%$$$#########!!!""""""######"""######$$$$$$$$$###!!!######""""""!!!!!!"""###$$$###"""""" !!!"""""""""!!! !!! !!!!!!!!!!!!!!!"""  !!!###"""######""" """""""""!!!  !!!!!!!!!""""""""""""""""""!!! !!!!!!""" !!!!!! """$$$""""""###""""""""""""!!!  """"""!!!!!!!!!!!!!!!!!!"""""""""""""""""""""""" """""" !!!!!!$$$###!!!###5-"3, 3+ 5-"4-"1*3,!2+3+ 4,!5."5."70$80$4-!4, 5-!:2&=4(<4(<3'91%3+1(3+4,!4,"2* 0(1(2)2)4, 6-"8/$8/%8/$90%;2&:1%;2&<3'?5)=3(7-"7.";2';2&8/#7.">4(=3'6, 4*<2&=4(<4':1%6.":1%;3'91%>5)?7+;2&:1%>5)?6*>6*>5)90$6.":1&>6*>5*;3'91%:2&<3(8/$3*8/#;3'8/$5, <4(=5*80%0(3+ 3+ 5-"91&=5):2&7/#:2&<4(90%:1%>5)80$4, :2&>5)91%5-!80$;2&7/#8/#;3'@7+<3':1%<2&;1%=3(?5*=3':1%;1%=4(=3(<3':1%>4(:0$8."<2':0%:1%;2&:1%:0$;2&<2&<3'=3':0%6-!6-!7-!:0$;1%6- :0$;2&<2&90#5,;2&:1$8."90#8."6, 91%<5(81$5.!70$60#81%;4(<5)91%6."90$:1%=3(>5)<3'90#80"8/#3*!6-!8/"90'5,"6- :1%;2'90$7."6-$5+":0':1&<2% - - - - - - - - - - - - - - - - - - - - - - - - - - - >* >+ =*6&6%9&<'>)?(>'C*G,B*?*>)<&:%:&:&9&4!-/6#4"3!14"3 00/4!3!2010!1#(  # ''&#" "      "     -    -     -   -  -      - - - - -  - -  -  -  - - -        - -          - - -   -         - -1* 2* 0)1* 2+!3,"1*/(2,!2,!2, 3,!5.#3,!2+ 2*3+ 3,!4,!5.#5."3."4/"2-!3-!5."6.#6.#4,!1)4."70%6/$70&70&7/%7/%6/$6/$4,"2)3* 6-"5,!4+ 4*2)1(0'.%2*6-"7.#6-"3+4+ 5,!5,!5, 4+1(3*8.#8.#5+ 2)6,!8/#7/#6."91%91%5-!:1%7/#6-"7.#90%5-"2*7/$2*0(5-"5-"80%91&80%80%:2':1&7.#7/#:2&;3(:3':3'=6*=6*<5(71$3, 6."90%:2&91$6/"6/#6.$4,#*#III543.-+**()()%%%!!""""!!!"""""""""$$$###$$$''')))***000999@@@DDDEFE:3)1+ 3,!70$80$8/#90%>5)<3(5.#:3)<5+<5+;3)92'91%90%91%91%80$91&91&80%7/%5-#80%:2'90%90%5,!8/#<2%7- 8. :0#9/"1'8.!8.#:0$;1%7."5+ 6, 6- 7."9/#7-"3(0&1&3)5+5+ 3)4*4*5+5, 5, 3+2)3*4*4*5+ 2)7-!0&/%.$1&3(3)8.!:0#9/":0#:1$:1#:1$;2%9/#:1%;3'8/$6-";2'>5*92'70%7/#;2'<3'7/#8/#;3'92'92(70%91'91&5-"3,70#:3'81&3-#3-#1* 1) 4,"4+"4+!2+!4,#2+#2+!3,"3,"1* 1* 0)1* .'###%%%######""""""###%%%%%%###$$$%%%%%%%%%$$$$$$"""!!!###!!!###"""""""""###"""###$$$###""""""!!!"""!!! """"""$$$$$$###"""!!!  !!!!!!  !!!!!!  !!!######$$$$$$"""!!!######!!!!!!!!!!!!!!!"""""""""!!!!!!!!!!!! !!!!!!!!!!!! !!! """###"""###"""$$$!!!!!!""""""!!!!!! !!! !!!  !!!"""######""""""!!!!!!!!!""""""""" !!!#########$$$6.#6."4-!4,!7/$4-"2+ 1*1)3,!6/#80%7/#81$7/#4, 5-!7/#<3'<4(<3'=4(8/#2*1)3*4,!4,"3+!1(1)2*5, 5,!7.#8/$90%:0&;2'<3':2&;2&;2&?5)<2'6-"7.#;3':1%6."8/#=3(=3(7,!5+<2&=4(>5(;2'7.#90%;2'91%<3(?6+:2&80$=5)?6+?6+>5)90$5-!91%>6*>5)<3(91%91%;2&7.#1(6-":2&7/#3+:2&;3(7/$1)4,!3, 4,!91&=5):2&7/#:1%<3'8/$:1%>6*90$3+91%>6*<3'80$:2&=4(90$90$;2&@7+<3':1%:1%:0%<3'>4);2&90$:0$<3'>4(=3(:0$>4);1%7-!90$7-"7-!:1%;1%9/$<2&;2&:0%<3':1%7."7-"7.";1%:1%7.!:0$;2%<2&8/#6, <2&:0$8/":0$8."5+91%<5(60#6/"81%92%92&<5)=6*:2&6."7."90$<2'>4(:1%80"<4&90%2(91#:2%90'6-#7/!:1&90&8/#7/"6,$5,#8/%90%<2&  - - - - - - - - - - - - - - - - >+ >*:+$7( 6%:'=)<';$?&C(C+@+=)<(=(;&=(>*:'4!4!4!31/3!00.12.01/--,(  -" $%%$"!   -              -      -      -    - - -   - -  - - -     -     -     -   - -  -  - -     - -/(0(2* 3,"2+!1* 2+ 3,"0)/)2,!4.#4-"3-"5/#4-"4-!4-!4,!4,!3+ 4-"5.#60$71%4."4."6/#7/$80$7.#1)4-"70%4-"6/%80'70&6/$6/$80%4,!0(3*5-"5, 3*4*3*2)0'/&5, 6-"6."6-"5,!6-"6-"5, 5,!3*/&3*9/#90$6,!3)6-!90$7/#7.";2&;2&4, 80$6."5-!6-"91&7/#4,!4,!2)0(4, 5-!7/$91&80%80%:2':1&7/$6.#80%:2'92&:3'>7+=6+92&70$6.#6.#8/$91%80#6/"4-"5-#1) HHH99:..-+*()(&%$%!!"  !!!###!!!!!!&&&###"""$$$)))---///222999===ABBABB,&1*5."7/#90%:1&?6*:2'4-"92(;4*<4*;4);4(;4(;3'<3':1&6."6.#6.#80%91'81&:2'7/$80$:1&6-"7/";1$8/!8.!:0#7- 3*6, 9/#:/$9/#7-!6, 6-!7.!7."7-"6+ 1'1'3)4*4*4*3)5+6+ 6, 6, 5, 1(1'3*4*4*4*4*4*1'1'0%1'3)3)7- :0#90":1#<2$;2$;2$;1%:0$;1%<3'8/#7."<3(<4)92'70%6.#;3'=4(7/#7/#;4(:2(92'7/%6/%70%5-"3+6.!92&70%4.#3-#/)0(3+!4+!4+"4-$4,$2+"4-#3-"2+!1* 0)1* 1* ######"""###############$$$######$$$$$$######$$$"""######"""%%%"""###"""""""""!!!"""######$$$######""" !!!!!!!!! """$$$$$$###"""!!!!!!  !!!!!! """"""!!! ###""""""$$$###"""######%%%%%%###!!!  """!!!  !!!""""""!!!!!!!!!"""!!!!!!!!! !!!!!!""""""!!!""""""""" !!!"""!!! !!!!!! !!!"""######""""""!!!"""""""""""" !!!######"""90%7/#70#6."5."6/$4-!4-!2*3+ 5."6/"81$7/#92&70#3, 6."91%<3';3';2&<4(8/#4+ 2*2*4+!5.#5-#3*3*4+6-!4+ 5,!7.$:1'<3(;2':1&:1%;2&:2%?6*>4)8/#7.#:2'91%6-!7.";2&=3'8-"5+;2&=5(=5(;2&8/$;2&;2'8/$91%<4(80$7/#=5)?6*>5*=4(90$5, 91%@8,@7+<3(91%80$;2'80$1)6."90%6."3*80%91&6.#3+ 7/$3+ 1(7/#<3':1&7/#90$;3'8/#90%?7+;2&3+80$>5)=4(90$:2&=5):1%7/#90$>5)<3':1%:0$;1%<3'=4(;1%8."8/#;2&>4)=3'8/#<2';1%6-!7-!5, 5, :1%:1%7-";1%:0$8.#=3'<2&7."6,!7-!;1%:0$8.":0$;2%<3'9/#7-!<2&90#9/#90#7-!5+70#81%4.!70$:3&92&:3'=6*>7+;2&5-!5, 6-!:1%=4(90$7.!90"90%2)8/"90%90'6-"7.!;2'8/$6- 90$8/&6-#7.#90%<2% - - - - - - - - - - - - - - - - - - - - - - - ?+ >*<):) 8( 9) :(;(;'<%>$?&>(=)<(='@*=(>)A- 9&14!6$1( .4"1 +-1 2!.-/0..+*"  #$##"!    - -       -      -     -   -  -       -                 -     -    - -         - - -4-"1*0)0)3,!4-"4,"2+ 1* 2+ /(/)1+ 4.#3,!1*4."4-"4-!4-!5-"4,!3+ 2+ 3, 50$61%4."4-"6.#6.#4+ 5-"2*5.#70%60%6/$70&70%70%70%81&6.#1)2)4+ 5,!4+ 4+4+3*.%0'4+ 6."6."6-"5,!5-!7/#7.#6-"3*/&3*9/$:1%7-!3)6, 90$80$8/#;3';2&5, 7/#5-!5,!7.#80%7/#4+ 4, 3*1)4, 5-"80%91&80%7/$80%90&8/$6-"91&91&91&:3'=6+=7+:3(80%6.#6.#91&91%7/"4- 5.#3+"-%AAA001*)()('('&"!"!!! ###&&&&&&###"""(((...000...000666:::ABB@@?+$1) 4,#5.$80&<5*70%6.#:3(;4):3(:2(:3';3'<3(<4(91%6."6.#7/$81&80&7/%:2'6.#80$90%5,!6- :0#8.!8.!:0#:0#4*7-!:0%;1%9/$7-"6-!7-!7.!5, 6,!6,!2(2'3)5+ 6+ 5*4*6,!7-"6,!6,!5, 2(1(4+5+3)3)6, 3)2(3)1&1'2(3)6- ;1$:0#:0#:1#:0#;2$<2%:0$:0%=3'90$7.#;2'<3(:2(80%7/#<3'=4(7."7.#:2':3(92'80&81&6/$4,!3,6.!:3'70&5/$4.$0* 0(3+!3*!4,"2+!2*"2+#3,#3,!3,"1+ /(3,"2+ !!!######!!!$$$######$$$"""######"""&&&$$$###"""$$$"""###$$$######!!!"""######!!! ######"""$$$###"""###!!!!!!!!!######""""""!!!!!!!!!!!! !!!!!! !!!!!!!!!  !!!!!!#########$$$$$$&&&%%%""""""!!!   """###"""!!!!!!""""""!!!!!!!!!!!!!!!!!! !!! !!!""""""""""""!!!"""""" """!!! """!!!!!!   #########"""""""""""""""  !!!!!!91%90$90%7/#80$6/#6."80%6/$5.#4-!4-!6/#70#:2&80$:3&70#4-!7/#:1&;3';2&;2&;2&6."4+ 2*2*4,!7/%6.$4, 3+5, 5-!5,!4+ 90%<3(<3(:1&90$:1%;2&;2&@7+?5*8/#6-":2&91%5-!6-!:1%=2'8.#4+;2&>6)=5(;2'90%<3';2&7.#8/#<3(90%7."<3(>5*>5)=3(90%5, :1%A8,@7+;3'80$90$<4(91%3+6.#7/$5-"2+ 70$;3(6.#3+ 91&5-".&4,!;2':2&7.#80$=4)8/#90%?6*;2&3*80$>5)>5)7/#:2&>5)<3'8/#90$=5);2&90$90$<2'<3'=4(;1&7."7-";1%>4(<2'8.":0$:0$6-!7."6,!7."=3':1%6, 90$7."6, <2'=3(7."6, 8.";1%9/#8.":1$<3&<3&90$8.";1%9/#9/#9/#6, 5+6/"81$6/"70#;4(92%92&<5)<5)8/#2)3*5,90#=4(:1%6- 90"90&5,!91#:1%8/%4+5,:1&90%7/";2&90&6-#7.";2&8/"SF4 - - - - - - - - - - - - - - - - - - - - - - - - - - - A+ ?+ =):'8%9':* :) 9(;'>&>%=';(<(;'A*<&='>)<(6"4 5#4!,* -1/,/10-+*))+)%  " '&$"! -   -           - -         - -   -  -  -     -  - - -     -      -    -      - -   -  - -    -  -2+ 5.#1*1*1*4-!5.#4-"1* 1*2,!1*1*4-"5.#5.#4-"5.#5."3+ 3+ 5-"5-"6.#5-"3, 5/#60$4."5-"7/#5-"1)5-"3+6/#80&5.#5.#80&91'70%70%80%80%4+ 4+!5,!5-!4+ 5+ 4+ 3*0'/&2)7."80$6."5-!5,!7/#90%6-"3*0'3)8/#:0$6-!2(4+8."8/#7/#:1%91%4, 6."6-!5-!7.#8/$80%3*5-"4, 2*4,!7/$91&:2'80%7/$80%:1&7.$5,!91%92'81&:2'=6+>7+;4)92&4,!6.#91&92&6/"4-!6.$3+"AAA779++,'&&&&$##"!!! """&&&((('''!!!  !!!"""!!!!!!###$$$###!!!$$$(((,,,***+++111666233111+%0(2+!3+!:3):3(80&7/$:3(;3)91'81&80&:2(:2&91%91%80$6.#90%91&6.$5-";2(5-"5-!5,!5-!8.";1$8. 8.!=3&<2%6, 7-!;1&<2'=3':0$7-"6, 5, 5+ 5+ 4*1'2(4*7-"8-"6+ 4*6,!8."6, 6, 6, 3)3)6-!6-!3)3)7-!5+3)3(2'1&1'3)8/!:1$90#8/":1#90#;2%;2%90$9/$;2&90%8/#<3(<4):3(81%7/#<3'<4'7."7.#:2&:3(92'81&92'7/$4-!3,5.!:3'70%4.$3-$1*!1* 4,"5,"3+!3,"2*!2+"4-#3,"5.$0).'1* 2+!$$$###"""!!!###$$$"""""""""$$$######$$$$$$######%%%%%%#########"""""""""!!!!!!!!!#########!!!"""$$$###"""  !!!$$$#########$$$###!!!!!! !!! !!!  !!!  ###"""############"""""" !!!!!! !!!###""""""!!!!!!!!!!!! !!!""""""!!! !!! """###!!!""" !!!!!!!!!!!!"""!!! """!!!!!!"""!!!   !!!###""""""######"""!!! !!!!!!8/$91%91%:2&7/#80$6/#5."80%81%6/#70$70$80$91%;3';3'<4'90$6."80$91%:2&;2&;2&:1%7.#5,!3+ 3+ 5,"80&6.#4+3*3*5-!6."5,!;2&=4(;2':1%90$;3&<3'<4'@7+>4(6-"7.";3'80$5-!7.";1&<2'8.#4+;3'?7+=5);3':1%<3':1&7.#6."=4(90$7.#<2'>5*>5*>5):1&4, ;2&A9-@7+;3'80$:1%=4):1&4, 7/#7/$4-!3,!91&:2'7/$3+ 80%4,!/'4,!;3(:2'7.#90%?7+7/$8/$=5)91%3*91%?7+>5)7/#90$=5);2&7/#8/#<3'8/#8/#9/#;2&<2&=3(;2&7."7-!;1%=3';1%8."9/#90$7."90$7-"90$>4);1%6, 90$6-!3*9/#<3'7."6-!8/#:0$8."8.":1$=3';2&90$90#;1%9/#:0$:1$7-!4*91%:3&5."5.":3'81$81%92&:2&6."1)4+5+9/#;2&:2&7/!90#:1&8/$:2$=4(;2)4+5,8/%90%80$:1%80$80$:1$;3%8/"?6( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -B, A+ ?*9%7#9&9(9(:(:'=(?'<&;'<(=(F/"E/!A+<&;%8#4 7$9&0( .4"-) .13!/.-*$ $ ))$!$%$""!    -          - -      -           -  -  -   -            -     -     - - - -   -   -  -3,!0)3,!5.#2+1*0)3, 4-"4-"2+!2+ 4."4,"2+ 3,!5.#5-#4-"4-"3, 0(0)3+ 7/$8/$6.#5-!5.#70$50$5/#70%4-"3+ 5-"3+ 7/#80%4.#5.#81&81&7/%7/$70%7/#3+ 4+ 5,!6-!5, 5, 4+ 5, 3*/&3*7/#80$6."4, 4, 6."80$7."6-!0'2(8."9/#6-!2)5+8."7."6.":1%:1%6.!7/#7/#6-"6-"80%91&2*4,!5-!4,!6-"80%:2':2'80%7/$91&:1'7/$4,!80%:2'81%91&<5)>7+<5*80%5-"7/$90%91%70#4-!4-#1* >>>113''(##$###  ###)))'''***///000333444111...,,,***&&&"""!!!$$$%%%%%%###$$$###"""&&&&&&''''''++++++000///332-&0(0)4-#7/%91&80&6.#92':3(81&6/$92(:3(:1&;2'90%7/#5-!7."7/$6."4,!:1'6.#4,"5,"3* 7.!<1$8. 9/">5(=3&6, 7-!;0%<2'=3(:1%6,!6- 7-!5+ 5+ 4)3(4)7,!:/$9/$6, 4*6, 8."7-!7-!6, 3)4*7."7."4*6, 9.#6, 3)2'2(1&0&3)8/!90#8/"8.!;2%:1#;2%;2%;2%:1%:2&90$7.#<3(<4):3(80%6-"<3'<3&8/#8/#92&;3):2'81&81&81&5-"2+5.!92&70%4.$4.$3,#4,"6-$6-#3*!3,"3+"3,#4-#5.$4-#0)0)2+!1* (((###"""""""""$$$$$$###""""""$$$%%%$$$$$$$$$"""%%%$$$######$$$######### !!!"""!!!###### """"""###!!! !!! !!!###############&&&%%%###""" !!!   !!! """"""######"""!!!!!!  !!!   !!!######!!!!!!!!!!!!!!!"""!!!""""""!!! !!!""""""!!! """"""!!!""""""!!!###"""!!!!!!!!!  """$$$###"""###""" !!!5-!80$90$91%:1%6."80$6/#6."91&:2'81%81%81%80$92&;4';3';3'80$8/#91%:1%<3';2&;2&:2&7."5, 5, 6.#6.#90&80%4+ 1(1(5,!7.#5, 90%=4(;2&:2&91%<3'<3'<3'?5)=3'6."8/#<4(81$6.!80$;2&<3'8."3*;2&?7+>5);2':1%<3';2&90$6-!<3'8/#7/#<3'>5*>5*?6*;2&4, :1%@8,?7+;3'80$:2&=4)91%4, 6/#80%5."5-":2':2'7/$3+ 8/$5-"0'3+ 80%80%6.#91%>6+90%7/#=5)80$3+:1%>6*=4(8/#90$;3'8/#6."7/#<3':2&8."9/$;1&<2&=3';2&7."7-";1&;2&:0%8."9/#:1%8.#:0$6-!90$=4(:1%6-!:1%9/#6-!8.#<2&7-"8.":0$:0$8/"7.!:0$=3';1%:1$:1%:1%9/#;1%=3'8/"4*8/#80$4+ 7/#;2'5."70$:2&:3'6."2*4,5, 9/#;2&90$;2%91$90%8/#:2$=4)=4*6- 8/"90&90%90$;2&;2&91$:1%:2%7/">6' - - - - - - - - - - - - - - - - - - - - - - - - - - - - -B,B+ @*<'8$9%<)<):'<'='>'>);(:'<(A,C- D.!C-?*9$4 7#;'8%0,.3#1 +-2//.-)% %)'$#$$&!            -     -     -                 - - -                   -  - - - -     - -  - - -4-"4.#3,!0)4-"5.#3,!1*1)4,!6/#5/$3,"3,!5.#5.#4,"4-"5.#6/$70$7/$5-"1)2*5-"7/$90%7/$4,!5."60$5/#4/#71%5.#5-"5-"3*6.#70%4.#5.#6/$70%81%70%6/#7/#4+ 4+5,!6,!6,!5, 5, 5,!0(.%3+7/#7/#7.#3+2*5,!6-!7."6-"0'2(8."9/$7-"5+7.":0$8/#7."91%:1%8/#90$:1%7.#5,!91&:2'4,!4, 6.#5-!6.#7/$91&92'91&6.#80%8/%7.#4,!80$80%80%91&;4(=6+=6*81%7/$80%;2':2&60#2+ 2*!/':::--/&&'###$$#&&&,,,///+++(((%%% """###))),,,...444333///&&& ######%%%%%%%%%"""!!!"""%%%%%%&&&---...333===>@=+$/(0(2+!81'81&6/$5.#91&:2(81&5.#92(:3)<4(<3';2'8/#4, 7/#7/#6."5-"80%8/%7.$7/$4,!8/";1#7-9/"<4&:2$5-6- ;1%<2&:0%9/#4*6-!4+5, 6, 5+3)5*8-":0%:0$6, 4*6, 8."7-!6- 7-!5+6-!9/#7-"4)7,!9/#7-!3(1&2'0&0&4)6- 8/!8/"7.!;2%90#:1$:1$<3&;3':2&7.#6-":1&;3(92'70$5-!;3&<3&91$80$:2';4):3(70%81&:2'6.#3,70#92&70%4.#3-#3,"4-"6.#6.#4,"4-"3,"3,"3,"4.#3,!/(1* 4-#1* !!!$$$###$$$$$$$$$###"""!!!"""$$$%%%###"""######$$$$$$$$$$$$$$$$$$###""""""!!!""""""######!!! !!!###!!! !!!###!!!"""######"""###&&&######"""  """   !!!!!!""""""!!!  !!!  """!!!!!!!!!"""!!!"""""""""###"""  !!!!!!!!!!!!""""""!!!!!!"""""""""!!!"""""""""!!! !!!  !!!#########"""###"""!!!!!! !!!2*5-!8/$80%:2&90%4, 6."6."6.":2'<4):3'92&91&7/#80$;3'<4(=5):2&90$91%:2&<3':1%:1%;2&7."3*6-!7.#6-"90&;2(3+0'0'5,!90$6-!:1&<3(;2';2&;2&=4';2&;2&?6*=4(8/#90$<5(92%6."80$<2'=3'9/#4+ ;2&?7+>5);2'91%;2'<3';2&6.";2'7.#6-";2'?6*@7+?6+:1%5,!91%?6+?7+=4(91%;2'>5)91%4, 5-!81%6.#4,!;2';2'7/$4, 7.#4+ 0(7/#;3(91&7/$80%>6*90%80$>5)90%4, :2&>5*=4(80$91%;3'80$7."91%=5);2&8.":0$<3'=4(>4(<2&7-"8."<3'<2&;1%9/#8.#:1%:0$;1%7-!6-!<2&:0%7.":1%90$9/$8."9/#4+7.";1%;1%9/#8.":0$<2&;2&;2%:1$:1%:0$<3&>4(9/#5+6-!8/#3+7.";3'5-!6/#91&:2'7."3+4+6-!:2%<3':1%:2$:2%7.#6.!91#=4)=4+8/"90#;2(91&:1%<4'=5':1$;3&:2%7/":2$ - - - - - - - - - - - - - - - - - - - - - - - - - - -C,C, A+A*<&:%<(?,"<);&A(D)?)>+ =*=)>(?*>)?)?)>(9$7":'=)5"01/.+0 3!1/-.,& '(&###!!!    - -      -  -     -     -                -        - -     - -     -   - -        - - - - - -4-#5.$5.$5.$3,!1*4,"4-"3,!1*0(2+ 5."5.$3,"2,!4-"5.#4-"4,!4-"5.#6/#6/#3,!0)2+ 6.#7/#80%7/$4,!5."70%5."5."82&60$70$7/$2*6.#81&5.#4."70$81%70$6.#5-"6-"3+4+5, 4*4+5, 5+!5+ 1(.&3*8/$7/$7/#4+ 2*6-!6-"7.#6-!0'2(8."8/#7-"5, 8/#;1%:1%8/#91%:1%8/#:1%:2&6."4+ :1&:2'7/$5-"7.#5,!6-"6.#7/$80%91&6.#80%7.$6-"5-!80%80%81%92'<5)<5):3'70%91&91&:2'81%60#1*0(-%766))*&''""#### (((...$$$ !!!(((111555,,,""" """$$$$$$&&&%%%!!! ###$$$$$$$$$)))000555:::<=;&/'0)2+!70%81&7/%80%92':3(:3(70%82':3(:2&:2&:2&7/#5-!:1%91%6."6.#8/$80%80%80%5-!90#<1%7- :0#=5(:2%5,6-!;1%;1&;1%6-!3*1)4, 5-!5, 4*3(6*8-"9/$8."6, 3+4+6-!7-!7-!7-!5,7-!:0$7-!4*8."9/#8."3)0&1'0&1'4*5+7.!7/"7.!;2%8/"91$90$:2%:2&;2'8/$6-#90&:2(:3(80$6-":2%;2&90$80$:2';4):3(6/$81&:2&6/#3,70#:3'71&4.$4-#3+!3,!7.#7/$7/$6/$3,"3,"3-"5/#3,!/(0)2,!!!!###$$$###%%%$$$###"""!!!"""############"""######$$$%%%###"""###$$$######""""""###!!!"""!!!!!!!!!!!!!!! $$$""" !!!"""$$$###"""######$$$!!!   !!!""" !!!   !!!  !!!!!! !!!!!!!!!"""###""""""""" !!!!!!!!! !!!###"""!!!!!!!!!"""###"""$$$!!! !!!  !!! !!!!!!!!!###""""""""""""!!!"""!!!0'1)4,!7/$7.#91&7/$2*4+4+ 5-"92';4)91&81%91&6/#80$;3'<4(=4(:2&91%:1%:2&;2&91$:1%;2&6-!4+6-!6.#90%:2':1&3*1(1(6-!:1%6-"90$;2';2&;2&<3'=4(;2&;2&?6*=4(80$91%;5(92%80$:2&=3'>4(:0$4, :2&>7*=5)<3(90%;2&;2':1&6-":1%7."6-!<3(@7+@8,>6*:1&6."91%>5*@7+=5):2&<3(>5*91%4, 5-!91&80$4, 8/$=4(90%5,!7.#5-!1(6.":2&80$6."8/$<4)80$90%>5*:2&4+ :1&>5)=5)90$:1%<4(;2&91%<4(>6*<3'8.#:0$=3'>5)?5*=3'7."8/#>4(=3';1&8/#7."9/$7-":0%8.#6-!;1&:0%8.#90$8.#8/#:0$90$5, 5+ 90$;2&8/#8/":0$<2&<2&;2&:0$;2%<3&>4(>4(8/"5+6-!90%3*5,!<3'90$5-!7.#80$7."4, 5, 7/"<3&=4)<3'90#:1%8/%5- 90"<3)=3*7/"8/"90&:1&;2&<3&;3&:2%<4(91%6."7/"I>. - - - - - - - - - - - - - -C,C,B+B+>';%;&<(<)<(@(E*D*@*?, >*@*B-A,=(<':%7"6!;&>*:(102 0--1!3#1!///('%&$"           -  -          -           - -         - -  - - - - - - -       -      - - -  -       - - - - - 3,"5/$5.$5.$4-#6/%3,!1*3,!3,!3,!2*1*3+ 6/#5.$4-#3-"4.#5.#4-"3,!4-"5.#6/$7/$4,!2*4,!70$7/$80%6.#4-!5/#81&4."4-"60$5.#70$6/#3+ 7/$:3'60$5."70$80%7/$6/$7/$6-"4+3+5,!5, 5+ 5+ 5+ 5+ 2)-$1)6."5-"6-"4, 3*6-!8/$8/$6-!1'0&6,!90$7-"5, 8.#90$:0%8/$:2&;2&90$:1%90$4+ 3+ :2';3(80$6-"7/$5-!6."6.#7/$70%81%6.#91&:1&80%8/$;2':2'91&81&;4);4(92&70%80%8/$7/$70$60$2+ /(,$322''(&&'"""""! $$$)))&&& """...222111$$$ """###$$$%%%$$$$$$ !!!######$$$(((---222999998:78/'0(0)70&92'7/%91'91':3(:3(80&80&:2'91%:2&:2&90$90$:2&<4(6."7.#80$8/$7/#90%7/#9/#>3'<2%<2%;2%91$4,5, 9/#;1%9/#6, 2)0(3+5,!6-!4*1'4)6, 9/#7-"4+2*4+6.!7."8/"7.!5+6, 9/#7- 5+8."90#5+2'1'0%1&2'6+7, 8."7/"7."<3&90#:1%;2&90%91%;2'90%8/%:2';3(;4)91%8/$:1%;2&80#7/#:2';3):3(6/$70%92&6/#3,70#:3'82&5/$60%3,!4-!80$90$80$6/#4-!3,!3,!5.#3,!/)0*3,""!!!!!######$$$"""$$$$$$"""!!!!!!!!!"""""""""!!!"""$$$$$$$$$###"""$$$%%%$$$$$$!!!"""""""""!!!"""!!!!!!"""### """###"""###"""###"""###"""   """ !!!  !!! !!! !!!!!!!!! !!! !!!!!!"""######""""""!!!  !!!""""""  !!!   !!!!!! """ !!!""""""!!!4,!4+!1)0'3* 7.$5,"7/$6.#3+3+3+ 6.#:2';3(80%5.#7/$5."6."7/#:2&<4(:2&91%;2&<3'=4';2%:1%:1%7."5, 7."80%:1&91&7.#4+2)2*6-!:1%5,!7.";2';3'<3'=4(>5(:2%:2%>5)<4(80$81$<5(:3&80$;2&>4(>5):1%5-!;3'=6*<4(<4(80$:2&;2&90$7.";1&7-"6,!=3(@7+@7+>5*;3'6."80$=4(?6+=5):1&<4(>5):1&5,!4, :1%:2&5,!8/#<3':1%4, 5-!6."3+91%=5)=5)80$:1&;3'7/#90%>6*:2&2*7.#=4)=5)8/#7/#<4(;3'90$<4(>6*=4(:0$:0%<2&=3'>5)=4(8.#7."=4(=3';1&9/$8.":0$5, 8/#9/$90$<3':0%7-!9/#8."8.#:0$:0%6,!5+ 90$;3'6-!6.":2&<3';2&;3&;2%<3';2&=4'=3'7.!5+8/#;1&4+6-";2&91%6-!7."7/#7/"4,6-!8/"<3&>5)<3'90#;2&8/%5- 91"<2);1(7.!8/#;2'=4);3';3&:2%91$<4(91%8/$90%:1% - - - - - - - - - - -C+D,C+B, @*<&='<&<';'?(C)B)?)?)?*A,A,A,B-@,=(:%5 6!='>)8%3!11 /*-/ / ,.0,)''#   !        -  -           - -   -   -      -      -   - -  - - -  -      - -   -  - -   -  - -    - - - - -  5/$6/%4-#70&5.$5.$3+"6/%3,"2+ 3,!3,!4-"3,!2+ 3+ 6.#5.#5.$4-"4-"5.#4-"3,!5-#6/$6/$7/$4,!2*3+ 6.#8/$7/$5-"4-!6/#92&5."3-!5/#70$80%5."4,!8/$91&6.#5."70$70%6.#5.#6/#7.#4+ 2*5-!6-!5,!5+ 5+!4+ 2)0'4,!6.#7.#6."6-"3*4, 8/$8/$7-"2(1'6,!:0$8."6,!7."8/#8/$8/#91%:1%7/#91%:2&3*4+:1&;2&8/$6-"7/#5-!7/#80%91&70$80%6/$;3(=4);2':2'<4(;3(92&91&<5*:3(81%70$80%8/$6.#5."5."3,!0(-%00/%%&$%%!!! '''!!! +++)))&&&###!!!!!!'''111+++ """###%%%'''&&&%%%!!!!!!"""###%%%(((,,,111555665646-%/'0)70%92'81&81&81&92'80&6/%81':2':2&:3&<3'80$80#91%91%6."7.#80$7/#7/#:1&91%<2&?5);2%;2&>5(=4(6-!4+9/#9/$:/$6,!4*2)2*5-!7-"3)0%2'5*9.#7-!4*1)4+6-!6-!8.":0$7-!6, 9/"7-!5,7-!7.!5+2'1&.#0%2&6+8,!9.#7."6.";2'80$;2&:1&:1%90%;2'91%80%;3';3(<4):2&90%:1%;2&90#80#:2';4):3'81&70$92&7/#2+5.":3'82'5/$71&4-"4-!7/#7."5.!5.!3, 3, 3,!3,!1*/)1* 3,"%%%!!!$$$###""" !!!""""""!!!!!!!!!"""""""""!!!"""######$$$$$$$$$$$$$$$$$$$$$"""!!!$$$!!! !!!"""### !!! !!!"""""""""$$$###"""!!! """!!!!!!   !!! !!! !!!!!! !!!!!! !!!!!!!!!!!!""""""!!!"""!!!!!!!!!  !!! !!!  !!!!!! """###!!! """"""3,!6.$7.$4+ 0'2)8/%5-"7/$7/$5-"4,!5,!7/$;3);3)7/$2* 5-#7/$7/$8/$:2&=4(:1%90$:2&;3&=4(;2&;1%:0$90$5,!8/$:1&7.#7/$8/$4+!3*5, 7.";2&7."8/#;3'<3'<3'=4(=4(:1$:1%>5);3'7/#81$<5):3&80$<3'>5)=4):1%5-!;4(=6)<4(<4(90%;2';2'8/$8.#;1&8.#6-"<3'?7+?6*=5);2'6."7/#<4(>6*>6*:2&;2'=5):1&3+2*90%;2&4+ 7.#:1&:1&3*3*80$5-!:2&<3'=5)91%:2&<4(8/$80$>5):1%2*6."=5)>5)7/#6."<3':2&7/#;2&>6*>5);1&:0%;1&:1%=3(<3'8."6,!<2'<2';1%:0$9/#;2&7-!7."9/#:0%>4(<2&6-!:0$9/#8.#:0$;2&8/#6-!91%;2&5-!5-!;2&<3'<3';2&;2&<3';3&=4(;1%5+5,;2&>5)8.#7-!;1&:0%7."8/#80$6/"4- 6- 7.!<3'=4):1%90#:1&7.$7/!:1#=4*:1'7/"90%>5*?6+:1&81$70$80$:2&6.#6.#80&91% - - -  B+D,D,C-?(='@*@+?)>(>(B)C)>(;(?*=(@+C.!@+>*;'9&;'8#9#A+>(:&6#2 1..// 0!+(*)&'%#      !   -    -     - -   - - -   -     -        -    - -  - - -  - -  -        - -  - -    - -   -  - - -   1+ 4-"6/%5/$3-"70&6/%6.$5.$6.$3,!2+ 4,"4-"3,!3+!4,"4,!6.#5.$5.$4-"3,!4-"3,!2+ 5.#70%7/$70%4,!3+ 3, 6.#6.#5."5-"4,!5."81&5/#3, 6/#81%81&6.#6."80%6.#4,!4,!6/$7/$6/#6.#7/$80$5,!3*6-!6."5,!4+4* 6,"3* 0(1)3*6-"5,!4, 3*6-!90$9/$8/#4*2(6-!:0%9/#6-!6-"7."8/#8/#90%90%6."91%:3&5,!5,!90%:1&9/$7-"7-"5, 8.#;2&90%8/$7/$6/#:2&<3(;2'91%<3(;3(91&;4(:4(;5):3'70$6/$80$6.#5."4.!3,".&777-,+%%&"""   e\Xrjgupnqonoopuuwfefiii===''' !!!)))...%%% !!!$$$'''((('''###""""""######&&&+++...7770001/1+$0)3+!70&70&70%80&92'92'7/%6/%:2):3(;3'<4(;3'7."6."8/#7."5-!4+5-!6-!7/#:2&90%;0$>3'<2&=3'>6*=4(8/#6-!:/$9.#<1&8/#5, 2)2*5, 6-!3)1&4)5+ 8-"5+ 2)1)5, 7."7.!9/#;1%7.!5+7.!8.!7-!8."8."7- 4)2(0$1%1&5*8-!:0$90$80$91%80$:1%<3(<3(;2'<3':1%80#:3&<3';3'<3'8/#90$:2&80#7/#:2';4(:3'81%70$92&6/#2*4- :3'82'4.#71&4-"4, 6."5- 5.!5.!3- 1+4.#3-"1+ 0*1+2+ (((!!!######!!! """!!!!!!###""""""$$$%%%###"""!!!!!!""""""$$$$$$######$$$###"""!!!###"""!!!!!!!!!"""!!!!!!""" !!!"""!!!###"""""""""  !!!!!!!!! !!!  !!!!!!"""!!!!!!  !!!!!!!!!!!!!!!"""###"""!!!!!!        """###!!!!!!3,!3,!5-#6-#5+!3)5+!8/%8/%80%91'8/$6.#5-"80%<4)<4)70%3+ 4,!5-#7/#80$;3'<3'90$80$91%:2%=4(<2&;2&;1%;1%6-"7.#90%5-"8/%:1&6-"4+ 6-"8/$;2'90$90$;3';2&:2%<3&<3':1%;2&=4(;3'70$81%<5)92%81$<4(=5)<3(8/#4+;4(=6)<5)<4(:1%;2'<3'90%90$<2'8/#6-";2'?6+>6*=5);3(7/$80$;3'>5*=4)91%:2&<4(91%3*2):1&;3'4+ 8/$<3(=4(3*3*8/$7.#<3(=5)>6*;2';3'>6*80$7/#<3(80$4, 7/#>5)>5)7/#80#=5);3'7/#:1%?6*=4(:0%90$;1&:0$=3(=3(8/#7-!=3'<3';1%:1%9/$<2&8."8."9/#90$<3'<3'7.";1%:1%8."9/#;2&:0$7."90$;2&6."6-!;2&;3&<3':1$:1%;2%;2&=4'8/"3*5, =4(?6*<2&;1%=3(<2'7."8/#:2&80$4- 5, 8.!<3'<3*90%90"90'8.'80 91"<3);2'7/":1%=4)?6*90%91%5-!5-!80%7.$7.$6-$8/% - - -B+C,D,B*A,='?(B,C,A+@*?'@'>(9'<(?*A, >)?*>*9%6"8$9&=)<&<'9$4 3 4!6$5#2"0 .,*&(('$#"!   -  "        -  -   -   -          -     -        - - - -  - - -         - -       -       - -   -5.$2+!1* 4-#70&60%4-#70%6/$5.$6/$6/$2+ 0)4,!5-"3+!2* 5-"5-#6.$6/%5.#5.#5.#3,!1*3,!5.#5.#6.#70$5-"4,!4,!6.#5."5-"7/$5-"5.#71%5/#4-!6/#6/$80%6.#5."80%91%6."6-"7.#6.#7/#80$80%8/$5-!5, 7.#7/#5-!3+4* 6-"3* /'.&2*4,!7/#2*2)6-!8/#90$90$5+ 4*7-":1%90$7-!6."8/$90$90$90%91%6-!80$:2&8/#6-!8/$;2&90$7-"7-"4+6-!90%8/$80%80%7/$:2&<3'91%8/#<3(;3(91&<4*;4*<5+;4*70&6/$80&7/$6/#6/#3,!+$333*)(&&&!!" !  eeeoooe]ZmhgmkkhhihijklnhijLJJ748989,,,(((  )))***  !!!$$$&&&&&&&&&$$$############"""$$$'''000222222*"0(1)4-#6.$6.$70&;3);3)80&5-#70&92'92&<4(92&80$6."80$:1%80#5- 5-!5-!90$91%8/#:/#>3(<2&;2&>5*=4(6-!5, 7-!8.#9.#8.#3*2)2)4*7-"5*1&4)6+ 7-!5+ 2)2*6- 8/"9/#:1$;1%7-!5+7-!8."8."9/#:0$7-!4)2'0%1&1%5)8-!:0$90%80$8/#8/$80$;2'<3(<3';3'91%6/"81$<3';2&;2&7."80$;2&91%7/#;3'<4(;3'80$7/#92&5/"1+3, 92&71$81%81%5.#4-!7/#70#81$70$4-!1*2+ 2+ 1+ 0*0)1* !!!"""#########$$$$$$######$$$$$$$$$$$$"""  """###"""###%%%$$$###""""""!!!$$$""""""""""""!!!"""  """#########""" """ !!!!!!!!!!!!"""!!!    !!! """!!!"""  !!!!!!!!!""""""###"""!!!!!!   !!!  !!! 6.$/(2* 6.#7.$5,"4* 7-#90%6-#6.$91&8/$7.#7.#91&;3(;4(80%3, 5."3, 6.";3';3'<4(90$7/#91%;2&=4(;2&;1%=3':0%6-!6-!8/$6-#8/%;2'8/$7.#7.$8/#;2&:1%:1%;2&;2&:1%;2&<3&;2&<4'<4'<4'81$81%>7*81$70#;3'=5)<3(6."2+;3'=6*;4(:3'90%;2&<3(:0%90$:0%9/$8/$;2'=5)>5*=6*;4(80%81%<4(?7+=4)80$:1&<4(:2&4+ 3+<3(<3(6-":1%=3(;1&2)4+7.#8/#;2'>6*>6*<4(>5*>6*:1&7/#<4(8/#4+ 7."=5)>5)7/"90$>6*;3'7/#91%=5)<3':0$90$<2&90$=4(=4(9/#7-!>4)>4)<2&;2&:0$;1&8."8/#:0$8."9/#;2&8/#;1&;2&8.#8/#;1%:1%8.#6.":2&80$7/#:1%:1%;3&90#91$:1$;2&=3'7-!3*7.">5)A7+>5)=2'?5)>4(8/#8/#;3'92%3,5,8/";2'<3*90$91#90(8.'7/ :1#=4);2'8/":1%;3'>5)<3'91%5-!5-!7/#7/#7.#5-"8/$K@1 - - -B+B+B+B+@'<%<'?)C,C,B+@*@(8$5$9&;(?+ E1&A-"<(:'6"3 :(;(7$A-!8#:%2+ 3!6%7&4#0!,)%'*'#$!          - - -        -    -         - -        -      -   -        -  -      -    -      - -  - - -5.#4.#3,!2+!5.$70&60%5.#70%6/$5.#70%70%3,!1)3,!4,"2* 0(2* 3,!5-#6/$4-#5.#70%4-"3,!4-"70%5.#5-"6/#6.#4,!5-"5-"5-"2+ 5-"3,!6.#92&6/#5.#6/#6.#81%80%6.#91&80$6-!6."80$7/#7/#80$80$7."4, 4, 6-"6."5-!4, 5,!4+ 2)0'0'4,!5-!7."2)3*7.#8/#90%:0%7-!5+ 7-!:0%9/$6-!7."91%90%90$90%;3'7.#90%:2'7.#6-!8/$<3':0%7-"8/#5, 6-!90%8/$80$80%80%;2'<3(90$7.#<3(<3(91'<4*<5+;5*:4)81'92(;2(8/%91&7/%2*/'000)(((((""#   eeegggpki{|~abcbbaLLK311:67865(((###!!!)))&&&"""$$$%%%&&&((('''%%%$$$###"""!!! !!!,,,000/004-",%/(5.#5.#5.#6.$;4*:2(6/%5.$70&92&:3';3'70$6."6."91%:2%6.!5- 7/"80#90$;2&7."9.">4(=3(;2&=4(=4(7."8.":0%:0%8.#6-!3*1(1)3*8/#5+ /$2'6, 8.#8."5, 5- 7.!80#:0$:0$:0$7.!7-!8."9/"8."9/#;1%7-!3)2'2'2'2&5)8-!8."91%7.#7/#7/#8/$;2&=4(<3(<3':1%6/"81$<3'<3';2&7."90$<3'91%6-!:1&;3':2&70$70$92%5."2+4-!93&81%81%81%5/#5."81&:3'92'7/$1)0)4,"3,!1*0)0)3,!!!!$$$$$$$$$$$$###$$$%%%###$$$$$$%%%###"""!!!!!!!!!!!!"""######$$$&&&$$$$$$""""""###$$$"""""""""#########!!! !!! ######""""""!!! !!!!!!  """"""!!!!!!!!! """!!!!!! !!!!!!!!!###$$$$$$""" !!!       ! 5.#7/%3+!3,!6-#7.$6,"4* 6,"8/%7.$7/$91&:1&80%80%91&;3(:3'70%5.#6/#4-!7/#<5);3'<5)91%80$91%:2&;2&:1%<3&:2%7."4+5-!90%90%90%<3(90%:1&:0%8/#;2&<3';2&<3'<3';3&<4'<3';3&<4'<4'<4'81$82%?9,81$7/#;2&>5)=4)7/#2+;4(=6*;3'91%80$:1&=3(:0%8.#;1&:0%8/$;2&>5*>6*=5):3'6.#80%=5)@8,=5)90$:2&=5);3'4, 3+;3';3'7/#;1&<2'9/$2)4+ 7.#7."90%>6*?7+=4)>5*?6+91&7."80$6."3+4, :2&<4(5-!80$?6*;3'7/#:1%<3';2&:0$;1%<3'90$=3'=4(8/#6-!>4)>4)<2'<2&:1%;1&7."8/#:0$6-!6-!:0$8.#:1%<2&90$90$;1%;1%8/#5-!:2&80$8/#:1%:1%<3&80#91$:1$<3&=3'7.!6-:1%>6*C9.@6+=3(?5*>4(8/#90%<4(:3&6.!6- 8/!;2';2)7.!90"90(8/&6.90"<3(;2&7/"90$;2&=4(<3(:2&7/#8/#91%8/#7."5,!6."=4( B*A+A+B+B);";#?(>(A*C+B+@):%3!3"8%:%?,!;'?,":'5"3 6#:(<*:&5"5"1///3#3"3#/!*" ! &'&"  !  - -         -       - -   - -    -      -    -    - - -   - -    - -              -     - - - - - - -/(4-"6/$6/$5.#3-"5.#60$5/$3,!5.#6/$5.#70%70%3,!2+ 5-#5-#4-"2*1)2* 5-#6/%3,"4."70%5-#5-#4-"81&4-"3+ 5-"5-"3+ 4,!5-"3+ 2+5.#6.#5-"81&80%7/$7/$6/$91&80%6.#91&;2'90$7.#90$90%80$80$8/$6."5,!5-!5-!6."7/#5-!4+ 4+ 2).%0'5,!5,!7."4+ 3*5-!7.#:1%:1%8."5,5, 9/$90$6-!7."90%8/$7/#90%<4)8/$91%:2&8/#6-!8/#=4(<2'8.#:0%8.#6-!8/$8/$80%80%80%:2'<3'90$7/#<3)=4):2'<4*<5+<6,;5*81'80&:1'7/$81&6/$1)3,!---+*****"##!!"===aaadddgstƭ}~Z[Z__^CCB!!!,++999222###"""&&& """$$$$$$&&&(((((('''%%%"""###""""""%%%,,,///---/'+$1* 3,"3,"4-#6/%;3)70&4-#6.$91(91&:2&92&91%6."7/#:2&:2&7/"6.!90$:1$:1$;2%7."9/#<2&;2&;2&=5)<4(9/$6,!;1&;0%9.#6+ 3)1(3*5, 8.#5+1%4)9.#9/#6,!4+5- 6-!8/#;1%:0$9/#7- 7- 8."7-!6, 7-!;1%8.!4)2'3(3(2&4)7, 7,!91%6-!8/#7.#7.#90%<3';2'<3(;3'7/"91$<3'<4(;2&7."90%=4(:1%7.":2&;3':3'81%91%92&5."2+6/":3&92&81%81%6/#6/#81&:3'70%3,!1*0(3,!3,!1*0)0)! !!!""""""######!!!""""""%%%%%%$$$$$$###""""""######$$$""""""######$$$%%%$$$$$$!!!!!!###$$$$$$!!!!!!"""###"""!!! """!!!!!!"""!!!!!!     !!!!!!!!!!!!!!!!!!!!!""" !!!!!!!!!######$$$"""!!!!!!   !!! 2)4+!5-#5.#2+ 4-"8/%7.$6-#4* 5,"8/%8/%7/%80%8/%7/$7/$91&<4);4)80%7/$70$5."80$=5)92&;4(91%80$8/$90$91%91$=4(;2%7/"5, 6-!90$:1&:1&<3':0%<3';1&9/$<2&=3(:1$;2%<2&=3'>5(=4';2%=4'>6(:3&80#93&?9,81%91%;3'>5)=5)70$3, ;4(=6)<4(:2&80$:1%<3'9/$6-!:0%;1&90$91%=4)=5);3'91&4,!80%=6*@8,=5)90%;2'>5*=4(6-"5, <3'<3'90$90$;2&:0%3)5,!90$6-"80$>5*@7,=5)>5)?7+80$8/#:1&90%5-!6-";2&<3'5-!90$>6*;3'80$:2&:2&90$90$;1&;1%9/$=3(>4(90$8.#>4)>5);1%;2&90$:0$7-!9/$90$6, 7-!90$7."90$;2&:0%:0%:1%:1%8."6.":2&80$80$;2&:2%<4'90#:1%;2%<3'>4(:1$:0#:2%=4(B9-@6+=3'>4)?5);2&<3(<4(92&81$7.!6- ;2':1'5,8/!:1)90&7.90#:1':1%7."80#;3&=4)=4):2&8/#90$:1%80#7/"5, 6."=3(A*A+?+B+B*;#9!>&B+?(?(B+C+ <'4"2"6$6#7%>+!;):(6%0/5"9&8%:'6#2/+ 2 4$0 0 0!+%"#)'%  "    -      -      - - -   - -   -        -          -    -     - -      - -  - - - - -  -     - - - - -  3,!0)0)4-"60$6/$5.#3-"5/$5/$5/$70%81&70%4,"6/$70%1*2* 7/%7/$5.#2+ 2* 4,"7/%81'3-"4."60%4-"5.#4,"81&4-"3, 6.#5-"3+ 4,!4-"2*3,!4-"6/$5."70$6/#6/#6/$6/$91&80%4-!80%90%:1%8/#:1%<3':1&91%80$6."6."6."5-!4-!6."3+ 3*2)2)0&/&6-!7-"7-"5,!4+ 7."90%90%80#8/"4+3*8/#;1%7."7."91%90%7.#91&<4(7/$80$91&:1%7."8/#=4(>4(9/$90$9/$7-"8/$90$80$90%80%:1&:2&90$7.#;2(<3):2(<4*<6+=7,;5+81'80&90&8/%81&5-#3+!5-",*)))(()($$% !  IIIZV[dbcigfjjkvyzw{~`aaUUSWWW;;:!!!***333)))$$$  !!!"""###'''((((((''''''###$$$######(((++++++**)***+#/(3,"2,!4-$70&91(6.$2+!6.$;3)92'70$7/$;4(91%7/#:2&;2&7/#7/"80#90#:1$<3&:1$:0$:0%80$91%<3'<3':0%8.#<2';0%8.#5+ 3*2)5, 7.#8."5*1&2'6,!7-!4*1(4,6- 8/#;1%90#:0#7-!7-!8/"8.!6, 7-!:0$8."5*3(4)3(1&4(6+8-"80$5-!7/#7."6."7.#90%90%<3';3'6/"81$<3'<3':1%6-!90$>5):2&6."80$91%81%70$81%81$6/"3, 60#92&:3&81%81%6/#5.#70$81%4-!3+ 4,!2+ 4-"5-#2+ 0)2+ %%%"""### !!!""""""###%%%$$$######!!!!!!"""""""""###!!!!!!"""$$$%%%$$$$$$### ###$$$%%%############""""""""" !!! ### !!!""" !!!  !!!"""  """ !!!"""######"""!!!!!! !!!!!!      3*0(2)4,!4-"3,!6/$90&7.$7-#6,"7-#8/%7/$7.$8/%6-"6.#7.#80%:3'=6*92'80%92&81$:3';4(:2&;3';3'7/#5-!7/#90$91$;3&;2&80#7/#8/#90%;2'<3(;1&;2&=4(:0%9/$<3'=3';1%:1$<2&;2%?5(>4';2%=4'?7);2%80#<4'@7+;3':1%<4(>6*=4)6-"3+<3(=6*<5):2&80$90$;2&9/#6,!8.#;1&:1&;1&<3(<4(;4(80%2*80%>6+@8-=5)91%:2&=4(<4(7."6-!;2&<3'90$9/#<2'<3'4*5, 91%6-!91%=5)>6*=5)=5)?8,81%7.#:1&:2&6-!80$=5);3'80#:2&>6*<3'91%:2&90$;2&9/$;1&<3':1%=3(>5):0%8/#>4)=4(:1%:0$8/#:0$7."90$:1%6-!8.#:1%7-"9/$:0$9/#9/$90$9/#6-!80$;2&7/#8/#<3';2&=4':2%<3&<3'=3'>4(;2%;1$;3&>6)A8,>4)9/$;1&>4*=4(<4(:3'81$70#6- 7.!;2':0'6-7/!;1):1&90!;2%;2':1&7.#80#<3'>5*>5*:2&80$91%91$7/"7/"5-!80$=4(A+@+A+E,=%:"@(B*A*>'@)C+@)6$2"6%:%8$9'9';)3"0/3"6%5#5#7%8&3!00 /6%,,).!($$%&$          -  -         - -        -   - - - - -        -  - - - - -   - - -    -       -   -    - - - -   7/%5.#3,!1*1*4-"5/$5/#4-"3-"60%60%71&6/$70%81&4-"5.#6/$2+ 3+ 91'7/%4,!1)3+!6.#7/%81'3-"4-"6/$3,!5.#4-"70%4-"4-!6/$5-"3+ 5-"6.#5-"5."5."5."5.#81&70$6/$7/$6/#81&80%3,!91&;2'=4(91%:2&<3'90$91%80$5-!5-!7."6."6."5."4+ 3*4+4+ 1(0&6-!7."8/#6, 5+7."91%80#90$8."4*2)8/#<2'8/#7/#90%90%7.#;2'<3(8/$80$91%:1%8/#7/#;2&=3(9/$9/$9/$7.":1&:1%7/#80%91&:2&:2&90%7.#;2'<4):2(<5*=6,<6+:4)81&81&80%5,"6/$3,!1)6.#(&%'&&&&&$$%!!! GGGRPSZYZ^\]WVXY\]begXY\OONOOO"""%%%%%% !!!###&&&''''''&&&'''###$$$%%%&&&)))((()))''&&&&+$0)3,#5.$4.$81'91(6/%3+!70%<4*;3(70$70$<4):2&6.":1&:2&7."7.!7/"80":1$;3&:0$:0$:1%8/#80$;3'<4(;1&9/$:0$9.#7-!5+ 5, 4+8/#:1&8.#7,!1%3(8-"8."4+1(3*5, 8/#;2%:1$:0$7-!8.!9/"8.!4*5+9/#6, 4)3(4)3(1%4(7+ 8.#7."5, 7/#7/#8/#8/#8/$8/$<3'<4'70#:2%<3'<3':1%5, 8/#>6*:2&6-!8/$91%92&91%92%92%5."3, 5."81$81%70$70$4-"2+ 6/#70$5-"5.#5."3,!5.#5.#1*/'2+ (((###!!! !!!######$$$$$$"""!!!"""!!!"""######"""###!!!###"""$$$%%%$$$$$$$$$""""""###$$$$$$!!!!!!""""""""""""""" !!!!!!%%%###!!! !!!!!!!!!  !!!  !!!###"""""""""!!!!!!!!!""""""!!!  !!!!!! 3*3*/&2*7/$7/$4,!5."80$8.#7-#6,"7-#8/$6-#6-#8/$4+ 6."4,!7/$:2'=5*92'92&;4(:3';4(;4(;4(;3':2&7/#5-!90$;3':2%;3&<3&91$90$90$:1&<3'=4(;2&;1&<2':1%90$;1&<2&<3&:1$;2%;2%>5(>4';2%=5'@7*;2%90$=5(?7*<3':1&;3'>5)=4)5,!4+;1&?5*<4(:1%80$90$;1&<1&5+ 8/#;1&:1&<3(>6*<5):3'7/$1)91&?7,@8->6*:1&:1&<4(<3(7/#5-!90$:2&9/$9/$=3'?5)6-!4+8/#5-!80$<4(>5)=4(<4(=5)80$5-!:2&<4(6-!80$<4(<4(:2&;3'>5)<4(:2&:1%90$:1%:1%;2&;2&;1&=3(?5);1%8/#>4(<3'90$8/#8.#;1&9/#8/#;1%5, 7.";2&8."9/#9/$8."7-!7."8."6-!90$;2&7/#80$;2&:1%;2%90#;2%>5(<3'<2&90#90#<4'>6)?6*=3'7-";1&A7,:2&91%:2&81%6.!6.!90#=4)<3(8/!6.!;1):1&91#;2%<4(<3(90%90#=4(@7,>5*:2&91%;2&:2%80#7/"5- 80$=5)QE6A+@+ A+G-=$9!@(G/"E- C,B+B+B+=%4!4#>)='8#7#7&2!4$1!--1 2 6$5#5$3"/1!3#,2!'$ (*'("      - -           - -     -    - - -   -    -   -        -  -         -     - - - -  - -      - - - - -  5-#6.$70&3,"2+!0)2* 6.$70%5.#2+!4-"60%81&81&6/$5.$70%6/$70%6/$3+!3+!80&6.$3,!1*4-"6/%6/%70&4-"4.#6/$3,!5.#6/$6/$4-"5."6.#5-"4,!5.#4-"5."4,!5."4,!6.#81%7/$80%80%6/$91&81%6.#;4(;2&;3'80$90$:2&90%:2&8/$3+3+6."7/#8/#6."6-"5, 6-!6,!0'2(7-"8.#8.#6,!4*6,!90$90$:1%:1%6- 3*8/#;2&7."7."90$90%6-":1&;2'7/$6.#90%:1%90$7.":1%<2&90$:0$;2&7.":1&:2&90$91%91%;3';2&:1%7.#;2'<3)92';4)=6+=6,:4)81&81&90&5-#6.$6.$0(6.$'%$%%%''(&''!!"!!!  DDDMLMQQQVVVSSSNNNRRRNNNEEEEEE """$$$''''''&&&'''$$$###$$$)))))))))(((#"""""/'2* 6.%5.%4-#70&7/&5.$3+!5.$;3(92'7/%81&;3(92&80$:2&:2&7/#7/"8/"91#:2%;3%:0$;1%;2&8/#8/#=5(>6);2&9/#:0$9.#9.#7-!7-!4+6-!90$8."9.#2&4)9.#9/#5, 4+6- 8/#:1$<3&:1$90#8.!8."8."7-!5+8."8/"5+3(3(4)3'/$3(8-!5+ 6-!5-!6."6."6-"7."8/#7.#;3';3'70#:3&=4(<4(;2&5, 7/#=4(90$5-!7/#:2&91%80$70$92%5.!2+3, 5/"6/#5.#5."5-"2+ 6/$70$6/$70%4-!3, 6/$70%2* .&3+!***###""""""###"""$$$$$$$$$$$$!!! !!!!!!"""$$$###$$$$$$######""""""###""""""#########"""######"""!!!!!!!!!!!!!!!  """###    !!!!!!    !!! !!!###"""!!! !!!!!!!!!""""""    !!! !!!""" !!1(5, 5,!2)5,!7/$6.#5-"6.#90%90%9/%7-"7-#90%8/$6."7.$2)5-"3+ 7/$<5)=6*:3(:2':3'81%91%;3';3':2&90%90$7/#:2&<4(<3'<4'=4(:1%80$90%:1&<3'=4(<3'90$90%:1&90%:1%<2'<2&<2&;1%<3&?6)>5';1$>5(@7*;3&:1%=5(?7*<4(:2&;2&=4(>5*7."4+:/$>5)<4(:2&80#:0%<2&<2'6, 7."=4(:1%91%<5);5(;5(<4(6."81%>7+>6+>6*;2':1&<4(<4(8/#6-!:1&<3'9/$:0%<3'?5*8.#3*8/#5, 7/#=5)=5)<4(91%81%6."5-!<4(>5*4, 91%=5)=5);2&;3'=5)<4(;2&91%:1%<2';1%90$:0$;1&=3(?5);1&8.#<2&<2'90$8/#7-"<2':1%7-!:0%4*6-!;1&8."8/#8/#6,!5, 7-"7-"6-!7.":2&91%90$;2&:1%90$7/":1%=4(<3'<2&8/"8/"=5(>6)?7*:1&6,!=3(:0&7/$7/$<4(92%6/"7/":1$?6+>5*:1#7."<3*;3'80"91$=4(=4);2&90#>5(@7,=4):1%:1%<4'<4&;3%:2%7/#91%=4(B8,B+A, B+J1!E+=$?&E- D- D-C, B, A+='8"7":&;';'7#5!7$8'.,3#1"01-1 3"00./+(% &('($%!             -    -       - - - -   - -   - -      -     -   - -        - -   -        -   -  - - -  2* 0)3,"6.$6.$3+!2+!2+ 4,"70%70%5.#1*4-"60$81&81&6/$82&81&5/$4."4-"2* 3+!6.$4,"5.#2* 4,"6/$6/%5.$4-"4-"6/$2+ 4,"6/$6/$5.#6/#7/$6.#5.#6/#6.#4-!4-!6/#4,!5."81%81%80%80%6/#70%6/$70$;4(:2&:1%80$7/#80$91%:2&90$3*3*6-"8/$8/#6."6-"4+ 6-!6-!1(3)7."9/$8/#6-!3*5+ 7."90$:1%:1$7.!4,7/#:1%7."7."90%90%4+ :1&:1'80%6.#91%:1%90$7.":0%;1&;1%9/$:1%9/$;2':1&90$91%80$<3';3'91%7.":1';2(80&92'<5*=7,:4)60%7/%8/%6-#5.#4,!0($$$'%%(('(()&&'##$"""!!    @@@AAAHHHMMMJJJFFFHHHFFFBBB=== !!!"""%%%((('''&&&$$$###$$$'''((()))(((((("$"+%0)4.$5.$5.$7/&6/%4-#3+!3,!:2'81&70%91':3(81%80$:2&90%7."8/#8/"91$;2%<3&:1$;1%;2%7/"7/"<4'<4'8/"8."<1%;0$9/"7- 7.!3)3*8/#8/#7,!2'6, :0$8/#5+5, 80#:1%;2%;1%9/#9/"8.!:0#8."6, 3)7-!:0#5*1&1&2'4(0$3'9."5, 7/#7.#8/$7/#7.#7."7."6-";2&<4(81$:2%=4(?6*=4(7."8/#:2&7.#5,!80$;3'81%6/#5.!70$5."2+2+5."70$6/#6/$5."4-"6/#70$7/$6/$3+ 1*6/$6/$2+ .&2+ !!!###"""###""""""######$$$###!!!!!!!!!!!!###%%%$$$$$$%%%%%%###"""""""""###$$$$$$###!!!!!!###$$$""""""""""""!!! !!!!!! !!!!!! !!!"""   !!!""""""!!!  !!!!!!!!!!!!"""###""""""!!!"""""""""!!!   !!!!!!2*2)1(3*4+2)4+ 80%6.#5-"7/$90%:1&;1&9.$8.#9/%8/$7.#90%4+ 5-"5-"7/$:3(=6*<5*:2'81%4-!6.":2&91%:2';2';3'90%<3'=5)<4'=5(=4(:1%8/#:1&;2&;2'=4);2'8/$7."90%:1&;2&=4(;2&<3':1%;3&?6)<3&:1$=5(?6)<3&:2%=5(?7*=5):2&;2&=4)>5*8/#4*8.#>4)<4(:2&7/#:1%;1&<2&5+ 7-"=4):1&80$=5)<5)<5);4(6."80$=5)=5)>5*<3':2&=4)=4)80$6.";2&=4(9/$9/$=3(>4)90$4+91%5, 7."=5)<3';2&7/#81%80$6-";3'<3(2*90$>6*=5);2&;2&<4(<3':2&80$;3'>4);1&7."8/#:0$;2&@6*;1%7.":0%;1%7."7."6-!=3';1%6, 9/#4+8.";1%7-"8/#8.#5+5, 8.#6-!6-!6."91%8/#8/#90$:1$90#7/";2%>5(>4(?5)9/"7.!:2%>5(?6*;2&8.$90%:0%6.#80%<5)92%80#91$<3&?6+?6*<2%;2%=3):1$8/"90#=3&>5+:1&90">5(@7,=4);2&:1%=4'<4&<4'<3':1%:2&=5(@7+C,B, B+I0!G-B*A)B+D- B+?)?*?*;&8#7"8%9&9%5!4 6#5"3 3#3$8) 5&5$3!+,/1!0 .+)&# &)%!  !   -    -    -  -   - -     - -   - - -     -  -       -        -      -   - -          - - - -  81'6.$1).'3,"6/%4-#3+!3+!3,!4-"70%7/%4-"1*3,!60%70%70%4.#70%92'6/$4.#2+ .'4,"6/$4-"5.#1*3,!5.#6.$4-#5-$4,#2+!1* 2+!3,!4-"6/$6/$70$6.#5-"4-"5.#4-!70%70$6.#70%91&80%80%80%70%70%5.#81%:3':2%:1%91$8/#8/#91%90%90$4+ 3*6-"8/#7."7."6-!3)6,!6,!4+3)7."90$90$7-"4+7-!8/#91%;2&:1%8/"4, 6-!80#7."7/#90%:1%7."90%:1'90%7.#90%:1%90$7/#:0$<2';1%7."9/$90%<3':1&91%:2&80$<3(<4(90$6.":1&:2'91':3(;4);5*93(60%7/$80%6.#5-#4,"0(###%$#''&(()&''##$$$###"!!   - - -:::999???FFFDDDCCCBBBCCC???777 !!!###&&&'''&&&$$$###%%%((())))))((('''#$"'!-'3,#5.%5.$5-#6.#7.#5,!7/$91'92(81':2(:2'70$80$<3'80#7/#:1%;2&<3&<3&<3&;1%;1%;2&91$80#<3'=5(:0$9/";1%8."5*4*8/"4+5, 7."8/#5+2'7,!9.#7-!4*5, 80#8/#:1$;2&9/#7-!7- 9/#8."6- 3)7- 9/#4*2(3(2'5*1%3'8-!6-!8/#90%91%:1%8/$8/$8/#6-":2&<4'92$;3'=5)>5)<3'7."7."91%6."4+ 80$:2&70$6."5."70$6/#2+ 3, 6/#81&6/$70$3,!4,!6/#70%6/$4-"0)0)6/$5.#2+ .' """%%%######""""""!!!"""###""""""""""""!!!###&&&&&&&&&&&&%%%$$$$$$############$$$%%%""" !!!###$$$###"""######"""  !!!""""""  !!!"""!!!!!!!!!!!!""""""#########"""!!!"""###!!!   1)2*2)2)1(4+ 2(2)8/$7/$5-"80%8/$:1&:0%8.#8.#90%8/$6.#7.#4+ 5-"6.#91&:3(<5*;4)91&81%4-!6/#80$70$;3';3';2'80$;2&<4(;3&<3&<3'90$7/#;2&:1&:1%<3':1&6-"5,!90%;2&;2&<3'<3'<3':1$;2%=4(;2%:1$>4'>5(<3&:2%=4'?6*=5):1%;2&>5*>5*9/$4+8.#>5)<4(;2&7.";2&;1&;1%4*6,!=3(:1&80$:2&:3';4(;3'6."80$=5)>6*>6*<3(;2'=4(<4(80$5-!:1%=4(8."8."<3'=4(8."4+;2&4+6-!=4(:2&;2&;3';3'7/#6-">6*=5)3+80$>6*>5):2&;2'<4(;3':1%80#<4(?6*;2&6-!6-!:0%;1%;2&;2&8.#:0%;1%7-"9/#7-!=4(:0$6-!8.#6, 9/$:0$6,!8/#8.#4*5, 8/#7-!6-!7."80$7."8/#80#90$90#7/":2%=4'=3'>5(7.!6- 90$<4'?6*;2&7-#90%:1'5-#80%;4(:3&:2%91$;2%A7,@7+<3%<2&>4);2%9/":0"=3&>4+9/$8/!=4(@6+<4(:2&90#=4'<3&;3%;3'91%:1%<3'?6*D- C, B,B*B)A&E,C,@)B+@+9$5!8$6"5"6#8%6#6#326#6#203#5&5%5$/00// 1!.-'&())%  !   - -   -        - - - - -   -  - - -         -  -  -   - -   -     -       -  - - - -    - - -  - - - - 6/&70&6/%4-#/'/(4-#7/%4,"3+!3,"3,!3,!6/$7/%5.#2+ 4-"81&60$70%3-!5/$81&70%70%2+ .'2* 5.#4-"2+ 0)4-"6/$6.%5-$3,"5-$4-#4,"0(1* 3,!6/$70%91&5.#2+3,!6/#6.#80%81%6.#80%:3'7/$7/$80%80%7/$4-"80%92&;3&:2%91$80#80$91%:1&8/#5, 3*6-!7."6-"7.#6-"4+ 6,!5+ 5+ 3)8."9/$:/$7-"5+ 8."8."91%;2&91%8/#5, 5-!8/#80$8/#90%:1%90$90$;2':1&90%90%91%90$7."8/#<3';2&7-"8/#:0%;2'90%90%:2&81%;3'<4(80#6."90%:2':2(<5*<6+<6+93(81&7/%7/$5-"4-"3+!/'"""#"!''&((('''$$$&&&&'&###  333444777<<<>>>???======:::555!!!!!!!!!######%%%$$$######&&&))))))***'''%%$$%#)#.(3-$5/%7/%8/%7/$5-!2*8/$91'80'80&;3):2'6/#:2%;3&90#8/"<3&<3&=3'>4(>4(=4(<3&=4'<3&80#91$=4'<2&:0$9/#8.!4*3)8/"7-!4+ 5+ 7-"5+3'8-":0$7-"4+6."8/"6.!8."9/#8/"5+6, 8.!:0#7-!5+8.":0$5+3)3(2'5)0$2&7,!6,!8/#90$91%:1&7.":1&<3'90%:2&;3&92%<4'=5)>5)<3'8/#7/#91%7.#4, 7/#91&80$70$70#81%6/$3,!4,!70%92&6.#6/#4-!3, 70%70%5.#4-"1*1)4-"81&3,!/($$$"""$$$$$$$$$$$$###!!!"""######"""###"""!!!$$$'''&&&&&&'''%%%#########"""$$$""""""### !!!######"""!!!######"""!!!   !!!  !!!!!!!!!!!!  """"""""""""###""""""###""" 3+ 2*2*2)2)2)5+!3)2)8/$6.#5.#80%90%:1&9/$8-#8.$:0&8/$6.#6-"4,!5-!6.#80%:3(:3(92'92&:3'70#5."7/#80$;3';2'91%80$:1%<3'<4'>5(>5(7/#7.";2'90%90$:1&90%5,!5,!:1&90%80$:1%=4(<4';2%:2%<4';2%:1$>5(>5(<3&:1%<3'>5)<4(90$:1%?5*>5)8/#4)7-"=4(<3';2&8/#<2&;2&:0%4*7-"=4);2':2&;4(:3';4':3'4-!6/#;4(=5)<4(;2&:2&<4(<4(7/#3+80$=4)9/#8."<2'=4(6-!3*;2&2*6."<3';3'<4(;3';4'7/#6."?6*?7+6."90$>5)=5):2&:2&=4(>5(91$90$=4(>5):1%6-!8.#;2&;1&<2';1&9/$=3(<3'7.":0$8.#=4(9/$7."8/#7-"90$:0$6-!9/#9/#5, 6,!8.#7-"6-!8/#7/#7."8/#90$:1%91$8/";2%<3&<3&=4'8.!6.!92$>6)A8,;1&6,":1';2(80&92&92&81$91$90#;2%@7+A7+<3%<2&>4)<3'90#9/!>4'?5,:1%90"=3(@6,;2&;2&90$;2%;2%:2%;2&:2%:2&90$<3&F- D- B,@+=&=#E)I.D,@)>(;'5#0/16$6$8%7%2 2 4"5"5#4"2 2 4"4#3"2!,0 1!0 ,)(($%%&' !!          -         - -     -    -    - -      - - - -    - - -  -        -     -  -    - - - - -  2+"5.$6/%7/%6.$/(.'5.$80&4,"3+!3,"4,"4-"6/$70%7/$4-"6/$:3(82'82'4-"5.$70%81&92'3,!.'1*3,!4-"2+ 0)3,!70%70&5.%5-$5-#80&5-#3+!3,!3,!6/$81%:2'6/$2+ 2+ 4-"4,!7/$80%70$91&:2'7/$7/$90%80$6-"5-!6."90$:1&<3'80$6-!80$90$:1%80$5-!3*5,!5,!6-!7."6-"7.#6-!6,!5+3)8.#:0$;1%9/$7-!8.#7.":1%;2&:1%90$6-!5-!80$:1&:1%:1%90%8/#:1%;2&:1&90%90$91$91%7."6-!;2&;1%7."90$90$:1%80$90$91%80$:2&;2&7/#6-!8/$:2';3(<5*<6+<6+:4)92'80%7.$4,"3+!1)0)'"!!)(())('''%%$&&&&''&&&###  ,,,...000222666777666444444///~|~}{~}|{{yyywww !!!!!!!!!"""!!!"""###%%%%%%$$$***((()))(''$$$!!!,&1+"4.%5.%70&80%8/$5,!2*80$80&7/%7/%;3(91&6/#80$<4':1$90#:1$;2%<3&>4)?5*>5*<3'=4(=4(90#;2$@6)<2$:0#:1#6,5+6,8.!7.!5, 5- 8."5*4)9.#:0$7."4+6-!6.!90#:1$8/"8."4*5+8."9/#7-!5+7-!:0$5+3(3(1&3(0%2&7,!6-!80$91%8/$90$7."<3'>5*<3';3';3&92%;3&=5)?6*<4(90$7/#:1%7.#3+6."81%91%91%81%92&70$4-!4-"92'92'5.#5."3,!3,!6/$6/$4-"4-"2+ 2+ 4-"80&3,!/((((###############!!!$$$#########"""### ###%%%%%%&&&&&&%%%###$$$######$$$ """!!! !!!!!!!!!###"""!!!"""!!!!!!  """!!! """!!!""""""!!!  !!!!!!""""""""""""""""""!!! 2* 2+ 5.#4,!2)1(2)3*5,!4* 3+ :1&7/$7/$7/$90&;2'9/%8-#8.#:0&6.#5,!5,!4+ 3*3+ 6.#:3(;3(:3'92&92&92%92&92&81%;3'91%80$80$:1%<3';3&>5)?6*8/#7.";2&90%90%90%:1&7.#6-":1&;2':0%;2&=4(=4(<3';2&=4(;2%90$>5(>5(;3&:1$<3&=4(:2&8/#90$?5*?5*9/$3)6,!=3(<3':1%8/#<2&<2&:0$3*6-"?6*;3'5."92&<5)<5(:2&4, 6.";4(=5)<3(:1&91%<4(<3(7/#3+8/$=3(8.#6,!:1%=3(6-!3*91%2*6."<3'=4)=5);3'<5)91%7.#<4(=5)80#80$>5)>5)<3';2&<3'=5(:2%90$<3&=3':1%8."9/#<2&<2&;1&;2&8/#<3'=3(9/#8.#:0$<3'8/#8/#90$9/#;2&<2'9/#90$90$8/#8."8.#6-!5-!7/#6."6."4, 90$;2&:1%7.":1%;2%<3&=3'90#91$7/"=5(A8,;2'8.$:1';3):3(;4(=6*;4'80#7.!;2%?6*@7*<3%;1%<3';2&8/":1"?5(@5-:1%90!<2'@6+<2&<3':1%;3&<3&<3&;2&:1%:1&:1%:1%NB0E- D-!B, 8%:%9"A(K0M0G,>';&8$2 ,+,5$8&8&4"/15"6#5#4"4"2 4!4!4#/0 // -)! %$%$$    -   -  - -      -  -       -   -    -    -      -  - - -   -       - -  -     - -   -   - - -  - - *#0)1*!4-$81'70&5.$1)/(4-#80&5-#3+!3+!4-"6/$70%80&5.#3,!6/$:4)93(81'4,"5-#6.$70&:2)4-#/(4,"4-#3,"2* 2* 3,"6.$6.%5.$6.$5.$6/%5.$6/$7/$70%7/$6/#81&81&70$5.#5.#5.#91&80%7/$70%80%70$7/$80$7.#6-"6."80$<3'<3(;2&8/$5,!6-"5,!8/#91%5-!4+5, 5-!6-!6-!6-!7.#6-!6-"4*4*8."9.#;0%:/$6,!7-!6-!:1%:1&:1%:1%6-"4+ 7."90$8/$:1%90%7/#91%:1%:1%8/#90$;2%;2&8/#5, 90$9/#8.";1%9/$90$91%91%91%91%:2%:1%8/#5-!8/$91&:2':4)<6+<6+:4)81&7/$90%6.#4-"2* 1),$))(**)(((''&(('((('''### {zzvrqqkjrkjzzz(((((()))+++...000000000///,,,oonnoorstvvx $$$$$$######%%%$$$###))))))***'''&&%###-&1+"4.$4.$70%91&90%6."4, 80%70%7/%70%;3(92&6."7/"<4';2%91#;1$;2%<3'=3(=2'>5);2&<4'=4'90#<3%?6(<2$;1$;1$2)4+7- 8.!6- 4-6. 7/!5,1'8,!;/$9-"5+7-"7."8/#80#6.!7.!3*3)9/"7-!7-!3)8.!;1%6+3)4)2&2&1%3(8-"7.":2&:2&80$8/$8/$;2'=4(<3'<3'<4'92$:2&>5)@7+<3'8/#7."91%6-"2)4, 70$92&92&82%92&70$3,!4,!91&81&4,!4,!2+ 3,!6/$6/$4-"4-"4-"3,!5-#6/$3,!/(***"""!!!"""%%%%%%$$$$$$$$$"""""""""""" !!!!!!!!!"""$$$%%%%%%$$$######"""!!!"""!!!""" !!!!!!""""""""""""!!!  """"""!!!  !!!!!!!!!!!!!!! !!!!!!  !!! !!!"""""""""""""""!!!  !!!0)0(3+ 5-#5-"2)0'1(4+6-"5,!4, :2'7/$7/$7/$:1&;2'9/%8.#8.#:0%6-"5,!6-#6.#5-"4,!80%;4)<4)92&:3';4(92&91%;3':2&=4)91%8/$80$91%<3';3&=4'>6)7/#7.";1&:1&:1%:1&90&7.#6-"90%:1&90%;2&<3'<4(;3';2&<3':1%80#>5'?5(<2&;2%=4'=4(:2&8/#90$?5)?5*:0%4*8.">5)=4(91%90$<2&<3':0%3*6-!>6*>5*:3'=5)=6*=5);3'4-!5."=5)=5)<4(:1&91%<4(;3'7/#3+8/#<3'6-!5, :0%=3(6-!2)90%3+6.";3'=4)=4(<4(=5):2&7.#:2&<3'7."80$?6*?6*=4(90$:1$=4(;3&90$;2&<3'<2&:0%9/#:0%;1&<2&;2&7.";1&<2'8."7-!90$;2&91%8/#:2&90$<3'<3':2&90$:1%90$7."7."7."6-!7."8/#7."3*90$:1%:2%6-!91$90$<2&<2&:1$:2%81$>6)=4(<2'9/%8/%:2(:2(:2'<5);4'7/!7. ;2%@6+@7*<2%;2%>5(;1%7- :1!?6)@5-;2%90!<3(@6,<2';2&:1%<4'=4'<3&;3'=4)<4)<3(90$E:*D-E- B, <)7$5!:%C+L2!L0I,@(7#4!.+)1 3"7&6$115#4#2 4"5#3"3!1001"-,-*$')&(###!         - - -  -     -        -   -  -   -  -            -      -               - -  -  -  -   - - 1* -'-&0) 2+!4-#70&70&6.$1*-&2*!6/%4-#2* 0)2+ 6/$70%91&3,!1*4."92'92'70%6.$7/%6/%6.$80'4-#0)3,"6/%3,"0(1)3,"5-#6/%4-#5-#5-#3,!5.#5.#70%81&5."4-"80%70%70%6/#6/#7/$91&80%70%91&:2'80%7/$7/#6."6."7/#:1&;2';2'=4(8/#5, 6-!4+5, 7."5, 5-!5, 3*4, 6-!4+ 4+6-!6,!3*3)7-"8.#9/$8."6-!5, 5, 7/#90$90%90%6-"3+6-!90%90%7.#:1&90$8/#90$:1%8/#:1%<3'<3&8/#6, 90$9/#8.#:1%7."7.#91%:1&92&:2&;3&:2&90$6-!90$91%91&:3(<6+<6+:3(81%80$:2&70%6/$1)1)1)))())())())())(*++'''"""xxwoljf`^eee^^^aaaaaa$$$$$$$$$'''******+++++++++(((XXX___^^^bbbkkk~~~tqoonlmnmttuwwy ###%%%%%%###$$$&&&$$$'''*** !!(((&'&#.(2,#5/%5.$81&<3(91%5-!4, 80$70%70%80%<4)<4)7/#:1%>5(=4';2&<3&<3'>4(=4(<2'=5):1%<3'<3'90#<3&>5'<3%;1#:1#3)5+4+7- 5,5. 7/!8/!4*3)8-!:.#8-!5*6,!7."7."6."5-!6- 2)1'8."8."8."3)8-!<1%8- 4)4(2'2'2&5)8."7.#:2&;2'90%80$90%:1&;2';2&;3'<4'92$:1%=4(?6+;3'7."6.!:1%7/#4+ 6."91%:2&:2&92%92&70$3+ 2+6/#70$2*3,!2+ 4,"70%70%4-"4-"3,!3,!4-"5.#3,!/(""" !!!"""###%%%"""%%%$$$###""""""""" !!!###"""$$$###$$$%%%$$$""""""###"""!!!!!!!!!""""""!!!""""""""""""""" !!!"""  !!!!!!"""""" !!! !!! !!!!!!  !!!!!!!!! !!!  """"""!!!!!!!!!!!!  1)2* 1*/(1)4,!6-"2*1(2)4+ 7."4*6-!;3'70$70$80$:1&<2'9/$8-"7-"8/$6-"5,!7.#6-"5-"3, 81%;4)<4)92&:3';4(91%80$<4(:2&<3'91%80$90$:1%;3&:2%<3'>5(7."7.";2&:1&:1&:1&:1&7.#5,!8/$:1%:1%;2&;3';2&;2&;2&<3&91$90#>5'>4';1%;2%>6)?6*;3'91%:1%>5)?5*;1&5+9/$=5)>5):0%9/$;1&;2&:1%4+ 6-!>5)=5):2&>6*>7+=6);3'4-!5.">6*>6*>6*<3'91%<3(;3'8/$3+7.";2'6-!7-";1&=4)7."2)90$5, 6-";3'<3(;3'<4(;4(;2'6-"91%<4(7/#:2&>6*?7+=4(7/#90$=4':2%8/"<3'=4(>4(:1%7-"8/#:0$;1%;1&6-!:0$=3'8/#7."90$:1&:1%:1%<3'90$;2&=5);2&90$91%7/#5-!6-!7."7."7."8/#6-"5,!90$:1%90$4, 7."8/#;2&:1%90#91$81$<3'>4)>4*90&:0'91(81':2'=6*:3&6.!7. ;1$>4(>5(:0#;2$@6):0%7- ;3"@6+?5-<2%90!=3)?5+<2&:0%90$<3'<3':1%;3';3':2':1&5,!9/!C,E- C, >* 9&4"7$=(C-I1!J/C)?'8#0--0 2!4#5$5#006%6%3"2 5$3"3"2!.,--,*(&&*(#  "   - - -    -   -  - -     - -  -  - -  -  - - - -   - -      -  -    -  - -   -     - -      -    -  -  - -   - - 2+!3+!2+!-&,%1+!4-$6/%70&7/%6/%1* .'1)6.$4,"1* /'0)3,!81&:2(3,!0)2+ 70%70%4-"5.$70&7/%4-#7/%4-#2* 4-#7/%3,"0(/'2+!5-#70&4-#5.$3,!4-"5.#5.#5.#6/#4-!5."91&70%70$5."70%81%91&91&80%:2':2'7/$6/#8/$7.#7/#7/#:2&<3(<3(<3'7."5,!6-!7.#8/$7."5-!6."5-!4+7."80$4+ 4+6-!7."4+4*7,!9/$:0%8.#7-!5- 4, 6-!8/#90%90&80$4+ 5,!:2&7/#6."8/#91%8/#9/$;2&8/#:1%=3';2&90#7-!:0%:1%8/#:1%7."6."90%:2&:2&:2&;3&<3':1%7.#90%:2'92':3(<5*:4)82&70%80%:1&5.#4-"2* 2*/'!!!))())())((('**)*+*'''"""qpqmki[UQ[[[\\\UUUIIIKKKKKK#########%%%((((((***)))***$$$BBBGGGHHHKKKSSS\\\```hhhpppmjillllkm """%%%&&&######&&&%%%'''***''&())&('3-#-'1+!2,"5/$91&=5)91%4, 4, 7/#80%81&91&<4)>7+80$<3'>6);3&:2%;2&;1%=3(<3'=3(;3'80$;2&;2%8/#<3&=4&;1$;1$;1$3*3)5,8/"7.!7/!7/!7.!4*3(8-!:/#7, 4)6, 6-!8/#80$4, 7.!4*3)8."8/"7-!4*9."=1&9.!5*4(4(3&1%3)8.#8.":0%<3'90$90$80$:1%;2';2&;3'<4(91$90$;3'>5);3'6-!6-!:2&80$5-!80$92&:3':3'92&92&80%3, 2*4-!6/#3,!3,!3,!4-"7/%70%5.#5.#4-"3+!4-"5.#2+ /( ###"""###$$$$$$$$$%%%$$$###!!!!!!"""!!!###  $$$#########"""######!!!"""!!!!!!""""""""""""""""""""""""!!!""""""""""""""""""!!!!!!###!!! !!!!!! !!!  !!!  !!!!!!!!!!!! !!!   0(2* 3+!0(,%0(3+ 6-"5-"4+3*4+ 6-!2)6-!;2'80$80$8/$90$;1&9/$8-"7."9/#7."7.#8/$6-"6.#5-":2'=5*;4)81&:3':3'81%80$=5)81%;2'80$8/$8/$:1%;2&:2%>5(=4(7/#7.";2&;2&:1&:1&:1&8/$5-"7/$91%91%:2&;2&:1%;2&<3'<4':2%:1%?6)=4';1%;2&@7+@7+<4(:1%:1%=4(>4);0%5+ 9/$=4(>4):0$90$;2&<3':1%5, 5-!=5)>6*<4(=6*=6*<4(:3'4-!6."<5)=5)>6*<3'90%<4(;3'8/$2*6-":1&4+ 6-!:1%>5)7/#3*8/#5-!6-":2&<3(;2';2';3';3'6."80$;3'7/#<3'=4(>5);3'7/":1%=4(91$6-!;2&>5)>5):1%6."8/#8/#90$;1&6-!9/#=3(:1%:0$:1%;2&:1%90$=4(:1%:1%=5):1%80#90$6."5, 7."7."7/#7."8/#7."4+7.#8/$91%4, 5-!6."91%8/#7/#80$5-!91%<4(?6+:2&:2&<4(<3(:2&<4(:2%7/!:1#=3&=3'>5(90#<2$@7*:0&9/">5$@6+>4,90!8/ =3)>5*;2&8/#8/#;2&:2%80#;3';3(;2':1&5-!3*B,E-C,B-!;'6#6$<*?, @,H1#D,;#:#9#3/4"3!5$6%4$4"3"1 0 1!2"3#1!1!// / **+,*())(, #  "       -    -    -    -   -   - -  - -   -    -   - - -  -     -    - - - -      - - - -  -   - -    - - - ,%/(1* 2+!3,"/(,%0)2+"5.$6/%6/%7/%2+ .'1* 6/%4,"0)/(3+!81&92':3(6.$1*1*4.#5.#3,!5-#:2(91'5.$6.$6.$3,"5.#6.$4-"1* /'2* 4,"4-#5-#4-#5.#6/$5.#5.#5.#6.#5."5."70%6/#5-"2+ 6/$81&92&80%6/$91&92&7/$7/#80$80$80$7.#91%:1%;2&;2&5, 6-"90$:1&:1%8/#6-!6-!4+5, 8/#7/#4+7."7."6-"4*3)6,!:0%<2&9/#8.#7."5, 5, 8/$90&:1&:1&5,!5,!:2&:1%7."80$80$6-!8.";1&8/#9/$<1&;1%:1%7/#80$91%8/#90$9/#8/#:1%:2&:2&92%;3&;3':1&8/#90%<4):3(:3(<5*93(71&70$80%91%5-"70%1)3+ 1) ''&))())())(**))*)&''!""gef`^\ZZZQQQLLLFFF???888444333######$$$###&&&(((***++++++"""...444666555>>>CCCKKKSSS___fffga`fcbghh!!!###%%%''')))((('''((((((()'&((&)'2+!.(2,"4.$60$80$=4(80$5-!5-!7/#91&92&92&;4(?8,92&:2&<4'90$91$;2&;2&<3'<2';1&;2&8/#:1%:1$90"<2%<3&;2$90"7. 3*1(6,:0#7/"6.!7/"5+3*5*:/#:.#6+4)6,!7."7."90$4+7-!4+4+9/#90#7- 6,9/#=2&:/"5*4(5)4(1&3)9/#9.#:0%<3':1%91%80$:1%<3';3';3'=4(7/#7/#:2&=5):2&5,!6-":2&7/#4, 6."80$92&92&92%81&81%2+2*3,!5.#5.#4-"4-"3,!5.#7/%5.#6/$5.$2+ 3,!5-#3,!#!! """###$$$$$$&&&$$$$$$$$$$$$$$$!!! """######""" !!!"""""""""!!!!!!!!! !!! !!!""""""!!!!!!!!!!!!!!! """%%%$$$"""!!!!!!"""!!!!!!  !!!  !!!!!!!!! !!!  !!!  !!!"""###!!!  *".&1* 3+!3,!0).&2*4+ 4,!3*1)2)4, 7/#4+5, 80$8/#8/#8/$8/$:1&8/%6-"6-"9/$7.#8/$80%6.#7/$80%:3(<5):2'81&:3';4(81%80$<4(92&<3'91%80$80$:2&;3'=5(>5)<3'7."7.":1&<2';2'90%91&80%7.#8/$91%80$91%:2&91%:2&<4'=4(;2&;2%?6)<3&90#;1%?6*?7+<3'91%:1%<3'>4(:0%4*8-">5)>4):0%:1%<4(=4(:2&5, 6-!>6*>6*<4(>6*>7+<4(;4(5-!6."<4(=5)>6*:2&90$=5)<4(91%5-!6-"8/#5, 5,!:1%=4)7.#3*6."6."6.";2'=4);2'91%<3(<3'80$91%;3'5-!;3'=5)<3':1%7.":1$>5(:1%7.!:1%<4(=4(:1%90$91%7/#:1%<3'8/#8/#;3':2&;2&:2&;2&<4(90$91%7/#8/#<3':1%90$:1%5- 4, 90$90$7."6-"8/#7.#2)6-"8/$8/$6."7/#:1%;3'7."7/#90$7."80$<4(=5)80$70$>6*;3'91$<4'<4'90";1$<2%=3&?7+91%;1#?7*82'90#>4&?7,?6-:1#90"<2(=3(;1&7-"7-!:1$91$80#;3'=4)=4)90%2)0'B+D,D,F1$@+8#6#:'>, >+>)=(<&9#8"8"7"3 6#7%7&8'6%3"4#4#2"/-..!,)&)+'''''+**)$ -                -  - - -        -      -  - - -   -     -            -     - - -  -   -   -   - - - - 1*/(,%0(2* 3,"3-".',%1* 3,#70&81'80&6/%2* .&1* 6.$4,"0)1* 4-"6/$70%92'6.$5.#3,!4-"6/$6/$5.#92'81&5.#6/$70%4,"6.$80%6/$1)0(4,!6.$80%5-#5.#70%80%6.#5-"6/$7/$5-"7/$81&6.#6.#5.#70$80%6/#4,!4-"80%;3(80%7/$80$90%91%6."8/$:1&;2';2&3*3*8/$;2'8/#6-!5, 4+1)5, :0%90$7.#5,!7.#7."3)3)5+ :0$<2'90$9/#8/#6-!6-!90%;2';2'<3(6."6-!91%91%91%;3':2&8/#8.":0%90$8.#9/$;1%:0%6."80$:1%90$:1%9/$:0%:1%;2&92%:2&;4':2%:2%7.";2&=4(;3(;4(<6*;5*92'70%81%91&5-"70%4,!3+!2*6.#$##((''''))((((()(&&&"""_^_YWVNNNLLLDDD;;;555+++'''###$$$###$$$###"""&&&((()))++++++$$$%%%''''''%%%(((...666@@@NNNTTTWWW[[[bbbfff ###&&&((((((((('''((()))''&&''&)'-'/) 4.%60%6/#6/#;3'8/#7."7/#80$92&92&92&;4(?7+:3':2&<3'80$80$:1%;1&<3'<2';1&<2'9/$:0$90#90#;2$<3&;2$90"6- 3*3)6, 90#6.!5- 6- 5+2(6, 9/"8.!6+5+9/#8/#5-!80$4+4+3)4*9/#:0$7-!5+7-!<2%;0#6+4)5*5)2'4*9/#9.#90$;2&:1%:1%90$:2&<4(:2&;2&<4(7."3+91%=5):2&5,!5-!90$5."3, 3, 70$92&81%70#80%6/$2*1*3, 5.#6/$4-"4-"1*4-"5.#4-"4-"4-#2+ 2+ 4-"3,!'''###$$$$$$$$$$$$$$$$$$$$$$$$###"""!!! """###%%%$$$!!!!!!  ###"""!!! !!!"""!!!!!!!!!!!! """######!!!!!! !!!!!! !!! !!!!!!  !!!!!!!!!!!!  !!! !!!!!!!!!!!!!!!!!!!!! !!!"""   -%+#,$.&1*3+!2*1)3*5,!5,!4+ 2*3*6-"7."3*3*6-"8/$8/$8/$:1&90%8/$7.#7.#8/$7.#7/$80&6.$80%81%;3(<5*92&70$:3'<5(91%92%;4(:2&;3'91%80$80$91$91$;3&>5);2&8/#7."90%<3'<3(:2&:1&90%8/$90%91%8/#91%;2'91%:1%;3'<3':1%;2&@6)<2&8/#9/#>4(>5)<3':1%;1%=3(=3(9/$5*7,!>4)>4):0%90$<3'=4(:2&5,!6-"?6+>6+;4(>7*?8+<4(;4(5."5."<4(>6*>5*:1&80$<4(<4(91%6."5-!6-"4+ 6-!:1&;2'5-!2)5,!6."7.":2&<4(>5)80$<4(<4(90$:1%=4(5-!:1%=5)<3'91%7."80#=5(;2&8.":1%<3'<3':2&;2&:1%7/#:1%;3':1%8/#;2&;2&;3':1%<3'=4(7.";2&8/#6.!;2&:2&:1%:1%4+3*7/#80$6-"6-"8/#6-"2)6-"7.#6-"3+5-!8/$:2&90$7/#8/#6."90%<4(<3'7/#92&=5)91%80#>5(=5(8/"90#;1$>4'@7+:1%:0"=4(60&7/">4&>7-?8.:2%7/"92&<4(80$6."8/#:1%91$7/#;3'=5)>6*<2'5, 5, B+D,D,G1#D/">):%<'?+<(<(7%5#6#8$7$5!3 8%9%9&:(8&7%6%5$5$6%1!,)(('#%$$#!##$#"$'             -  -   -       - - -   - - -  - - -        -  - -        -  -  -     -    -    -     - - 1*2+1*-&+#1* 3,"3+!3,!.',%0) 2+"71&92(92(7/%3,!0(1* 6.$4,"0(1) 5-#6/$70%70%6/$60%70%60$81&70$6.#:2'92'5.#7/$91&6.#7/$:2'80%3+ 2+ 70%80%80%6.#6.$91&91&6/#4-!5.#7/$5-"7/$91&6.#6.#5."4-"6.#5.#4,!4,!6/$:2'81&80%80$91%:2&5-!7.#=4(=4);2&3*1(4+;2&<2&;2&:1%7."1(4+9/$:1%8/$7.#6-!8/#9/$3)5*7-"<1&90$8/#8/#6."6-!90%;2'<3(=4)7/#6."80$80$91%;2&91%9/$8."9/$:1%7-"8.";1&90%5-!7/#:1%9/#90$:0%;1%:1%:2&81$81%:3&91$91$6.":2&<4(91%92&;5)<6*:4(5/$81&82'8/#7."3+ 4-#3,"6/%! **)))))))((((('%%%###WWWLLLDDD>>>777,,,""""""$$$######$$$%%%###"""%%%)))******)))%%%$$$%%%&&&&&&######$$$...:::CCCKKKSSSYYY```aaa $$$&&&((((((((('''((()))'''%&&##",&1+!5/%50%6/#81%:2&:2&7/#80$:2&:3'81&92&<4(>6*92&;3';3'7/#6.":1%:0%<2'<2'<2'=3(:0$90#90#:1#;2$=4&;1$8/"8/!5,5,8."8."6- 4+6-!7.!2)5+7, 6, 5+5+:1$8/#8/#91%7/"5+3)4*9/#;1%8."5*8.!=2&=2%8, 6*7+6*3(3)8.#8."8/#:1%90$91%80#91%;3':2&:1%<4(7."2*80$<4(:1&4, 4, 6."5-!2+3, 6/#81%80$7/#7/$70$2+3, 4-!70$6/$4,!3,!1)5.#7/%5.#2+ 4-"2*1)3+ 3,!***$$$$$$$$$%%%$$$%%%$$$$$$$$$!!!!!!"""!!!"""%%%&&&&&&$$$###""" !!!  """"""!!! !!!###"""###"""!!!!!!    !!! !!!"""""""""!!!!!! !!!!!!!!!!!!!!! !!!  !!!"""-%/'.',$,$-%0(1)0(1)3+ 5-!5-"4, 3*3*6-"8/$4+ 2)5,!90%8/$90$8/$7.$90%8/$8/$90%8/%7/%92'7/%80&91&;3(:2'7/$81%;4(<5);3';3'<4(<4(;3'90$7/#7/#91%:1%;3'<4':2&6-!6.":1%<3';3';3':2'91%80$91%:2&90$91%<3'91%91%;2&<3'90$<2%@6*=3'9/#8."<2&=4(<2';1%;2&=3(=2'9/$5+ 7,!=3(>4(:0%90$:1%<3':2&5,!7."?7+?7+;3'?7+?8,<5);4(6/"6/#<5)?7+>5*;2'90%:2&;3'90$5-!5, 8/$6-!5, :1%<3'6."/'3*4, 4, 90%<4(=5)7/#;3'>5*80$90$=4(6-!90$<3'=4(90$8."8/#>5(<2&9/#:1%;2&;3';2&<3':2&80$8/#90$:2&90$;3';2&;2&:1%:2&=4(90$=4(;2&8/#;2&;2&;2&:2&4, 3*6."80$8/#8/#90%6-"3*5,"6.#5-"4+ 4, 80$90%5-!7.#80$6.":2&?6+=4)6."92&=4(80$80#=5(>5(:0#:1$=3%@6)>6*:1%;1#<4(5/$6- >4'=7,>7,:2%80$91%;3'80$6."7/";2&7/#6-!;2&=4(>5);1&5,!5, B+D,D,C, @,=*;(>)@+ ?*<(8&3"0 4#6$5#4 5 :&>*>*9&7$6#5#5%5$6&0 +(%%$%%#"  !   - -      -  -    - -          - -  - -       - -    - -    - -  -   -       -   - -   - - -    - - - - - 3,!0)1*2+2*,%,%0)3,"4,"2+!.',%1*!3,"92(81'70&4,"1*0)2+!5-#4,"1)3+!5-#5-#70%6/$3,!4-"70%82'93(70$6/#81%81%70%70$80%6/#80%:3'91&5."5-"91%80%91&70%7/$80&81&6/$6.#6.#3+ 7/$7/$91&7/$5-"6.#6/$7/$7/$6.#5-"91&:2'70%91&90%:2&<3'4, 91%;2&<3';2&3*2)6-!;1&;1%<2&;1%8.#1(3)7-"90$8/$8/$8/#7."8.#3)2(5+ ;1&90$8/#8/#6-!6-!:0%<2';2&=4)90$8/#80$91%:2&:2&80$90$7-!7-"9/$6, 6,!:1%:1%6-!7/#:1%8/#7.";1&:0$:1%80$70$81$:3&80$91%7.";2&>5*:2':3(<5)<6+:4)3,!5.#5.#7/"6-!5-"3+!2,"/(*))**))))(('''&$%$!""QPPLLLDDD:::000+++%%%"""$$$###$$$"""############%%%(((+++)))((($$$"""$$$$$$%%%$$$$$$"""$$$,,,777AAAJJJRRRVVV\\\!!!###$$$%%%''''''((()))***'''%&&$##/)2,"2,"60%60$80$90$7/#3+5-!:2&:2':3(81%;4(<5)81%:2&:2&8/#7.#:1&:0%;2&;1&;2&<2':0$;1%;2%9/"=3&:1$9/"8/"90#6, 4+6-!8."5- 4,:1%7-!4*6, 8-!6+5+5+:1$90$:1%:2%90#7-!5+7-!;1%<2%:0$6,9."=2&=2%9- 8, 8, 7,3)3(7-"7-"8."90$8/#80$7."91%:2&:1%7/#;3'8/#5, 80$:2&91%4, 3+7/#6."4, 4-!80$92&81%80$70$6/#3,!2+5.#70$6.#4-!3,!1*4-"5.#4,"1*3,!3+ 1)3+ 2+ -,,$$$$$$$$$$$$$$$$$$###%%%###!!!!!!"""%%%$$$&&&&&&&&&###"""   !!! !!! !!!"""!!!!!!  ###"""!!!""""""!!!     !!!"""###"""!!!"""!!!!!! """"""""""""      ,$+#.'.',%+#,$1)2* 0)1)2*4,!6-"5,!3+3+5-!8/#5,!2)5,!90%6-"6-"7.#8/$:1&90%8/%:1&90&80%:2(7/%70%91&<4):2'6/#91%;3':2&:2&:2&;3'<4(;3'91%7."8/#8/#91%;2&<3';2&7/#7/#90%:1%;2';2':1&91&80%91%80$80$90$;3':1&:1%;2'<4(80$:0$?5)<3&9/#8.";2&=4(<2&;1%;2&=4(=3(9/$5* 6, <2'>4)<2&90$80$<3'<3'5-!7.#?7+?7+;3'@8,@8,=5);4(70$80$<5)?7+?6+:2&6."91%91%8/#4+ 5,!90%5-!5,!90%:2&5, .%2*4, 3+7.#:1&;2'7.#<3(?6*8/#8/#=4(7."90$>5)>5);1%7-!9/#?5)<2&:0$;2&;2&;2&;2&;3';3'91%7."<3'8/#:1%=4(:2&91%80$:2&<4(91%=4(:2&90$;2&:2&;2&:2&6-!4+6-!8/$6-!7.#7.$4+ 2)3* 5,"4+!3* 6-":1&;2':1&7/#91%7.";3'?6+;3'5-!;3'?6*90$90$>5(<3&8/"<3%=3%@6)>6*:0$:0";4(4.$5,;2%>8->7,;2&7/#80$91%90$90$80$;3'7/#80$<4(;3'<3':1%4+ 6-!L@1C,C,D,A+?*<)8'>+B."@*>(:&5$1"0!1"2"4!5"5!<'?*D1&>+7#6#5#2 2 3".+(&%%%$!!$ !"  - -     -   -  -   -   -        - -      - -    - - - -     - - -  -        -    -   - -     - - - - - 1*4,!0)2+3,!2+/(-&2+ 4-#3,"2,!/(,%1+!3,#:3(81'81'6.$4,"0)0)5-#4-#2+!4,"5.#5.#6/$6/$3,!5.#81&;4):4)92&81%81%92%;3'92&80$5-!7/#<4)91&5-"4, 80%91%91&81&80%91&80%6/$81&80%3+ 80%91&91&7/$4,!5.#80%70$7/$7/$6/$;3(:2'6.#80%91%;3'=4)6.";2'>5*=4(;2'5, 3*6-":0%;1&:1%<3'8.#2(0&7-"9/$8/$7.#8/#90$8/#1'1'5+<2&:1%90$80$6."6-!:0%;1&:1%>6*<3':2&91%91%:2&91%8/#:0%6,!7-!9/#7-"7-!:0%:1%8/#7.":1%:0$8.#;1&:0$90$80$91%92&:3'91%:2&7.":1%=5);3'92':4(;5*92'2+ 3-!3-!7.#6."4-"4,#3,#0) !!!(''((((('((((('&'&#$#NNNA;:BBB:::111(((%%%&&&%%%"""###!!!$$$$$$$$$%%%$$$&&&+++((((((%%%!!!%%%&&&"""$$$'''///777AAAKKKQQQUUU[[[ """$$$%%%%%%%%%&&&((())) &&&%&%/'/)3-#4.$60%70$:2&;3'80$4, 7/#<4(92&;4(92';4(;3(7/$92&;3'91%8/#90$8/#;2&=3';2&90$9/#;1%;1$90"<3&<3%7.!8.!9/"5+3)6-!90$5- 5, ;1%8.!4+7-!9/#7-!6,7-!;1%<2&;3&<3&8/#6,!6, 9/#<2&:0$:0#7- 8.!<1%<1$8, 7+6+6+4)3)8.#8.#7."80$6."80$80$;2&:1%80$6-!;2&80$5-!80$:1&:1&5-!4+ 80$7/#5-!6."92&:3':2&91%92&81%4-"2*6/$70$6/$5.#5-#2* 3,!5-#4-"2+ 4,!3+ 2*3,!3,!###$$$$$$%%%&&&$$$###"""$$$###!!!!!!!!!"""$$$$$$"""""""""!!!!!!!!!!!! !!!###""""""""""""!!!!!!!!!!!! !!!!!!######""""""###"""    !!! !!!""""""!!!  """###"""###"""!!!!!! !!!""""""!!!  %%%0(,$*#+#,$+#+#,%0(0(0(0(/'3*6-"5,!4+ 3+4+5, 4+ 2)5, :1%6-"6-"7.#90%:1&7/$8/$:1&:1&80%91'6.$6.#80%<4);3(70$91%:3'91%91%:3&<4(<4'<3':2&4, 6-!7."91%:1%;3':2&5-!6-!:1%:1%;3'=4);3(90%7.#80$80$6."90$;2':2&:1%;3'<4(80$8/"=4'=3':0$8/#;2&=4(<2&;1%;2&>4(>4):0$4*5+ <2'?5*=3'80$8/#<3'=4(6-"7/#?7+>6*:2&@7,?7+=6*;4(70$70$<4(?6+@7,<3(80$:1&;3'80$4+ 5,!:1&4,!3+ 8/$:1&2)+#1)5,!4+ 7/#:1&:2&8/$<4(?6*80$8/#=4(7."8/#=4(?6*;1%5, :0$>4(=3';1%;2&<3'<3'<3'<3'<4(7/#6.":2&6.";2&<3':2&8/#80$91%:1%90$;3':1%90$:2&:2&90$:1%8/#6-!6."7."3*5,"6-"3*1(3* 4+!3+ 2* 4+!8/$90%80$8/#80$7/#=5)>6*:1&5-!<4(?6*;3&:2%<4';2%7.!<2%=3%?6)>6*90#8. 92'3-"3)90#=7->7,:2%7/"91%:2&;3'91%80$;3'91%91%=4(<3'<4(:1%5, 7."H=.E,D,D,A+=*;):);(?+ @,!>);'6$2#2#2#/ 023 28$=)>*A."<)7$5#3!03"4#+)(('%$!#&'##          - -    - -      -    - - - -    - -  -  -  -       - -    -        -     -  -  -   - - - - 1)/'1)3+ /(2+4,!0)1*1)4,"6/$60%60$2, -'1*4,!:2'91'91'70%3-"3+!4,"4,#3+!1* 4-#80&91'6/$4-"3,!6/$81&;5*;4)81%92%:3&92&:3':2&92&6/#70#;3':3'7/#4+ 7.#:1&;3(81&80%91&81&6.#80%91&5-"70$;3(:3(80%6.#6.#81%7/$91&91&80%<4):2'6.#80$;2'=4(=4)80$>5)=4(<3(;1&5,!1(4+9/$<2&<2&<2'9/#5+3)8-"7."8/$8/$8/$:0%9/$5+ 2(6, ;1&<2&90$91%8/#4+6,!8."90$>5);2&90$:1%;2&:2&91%90$;1&7-!8.#:1%9/$7-"90$:1%:1%5-!91%;2&9/$;1%:0$90$91%:2&92%92&:2&:1&7.":1&>5*;3(92';5*=7,:4)6/%3,"3,!6-"5-!4-#4-$1+!0) $$$(('&&&))(**)()(%%% KKKFFF<<<333+++###%%%&&&$$$ $$$###%%%%%%###$$$((('''(((%%%((( """###''''''///:::EEELLLOOOWWW!!!"""$$$%%%&&&&&&'''((((((%$#%&'%%%0).(5/$60%5/#6/#91%;2&7.#5-!7/#:3'92';4):3(<5*<5*70$91&;3':1&80$;2':1%;2'<3(;2&90#90$<2&;1%90";2%=3&8/!8/"8/"4+1(4+7."6.!7.!;1%7-!4*7-!9/#6, 6, 8.";1%=3'=4(=4(9/#6+ 5*8."<2%;1$9."7- 8-!<2%;1$7, 7, 6+6+2(3)9/$9/#7/#8/#5-!7/#:1%91%80$8/#8/#:2&7."5,!80$:2&;3'7/#4+ 80$70$5-!6.":3';3':3'92&92&81&3, 1*70$70%80%6/$4-"3+!5.#70%5.#3,!6.#4,!2*4,!4-"#########%%%&&&###$$$$$$%%%$$$"""!!! """###"""!!!  """###""""""""""""""""""!!!!!!!!!!!! !!!"""###!!!"""###"""###"""!!! !!!  !!!   !!! !!!!!!!!!"""#########"""  !!!!!!"""######"""!!!  %%%$$$/',$-%-&.&+#*".&3* 3+!2* 2*0(3*5-"4, 4, 4+ 3*4+4+2)3*8/$6-!7.#7.#90%90$6."7.$:1&:1&80&91&7/%7/$81%<4);3(81%81%;3'92&80$:3&;3';3'<4(:2&4, 3+5-!90$91%;2&<3'6."7."<4(:1%:2&<4);2'90%6."91%80$8/$80$:2&:1&:1&;3'<4(90$8/#=3';2%9/#8/"<3&>4(;2&:1%:1%<3'>4(:0%3*5+ <3'=3(<3(;2&90$<3(=4)6."8/$>6*=5*:1&>6*>6*=6*;4(6."5.":3'>6*>5*;2'7."8/#:2&90$4+3*:2'6.#3+ 8/$;3'2*+#3*5,!3+ 80%<3(;3(80$<3(>5*8/#7.":2&6-!6-!=3(?5*;1%7-!:0$<2&>4(;1%:1%<4(=4(;2&;2&?6*90$5, 90$7.":1%;3':1%5-!:1%:1%:1%80$:1%80$7/";2&:1%6."90$;2&80$7."5, 4+ 5,!6-#2)2)5,"4+!2*2)4,!7/$8/$80$90$:1%6."<4(=5);3'4, :2&>6*<4';3&;3&;2%7. :1#>4&>5(>6*9/"9/!81&1+ 2(:1%=7->6+:2%80$;3(;2';3(:1&91%:2&91%:2&=4(?6*?6*;2&6-!7/"@6(F-E-D-A+>*<*8(9';(=)=):'7%1"1"2#1"1./23:&@-"@,!@, ;(9&4!2 3"4"4#2,*)*&"#(&"!          - -  - -              -     - -    -  - -        -  -    -      - -  -        - - -  .'1)1).'3+ 5-"0)1*2+ 1*2+ /(1*3,!5/#5/#2- 1*3, 6.":1&:1&92'71&4/#3-#5.%5.$4,"0(70%70$:3':2'5.#4-!6/$71&92'92'92&81%;4':3&92&:2&:3'92&:2&81%91%7/#4, 80$<4)<4)80%7/$80%80%6.#7/$7/$5.#5-":2':2'81%80%6/#81%5-"91&80%6/$:2':2'7/$6.#:2&<4(;3':2&>5)=4)=4)<3'7.#1(3*8/#;1&<2&<2':/$8."6, 7-!8.#:1&<3'90$:1%;1&6,!1'6,!;1%;1%90$90$8/#2*4*6,!:1%<3'<3'80$90$:1%;2&90$8/#;2&9/#9/#;1%9/$7-!8/#:1%;3'4, 91%;1&8.#:0%:0$:1%92%:2&81%92&<4(90$6-"90%<3(:3(91':4);5*71&4-#0)2* 6-!4+ 3+!4-#4-$/("!!&&%''&(('(('))(%&%"""IIIBBB???666---%%%%%%%%%&&&$$$""" ###$$$$$$$$$###$$$&&&&&&(((&&& """"""&&&&&&(((222<<4(;1%:0%90$;2&=4(:0$3)4+<2'=3(<3(;2&90%;2'<3(6."6.#<4)>6+;3(;3(=5*=5);3'5."3+92&<4)<4):2&6."7/#:2&;3'4, 3*;3(7/$3, 7/$:2'5-!/'6-"5-"3*7/$;3(:2'7/$;2'=4(90$90$;2&6-!5, <3'=4(;2&8."9/#:1%>4(;2%:1%=4(=5):1%90$?6*:1%5, :1%80$90$<3'7/#5-!7."90$:1%7."8/#7."7.":1%:1%7."91%<3':1%8/#6-"5,!5,!7.#3* 3* 6-#4+!3* 1)7.#8/$8/$6-"6."91%80$<3(?7+90%5."91%=5);3':2%;2%:2$6,:0#=3&?5)?6*8/!9/"82'3-"4*:2&=7->6*;3&:3'<4)?6,<4);3(;3':1&80$<3':2&=4(=4(90$6- 7/":2%G-F-E- A+?*<)<, 9)6%9&:':'8%4%0!.1"7%2+ 02 6#;(=)>+!@,!=)5"123!4#2!3!1/ *)'%&)($ !!"   -    -     -    -  -    -    -  -  - - - -   - - -           - -       -  -  -       -   -+".&0(0(1)0(2+ 3,!/'/(1*3+ 4,!0)2+ 4-"71%5/#2, 2,5."8/$:1':1&91&71&50$3,"4,#6.$5.$1*6/$70$;4(:3'5."2+ 5.#70':3*91(81%:2&<5):3'92%;3':3&91%;3':2&91%6."6.":1%=5);3(80%80%91&80%6/$6/#80%81&6.#91&;3(80%80%80%:3(7/$:2'81%7/$:2'91&91&7/#:2&90%:1&:2&;3'=4)<3(;2'8/#3*5, 8.#:0$<2&<2&:/$8."5+ 5+ 8.#:1&;2':1%:1%;1&6,!2(6, ;1%;1%:1%:2&90$5, 3)7-!;1%<3'<3':2&90$:1%;2&90$90$<2&;1%90$;1%9/$7-!8/#:1%:2&3*:1%;1%7-!:0%:1%:1%81$81$6/#81$<4(7."6-!91%:1&80%80&92(<6+70&2,"/(1)4+ 5,"3,"2+!3-#0),%!! &%%''&''&%%$'''&&&"##DDD???;;;000&&&$$$$$$###$$$###!!! - - - - - - - - -!!!$$$######$$$$$$%%%''''''&&&$$$ %%%$$$%%%%%%+++333<<4(<2&90#9/#=3'<3'9/$90$9/$;1&>4(:0%3)3*;2&=3(;2':1&90%:1&<3(6.#5-"=5*>6+:2':2'=5)=5):3'6/#2*80%;3(<4)91&6-"6."91%:1%5, 5+ :2'7/$2*5-":2'6.#0(5-"5-!3+ 8/$;2'91&8/$;3'<3(:1%:2&<3'5, 4*;1%<3';2&8."8.";1%>5(;2%90$<3'=5):2&91%=4(91%7/"<4(:2&90$;2&6."6."80$:1%;2&7."8/#6."7/#;2&:1%7/#;2&<3':1%8/#8/$6-"5,!7.#4+ 4+ 7.#5,"4+!3*80%91%91%7."7.#80$7.#<3'>6*80$4-!80$;3':2%80#:1$;2%6- 9/"=4&=4(=4):0#9/"82'5."6,;3'<6,>6*;2&:3';3(>5+<4)<3);2'80$8/$91%:1&;3'=4(:1%5- 6.!:1$F-G.E. B+@*?*9':(:)8'8&9&8$7"3!-.2#3!028!6#8';(;'9%<)<*5"/03!1 1 1 2!0/)$(-+)#       -       -       - -  - - -           -          - - -        - -    -      -      -*"/',#-$2*2* 4,"1*1*1).&0(2+ 2+2+ 2* 4,"6/$71%5/#1+2+6.#90%:1'91&81&61%50$3-#3,"6.$5-#3+ 5."81%;4(:3&4-!3, 7/%80':3):2):2&81%;3':3'91%;3':2&91%91%92&7/#5.!6/"91%;3';3'91&91&91&80%5-"7/$80%:2&6.#91&;4(80%7/$6/$:3(80%92&80%70%:2':2'91&91&;2'8/$80$91%;2'=4(>5)=4)90%6,!6,!6-!;0%<2&<1&9/#7-"5*5*9/$:1&:1%90%9/$:1%6,!4*5+ :0$;1&;2':1%7."5, 2(6, ;1%<3'=4(<3'8/#:1%:2&90$;2&<2&;1&8/#:0$:0%8.#8/#90$:1%3+:1%;2&7-":0%:1%91%70$80$70$81%92&90$7."91%;2'80%70%71'<6,92(3,"/(2* 4+ 4,!2*!2+!2+"0)0) %%$%%%%%$$$#%%$&&&%%%!!!EEE>>>999444+++###$$$%%%$$$$$$""" - - - ##$%%%$$$###$$$%%%&&&&&&%%%"""   %%%%%%&&&)))///444;;;EEEMMMPPP !!!$$$''''''&&&&&&''''''''''''%%%0+!2,"5/$60%71&70%80%91%7/#6.":1'91'92(70%6/$81&:3(91':3(80%91%7.#:1%90$90$:2%>4(;1%9/#=3&90#6- :0#90#8."8/#90$3+3*4+ 7."7."90$;1%6, 4*8."9/#5,5+:0$<2&<2&=4';2%9/#8-"8-!:0#=3&=2&;0#8- 7- <2$:0#4*4*5*6+ 4+6,!:1%7.#5, 4, 4, 5."4, 3, 5-!7/#8/$80$7/#5-!7.#;3';3':1%5-!80$91%5.!4- <4(;4(;3'91%92&81%3,!3, 92&:3'92'70%5.#4-"5.#81&5-"3,!3+ 3*0(0)---###$$$"""$$$$$$""""""$$$&&&&&&$$$$$$""""""""""""!!! !!!!!!!!!""""""!!!!!!!!!!!!"""!!!!!!   !!!!!!""""""!!! !!!!!!!!!""""""    !!!!!!!!!!!!!!!!!!"""""""""!!!!!! !!!###$$$$$$"""""""""!!!!!! $$$$$$$$$$$$###$$$.'.',$,$.&/&,$/'3* 4+!4,"4+!1)1)2*4,!3+0(0(4+ 6-#5,!3*6-!8/$7.#8/$8/$8/#90$7.#7.#90%7.#7/%80&80%91&91&91&92&7/#70$92&80$6."7/#:3&:2&;3';3'6."5-!7.":2&91%;2&:2&7."7/#;2&91%:2&91%;2'80$7.":1&:1%<3';3':1&90%:1%;2&:1%7/"<2&>4(<2&8."90$=3'=3'9/#:0$:0%<2&>4(90$1(3):0%<2':1&90%90%;2&;3(6.#3,!=5*>6+;3(;3(=6*=6*;4(70$2*7/$;3(=5*<4)7.#6."90$<3'6-!5, 8/$7/$2)5-"80%5-"0(6/#4,!1*5."91&91&7/$91%:2&90%91%;2&4*2(;1&>5)<2&7-!9/#;2%>4(:1%80$<4(=5)<3':1%;2&91%:1%=4(;3'91%:2&7/#7."90$91%;2&7."8/#6-!6.";2&91%6.":2&;2&8/#5-!7/#5, 4+7."6-"6-"90%5,"5-"5-"91%;2'<3'91%80$91%8/$<3(=5):2&81%;3':2&7/"7/"<3&<3&7.!90"=3&>5)>5):/"7.!82(6.#7- ;3(;5+>6);2&91&;3(<3):1';2(:1&7/$6."8/#7/#90$<3':1%6- 7.!:1$*E,F-F. B,C*@*@+>*<(<)<);(9%9"6!2 // 8$5#/7$@)?'=):(;(5"3 5"13 6$2!..1 .1 2!-)-.,*"      -              -  -   - - -      - - - - - -      -      -       -    -     -  -      -/))",$0'/&0'2)2*4,!0(1)3+ 0(0)2+ 1*1)2)4,"60%50$5/#0*2+6."8/$90$90%81&72&61%6/%6.$70%4-"4-"6/#81%:3'93&4-!3,!70%81'92(;4*91%81%92&80$80$;3':3'91%70$;3'92&70$7/#91%91%91%;2';3';2'91%6."90%91%:1&7/#:1&<4(91%8/$7/$:2&91%:2':2':2&=5)<4)6.#80$:2&:2&91%80$;3'<3(>5*>5*:0%6,!4+5, :0$<1&<2':0$8."5+ 5*9/$;2&:1&8/$7."9/$5+ 4*6, :0$<2&=4(<3'8/#7."6, 6- :0$;1%<3&<3':1%91%:1%91%=4(<3';1&7-"8.#:0$9/$8/#:1%;3'7.";2&;2&7.":0$:1%:2&92%81%81$81$91%:1%7."8/$;2'92'70%60&<6+93)4-$0* 6.#8/$4,!2*!/(3,#.'1*!"""##"&%%%%%$$$&&&'('&'&##"BBB999222///)))$$$$$$%%%%%%$$$### """###$$$""""""$$$%%%%%%%%%  %%%%%%%%%%%%)))---222<<4';2%;0$8-"9-"<0$=2%<2%;1#8- 7-:0#9/#4*3)4)4*3*5, 90%8/#5,!3+2*3+3, 3, 4, 6."7/#8/$8/$3+80$;2'<3(:2&5,!80$91%4, 2+;4(<4(;3'81%81&81&4,!2*70%92&92'70%5.#2+ 4-"81&4-"2+ 0(1)/'0)!!!######"""######!!!"""$$$%%%$$$$$$###"""!!!!!!"""  !!!"""""""""!!!!!!!!!  !!!  !!!!!!!!!""""""!!! !!!###""""""    !!!"""!!!!!!!!!""""""""""""!!!!!!!!!!!! !!! """###$$$#########""""""!!!###$$$$$$######%%%.'.&-%*#-%.%+".&2)3* 4+!5,"2*0)3, 5-"2+0(0)4, 7.#5,!3*7.#90$6-"8/$90%90$7."6."8/$90%7/$80&:2'70%91&92':2'92&6/#7/#92&7/#6."7/#:3'91%:2&:2&7."6-!80$:2&:2&;2&:1%7."7.";2&=4(<4(;2'7/$80$91%;2&91%:1%;2&:1%90$91%;2&91%7."<3&<3';2&5, 90$<2'<3'8.#90$:1%<3'>5):0%2)2)9/$<2':1&90%:1%;2&:1&5-"2+ <4)=5*91&:2'=5*>7+<4(6/#2*7/$<4)>6+=5*7/#5,!80$<3'6-!5, 90%90%3+ 6.#:2'5-"1*5."3, 1)4,!81&:3'7/$6."80$8/$7/#:1&3*/&8/#;3':1%4+8.";2&=4(:2&90$>5)>6*;3'90$91%:2&:2&=4(;2':2&<3'7."7."90$90%;2&80$8/#7/#6."90$:1%6.!8/#90$4+5, 6."4+4+7."7.#7.":1&6-"7/#7."80$91%;3'7/#91%91%7/#;3'=4):2'80$;3':2&5- 5- <3&<3%6- 8.!<2%>6*?7+9/!5,71'6/#7- 92':3)=5(90$7/$:2(;2(80%90&:1'7/#5-!6."7.":1%<3&;2%6. 3+;2% -&4%#E- D. C,B(C*?)=)>)=(<(<(<):%8!5 4 26!324"9%=)>(='9%6#2/003!7&7&4%. )/ 5&0 0 ,+/+&          -      -      - -   -    -  - - -  -   -    -      -       -      -    - - -  -     -1* /(0)*"-$2)3* 3* 2)2* 3+!0(2*4-!1).&0(1)1(0'4,"81&71%71%2,2+6."7.#7.#7/$70$71%61%70%81&92'5.#6/#81%:3';4';4(6/#5."70%81'91(;4*:2&:3';4(91%80$;3';3'70$7/#;4(:3'70$70$:2&;3'<3(;2&91%6."8/$7/#7/#80$91%8/#:1&;2':1&90%90%:2&91%<4(<3(;2'=5)<3(91%<4(=5):1&8/#91%<4(<3(>5)>5);2&8/$5, 5+ 7-";1%>3(;1&9/#6+ 5+7.#8/$;2'8/#9/$9/$5+ 5*7-":0%=3'=4(<3'8/#8/#9/#8.":0$:0$;1%;2%;2&:1%90$91%<3'=3';2&7-!9/#;1&:0%9/$;3'<4(8/#:1&;1%8.#;0%:1%91%92%81%81%92&:2&:1%8/$91&;3(:2(70%5/$;5*70&2+!1* 5,"6-"5-#3+"0)2,"/(1* .&$"!&%%$$%%&'&&''''&&%$$#===888333***$$$$$$""""""$$$$$$   "!"$###"""! #"!$$#$###""  &$!&&&&&&%%%&&&,,,333;;;AAAHHHMMM###$$$&&&((((((%%%$$$&&&'''&&&""!' +%2,"4.$5/$71&82':3':3':2'7.$7.$:1';3(:1'6/$5."82&=7+82%<5(;3'80$4+7."90$:2&;3':2&5-!6-":1%7."7."7."6.!7."8/#8/#6- 4+5, 9/$:1%9/#7-!2)3)9/#8/"6, 5+9/#;1$<3%>4'<3%;0%8,!:.#<1%<1$<1$<1$8. 7- :0#9/#4*3)4*3)2)4+ 90$80$5-!3*1*3, 5-!5-!6."7/#6."80$8/$2*80$;2';3'90%4, 80$:2&4, 1*:3';4(91%81%81&81&4-!1*6/#81%81&70%5.#3+!4,"7/$4-"2+ 2*3+ /'0(""""""#########"""!!!"""$$$############""" !!! !!!!!!!!!!!!  !!! !!!!!!!!!""""""!!!!!!###!!! !!!"""  !!!######!!! !!!""""""!!!!!!!!!!!! !!!!!!"""############$$$###""""""CCCMMM!!!%%%$$$"""###$$$*#,$-%-%+$/'/&,$.&3+!5,"5-#6-#1*0(4,!5."2+3+2*3* 7.$5,"4+ 6-#90%7.#90$:1%:1%7."6-!8/$:1%6.#7/%92'7/%80%91&;3(:2'7/#91%<5)91%80$7/#:3&:2&;2&8/#5-!6-!80$<4(<4(<3':1%6.!6.";2&<4(<3(;3(90%90%:2&;2':1&91%91%91%91%91%:2&8/#5- 91$;3&91%5-!7/#<3';2&7."7."7.#:1&=3(90%3*2(8.#<3';2&90%90%:1%91%4,!3+ ;3(=5*80%92'=5)=5):3'6/$2*6.#:3(>6+=5*90%5,!:1%;2&8."7-":1&90&3+ 6.#:2'5.#2+ 4-"4,!1)4,!80%;4)80%7/#:1&80$7.#:1&3+0(7."=4(:1%4+ 6-!;1%=3':1%8/#=5)>5*:2&90$91%90$8/#;2&=4(7/#81$80$7/#91%91%;2&7."4, 6-!5-!80#:1%6-!7/":1%3*4, 5, 3+4+7."7.#7."90%7.#6."4, 4, 7/#;3'7/#91%91%7/#;2&=5):2'7/#91%<3'7/"5,:2$;2%7.!7- :0$=4(?6*9/!4, 60&6."5+70%93)=4(80$5."7/%80%90&80%90%7/#4+ 4, 6-!:1%;3&;3%7.!4+90" - -  5)(C, C-!B, @(@(B*@)<'='=(<'<(<)9&6!5 8#9"6205":';(:';'8$5!...3 7%4#8(3#/!. ...-0!.. *# !           - -      -     -   -    -  -  -    - -                      -    -   -          -1* 2+!0)/(+$.&2*3* 2)0'/&2*2)3*6.#2*.&0(1)1(.&3,!81&83'92&5."4, 6-"8.#9/$91%81%71%50$70%92'92&5."6/#92&<5);4(;5(71$70$81&:3(:3(<5*;3':2&;4(:2&7/#70$:3'6."70#:3'91%5-!7/#92&:2&<4(80$90$5-!80$7.#6."90%91%80$:1&:2&:2&:2&91%7/#80$;3';3';2'<4(=4)91%=4)=5)7.#91%91%=5)=4(=5)>5)=4);2':1%7-"6,!9/$>3(<1&9/#5+5+6-!8/$<3'90%:1%7-"4*2(5+9/#=3'<3'<3'7/#6-!8."9/#9/#;1%=3'<3&<3':1%90$90$;2&<2';2&7."9/$<2&:0%90$=4(=4(90$;2&;1%7.":0%;2&80$92&92%92&92&:2&:0%8/#90%;3(91'70%60%71&70&3,"3,"7/$7.#5.#3,"3,"4.$2+"2+!0)+#&%$%$%%%&&'''''&&&BBB:::555///&&&"""###""""""$$$$$$ !!!!!! %%%(((((((((,,,222999>>>EEELLL"""###&&&&&&&&&&&&%%%''''''%%%"##%.(2,"4.#5/$82':4(;4(:3(91&7.$7.$:1';3(:1'6/$5.#93'>8,60$;4(92&6-"5, 90$8/#80$:1%8/$5-!6."6-!5, 3+7."8/#5, 7/#8/#6, 6, 7-!8/#90$8/#5-!2(2(9/#8."5+6,8.":1$<2%<3%;2%9.#7,!;0$=1%;0#<1$<2$9/!8.!:0#9/#4*3)4*3*2)4+8/$80$5, 2+2+4-!5."5."80$:1&5-!80$6."2*5, :2&:2&91%5,!80$:3'4- 2*92&;3'91%81%81&81&5."2+6/#80%70%70%5.#3+!3+!6/$5.#2+ 3+3+ /'&$####"""$$$$$$$$$#########$$$""""""###$$$!!!    !!!!!!!!!!!!""""""###"""!!!""""""!!! !!!"""  !!!"""$$$###"""!!!""""""!!!!!! !!!!!! !!!!!!"""###$$$#########"""111999@@@III ###$$$###%%%$##+#,$-&,%-&/'/&.&/&3* 5-"4,"4+!1*0)5-"5-"2*3, 1*4+ 6-#4+ 3*6-"90%8/$8/#:1&;2&90%7."90$;2&6-"6.#80&6.#6.#80%<4);3(6/#92&<5)92%5-!80$<4(;3'<4(:2&7/#5-!7/#;3';3'<4(;3'7."6-!:2&=4)<4)<3(:2':2';2'<3(;3':2&91%91%91%:1&;3'80$5-!:1%;2&80$7/#8/#<3';2&8/#7.#7.#90%<3(90%4+1(7."<2':1&90$8/$90$8/$3+ 3+ :3'=5*80%91&=5)<4(:2'81%3, 5.":2'<4)<4);2'6.";2&:1%8."6-":1&:1&4,!5-!70$6.#3+ 2*3+ 0(2*80%<4)80%80$:2&8/$7.#;2&3+/'8/#>5):1%6-!5, ;1%<2'91%8/#<4(=5);2&90$80$91%8/#:2&;3&6/#81$:2&80$:1%8/#<3'90%4+ 5,!4+5,!90$6-"8/$:1%3*5, 6."4+ 4+6-!5,!5,!8/$7/#5-!3*4+ 7/#<4(91%:1%90$5-!:1&=5)92&4, :1%=4(80#5- <3&=4'8/"8/";1$;3'>5)9/"5-!71'5, 4*70&:4*=4)90%6.#80%;2'<4):2':1&80$3+3+5, :1%;3&<3&7.!3+5,D8( -  7&#C, A-!A, B+@(A)@)=':%=(>(<'<(:'6#4!7#=&@'8!28";';'>+:'8%6#21+.4"7%6%3"3#.,*,--)-. (" " "  -  -    -      -  -             -         -                 - -    -  - -   -   - -   - - - 2* .'.'3-"3+"1*!/(1(4+ 4+ 2*.&.&4+ 2)4+ 6/#3+ /'0)1)/'.%1)6/$82&71%71$4, 4*6, 8.#:1&92&82&50$81%92'81%5."6/#92&<5);4(;4(70$70#81&=6*<5*<4):3':2&;4(;4(:2&:2&<4(7/#91%;4(91%5-!7/#92&;3'=5)80$90$:2&;2'90%90$:2&90%80$91%:2&80$80$;2&90$8/#;2';3';3';3'<4(90%<4(;3'6-"90%80$=4(<4(=4(=4(=4)=4);2'7.#5+ 8.#=3'<2&;1$6, 5+6,!:0%;2&;2&:2&8/#5+ 5+ 7,!;1%?5*<3(<3(91%90$;1%;1%9/#:0$>4(=4';2&;2&:1%:1%;2&<3'<2&8/#;1%=3';2&:1%=4(;2&80#:1%:1%6,!8.#:1%8/#:3&92%:3&:3&;3':1%8/#90$>5)81&81&82'92'92(4.#4-"80%8/$5.#4,"5.$60&4-#4-$2+ )"###%$$$$%((()))(((>>>888111***###"""$$$$$$$$$%%%  &%#((())))))+++000777===BBBKKK!!!%%%(((&&&&&&'''&&&&&&&&&!!!"+$,&2,"1+!5/$71&93(:3(:3(91&7.$6.#8/%:1'90&7/$6/$;5)<6*82&:3'<4(7/#6-!7/"5, 90$91%80$6-!4, 6."7."6.!8/#90$6-!7/"80#7-!7-!7-!90#80$7."7."2(0'7,!8."5,6, 7.!:1%;2&;2&90#7- 7- :0#;0$;0$;1$<2$9/!9/!;1$9/#3)3)5+ 4*2)4+ 8/$8/#4+ 2+2+3, 5-!6."80$:2&4, 6."6."3*5,!80$90%80$6-"80$:3'4-!3+80$:3':3'81%80%92&6/#1*4-"81&81&6/$5-#2+ 2+ 81&7/%1*3+ 4,!1)*))$$$""""""###"""###$$$###"""!!!!!!###$$$!!! !!!   !!!"""""""""!!!!!!!!!"""!!! !!!!!! !!!!!!"""######"""!!!!!!  !!! !!!"""#########!!!""""""%%%---666<<6+80%:2'<4(<5);3(91&4,!6.#92'=5*=5*;3'6."90$:1%8/#7.#80%:1&6-"7.#91&80%4,!2+ 4,!0)2*80%;2'6."7.#;2'8/$7.";2'3+/&8/#=5);2&8/#7.";1&:1%;2&:1%<3'=4(;3'80$6."91%7/#91%91%70#:2&;3'7/#91%80$<3':1&4+ 5,!2)4+ 8/#6-"8/$8/$5,!7.#7."3*3*5, 5, 4+ 7.#8/#6-"4, 6-!7/#<3'7."80$80$4, 80$;3'70$3, :2&=5(80#80#?6)?6)7. <2%=3&<3(>5):0"5."60&5, 4*6/&:4)=4(:2&80%;3(<4)=5*<3(;2'80$5-!5-!6-!;3'=4(=4(8/"4+4+?4&   8-,C-!A,!@, @+@*A*A*?(;%<(?+>(<&9$6"3 6$9'<&>';$8!='B,@->*:(6#1..,2!7&7%5"4#3#/ .-/!*'*))&&&!   -       -      -              - -   - -  -             -    -        -  -    -   - - - - ,$+#1)-&,%2,!3,"1+!0)2)5,!6-"4,!0(/&3+ 3+ 5-"7/#3, 1)1)0)0'-$0)6/$93'93'81%4, 4*4*6-!8/#70$60#60$81%92&70$5.#6/$92&:3':3';4'70#5."80%=6+;4):3'92&81%:3':2&92&:2&<4(80$91%;3'91%6."7/#91&;2&;2'90%8/$;3':1&90$:2&;3'91%80$:2&<4(80$8/#80$7/#4, 91%;3'91%=4(<3(91%<4(<3(91%:2&:1&<4(;3'=5)=4(<3(=4(<3'9/$6-!8.#;1%<2&<2%8.!5,7."8/#;2&;2';2'8/#5+ 5+ 7-!;1&?5*<3(;2'81%80%;2&;1&8."8.">4(>5(:0$:0$:1%:1%<3'=4(<3'90$:0%<2';2&:1%;3'8/#5-!90$:1%7-!7-"90$7/#92&70$92%;4';3'90$80$:1&=5):3'92&94(=7+:3(6/$4-"80$90$5.#5.$5.%70&5.$4-$3,".&,%&$$&%&(())))''':::555///(((###"""###$$$&&&''' "!!((())))))***...555<<5)=4(90$9/#9/$:1%<3':2&;2&=4(<4(91%6."80$6."91%91%5-!92%:2&5, 8/#8/#:1%90%5, 6-!1(4+ 7."6-"8/$8/$6-"6-!5,!3*4+ 6-!5,!5,!7.#90$90%7.#6-!7.";3&7."7.#6.#3+80%:1'80$5-!:2%<4'91#:1$@7*?6(7- <2&=3'=4(?5):/#5.#60%5, 4+60&;4*?6*<4(81&;3'=4)>5*;3':2&90$5-!5-!6."=4(?6)>6):1$5,4+8.!  - C-!A-!?, ;)=)>(@*@*>(;';(>*=':$6!25"?)>+<(8"9"=&A)@*?)@,;(4"0../5$9'7%8%8&5$1"*(*(&()$$'(    -       - -         -     - - - -   -        -                -          - -    - - - 3+ 0(-%+#0(/(.&0)0)0* /'0'3*3+ 2)/'/'6-"5-!6-"7.#4, 1*0)1)/',#3+ 6/$81%92&81$6-!5, 5+ 8."8/#81$71$50#71$92%92%70%70%92&92'81&81&5."3, 92%<5)<5(;3'92&:2&:2&91%70$92&<5)92&92&;3'92&6/#6/#92&;3':2&91%90$91%91%90$:1%;3':1%6.";3'=5):1&:1%90%7/#7/#:2&:1%;2&;3'<3'91%<4(<3(<4(;3';2'=4(;3'>5)<4(:1&:1&;2'90%7."9/$:0%;1%<3&9/#6, 6, 8.";1&:1%8/#6-!6,!3)3)8.#<2';2';3'92&90%;1&<2&9/#8."<2&>4';1%;1%;1$9/#:1%<4(<4(91%91%<3(;3'91%:3&91%7/#8/#;1%7-"8.#90$8/#92%80$81$:3&;3&80$80$:1%<3';4(:3':4(<6+:4)71&4.#:1%90$5."5.#6/&70'4.$5.$3,"-&)"*#%$$&&'())>>>999222***&&&%%%$$$$$$&&&'''(&$)))((((((***222:::@@@EEEJJJ###%%%'''''''''%%%%%%%%%$$$!""%,%/(1* 3-#3-#60&60&71&70%81&81&6.$7/%80&90&7.$4,!6/$=7+;6*:4(92&:2&8/$7/#7.#6-!80$:2&5-!1)3+5-!3*7.":2&;2&:2&6."8/#;1$6- 6- :1%;2&7-"4*/&4*6,!5+4*5,90#;2&80#80#8/"6, 6, 9.":0$;1$;1$<1$8.!7- 9/#8."5*4*7,!6,"4* 2)6.#5-!4+ 3*3+4- 5-!8/#7/#;2'6.#5,!8/$6."6-"80$;2'90%5-!5-!70$5-!4-!7/#:2&:3'81&92'81&5.#3, 4-!7/$6.#4-"6/$4-"0)70%70%4,!4,!5-"3+ +)("""""""""!!!!!!"""######!!!!!!###""""""!!!   ###!!! !!!"""""" !!!   !!!     !!!!!!!!!  !!!"""""""""!!!"""$$$######&&&''''''''',,,444===AAA$$$%%%###+%(!*#/'/',$,$0(2).%0'2)5,"6.$7.$5,!5, 6."5-!4+3+3+6-"6-"3*4+ 90%;2'7.#7.#8/$:1%90%7.#:1%=4(4,"80&;3(80&80%:2'=5*;4(7/#:2':3'91%70#80$7/#90$<3';2&7/#6."6."90$;2&;2&<4(7/#5, 7.";2&<3(;3(91&8/$90$=4(<3':2&;3';2'91%:1%;2&90$91%<4(:2&7/#7/#91%:2&80$5-!6-"7.#8/$;2';2&5, 1'7-"?5*<3(90%6-"8/$7/$3+ 4,!=5*<4)7/$91&<5*=5*;3(92'2* 5.#91&<4);3(91%5-!7.";2&8/#5, 7.#90$5,!5-!91&80%4,!4-!5-"2*3, 91&:1&4, 80$>5):1&6-"90%5, 1)7."?6*>5)90$8.#7.":1%=4(;2&:1%<3'<4(:1%6."80$5-!91%:1%4, 80$90$2)6."6-!8/#8/$6-!7.#3*5, 6-"5, 7.#7.#3* 4+ 4+ 2)4, 6-"5,"5,!7.#90%:1&8/#6-!7.";2%6-!5-!5-"2*;2(;2(:2&6."80#;3&:1#;2$?6)>5(7-!<2$:0#:1%>5*90%4-"6/%5, 4+ 92'=6+?7*<4(:2'=4)<4(=4):2&80$80$6."7/#7/">5)?6*?6):1%4,5+7-!  C-!A-!?,!:(:'<(<'>)?*=(;&:&:':%7!46!='?)A*@+8$7!<%>(=&='=':&1-,,1!6%9&9%5#6$4",-&(,&%'&%&"    !""       - -  -   -       -  -    -   -                        - -         -    - - - ,&0)2*0(-%,$/'.'-&.'/(/),$,#1(2)1(1)0(2*4+ 3+7."4, 0)1*2*2)/%4, 70$70$81%91%7."5+4*6,!7."70$60$5/#81%70$81%81&92':3(92'6/$5-#2+ 4-":3':3'92&91%91%;4(;4(:2&91%;3';3':2&:2&:3'5-!4-!80$:2'=5);2&90$80$8/#:2&;3';3'<3';3'4, <3'<4(;2&;2&:2&80$90%91%:1&:1&90%<4(;2&>5)<3(=4)<3'<4(>6*>6*?6*=4(:1%90$;2&90%8.#:0$;1%<2&=3':0$6, 6,!8.#<3':1%8/$6-"7-"2(2'6-!;1&;2&;3'92':1%;1&<2':1%9/$<2&>4'<2&;1%;1%9/#90$<3'=5):2&91%;3';2&:2%;4(;3'91%8/#:0$5+ 8.#;1&:0%:1%81$70#:3&:3&80$7/#91%:2':3':3'93';4)<5*5/$4-";2&:1%7/#5-#6/&70&5.%5.$4,#-%,$( ###$$$(()<<<555///(((###$$$######''''''%$#)))))))))***///666<<9-<7+;5);3(7/#6-"6-"7."6-!8/#8/#5, 1)3+5-!1)5, 8/#=4(8/#90$8/#8."6, 4+9/$9/#5+ 1(.$4)6, 4*3*6, 90#:2%8/"7/"7."5*5+8.":0#;0#;0$;0$8.!7- 8."8."5+4*7-"8.#4* 1(6.#6.#4+ 3+2+4- 6."8/$7/#90%7/#7.#7/#6."6.":1%<4(80$5-!3, 7/$4-!3+ 6.#81%:2'92&92&:3'70$3, 3, 5.#5.#5-"7/%4-"1)7/%70%4,!4, 3+!2*!!!!!!!!!""""""###!!!""""""""""""######"""###!!! !!!   !!! !!!""""""!!!!!!!!!  !!!    !!!!!!   !!!"""""""""""" ###%%%&&&%%%%%%(((///999>>>FFF%%%*#+$)"+$/(/(-%,$1(1)*!0'3* 4+!5,"5-"6-"4, 7/#4+3+3+5,!6-"5,"3* 4+ 8/$:1&8/$90%:1&:1&90$6-"90%<3(7/%91';3)6/%6/$91&<5*;3(7/$:2&;3':2&80$;3'91%;3&=4(91%8/#6-!5-!91%;2&:1&<4(7."6-!90$<4(;2';2'91&80$:2&=5)<4(;2'<3(:2&:1%;3';3'80$7/#;2&:2&7/#7.#91%;2&8/#4, 5, 6."7.#:2&;2'5,!/&6,!@7+<3(80$7."80$7/$2*3+ <4)<4)80%91&92';3(;3(91&2* 4,"80%<4*;2(80$5, 7.#<3':0$5+ 8/#90%5,!6.":2'92&3, 4-!7/#1)5,!:1&:1&5-!80$?6+:1&7.#:1&7."2*7.">6*>5):0$7."7-!:1%=4(;2&:1%<4(<4(:1%6."80#5-!80$:1%5, 8/#7/#3*6-!6-!7/#8/$6-!7.#5,!5,!8/#4+ 6-"6-"2)4+ 4+ 2*4+ 6-"5,!5,!7.$7.#8/$5,!7."91$<3&7."7/#6."4+ <3)=4*<3(7/#91$=5';2$;2$>5(>4(8/";1$:1#8/#92&6/#3, 7/$5-!3+90$>5)>7+:2'81%<5(<4(;4(7/#7."7."8/#90$8/#>5)?6*?6):1$3*4*6,    D-!A-!?,!:* 9':&<(=(>)=(<(:&8%7%6"36 ='?*D- C+:#:%9%:$='<&;%;%5 -+*-0"3"7$;&8$2 5#.-**'&&##%$   -    #%"  -  - - -  -      -         -    - -   - -            -                      - - -0)0*,&0)2*0(-$.%/',%,%.(/(/)-%,#0'1(0'0(0'3*2*2*7."4, 0(1*2+4* 2(3*70$92&92&91%8/#7-!4*5+ 8/$80$5/"4."70$60#70$70%92(;3)81'5.$4-#2* 5-";4(;4(<5):2&81%92&;3'91%92&;3';3'92&:3';3'5-!2+6."80$>5);3'91%90$91%:1%91%:1%:2&91%91%;3'=4(;3';3';3':1%7/#;3':2&7.#:2&;3';3'>6*<3(=4(=5)<4(?6*A9-?6+=4):1%7.#:1&:1%9/$9/#:/$:0$;1%;1$7-!4)8.";1%;2&90%90%:1%4+4*9/$;2';3';3(:3'91&:0%;1&;1&:0%;1&=3&;2%;1%<2&:0$:1%;3'>5):2&90$;2&:1%90$:2&:2&80#6-!=3(5+6,!<3':1%91%80$70#80$81$70#7/#81%:2';3(92'92';4);4*71&3-"91%:2&6/#4-!5.#7/%6/%6.%4,"0()"-%(!$$$%&&999222,,,&&&###$$$######'''&&&((())))))(((,,,222999>>>DDDCCC'''''''''&&&&&&&&&%%%$*#/(1*!2+"3,"3,"5.#81&5.#4."70%70%6.$6.$80&7.$5,"3+ 70%=7,<6*:3(92&7/$5-!4+ 6-"5, 6."91%7/#4+ 4+5, 0(3+80$;3'90$7/"90#8/"4*5+<2&8."5+3)3)6+ 6,!4*4*6, 5, 7."7."80#7.!4)5*8."9."8.!:/#9/"8."7-!8."8."5+3)6,!7-#4* 1(7.#7.#4, 2*1*4- 7/#7.#7/#90$80$80$8/$5-!5,!91%<4(91%6-"4,!6.#4,!3+ 5."92':2'81$81$;4(81$3, 2+ 5."5.#6.#6/$5-#2+ 6/%6/%4,!4,!4,!2+ !!!!!!!!!######"""!!!"""!!!!!!"""""""""""""""!!!     !!!!!!  !!!    """!!!"""###$$$&&&&&&%%%---555;;;BBB+$*#+$*#,%.&.',$+$0(.&.%/&2)4,!5,"5-"5,!3*7.#4, 4+4+5, 4+ 5,!4+ 5,!8/$;2':1%8/$:1&:1%8/#5,!90$:1&7/%80&:2(6.$5.#92';4):2'92&92&:2&:2&7/#91%;4(;3';4(;3'81$5-!5-!80$91%:2&>5)7/#6-!8/#;3';3(;3(91%80$:1&<4(;3':2&<3':2&:2&<4(<3'80$7.":2&;2&6."5-!91%=4):1%6-"6."7/#7/#:2&:2'5,!.$4+=4):1&6."7."90%7/$2*2+ ;3(;3(91&91&92&;3(;3(6/$1)1)7/%;3):2(91%5,!8/$;1&90$7-"90%:1&6-"6.":2':2&3+4, 7/#4+ 6-":2&:2&6-!7/#>6*90$6-!7/#6."1)7/#@7+=5):0%7."6-!:0%<3':1%:2&=5)=4(:2&7."7/#6-!6.":2&5-!7/"80$5, 5-!5- 8/#7.#4+ 7.#4+ 6-!90%6-"7.#6-#3* 5,!5,!4+ 4+ 5,!4+!4+ 8/$7.#:1&6."7.":1%=4(90$:1%7/#5-":1(=5*:3':2&>6)A8+<4&<3&?5(=4'9/"9/"8/"7/"90$6.#3+ 7/$5-!4+80$=4(>6*91&6/#<5):3&92%7/#90$7."9/#:1$9/#?5)?5*=4);2&4+2(5*   "D- B-!?,!>,;*;*<(<'='=(;&9%6$4$4#24 9#<'@+D- B+;$;%A,<(>*=(:%6!1,,,-/"/07%:'4!1/' .$ *($#$$! -  !# "!   - -   -     -     -  -     -  - - -   -  -           -    -    -  - -         -   - - -.(1+/(0)0)1*3, 0(,%-&1)-&-&/(/(1+!/',#/&1(2)2*0'2)2*2*6."5-!2)1*3+4* 2(3*6/#92&92&91%7."7-!7,!6, :1%80$4."4.!6/#60#6/#5.#80&:3)80'5-$4-#2* 5-#:3(;3(<5(6/#5-!81%<4(92&:2&:3':2&91%91%:2&7/#3, 70$80$;2&:2&90$90$:2&:2&:1%90$91%;2&:1%<3'<4(:1%;2'<3(:2&91%:2&;3'90$;3'<4(<4(=5)=5)>5*<4(91%>5*A9-@7+>5)90%6-":1&<2':0%8.#:0$:0#9/#;1%9/#5+4*9/#=4(;2':1&90%6-!5, 90$;3';3(;4):4(:2';1&<3'=3(;1%;1%<3&<2&;1%=3';1%90$:2&>5);3'90$;2&:2&91%:3':3&8/#6-!;1&3)5+<2&:1%90$91%80$6/"80$81%70$81%:3';3(91&81&:3(:3*71&4.#70#91%70#6/#6."6/#6.#6.$6.$.&.'-&)!+#>>>666000+++%%%$$$$$$######&&&&&&)'%***)))(((***000666<<6*<4(90$80$90%8/$:2&:2'5, -#3*<3'90%5,!5, 7.#6.#1*3+ ;3(;4)91&80%:2';4);3(6/$2* /'5-";3(;2(:1&5, 8/$:1%:1%7-"9/$90%5,!5-!91%91&3, 4, 70$5-!5-!:2&;2'6."80$<4(80$6-!8/$8/#2*6."=4(=4(;2&8.#7-!:1%;3'90$:1%<4(<4(:1%6-!8/#7."6.";2&4, 7.":1%7."5, 5, 8/#7.#4+ 8/$6-"6-"8/#6-"7.#7.$4+ 6-"5, 4+ 3+ 4+ 5,!5,!90%7.#:1&7.#5, 90$;3'8/#90$80$6.#<3)?7,=6*;4'>6)@8*<4&<4&>5(>4(:0$8/!7.!7/#:2&6."2+70$5-!3+8/#;2&;3'7/$80%<5):3':2&80#80#8."=3'>4(;2&>5)?5*=4):2&4+ 2'5+    -%E- C- @,!B."?,>,>,>+>)>(=(:&7%3$1"1!3!<'<'=(>(?):#<%@*B-C.@-<):%2- /.-0"/!-//4"4"2 .1 1!/.-*%%"  !  "!    -               -   -  -    -         -         -        -  - -  - -    -    - -/(.&.(1*/(0)2+ 3,!5-"1*-&.&1*/'0(1* 0) 1*!.&+#.&0(2*2*.&1)2*2*5-!6-!3+2*5."7-#3* 3+ 5."82%92%:2&7."4*7,!7-!91%80$5/"5/"6/#5."4-!5.#91(:2)6/&5.$3,"2+!7/%;4(;4(;4(4-!3, 81%=5):2&;3';3'91%6/#5.!81%80$6/#92&:2&<4(<3':2&;2&;3';2&:2&7."80$<4(<4(>5)<4(90$;3'<4(:1&90%:2&<3(:1&<4(;3';3'<4(>5*?7+<3(90$>5)?6*?6*>5);2'6-!90%<2'9/$8.#7-"9/"9/";1$9/#5+5+9/$=4)90%90$90$7."5, 8/$:2';3(<5*;5);3(;2'=3(<3'90$9/$;2&;2%:0$;2%;2%90$;2&?6*=4(8/#:2&:2&92%;3';3'80$6-!:0$5*5+ ;1%<3':1%80$92%6/"92%:2&91%81%92&:3(81&6.$70&:3)71'4.#81%92&7/#5."4,!5.#6.#5-#4-"-%.'0(+#$<<<777000)))#########$$$&&&'''&%$((((((((((((---333999???CCC'''((('''&&&&&&*$%("+$0(3+"3,"5.#2+!4."81&71%70$92&81%6/#6/$81&8/%8/&70%92'=7+;5*:3(;4(80%3*4+ 8/#6-!5-!80$90%5-!7/#4+3+4+;2&:1%6-!5- 90#8."5+:0$<1&:0$6, 4*4*5, 5+ 4*4*5, 7/"90#8/#80#8/"5+5+9."7-!6, :0$90#8.!7-"8."5+ 6, 5+7-!4* 4*2)6."8/$5, 2*3+5."8/$7/#6."7/#7/#8/$:1%7.#5, 7/#:2&;2&6."3+ 6.#4-!2+ 4-":2'91&92%:3&<5(81%2,2+6/#70$70%81&6/$5-#70&80&5-#4-!4-!)!!!!"""!!!""""""""""""""""""!!!""""""!!!!!!!!!!!!  !!!"""   !!!!!!!!!  ###$$$&&&'''%%%&&&...555;;;BBB*#+%+%-&0)/'+$.&.'.&,$0'1(5,"6.#4, 2)0(4, 6."5, 3*4+6-"7.#3*3*8/#90%7.#6-"8/#90$7.#5, 8/#:1&90%91&:2'7/$7.$7/$<4);3(91&;4(91%4-!7/#80$:2&81%;3':3&70#6/"70#;2&80$:2&;3':2&6-"7.#:1&<3';3'7/#5-!91%<5(;4':4';4':2&91%;3';3':1%91%<4(;3'5-!4, :2&=5)<4(91%90%80$7/$:2';2'7.".%3*:1&90%5,!4+ 6-"5-"0(2+:2'<4)92&80%:2'=5+<5*7/$4,!/'4,";3);3(:2'4+ 8/#=3(>4)8/#8.#90%5,!6-":1%:2&5-!5, 7.#4, 4, :1%:1&4, 8/$:2&80$6-!90$:1%4+6-!;3'=4)=4(9/$7-"90$<2'90$8/#;3'=4(80$3*5-!6."7.";3'6-!7.":2&7."5-!5, 6-!6-!5, 7.#8/#6-"8/$6-"7.#8/%4+ 6-"3*2)3*5,!6-"5,!;2'7.#:1%6-"3*7/#90$8/#8/#8/$7.#<4)>6+<5):2&=5(A9+?7)>6)?6*?6*<3'91$80#91$<4'80$4, 91%5-!3+80$<4(;2'6.#80$:3&91%80$80$:1%90$?5)?5*<2'=4)?6*>6*;3'6."7- 9/"F:*    -E. D- A, @+ ?* ?*>*@,@+@+@*>)8&4$3#1!3#7%>)?*A+?)7"3:$B-C.A,@,<)3".-.0/-,.,///06$01!-(((,)! -  #!   !   -      -  -  -     -   -  - -    -    -  -     -                      - -   - - /&/'-&.'1*0)0)0)1*3+ 1).&-&0)0(1)2*!.'/(.&+#/'/'3,!2* .&1)3+3+6-!5-!2*3+7/"8."5+ 4+ 70$92&;3'<4(90$4*5+7-":2&92&5."5."6/#4- 2+ 5-#91(92(6/&6.%4,#3+!7/%:3(<5)<5)6/#3, 80$;3':2&;4(;4(92&70#6.":2&81%91%81%91%91%90$90$<3'<4(;2&;2&;2&<4(<3'<4(>6*=5):2&<4(=4):2&:1&<4(>5);2'<3(;3';3'=5)?6*?6+<4(;3'>5)?6*>5)=4):1&6-":1&=3(:0%8."7-"8/":0$<2%:0#7-!6, 8.#<3'90$8/$8/$7."5+ 7-":1&:3(;5);5)<3(;2(<3(;2'9/$9/$;1&<2&90#:0$<2&91$<3'?6*>5)80#;2&:2&91%:3&;3'7."5, <2&8."7-!:0$91%91%81%:2&80$:2&:3':2&91%:2&;3(80&5.#70%<5+82(5/$80$91%6/#5-"4,!6.#6/$5-#3+!-&/'0) -&' 999444...((($$$######$$$&&&''' $$#&&&(((((('''+++000666<<<@@@@@@'''&&&&&&%%% "'!+%/(2*!3+"3,!4."3,!5."71%70$70#81%70$4-!6.#80&91'91'81':3(=7,;6*;4);3(80%3*3*7.#7.#8/#80$8/$5,!7/#4+1(4+90$90$6-!5- 8/"6, 3)8/#;1&<2'9/#2)4+7."7-!5,3*4+:1%;2%8/#7/"8-!4)6+9."6, 7-!:0$90$8."9/#9/#4*6, 5*5+ 4* 4*4+8/#80$5-!4, 5."5-!7/#7/#4, 6."7/#8/$:2&80$4, 7/#:2&:1&5-"3+ 7/$6.#2*5-"80%81%81%81%:3'70$3, 2+6/$81%81&92'6/$3,!6/%81'6.#4-!4,!!!!!!!"""###"""""""""""""""!!!###$$$"""!!!!!!!!! !!! """!!! """!!!!!!!!!!!!    !!!!!!    !!!!!!   """###$$$&&&'''%%%%%%+++222999<<<*#*#*#,&0) 0(.&.'2* /',%/'3* 5,"5-"5,!3+2)4, 6."3+2)4+7."6-!2)3*8/#90$7."6-"8/$90$7/#6-!90%<3(:2':2';2'7/#6.#7/$:1&91&91&:2':2'6.#6.#:2&80%70$;3':3'80$70#81$<4(80$:1&<3':2&5-!80$;2';2';3'91%6."92&<5);4(;4';4':2&90$;2&;2&90%90%<4(;3'5-!5,!;3'=4);3(90%90%80$80$;3(<3(8/$0(2)90%:1&6-"6-!7/$6-"/'1)91&<4)91&80%;3(=5*<4*7/$3,!.&3+!91':2';3'4+ 6-"=4(>4)8.#6-"90$7."5,!:1&:2&6."5,!5-!3*4+ 90%90%5, 7/#:2&80$5, 7."91%5, 6."<3'>5*>5)90$6, 8.#<3':1%8/#:1%<3'80#2*4+7."8/#;3'7/#6."90$6-!5, 5-!5-!7.#4+ 7."8/#6-"8/$6-"6-"8/$4+ 6."7."6-!4+ 5,"3*2):1&8/$8/$5-!3*8/#;2&8/#8/#5-!7/#<4)>6*;4(81$;3&?7)>5'=4'=4'>5);3':1%7/"90$;2&80$3+7/#3, 3,7/#=4):2&6."6.#70$91%90%:1%<3';1&>4)?5*;2'=4(>6+?6+;4)80%9.!9/"@5& -   F.E-C,B, ?)>(=(=)?*B+ A+A+=(7%3"2!1!6%=)=(?*C-!>)6!5 >)@+A,@+?+=)1 ) ,.00,)*-+./-.0.-.-)'$   !!!!        -       - -                 -                        - -  - - /&,#-%/'-%-&0)0(0)1)1)3+ 2*0(-%0(/'0(1* -&.'-%+#/(0)5-"3,!/'2)3+4+7."6-!4+5- 80#9/#6,!5,!80$92&<4(<4(80$6,!5, 6-!8/#80$6/"70#92%6/#2+5.#70&81'70'7/&6/%4-#6/$:2'=6*:3&6."4, 91%;3':2&:2'91%80$7/#80$:3'92&;3':2&<4(=5)<4(<3'?7+?6*;3';3';2&>5)<3'=5)?7+=4(80#;2&=4);3';3'=5)=4)91%:2&:2&;2&=5)?7+=5);3';2&=5)@7+@7+>5):1%6-";2'<3'9/$6, 8."9/#;1%=3'<2%9/#6, 8.#;3'90%90$90$7-!3*6,!90&92'82':4);3(<3);2(;1&90$8/#<2&=4(9/#90$<2&80#;3&>6*=4(8/#:2&:1%91%;3';3'6."6-!9/$7-"7-":0%;2&80$:2&92%:2&:3';3'92&80$:3';3(70%5.#71&;4*82(60%7/$70%5-#4,!5-#70%70%6.$2+!/'0)1) .'???777222,,,&&&$$$$$$$$$%%%&&&&&&"""!!!,)%'''(((''')))...444999===>>>&&&%%%$$$,')#*$,&.'2+!3,!3-"4-!4-!5/#70$60#70#81%70#3, 5."6/$:1(91'81':3)<6+:4)81&:2'80$2)1(6-!7.#80$80$90%5, 7/#6-!1(4+8/#91%7."6-!8/"7-!3)5,;1%:0$5, 3)4+7."7."4+3+8/":1$:1$8."7."5+3(6, <2&8."8.":0$9/#7.":0$;1%5+ 3)4*3(3)5+ 5,!90%90$6."6-!6/"6."7/#7.#5-!80$8/$6."90%90%4, 6.";2':2&5-"3, 7/$6.#2*5-"80%81%70$81$93&81%4-!2*6/$81&92&:3(6/$2+ 6.$81&7/%5-#+$!!!"""$$$###"""!!!!!!!!!""""""""""""!!!  !!!!!! !!!!!!!!!        !!!!!!!!!!!!!!!   !!!!!!###$$$###%%%&&&&&&%%%&&&---555:::CCC*#+$.'1* 0) .'.'1* /',$/'2+ 6-#5-#3+0(2)5-!7."4+3*6-!7.#6-"2)4+ 8/$90$6-"7.":0%91%7."6."8/#:1%91%:1&91%7/$7/#6.":1&80%70$:2';3(80%5-":2'6/#6/#:2':2'80$7/#70$<3';2&;3';3'91%6.!90$;2':1&;2':1&6/#92&<5);4(:3';4(:2&91%;2&;2&91%91%=5);3'7.#7.#;3'=5)<3(90%80%8/$80%;3(:2'5-"1(2*:1&<3(7.#6-"8/$8/$4+ 5+!:0&>4*;1'6.#90%;3(:2'80%4-".&2+ 7/$8/$:2'4+ 5,!=3(<2'4+ 3*8/#5,!2*7.#90%6."4, 4+ 2*4+90$:1&3+6.";3'90%4+ 4, 80$5, 5, <3'@6+>4(8.#4*8/#<3':1%8/#:1%;2&80$4+4, 80$8/#:1%7."5, 7."5, 4+6-!6-!90$4+ 5,!6-"5, 7."5,!3*7.#3* 5,!7.#5,!4+ 7.#4+!3*90%8/$6-"5, 4+ 8/$;3'8/#90$6-!8/$<4)<5):2&81#;4'>6(>5(<4'=4(>6*<4(;2&5, 8/"90$7."3+6.#4,!4-!6/$:2':1&8/#90%:2';2'90%90%<3'<3'?5)?6*<3(=5*>6+?7,;3)90%8- 8- :0#   "G.F.D,@+B->)<'<'<'=)@+ B+ @*<'8%5"2!4#9%>*?+@, ?*8#1 8#?*@*?*>*:&8$2-,-/.)'%'0"- --*,./ -+'&!  - - ! "    -                 -         -  -  -  -      -   -   -           -  - - 3+!3* 0'.%.%0'.&-&0)/(1)2+ 2*5-"3+0(,$0(.'/'1* -&.',$,$/'2* 3,!4,!1)1)2)4+8/#7/#5- 6.!7."8.#6,!5,!91%:3'<4(;2'7/#6,!7-"6-!8/#7/"3,70#:3&71$2+ 6.#70&81'7/%70&80&6/$6/#;4(<4(<4(7/#6.":2&92&6/#81%;3';3'80$92&92&:2&:3'92&<4(=5)<4(;3'?7+@8,;3':1%;3'?6*=5)>5)>6*=5):1%;2'<4(<3(<3(<4(:2&80$:1&91%91%<4(>5*<3(:1&91%=4(@7+@8,>5*:1%7.#<3(=4(9/#6,!9/#:0$;1%=3'=3&:0$7.!8.":2&:1%90$:0%7-"4*6,"90%80%71&:4);2(;2':1';2':1%:0%=3'=4(8.":0$;2&7/";2&?6*>5)8/$:1&;2'80$91%:2&5-!5+ :0%7-!7-!9/$7."90$91%7/#:3&;4(;3'81%6/#:2';4)81&6/$81&;4)71&5/$5-"6.$5-#4,"6/$81'81&3,"2*!/'0)1* /(===666000***%%%%%%&&&%%%%%%'''###!!!!!!!!!!!!!!! """!!!('%&&&(((((((((---444888;;;>>>$$$#(")#+%-'-'/(3+!4-"6/$4."4."5."6/#6/#70$92%81%4-!6/#5."7/%7.%80&;4)=7,;5*92(:3'90%3*2)7."8/#80$80$91%4, 7/#7."2)3*7."6-!4+6- 90#7-!4*5, :0%7."3*2)7/#90$7/#2)5, 9/#:1$9/#7.!8."4)5)4*8-!7-!7-!:0$8/#8.#8/#8/#5+5+3)3)4*5, 6-!90%:1&6-"4, 5.!6."8/$8/$6."80$8/#5-!80$91%4, 5-!91%:1%4,!4-!6.#5-"3+ 5-":2'91&71$81$:3&92&5."1*6.#81%81%92'5.#2+ 5.#70%6.#3,!,$ """############""" !!!"""!!!!!!   !!!!!! !!!!!!     !!! !!!!!!"""""""""!!!!!!!!!!!! !!!###"""###"""%%%%%%&&&&&&&&&$$$,,,444999@@@*#+$.'0) 1*!.&/'0(.&+#.&2* 6.#4+!4,!2*3*6-!7/#4, 4+6-!5, 6-!3*4+ 90$<3'7."7.":1%:1%80$7."80$:2&90%:1%:2&6-!7.#7/#91%7/$6.#70$;3(91&5."91&80%70%:2':2'80%6/#70$;3':2&:2&<4';2&6.!80#:2&90%:1&91%7/#92&;4(;4':3'<4(:3&:2&<3'<3':2&:1&>6*:2&7/#8/#;2'<4(<3(90%80%80%91&;3(:2'7/$3*3*:1&<3(8/$7.#90%8/$5,!4+ :0%>4*:0&5,!7.$;3(:1&92&3,!-&1+3,!:2'80%5-"5,!90%:0%4+ 2)90$5,!4+7/#:1%6."3+3+2)3+8/$;2'4, 7/#<4(<3'7.#5, 91%4+1)91%?6*<3'7-!5+8.#<3';1%8/#:0%;2&90%6-!5, 90$7/"7."6-!5, 6-!5, 3+5-!7."8/$4+4+ 6-!4+ 8/$6-"1(6-"4+ 4+ 5-"4+ 4+ 7.$5-"3* 8/$7.#5,"4+3*90$:2&6-!91%80$90%;3(<4(:3'80#;4'<5'<5(:3&<4'<4(<4(;3'6.!7.!:1$6.!5- 81%6/#5.#81&<3(=4)8/#80$;2';2'8/$:0%=3(<3'=3(<3(;2'=4)=6*=6+92(80$7, 7,9/"   H.G.E-A+C+@+>)=(=) ;&=( @+"?*=)<':%7$6#5#8$<(>*A- ?+8$5!8%>)>)=(?+;&2/../!.-*'%%(*)-0"++*+%!      $!"   -    -             -     -  -  -     -  -         -   -        - -   -    -  -  3,"1* 1) 2)2(0&/%0'/'.'2+ 1*2+!2+ 3,!5."5."1),$1)/(0(2+!.'/(.',$/'1)3+!3+ 1)2)3*4+8/#80$6.!6.!7.!8."6,!6-":2&;3'<4(<3(90$7-"9/$7-!90$90#3,6/":3'81$4-"6/#80&6/%6/%80&81&5.#7/$:2&=4(<4(:2&81%:3'92%6/#70#:2&;3'90$=5);2&:2&91%81%=5)>6*=5);3'>6*@8,:1%7."<4(>5)=4(=4(=5);3'91%;2';3':2&<3'<4(:1&80$;2&:2&80$:2&<3(;3'91%80$>6*?7+?7+>5*;2'90$=3(=3(9/$7-"9/$;1%;1%=3&<3&;1%:1$8/"90$90$8/$:0%8.#5+ 8.#:1'80&71%:4);3);2(;2(;2(;2&;1&<2'>5(7.!;1%=3'80#;2&?6*>5):1%;3';2'80%92&81%4+ 4+8.#6,!7-!8.#7."91%81%70#:3'<4(;3'81%5."91&;3(91&5.#60$:4(60%3,"4,!5-#6/$5.$7/&80&70&5.#4-#0(0(2* 0(:::666///(((%%%&&&&&&%%%&&&(((""!""!###"""!!! !!!!!!!!! !!!""""""!!! !!!!!! !!!!!!""""""###$$$&&$%%%&&&((()))+++000888;;;>>>??? #)"*$,%-'-'.'3+ 6/$6/&4/%4.$3-#6/$5.#70$92&71$6/#6/#5."7/%7/%81';5*=7,:4)81';4(:1&5,!5, 7."7.#90%90%7.#6."7/#6-!2)3+7."7."6."7/"90#7-!5+6-!7."3+1(4+5, 91%6-!2)6-!9/#;1%8."8."8."5*4(9.";0$9.#9/#9/$8/$8/#6-"6-!7-"4*5+4*5+ 5, 6-":1%:2&7.#5-!5-!6."8/$8/$7/#80$7/#4, 7.#8/$4, 5-!80$:1&5-!2+70%5-"2*4,!70$91&81%70$92%70$4-!0)5.#81&70$70%4-"1*4-"6/$5-#4,"!!!"""!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! !!!"""!!! !!! !!!!!!       """###""""""!!!!!!!!! !!! """######$$$%%%&&&&&&'''&&&$$$$$$)))111777;;;*#+$.'1) 2+"/'/(/'.&+#-%2+ 7.$3+ 3+ 1)1(4+ 6.!4+3*4, 5,!5-!4+ 5,!8/#8/$6-!7.":1%;2&:1%7."8/#:1%91%;3';2&7."5-!6."7/$6."6-"6.#;3(80%1*7/$;3):2(:3(:2'80%5."7/#;3':2&;2&=5(;3&6.!80#;2':1&:2&91%7/#92&<5(;4(;4'=5);3';2&<3'<3';2':2&>6*:1&7/#7/#91%;2':2'80%8/$80%91&<4)<3(90%4+ 2*80%;2'8/$8/$90%7.$6-#5,!:0&@6+;1&5,!7.#<3(:3'92'4-!.'0)1*70%80%7.#6-"7.#90%5,!2(9/$7-"4*7.":3&6/"3, 5."0)2*:1%<3'4, 7.";2&;2&6-"7."<3'3*0'7/#=4(;2&7-!5+ 6-!;2&:1%8."90$;2&<3'7/#5-!90$7."5- 7."7."7/#7."5, 6-!7.#8/#4+ 4, 8/$4+8/$5,!2)5,!4+ 4+ 3*3*5,!90&6-"3* 6-"6-"6-#4, 3*:1%:1%7."90$8/$91&=5*>7+<5)70#:3%;4&;4&:3&=5(>6*<5)92'6/"8/";2%8/!6.!:3'6/$6/$92':2'8/#6+ 8/$7/$:1&8/%90%<2&;2&<3';2';2'>5*=6+>6,:3)80$7,6,7,    I/H.F-B,G/"B+=(<)<*?+!=)!<'!=)<)<(<'<&;&;'8%8%9&;'>*<)9&:'=)@,A-<(;&6"1-* /4#0",+*)(&(("'()*&$ -  "    -   -     -       - - -      -         -           -    -   - -   -    -  -  4+ 3+ 1)0(1)1(1'/%.$.%-%/(2+ /(3,!1*5-"6.#80%1*,$1)1)3+!4-"0)1) 2* -&0(2*4,!3+ 1(3*5,!3+6."90$6."7."8/#8."6, 6-!:1%;3'<4(>5*<3(:0%;1%7-":0$:0$5,6/":3&81%6/$70%92(70&6/%70&70%6/$91&;3'=5);3':2&81%:3';4':3&92&<3(:1%91%<3'=4(>5);3'92&<5(<6)<5(<4(=6)?7+;2&5, 6.":2&;3'<4(>5):2&80$:2&91%80$;2'=5):2&8/$;2';3'80$:1%<3(<4(:1&80$>6*>6*?6*>5*<3(:1%<3'<3(9/$8.":0$:0$:0$<2&<3&<3'<3&8/"7."90$90%:0%7-"4* 7-#:1'91'81&:2(:2);3)<4)<3(;2&:1&;2&?5)7-!:1$<3'90$<3'@7+>5*;2'=5)=4)92&:2'91%4+ 6,!9.#7-!6-!90$7/#80$70$5."92&<4(;3'81%4,!80%;3(92'70%:3(;5*71&4-#5-"5-#5-#5.$6/%81'92(70&4-"/'0)3,!0):::666---&&&%%%&&&&&&%%%&&&&&&#"!$$$$$$###"""######"""###%%%$$$###!!!$$$%%%%%%%%%$$$###"""""""""!!!""" !!!###!!!$$$$$$&&&''''''((((((''')))...555999;;;<<<'!*$+$*$,&-'-'.&1*5.#5/%5/%5/%5/%71&5.#6/#91%5/"70$70%5.#82&70%70$<5*?9.:4)81&:3(91&4,!4+ 4+ 4+ 90$8/$4, 6."80$3+2)4, 6-!7."7."5, 6, 7-!6, 5, 5-!3*1(3*3*4, 5, 3*7.!:1%;1%9/#8-!8-!3'5)7, 8-!8.#6, 6-!8/#6."4+ 8/#6,!4*4*4*4+5, 7.":2&;2'6."3+4-!6."8/$8/$80$:1&90%4+ 5-!6."4, 5-!91%:1&6.#4,!6/#7/$2+ 4,!70%91&70%6/$7/$5-"3,!0)3,!81&6/$5."4-"0)4-"6.$5-#/'"!!!!!!!!!!!!!!!!!!!!!!!!!!!"""!!!!!! !!!""""""######  !!!!!! !!!      !!!  """"""######!!! !!!"""!!! !!! !!!""""""!!!"""###"""%%%$$$&&&%%%%%%&&&'''(((...444:::BBB+$.'0(1*!.'0(0(.&+#-%1*5,"3* 4+ 2)2)4, 6."5, 4+4+ 5,!4+ 3*5,!8/#90$7."8/#:1%;2&:1%8/#80$:1%90$:1%<3'7."6-!5-!90%7/$7.#7/$91&80%6/$80&:2(:2(;3(;3(7/$5."6/#;3'<3':2&<4';3&6.!7/";2';3';2'91%70$92&<5);4(;4(=5)<4(;3'<3'<3';2&;3'?6+;3'80$91%;2':2'91&8/$7/$80%90%<4);3(8/$3+ 3+ :1&;2'8/%90%8/$7.#8/$6,":0&@6+;1'6-"7.$<4);3(:2'5.#0)/(1*6.#80%8/$8/$90%:1&5,!0'8.#8/#3)4, 91%5.!2+6/"0(2*:1%;1&4*7.">4(>5)5-!5-!91%4+0'5, <3'=3(8."5+ 5, 9/$8.#7-":1%<3'<4(8/#6-!91%7."4+8/#8/#80#91%6-!6."7."8/$5,!5, 90$3*6-!5,!6-"5,"2*4+ 1(2)5,!:1'6-"3* 4+!4+!7.$6-"3*91%:1%7/"7/#6."80$=6*?8,;3'70#:3&<6'<5';4&<4'?6+;4)81%7/"90"<3%90"7.!<5)70%81&81&91&90$8.#8/$6.#6.#7.#<2'<3':1%<3(;2':2&>6+<5*<6+:4)8/$6+7, 7-  -  -I/ I/G.C,@'A*@+<(:(:*<* >*#<( ;'<(=)=(>(@*>)=):'4"3!:'?,7$6";(=*@,:&7#., ./02 0 .,,+*(%$$$&%" !   - - "    - -       -  -     - - -  -    -           -              -          -   - -2(3*4,!3+ 1)0(2* 2) 0&-#-#,#,#0(4-"2+ 5-"1)3, 6.#7/#3+.&1*2*4-"5."1* 2+!3+!0(2)4,!4, 3+1)3+6."2*6-!:1%6."7/#:0$9."5+4+8/#:1%:2&>6*>5)<2&;1%7-!9/"9/"4+5.!92&92&70$91&:3):3)80&80&6/$70%92&<5)=4(;2&92&70$92&;4(<5(;4(<4(80#91%?6*?6*<3';3'<5)=6*=6*<5(;4(<5(=6);3'90$<4(<4(:1%:2&=4(:3'81$80$91%:1%90$:1%91%8/#91%;3'91%;3'<3'<4(:2&80$<4(=5)?7+>5*=4(:1&<3'<3':0%8.#:0$9/#:0$<2&=3'=3';3&8/#6."90$:1%:0%7,!3)6,!:1';2(92'92'91';3)=4*<3(:1&:2&<3'=4(7-!:0$<3&:1%;3&>5)=4(:1&=4)>5):2&:2&91&6-"6,!:/$8.#6-!;2&80$80$91%7/#:2&<5);3'80%4,!6/$;3(:2'81&92';4)71&4-"5,"6.%5-#5.$5-$70'92(6/&4-#1* 1*2+ >>>999444,,,&&&&&&%%%$$$%%%%%% %$#%$#$$$$$$"""###%%%&&&%%%%%%$$$###$$$%%%###'''%%%%%%############$$$###""""""""""""%%%###%%%&&&+)&%%%&&&%%%(((---222888888:::(!*$+%,%.&0).(.&0(3,!4-#4.%50&60'60%4-"6/#92&70#6/#70%81&:3'70$4-"<5*?8-93(5/$92'60$2+2*3+5-!90$90$5-!6-"7.#2*1)4,!6-"5,!5, 5, 7-!7.!7- 6-!5, 3+0'1)4, 6."4+3*8/#:1%:0$:0$8-!7+ 4(6*8-!;0$9/$8.#5, 8/#4, 5,!7.#5, 2(3)4*5,5, 7/#;3';2'5-!2*4, 6."8/$7.#8/#;2&;2'5-!5-!6-"3+4, 91%;2'7/$3+ 5."5.#1)2*7/$91&70%6/#70$7/$4-"0)2+6/$6/$4-"4-!0(2+ 4-"5-#/& !!! !!!############""""""!!! !!!!!!"""######"""  !!!  !!!    !!!   """"""!!!!!!"""######"""!!!!!!""""""###"""!!!###""""""##################( ''&&%%%%%%&&&%%%%%%,,,333999???+$.'/(1) /'0(0)-%)"-%0(4,!4,!4,!3*3*6-!6-!5, 5, 5,!7.#5, 3*5, 7/#90$8/#80$90$91%:1%8/#91%<2&9/#90%;2&8/#7.#90$;2&90%90%7/$:2':2'91&91';3):2(:2(;3(7/%6/$7/$;3';3'91%<3':1%5-80"<3':1%91%7/#6."92&;5(;4';4'=5)<4(<3'<4(<4(:1&;3'>6*=4):1&;2&<4(;3':1&7/$6.#8/$80%<3(;3(80$3*2*:1&<3(90%90%8/$7.#90%5,!9/%>4*;1'6-"7.#<3(:2':2'70$1*0(2+6.#91%90%8/$80%:1&6."0&5, :0%3*3*91%6/"2+70$1)3*90$:0%4*8."<3'<3'6-!6."90$4, 2)7-!>4(>5)9/#6,!4*7-!:0$8.#;1&<2&<3'90$6-!90$7."5+ 90$7."7."90$5, 6-!5,!90%5,!4+ 7.#4+5,!7.#8/$6-#2)4+!1(0'3*8/$4+!3*5,"3*7.#6-"4+:1%:1%7/"7/#7/#80%>6+?7+;4'70#:3%<5'<5'<5(;3'>6+:3)81&91$;2$<3%8. 6-!81%70%92(81'90&9/$9/$<3(91&:2':1&=3(=4(8/#<3(<3(91&=6+=6+=6,<6+90%8, 7- 7-  $J0 I/ H/D,@+=(='<(;):)9(:);) ;';'>*?*?)A+B, @+>*:&22!6%7$9&4!9&:'9':&6"/+ ) /7%1 1!.-+,)'%"#$"#!     -  $!!   -         -    - - - - -  -    -                       -    - - -      -   - -1+"0(2(2)3+ 2*1*0(3*!3) /%,",","-$1)3+ 2+ 7/$1)2*5-"5-"3+ 0(3+ 3+ 5-"7/%3,!1*4+ 2*5-"6-"5,!3+2*3+7/#3*8/#<3'7."7.":0$:/"6,4*8/#;2&:2&<4(=4(;1%:0$7-!8.!8.!4+5.":3&93&70$81&92(92(92(91'6/$5.#81%:3'=4(<4(;3'81%93&;4(;4(<5)<4(=5):1%?6*=5)<4(<4(=6*?8+>7+=5)<4(<5(=5)<3';3'<4(<3'91%91%<4(:3&80$80$:2&91%80$;2&;2&7/#:2&<4(91%;2&:2&<3'<3':2%?6*?7*?7+?8+=6);4';3'<3(:0$8.#9/#9/#9/#;1%=3'<3&:2%80#7/#80$90$9/$6+!3)6,!;2'<3):2(91'81';3)<3);2'90%91%<3'>4(90$:1$;2%:1%;2%<3'<3'90%:1&=4):2&92&:2&6-"5+ :0%9/$5, <2'90$90%:2&81%:2&;4(;4(91&3,!5.":2'92'81&92&;5)93'6.$4,"3+!3+!3,#4-#6/&81(60&3,"0)0)2+ <<<777111+++''''''%%%$$$%%%%%%&!%$#$$$###"""$$$%%%'''(((&&&%%%&&&&&&$$$$$$&&&''''''&&&######%%%&&&$$$######"""$$$%%%$$$$$$''')(&%%%&&&%%%(((+++000666666999)#+%,&/'.&.'.'0(1)3,!3,#3.$5/%61'71&5.#6."81%70$6/#70$82&:3'71%6/$;4):3(81&6/$81&60$2+ 2*3+5, :1%91%6-!4+ 5,!2*1)4,"8/%5,"4+ 6."90$8/"6- 6, 6-!4+/&1(5-!6-!4+3*90#90$:0#9.#:/#4)5)6+9-!9.#9.#8/#8/$80$6."5-!7."5+ 2)3)5+7.!6-!6.":2&;2&5-!1)3+ 6."8/$6-"6."90%:2&8/$7.#6."2*2*7/#:2&6/#2*5-"6.#2*4,!80%92'91&5."6/#70$4-!/(0)5."6/$3,!3+ /(1*3,!5-# !!!""""""######"""!!!!!! !!!""""""!!!   !!!!!!!!!!!!!!!!!!   !!! """!!!!!!!!!!!! """!!! """"""###"""###"""!!!#########$$$###$$$######& %' )&'&&&%%%&&&$$$###***111888;;;*#.'/(0( /(/(1* .&)!-%/'3* 4+!4,!3*4+ 7."6-!5, 5+ 5,!7."4+3*4+8/#8/#7."7."80#90$90$8/":1%:0$6-!9/#90%7/#7."90$;2'90%80$80%;3(:2'91&:2(<4*:2(:3(;3(80%7/$7/$:2&:2&80$;3'91$4+7/":1&8/$80$6."5.":3&:3':3&;4'=5)<4(<4(=5):2&:2&;3'?6*=4(91%:2&<4(;3(:1&7/#6-"7/$8/$;2':2'80%2)0'90%<3(90&90%7.#7.#8/$4* 8.#=3);1'5,!7.#;2':2':2'81&2+ /(2+ 7/$91&7/$6.#8/$;2&6."/%4*;1&4+3*92%70#2+70#2*4+9/$;1%4+8.":1%91%7."8/#:1%6-!3*7/#?5)?5)90$6, 3*7.";2&8/#90$:0%;1%8/#6,!90$8."6-!;2&5, 4+ 7."5,!6-!3*90%6-!4+6-!5, 5,!6-"6-"6-"2)4+ 2)0'1(4+!4+!4+!7.#2)4+ 5,!5, :1%90$7/"6."80$80%>6+>6*:2&6/"82$:4%;4';4'92%;4):4)81&91$=4&=3%3*3*70$70&60&81';2(:/$;0%;3';2'=4);2'=3(=4(6-":1&;2'91&<4*:3(:4);5+90$7-!7- 7- @6&   I0!J0 I/ E-C.@,;):(9& 9(9*8(8'8':'=)?,!=(=&?(A+@*=(7#13 :)3". 6#:(:(8&6$3 1,/01 /,+,)))&$##$$   - -   "#"   -      - -       -     -   -  - -    -                 -          -    - -4.$4.$2+"0(1&1'2)2*2* 1(3) 2).$+!,"-$.%2*3+!2+ 7/$2* 2*5-!3+ 1)0(2*2*4-!6.#4-"1*2*2*5,!7.#6."4, 3+4+ 90$3*7."<3'8/#7/#:0$8-!5+3*91$<4(;3'<3'<3':0$:0$7-!9."9/!5+5.!:3&92&81%92'92(70&80&6/%5.#4-"91%:2&<3';2'81%81%;4(<5);4(<5(<4(?6*;3'=4(>6*>6*<4(;4(=6)=6*<5(<4(=5)=5)<4(<3';3'=4(<3';2&=5);3'70#90$;2&:2&:1%=4(<4(7/#;3'=5):2&<3';2&=4(=4(;3&@7*@8+?8,>7+<5)=6)>5)<4(;1%:/$:0%:0$90$:1%<3';2&<3&90#8/#:1%90$9/$6,!3)6,!;1'<3(:2'81&92(;3(:2(:2'90%80$;2&=4(<2&;1%:1$:1%;2&=4(<3(90%8/$;3'92&92&:1&6-!5+ ;1&:/$5+ :1%91%91%:2&70$80$:2&:2&91&4,!5."91&92&81%:3'<6*;5)5-"5,"6.$7/%4-$5.$5.%4.%2,#1* 0)3,!5.#:::333///***'''&&&$$$$$$%%%&&&*#$"###"""###%%%&&&'''&&&$$$$$$%%%$$$$$$&&&''''''$$$$$$$$$%%%&&&&&&$$$$$$###$$$%%%%%%%%%$$$('&%%%%%%&&&'''(((///555444888+%+%+$-&/(1).&1)2+ 3,"3-#4.$5/%71'82'6/$6/#81%81$70$70$70$92&6/#5/$92';4)81&70%81&6/#2*3+4+ 6."90$91%5-!3+5-"4,!3+!6.$80%5,"2*7.":1%8/#4+4+7."5, 0&1(5, 5, 4+5,9/#;1%9/#8."7-!5*5)6*9."9."8.#7.#7/#8/#7.#6-"5,!6, 3)4)5,8/"6.!5, 91%91%4, 2)3, 6-"7/#6."6."8/$80$7/#7/#7/#3+2)6.":1&6.#2*5-"5-"4,!4,!70$:3':3'5.#6.#6/#3, /(1)6/#70$3,!3, /(1*5-"1)#!!! !!!!!!!!!!!!!!!"""!!! !!!"""!!!  !!!!!!!!! !!!""""""!!! !!!!!! !!!     !!! !!! !!!!!!"""!!!"""""""""###$$$%%%$$$################$$#$$+$'!$!$'&'''&%%%$$$###"""(((...666999@@@+$.&.'-&.&/(.&*".'0(3* 3* 4,!4+ 5,!7/#7."6."6-!8/$8/$4+ 2*4, :1%80#5-!6-!80#:1%90$6.!91$9/$6-!8/#:1%8/#7."8/#80$80$7/#:1&:3':3'92&:3(<4*:2(:2(:2'7/$6.#6.#91%:2&7/#<3':2%4+8/#:1%8/#7/#6."6.":3':3':3&;4(=5)<4(=4(>5);3':2&;3'?6+<4(80$91%<4(<4(:2'7.#5-"6.#7/$:2':1&90%1)/'80%<3(90%8/$7.#8/$6-"1(6,"<3(:1&5,!8/$;3(;3(;3(92&3+ /(2*6.#:2'8/$6-"6-";3'7."/&4+;1%3*3*81%6/"1*5.!2*3*9/#;2&4+7-":1%:1&8/$80$:2&7.#2*6-!?5)?5)9/#5+ 4*8.#<3'8/#7."9/#:0%90$5, 8/#7-!6, =4(6-!4+5,!5,!7."5, 90%7."3+4, 5, 4+3*5, 6-!3+4+ 6."3+ 1)3+!3+!3+!7/%0'2)5, 5, 80$90$90$7."91&91&>6*=5)81$6/":3%<6'<5';3':2&:3(:4)70$7/"<2$=2$3*3+82&71'5/%81'=4)7,!:/#:2'<4);3'91%<3(:1&6-"90%;2':2'<5*92'82':4)9/#7-!7- 7.!<3% G/!J0!J0 F.E-A,@,<+9)8'7'!9*!9)9'9'9'=) <(7!<&;%='<';%35!6#3!/005#6$7&8&3"/-/6$2!1 ,++,)('$#$## - - - !"!!!   -   - -   -    - -  -   -  -       -   - -        -                     - - 4-$4-$3-$0*!/'0%/&1(3+ 3+ 1)2)3*.$* ,".$.%2)4-"2* 5-#3+ 3, 5-!3*0(0(2*2*4,!6.#5.#2*4+ 3*3*7.#7/#5-!4+4+ 8/$3*7.";2&8/#7."9/#7, 5+4,91%;3'<5(<4(;2&8."8."8.!7- 8. 5+3,81%92&92&:3(:3)81'92(7/%4-"5.#91%<4(<3':2&6.#81%<5(<5);4(:3'<3(=4);2';3'>6*>5);4':3&;4(=6)<4(<4(=6)=5)<3'<3';3'<4(;2&91%<4(:3'6/#80$:2&;2&:2&=4(<3'80$>5)>6*:2&;3':2&=4(=4(;3&?6)@8,A9-@9->7*<5)<4(<3';2&;1&;1%;1%:0$9/#:2%;3&;3&8/#7.":1%:1%:1%7."3)5+ ;0%<2';1&:1%:2&<3(:2'91&:2'90%:2&<3';2&:1%:1%;2&;2&=5(;2':1%8/$:1&81%91%:1&6-!7,!<1&9/$6,!90$;2';3':3'70$81%;3'91&80%5."5-"70$91&81&:4(<6*94(6.#6."6/$6.$3,"5.%5/&5/%3-#/).'1*4-"777222...)))%%%######$$$&&&&&&-&(!' %!######$$$%%%%%%%%%&&&&&&$$$$$$''''''&&&%%%$$$$$$$$$%%%%%%%%%$$$$$$%%%&&&%%%######$$$%%%(((((((((///444444666:::+$+$+#-&.'-&0)2+ 2+!2,#3-$3.$82(71&6/$80$92&92&70%6/$70$71%5/#6/$93(<5*92'71&92'6/$1*2*4,!4+ 6-"5-!2)2)4,!1(/'6.#7.$5,!3+7/#:1%7-!2)4+9/$7."2)3+6."6-!5, 6- 8/":0$9/#9/"7- 4*5)6+8-!8-!7-!6-!8/$6."90$7.#6-!5, 2)2(2(7."5- 4+80$80$4+2*4,!5-!7.#8/#90%91%80$6."7/#7/#5-!4+ 8/$;3'7/$3, 5-"6.#5."5-"80%92&:2'6/$6/$6/#3, 0)2+6/$80%4-"4,!/(0)4-!1'!"""!!! !!! !!!"""!!!!!!!!!  !!!  !!! !!!!!!!!!"""!!!!!! !!!!!! """!!!!!!    !!!!!! !!!!!!"""###"""""""""""""""###%%%$$$######"""!!"!!!("+$)#*$' & "&&''%&%"""###"""&&&,,,444999>>>-&.'-&,%0(.&.&*",$1)3* 3+ 3+ 2*3+7."6."5-!5, 7."7.#5, 3+6-!:2&8/#5, 5-!80$;2&90$5- 8/#:0%7."9/#9/$8/#7.#90$6."80$7/#91%92&:2&80$:2(=5*:2(:2(91&7/$5."6."91%;2'90$>6*<4'5- 80$;2&90$8/$5."5.":3':3';4'<5(<4(;3'=5)>5);2&80$:2&>6*<4(80$90%<4(=5*:2'6.#5-"6-"7/$<3(:2'7/#3+ 0(90%;2'8/$8/$7.#7.#8/$2(3*;1':0&5,!7/$<3(=4)<4)91&2+.&0(5-";3(7/$5-"7.#;3(90%2)5+ 9/$3*2)80$5."1*4-!3+3*7.":0%5, 5, ;2&<3(90%8/$:1&7/#1)4+ =4(>4)9/$6-"5,!7."<2'90$7-"9/$:1%;1&6, 9/$7."4*=3'8/#6-"6-"6-"7."5,!90$90$4+5, 5, 4+3*5, 7."5, 6-!7."3*1(3+!1) 1)70&1)3+ 6."6-!91%:2%91$81$81$:3'>7+>7*80$6/"<5'=6(:2%:3&=5)<5*93)70%7/"9/!<2$5,3+60$5/%4.%91(=4)7+ :/#:3'<4(:3'7/#90$6-"5, ;2&;2':2'<5*;4);5*<6+<1%9/#8.!9/":1$     F/"H0!J0!G.F. A*=':&>+<*:(9( 8)!8(8&;(;(:'8"7"@*A,<&='8#6!6#;(7%/1!5%1 4"5#6%4#1 .0000.,,,)'''#""      !         -  -    -       -  -    -  -                             -    - - - 4,!3+!5-$3,#3,$0*"/&/$/%0&3+ 2*2)2)2)-#* ,".$.%2)4-"3+ 4-"3+ 3+ 5-"3+ 1(/'3+2*3+ 7/$6/#3+4+ 3*3+7/#7/#7.#4+ 4+8/#5, 7.":2&7."7."9/#9/"7- 7/"80$:2&;4(<4(;2&8."7-!7- 6,6,4*2+70#92&92&:2(:3)70&70&70&5.#70%;3'<5)<4(:2'6.#81%;4(;4':3'92&<3(=4)<3(<3'=4(=5):3&92&;4'=6*<5(<4(=5)<4(:2&;3';2&<3':2&80$<4(:3'6."80$:2&;3';2&<3';2&91%=4(=4(;2&;3':2&<4(=4(;2&>5(?7+@9,@9->7+=5)<3(;2';1&;1&;1&;1%9/#7.!;2%;3&:1%7."5- 90$:1%;2&8/#4*6, ;0%<2&:0%90$:1&:2&91%91&:2'80%:1&<3(91%90$:1%;2';2&=4(=4)91&80$91%80$91&91&5,!6,!;1&8."5+ 7.#;2':2':2&80$92&;4(:2'91&6.#5-"7/$91&81&93':4(82&5-"4+ 6.#6/%5.$70'4.%4.%3-#/)-&0(3+!666111,,,(((%%%$$$###$$$&&&+%.(+$*#' &$'&%%%%%######"""%%%&&&&&&%%%%%%$$$$$$$$$###"""!!!!%" -+(&&&(((((((((---222555555999,&*")",%-%0(1)3+!1* 2,"1+"1+!71'60%6/#80$81%6/#70%81&92'5/#3-!70%;4):3(81'70%92'4."1)2)2*3*4+5, 2*3+5-"2)1)7/%7/$6-"4, 6."7."4+3)7-!90$6-!3)4+6-!6-!4+5, 8/":0#8."6, 4*3)5*7, 8-!7-"6, 6-!8/#90%6."6-!7.#6-!2(2(3*5, 4, 3+80$8/$4, 4,!5-"5."4-!<4):2&:1&80%6."6.#6.#5-"4+ 80$<3(80%4,!5-"7/$5-"3,!80%70$70%5.#6/#5."3, 0)2+5."6/$4-"3,!/(0)4-!"""""" !!!!!!!!!""""""""""""""""""!!!!!!!!! !!!!!!!!!!!!"""""""""!!!  !!!!!!!!!!!!     !!!  !!!"""###$$$$$$######""""!""!"$$$$#$""#$)#("%' (!)#)#*#)#& "$(''&&&!!!$$$$$$%%%***111777;;;/(1* -&,%/'0(-%*",$1(2)2*1).&1)6."6."4+5, 6-"4+ 2)2)6-"90%6."5,!6-!80$<3'90$4+8/#90$8.#9/$8.#7-"6-"8/#91%91%7/#80$80$91%80$;3)=5+:3(:2'91&7/$6.#7/#:2&:2&80$=5);3'5-!8/$;2&91%80$4, 4-!92&:3':3';4(;3';3'=5)>5);2&7/#91%>5*<3(80$80$<4(>5*90%4+ 4+ 5-"7/#;3(;3(80%3+ 1)90%;1'8/$7.#6-"6-"6,"2(3);1&:0&5,!7.#=4)=4)=4)91%4,!/'/'2+ ;2':1&4,!5-":2':2&4+ 5+ 9/$4+1(80$5-!1*5.!3,3*5, 8/#6-!3*:1&<3(80$6."90$80$2*4+ ;2'=3(:0%8/$6-"5,!:1%:1%7.#90%:1&;2&7."90$8/#4+ ;1&7.#7."8/#7.#8/#6-"8/$90$4+ 5,!5,!5,!4+ 5,!8/$6-!6-!6."3+ 1)2* 0(/'7.%4,!5-"7.#8/#:1%91$80#91$91$;3'?8+@7+80$7/#?6*>6):1$<3%=4'>7+:4*6/$6.!9/!;1#5,4, 71%3-#2-#81'=3(8-!9/#92&:3':2&80$;2&8/#90$90%:1&;2'=6*>7+<6*<5*=3':0#8."90#;2%       - E/"G/"J0!G/ G.!F.!?(:$<&?*?*=(9&7'7&:(<* =) :$9$='B,B,@+<'<&9$:%:'=*7%00,/3#3"//..000-..,,&"##"      - -   - -  - - -     -    - - -   -   - -  -      -      -   -    !     -       - - 2* 5-"4+!3,"5.%4-$4-%2,$0'.#/%/%3+2*2* 2)1'-"+ -#.$/&3* 3,!3+ 5-"3+ 3+ 6-"4, 2)/'4, 1)1)70$70$4, 3*2*5,!7/#7.#:1%4, 4+ 80$7."80$:1%7."7.":0#;0$8."5-!4-!6/#:2':3'90%7-!6, 8-!7- 5+2(1*70$92&80%92';3):3)81'5.$4-"91&;4(=5)<4(91&6.#80%;3(;4(93&91%;3'=4(;2';2&=4(<4(92&;4(:3'=6)<4(;3'<4(;3':2&;3';2&=4(;3'80$=5)<4(80$:2&<3'<3';2&<3';3'<3'=5)=4(=4(=5);3'<4(<4(:1%=4'@8,@9-@9->7+=6*=5)=4(;1&:0%:0%:0$8."7.":2%:2%90$8/"6.!90$90$;1&9/#4*6, ;0%;1&9/$8/#90%91%90%:2'91&7/$91&;3(90%6-":1%<3'91%>5)>6*:2'8/$:1&90%:2':1&6-"6-";2'6-"4+ 7.#90&:1&:2&80$81%;3(:3':2'6.#5-"7/$91&70%82&94'82&6."3+ 7/$6/%4-#60&71'50&2-#/)-&0(;;;444000***&&&&&&&&&&&&&&&&&&-&-'+%*$*$)#(",%&$%%%#  ,&###!!!"""+% "$!$$%'!,*(&&&'''((('''+++222666555999.',%*#+$.&.'/'0)/(2,"0+!0* 4.$3,!4-"80$80%5.#6/$71&60%71&5/$70%93(92'6/%5/$60%4-!0(1)4,!1(3+5-!3+4, 6-"3+ 3+ 6.#7/$5,!4, 7."7."4+2)9/#:0$6- 4+5, 5, 5, 4+7."9/#8."6, 4*3)3(6+8-!9/#:0%6-!6-"8/$80$6-!6-!7."5+3)6, 4+ 1(4, 3+7/#7/#4, 3+5,!5-"6.#:2':2'80%6/#5-"5-"6.#4,!3+ 80%<4)80%3,!4,!6/$4,!4,!91&80%70%6/$7/$5.#4,!0)1*3,!6/#5.#4-!0)0)2*#"""""""""!!!!!!"""""""""""""""""""""######""""""!!!!!! """!!! !!!"""###"""!!!!!! !!!     !!!  !!! & '!!!""!""!"("& %& ' $' +$)"$$&'!(")"("'!%' (&''&'"""$$$%%%$$$(((///555:::@??1*!.'-&0(1) -%+#-%1)2)3*2*/'1)6-"6-"4+4+ 5,!6-"3*2)6-!8/$7."6-!7.#90$;2'7.#2)8/#90#80#:1%90$6-!6."6."90%80$80%:2&91%81%7/#;4)=5+;3(;3(92&70$5-"7.#;3';2&90%<3';2&7."8/#:1%90%7/#3, 3, 92%:3':3&;4(;3':2&<4(>6*<3'7/#90%=5);3'7/#7/#<3(<4)7.#2)3+ 6-"7/$:2&<3(:1&3+2*7.$<2(:1'7.#5,!7.#5,!2(3):0&;2'6-!6-!=4)=4)=4):1%5-!0(.&2*:1&:2&5,!5-":2':2'6-"6,!9/$4+ 4+ 81%5."2+5."3, 1)2)6-!6-!3*90%:2&8/$5-!90%90%2*4+:1%;2'90$8/#7."4+ 90$:1&8/#90%:1%;2'7."6-"7.#6-"90%7-"7-"9/$6-"8/$8/#90$8/#3)3*5,!6-"7."5, 90%7-!5, 7."5,!2)2)2) 0'5,"6-#7.$7.#8/$:1%90$8/#80#80#:2&>6*>5)8/#8/#=5(?6);2%<3%>5'>7,;5+5."7."9/!:1#3+4- 82'5/%3-#:2);1&9-!:/#:3':3'81%90$;2&5, 6-!9/$8/$8/$:3'=5*<5*=5*>3':0$8.!90#:2$ E/"J0!H/ F/#@)A*<&>'A*A+A+?)8'5'8(;)=+!=) <&;%?)?*='=(;%9#8":%8$;(:(4#*& -.0.-/,/.-,,,++)%""'              -  - -  -  -  - - - -    -   -       - -      -   -     !""  - - -     - - 3,!2+ 0)4,"3,!3,"4-$4.$5/%3-$1(/%.%/%2*1)3* 3* 1'-#+!.$.$/%2*3+ 1)4,!3+ 4+ 5-"3+ 1)0'5, 1)0(6/"70$4, 3*2*5-!6."6-!:1&5-!4+8/#8/#90$90$6-!8.":0$90#7.!4, 4-!7/$:3(91&7/$8.#7-"8."6, 4*1(3,92&:3'70%92(=6,;4*81'3,"5.#;3(;4(=5)<4(:2&7/$80%92'92'92&92&;3'<3(;2':1&=4)<4(:3&<5(;4(<5);4(;4(=5)<4(:2&:2&:2&<3';2&91%=4(;4(92%;3'=4(<3';2&<4(=4(>5)>5)=5)>6*>6*;2&=4(>6*<3'=4(@8,?8,?8+>7+>6*?6*>5);1%9/#9/#8/#8."8/":1%:2&:1%90$80#:2%91$;1%8/"4*5+9/#:0$9/#7."90%91%91%;2'90%8/$:2'<4(90%5,!:1&<3'8/#>5)>6*:2'7/$:2'91&;3(;2'7.#7.#;2'90%6-":1&:1&;2';2'80$70$;4':3':2&70$6.#80%;2'80%81%;5)93'60$3+ 6/$70%4-#4.$3-#3-#2,"0* .'0):::333---)))%%%'''''''''&&&'''-&-'+%*#*$)#+$,%' %' ("*$("'"& & &!#& %& '!'!& ("%("$#(")#*$*$)#*)'&&&&&&(((%%%***222555555888+%-&,$-&0)/(/'0)2+!3-$2,"2-#3-#3,!4,!6/#5.#4-"6/$6/$60%81&60%81&:3(81'5/$5.$70%2+ 0(4+ 5,!1(2*4, 3+6."6.#3+ 3+ 5-"7/$4+ 2*5-!7."5, 4*8.!9/"6, 5,6.!5- 4+3+8/#:0%7-!4*3)2(4)7+ 7,!:0%<2'7-"7."8/#7."4, 5, 8.#8."5+3)5, 3*6-"5,!7/#80$5-!4, 3+5.#7/$:2'7/$70$7/$5-"4-!6.#4,!2*5.#91&6/$2*2+ 5-"3+ 2*6.#70%6/$5.#70$80%5."1)2*5-"70$7/#6."1*/'1(!$$$###"""""""""!!!"""""""""###"""###$$$###"""""""""!!! !!! """"""!!!!!!  !!!""" !!!!!! #% & %& $$""%##%'!#%'!)#%& ("(!)#("*#*$(!)!*!(%&%%&%%%$$$$$$&&&---333:::@@@0) .'.'1) 0(,%+#/'1)4+!4+ 4, 2*3*6-!5-!4+3*4+7."4+2)7."90%8/#6-!7.#90$90%4+ 1(6-!8/#80#90$6."3*5-!2*5-!7/$7/$7/$80%81&4-"92'<4*<4*;3(91&6.#4-"5-!:1%:2&:1&;3':1&6-"7."90$80$7.#3+4, 81%;4(;4';4(;4':1%<3'>5);3'7/#80$<4(;2'7.#80$<4(<3(7/$2*3+ 5-"7.#91&;3(80%6-"2*6-":1':1'8/$6-"8/$7.#4*3):0&=3(6,!4+=4(=5)=4);2'7.#0(.&3+91&:2&5."6.":2';3(7.#6,!9/$4+ 3*7/#6/"4- 6."4- .'0'5, 4+ 5+ :1&<3(7/#3+91%90%2)3*:1%:1&8/$7."7."4+ 90$:1&8/#80$:1&;2'5,!5, 80$7."90$8.#7."8/#5+ 7."90$:0%8."2(2(5+ 7.":0%5+ :0%7-!6-!6-"5,!3*3* 4+!1(4,!6-"8/$7."90$;2&91$90$91$:1%<3'?7+>5)7/#7/#=4'?6)<3&<3&?6(=7,93)5.#7."9/!<2$5,4- 93(71'5/%91'<2&9.!8."70$:2&91%7."7."6- 5+6.!5, 7."<4(>6*=5)=5)>4':0#9/"90":1$  G/"I0!H/ E.$D0%?+ @*>(@)D-D-B+<(5%5(8*;*=* C-!A,='=':%9$;&;%7!5 9$8$6"5"4#-)-/!--.0 .,-,-**())%#! "           - -      - -    -  -   -  -    -  -    - -    - -            - - -  -   - 0)0)4-"1*0(4,"3+ 2+ 4-$4.$5/&4.%2)0&/%/&1)1)2* 3* 2(.#,"/%0&-$1)2, 0)2+ 3,!4,!5,"2*0(0'4, 1)/'4-!6."2*2*2)5-!8/$7."90$6-!4+7."7."8/#7.#4+7-!:0#8.!6- 3,5.#81&:3(91'90&:1%9.#9."5,3)1(4- 81%:3'92'92(>7-<5+80&3,"6/$;4(<4(<4(=5):2'70$80%81&81&92':2'<3(<3(;2&;2'>6*=5);4'<5(<6)<5)=5);3'>6*=5):1%7/#;2&=5):2&91%=5)<5(;3'<4'<4';3&:2%>6)<4(=5(>5)=5(?7*@8+=4(>6*?6*;2&<4'@8,?8,?8+=6*=5)=5)=4(;1&8.#9/#90$8/"8/";2&;3';2&:1%8/#91$:1$;1%8/"4*4*7-!:0#:0#90$;2&:1&:2&;3'90$7/#:2&;3':1&7.":2&:1%7.!;2&=5*91&80%:1&91&;2';2'8/$7.#:1&8/$6-"8/$:1&;2':1&70$80$;4(:3&92&70$6.#91%;3(80%70$;5*:4)60%3,!6/$6.$3,"4-#4-#3-#3-#0* -'/)777222,,,'''$$$&&&$$$%%%&&&''',&-'*$)"*$*$-'-'*#(!)#*$,&*%)$'!+&("*%+%*$*$("+%,&+%)#*$)#'!)#+%+%("+&((&'''&&&'''&&&)))000444555666)#-&*#.&1*0)1)2+!1* 50&3-$1,"4.$4.#5-#6/$6/#4-!5.#5/$70%70%5/$70%;4*70&5.$5.$60%3-!/'5-!5-"1)1)3+3+6."6."2*3, 6.#6.#5,!5-!6."7."6- 7- 6,8/"7.!7.":1$90#6- 1)7."90$6,!3)1'0&4)7,!6+ 9/$:0%7-"7."7.#6."5, 5, 8.#8.#6, 5+6-"6-"5, 4, 7."80$6."3+ 4+ 6.#5-"80%80%7/$6/#4,!3+ 5-"2*0(4,!7/$5-"1)0(4,!2+1)4,!6/$6/$4-"5-"6.#4,!0(2*5-"7/#7/#7/#3*/'###$$$$$$###"""!!! !!!""""""#########"""!!!!!!!!!!!! !!!!!!!!!  !!! !!!     !!!###"""!!!!!!!!! !  #% '!& $$$"& # !& '!#%'!("#"(")#*$)#)")#'!)!*!'$&'$&&&&'''%%%&&&+++222:::===1*!-&-%0(/',$,$0(0(5,"4+ 3+1)3*7."6-!3*3*4+ 5,!4+ 3*6-"90%8/#5, 6-"90$:1%6-!3*6-!90#:2%:2&91%7."7."4, 6."8/$80%7/$7/$81&6.#92'<5*;4):2'91&6/#5-"7/#:1%:2&:2&;2&80$4+5-!90$8/$7.#4, 5-!81%;4(:3':3';4(;3'=4(=5):2&6."7/#<3':2&7/#91%=5*=5*91&4,!4, 5-"6.#80%:2'80%5-"2)4+ :1&:1&90%6-"7.$8.$4* 2):0&?5*6,!4*=3(>5*=4)<3(7/#1).&3, ;3':3'6."6.#92&:2'6-"4+ 8.#4+ 3*6."5."3, 6/"5.".'0'4+ 4+2)91%;3'6."5-!:1&80$0(2);1&;2&90%7.#6-!2)7.#90%7."5,!90$90%5, 6-":1%7."7.#7-"6,!7."6,!7-":0%:0$7."1(0'3)8/#:0%5+ 9/#6-!6-!5, 3*2)3+ 4+ 2)5,"6-"8.#8/#;1%;1&8/"8/#90$:2%<4(@8,?6*7/#7."=4(>5(<2%;1$<3%<5+82(80%5, 7. ;2$6- 5.":4)71'60&:1'<2&:."5, 4.!70$81%4, 5-!7."7/"80$6-!7/#=4(?7+?6+>5(>4';1#9/"9/"90#      H0"J0"I0!D/$?+#=+";(?+ A+A*C,F.A+=(7%6'7*7(<(>*@+=(:%7"7":%8"56!8#>*9%7$5#0/-*(+,-/-.,*++*)%%!!  !    -    -     - - - - -    - - - -  -  - - -   -  - - - -  - - -      -         -   - 1+!1*!2+!1*4-"1)1)4-"2* 2* 4-#3-$5/&3-$2)0&.%/'1)2*2* 3* 2).$,"/%/&-$1)3,!1*2+ 2+ 3+ 6-#3* 1(/&6-"0(/&6-"7/#3+3,3*6-":1%90$8/#6-!5- 7/"7/#90$8."4*6-!90$8."6- 2*4-!6/%70%:3(;3):1&9/#;1%9/"4*1(3,70$92&92':3)=6,;4*80&4,"5.#:3(=5)<4(=5):2&7/$81%92&91&92':3'<4(<3(:1%<3(@7+<3(92&<5)<5)<5(=5):2&>6*>5):2&90$;2&>5);2&:2&=5)<5(;4'<4'<4'<4'<4'?6*=5(=5(=5(=5(>6)@8+@7+@8+>6)90$=4(?8,?8,@9,<6):3'<3(<3';1&9/$:0$;1%8/#8/";2&;2&:2&90$8/#8/"90$;1%:0$5,4+7- 90#:0$;3'=5);3'<3(<3(91%8/$80$80$91%8/#:2%91$8/";2&=4):2':1&:1&91%91&;2'8/$6-#90%7.#4+ 6-#90&;1&:1%80$91%<5):3'92&80$6.#90%;3'80%5/#94(93(5/$3+!4-"5-#4-#5.$2+"3-#2,"0+!-'1* 555111,,,%%%$$$$$$$$$$$$&&&'''-&-&*#*#+$+$.(,%("' (")#+%*%*$)$+&+%+&+%*%*%*%+&.)!+&*$*$(#("("+%,&*$.(*$'''&&&''''''(((...222444555777,&*#,$0)1)0(2* 2+"4.$3.$3-$3-#4-#5-"6.#70%4-!4-"6/$70%70%4-"70%;4*70&5.$4-#6/%2+ /'4,!6."3+4+ 4, 3+6."7."3+ 4,!7/$8/#4+ 3+5-!3*5, 5, 3)9/"9/"8/":1%80#4,2*6-!6-!6+ 4*1'0&4)7,!5+ 7-"6-!7-"7."7.#7."3*3+8/#8/#6-!7-"6-"6-!3+5, 80$91%7.#5,!4,!4,!5-"6.#80%4-"5-"3+ 3,!6.#3+ 1)5-"80%7/$3+ 2*6/#6.#3+ 5-"70%70%6.#5.#6.#5-"1)0(4,!6.#6.#6."3*2*#"""$$$%%%$$$###  !!!###"""""""""!!! !!!"""!!!   !!! !!!!!!  !!!!!!!!!""""""!!!!!!!""%& '!'!!%%$& & "$("("%$& ("$$& +$+%+$*#*#)",$+"$%%%$%%%%'''&&&&&&***111888:::@@?.'-%0(/',%+#/'0'4,!3+ 3+1(2*6-"5-!3*4+5, 4+ 4+ 3*5,!6-"7."5,!6-"90%:1&7.#5,!7."8/#:1%;2&80$7/#6."4+ 91%7/$7/$5-"7/$92'81&;3)<5*;4);3(:2'70$6.#80$:1&;2':2&;2&90$6.!7/#:1%90$8/#5-"6.#91&:3(81&:2'<4)91%;3'<4(:1&8/#80$;3'91%7/#91%=5)=5)90%4+ 4,!7.#7/$80%:1&7/$5,!0(2)<3(90%:1&6-"7.#9/%5+ 1'9/%A7+8/#4+<2'>4)=4)=3(80$3*/&3+:3'92&5-!6/#91&92&5,!3*6-"4+ 3+6/#6/"1+6/"70$/(/'3*3*0'90%<4(7/#3+81%7/#/'1):1&<3(:1%8/#5,!3*6-!8/$6-!5,!8/#8/#5,!7."90%6-"6-!5, 1(8/#6-!5+ 7-"6-"7."2)1(2)8.#8."5+8.#6-!6,!6,!3*1(3+4, 2*5-!8/$8/$9/$:0$:0$7."8/#90$:1%;3'?6*>5)8/#6.!=4'=4'<2%90":1#:4*71'80$5, 6-90#4,6/#81&5/$6/%;2';1%9-!3+3, 7/$91&3, 5-!7/#80$90$6."70$;4(=6*>7*=5)>5(;2$8/"7.!8/"      -   J0"K1"J0!E0$?-";*!9(:(B.#C-!B*C+C,?)=( 9& 6%3%5"8%9%;':%6"5 8#:%9$09$<'9%9%6"4"3"/.)&&(**,*+*+*)'          - - -   - -    - - -   -  -    - - -  - -         -  -       -             - 0'1) 0* 4-#4-#1)3,!1*2*4,"2* 2+!3-#3-$4.%3.$3)0'.&/'1)2+ 2* 3* 2)/$+!/%/%-$1)3-"0)2+ 2*3+!7.#3*2)/&3* 2)0'6-"7/$4, 4- 3+5-!8/#90$8/#6-!5,8/"8/#90#7."4+6- ;1$:0#7."3+4-"70%81':3)<4*;2'9/$<2&:0#4+1(4- 81%92&92&<5+;4*92(6.$3+!5.#:3'=5)=5)<3'80%6/#91&:3'92&92&92'<3(<3'90%<2'>6*91%70$;4(=6)=6)>7*<4(>6*=5)91%6."8/#>6*=5)<3'=5)<5(;3'<4'=5(=5(<4'?7*>6)<4'<4'=5(<4'@8+>6)>6)?7*:1$=5(@9,@9,@9,=6*<4(<3(<2';1&9/$90$:1%:0$90$91%80$90$90$90$90$:1$;1%:1$7-!6, 8.!:0#:0#;2&>6*>5*=5);3':1&91%:2&:1%:2&7.":1%80#8/";2&=5*<3(:1&91%80%80%:2'6-"5,!90%6-"3*6-":1&;2'<3':2&92&<5):3'80$7/$6-"8/$;2'91&60$93'93'6/$3,!5.#6.$4,#4-#3,"3-#3-#0* .(:::433///+++%%%###%%%$$$$$$%%%*#,%-&*"+#,%,$/(/&*")!)")".',%+%*$*$+%,&,%*#*%)$)$,'+&(#(#)#'")$+&*%)$,'.)-*(&&&''''''(((,,,111222333777,%,&-&0)/(0(1* 2+!4.%4.%4.%4.$5.$5-#7/$81&5."5.#70%93(:3(5/$70&92(6/%4-#5.$5/$2+ 0(3+ 5-!2*4, 4, 3+6."7/#5-!5-!80$80$5-!6-!7/#4, 6,!5+5,7.!8."8/":1$8/"5,3*7.":0%9/#6+ 3)3)6,!6,!4*5+ 5, 7."7.#7."7.#4+3*7."7."5, 7-"6-"5,!4, 5-!7/#80$5-!4, 5,!5-"5-"7/$80%5-"7/$5.#6.#7/$5-"3+ 5-"80%70%3, 2*6.#5-"2+ 4-"70%70%6/$6/$7/$6/#2*/'3,!7/$5-"4,!2*1%""""""$$$$$$"""  !!!!!!  !!!!!!    !!!!!!"""""""""""" "# "#$& ("'!("#%& $'!)#%'!)#)#& %& ("& & )#,%+$+$+$+$+$,$+#)!$$%%%%&&&'''((()))...555888???0)/(2*!1)-%*"/'2) 4,!3+ 2).%0'4+ 4+2)3*3*5, 4+ 3*5, 5,!6-!6-!6."90$90$6-"5, 6."6-!90$:2&:1&90$7/#5,!5-!7/#91&6.#80%91&80%;4)<5*;4);4);3(80%7/$6."91%;3';3';2&8/#4, 91%<3';2&90%6.#7/$:2':3'80%:2';3(91%;3'<4(;2&90$91%;3'81$7/#:2&=5)=3(8/#5, 4, 5."6/#91%:1&80$5,!0'2);2'8/$:1'6-"7.#;1&6,!/%7-#A8,;2&5, :0%=3(=4)<3':1%5, 0'2*91%80%5-!5."70$91&6-"3)5+!3* 3+70$81$2+6/#70$0(.%2)1(.&80%;3'6.#4-!70$7/#0(2):1%=4);2'7."5, 3*5,!7.#5,!6-!7.#6-"5,!5-!8/#5,!6-!6-"1(6-"6-"5, 7."6-"90$4+ 3*4+7."5,!5,!5,!3*5, 6-"3*2)4,!4, 2)5,!90%:0%8/#8/#90$8.":0$:1%:2&:2&>6*>6*7/#5- ;2&=4';2%:0#<3%;5+81'7/$5,5,8/"4,5.!5.#3,"6/$91&8."7,!3+ 5.#;4);3)3+ 4-!5."7/#7/#5.!91%<4(<5)=6)=5)>6(<3&90#7.!8/#      - -    - -K1!L2"K1!F0#A.#<*!8( 7( ;( B.#A+@(A*B,@*>(:& 6#4#4#9'7$9%7#36"6 6!19%=(<(9%9%7#3 2!2!0 +'&'& )')*++''#  - !##!          -  - -          -     -  -      -   - -        -  -        - -        - - - 5.$1) /'1* 0* 3,"5.$3+!3,!1)1*2+ 1)1* 3,"3-$2-#4.$4*1(/'0(1)2+ 2* 2*2(/%+!/%.$-$0(1*/(3,!2+ 5-"8/$1)1(/&2)4+ 1(5-"7/$6/#6."4+7."80$8/#7."6- 4+7.!6.!8/"7.!4+6- <1$;0#8."4, 5-":2(81&92(:3);3(:1&<3'9/"5+2)5- 81%:2'<4)<4*81'92(3,"2+ 70%:3(=5)>6*;3'7/$6.#92';4(:2'81&91&;2'<3(90%:1&=5);2'81%:3'<5(<5)>7+>6*>6*>6)90$8/#91%=4(=5)=4(<4(81%91$;3&>6)=4(;2&>6)?7*<4'=5(>6);3&@8+<4'=5(?7*91$=5(@9-@9-?8,=6*>6*=5)<2'9/$8.#8.#90$8/"6-!6."6."8/#80$7."90#:1$:0$:0$8."7- 7- :0#;1$:2&>5)?6*=5)<3':1%:1%;2&;3';2&6.!;2&90$90$=4(>6+<3(91&80$8/$90%:2'7.$7.#90%7.#3*6-":1&<3(<3(:2&92&;4(:3'7/$6.#4,!6.#91%80%6/#83'93'6/$3,!5-#5-#3+!3,#5.%4.$4.$0* .(999434000+++%%%%%%&&&&&&%%%&&&*#+%,%*"+$+$+#-&.&*")!(!(!,&-'-'.(,&,&.'.'-&-'.'-'.'.')#*$+%)#)#+%+&+%+&+&+*(''''''''''''***000222222777*$+%-&-&/'.'1* 1*!1,#3.$4/%60&70&5.#80%80%5."5.#81&;4):3(5.$81&93(70&60%70&5.$2+ 0(2)2*1)4,!3+ 3*5-!6."5-!5-!80%8/$5-!80$90$5, 4+4*5,:0$8/"6-!:1%90$5, 4+8/#9/$5+ 3)3)4*6+!6,!4* 4*5, 6-!6-"6-"6."2*2)5, 7."4+5, 4+ 4+ 4+ 4, 6.":1%8/$2*3+ 4-"6.#7/$80%5.#80%7/$6.#6.#4,!3+ 4,!6.#5-"2*1)4,!5-"4,!5.#70%6/$5.#6.#6/$7/$3, /(4,!80%6.#4,!2*#"""######$$$###!!!  !!!!!!   !!!  !!!""""""###$$$### ""#!##& )"*#)#)#&&'!%'!("$'!*$(!& '!)#)#)#& *#,%,%-&-%-&,%+#-$+##&&$"$&&&'''(((''')))111777<<4);2':1&5, 1(3+81%92&7/#5."6/$91&7.#2)4+ 3*2*70$81%3, 5/"6/"0(,#2)3+ /&7/$;3(7/$5-"7/$6."2)2*90%<3(:1&6-"5,!4+ 7.#80$6-"6."7.#7.#5,!3*6-!4+ 8/#90$2)5, 5, 3+6-"7.":1%5,!5, 5,!7.#6-!5, 4+ 2)6-!8/#5,!2*5-!4+ 0'4+ 8/#8/#8/#9/$8/#6, 8/#;2&:1%90$?6*>6*6."4, :2%=4'90#:1#=4';4*91'91&5, 4+5,4+4, 5-#4-#6.$8/$7-!6+ 3+!4-":2'92'6.#81%70$80$6/"4, 81%<5);5(<5)>7*@8+=5(:2%7/"80#       - -    -K0!M3"M3"G/"D/$>+!8'6' 9*"<*"<'<&='>)@+A+?) 9$5#5#9(7%5#5"6"6"7"8$34;'>)<(8%6#5"7$4"1 4$0!*()' ' % ! (**&!   !!#"           -        - - - - -  -       - - -  -    -             -  - - -           - - - - 1+!5.%2) /&1* 0* 3+!3-"3+!3,!0(0)2*0)0)3,"3-#2,#2,#4+1(0(1)1)2+ 3+ 2)2(/%+!/$.$,#0(0*/(4,"2+ 4-"80%2)2)1(3* 4,!1)5,!7/#70#7/#5-!7/#90$8/#7."6-!5+7.!6- 7.!7/"5- 7.!<1$;1$9/#5, 5."91'6/%:3);4*;3):1&<2&9/!6+2)5, 7/#:3'=6+:3(:3(92'5-#4,"80%:3'=5)>7*;4'80$7/#:3(<5):3'81%81%<3(;2'7.#90$=4(:2&81%:3'<5(<5(>6*=5)<5)>6*:1%8/#<3'>5)<3':2&<4(92&91$91$=5(<4'91$=5(?7*=5(>5)>6):2%>5(<4'?7*>6)91$=4(@9,@9-?8+=6*>6*=4)<2'9/#8."8."90$8."5, 8/#80$:2&:1%5, 7/"90$:1%:0%9/#6, 6,8.":1$<3'=5)=5)=4)<3(91%91%:2&<4(<3'90$:1%90$90#;2&=4);2'90%8/$80%91&;2'8/$7.#8/$6-"2)6-":1&<3(;3'91%92&;4(:3'80%80$5-"6.#90%91&60$83':4(81&5.#5-#5.$4,"4-#5/%5/%4.%0* .(777444...***%%%&&&%%%(((%%%&&&*$,%-&*"+$+#+#.&/'+#)!(!*$-'-'0)!.(-'.'/( 0( /( /(0*!/) 2+#/) .',&-&)#)",&-&+$,%-&*)'((('''&&&&&&***000222222666-&,&,%-',$-%/(/)/) 1+"3.$4.$6/%6.#80%70$3,!4-"70%;5*92'4-#:3)92(;4*70&6/%5.$2+ 1)2)2)1)4+ 4+ 2*4, 4, 4, 6."80$80$6-"91%91%7."4+4*6, :0$8/"7.!:1$90$6-!5-!90$:0%6,!2(2(4*3)4* 5+!6,"6,!5,!6-"6-"5-!2)2*5, 5-!3*5, 4+ 3+2*3+4, 8/#4, 2*2*5-"6.#6.#6.#6.#6.#5-"5-"5-"4,!2+ 2*4-"3,!0)/(1)3+ 3+ 5.#70%6/$4-"4-"4-!6.#3+ /'4,!80%7/$5-"2*####$$$$$$$$$###!!!  !!!!!! !!!    !!!!!!"""""""""#############$$#$#("+$'!'!& & ("("(!)#*#%%*#*$$%)",%,%' )"-%-&,$,$.'-%,".%.%%&&$$%&&&'''(((&&&(((000777888>>>-%0(0(-%+#1)4,"3+ 2*1(0'1(4, 4+3+0'1(6-"6-!3*7."7."5, 5, 5, 8/$90%6-"4+7.";2&90$:1%6-!6."80$7/#7/#7/$91&91&:2'81&80%;3(<5):3(:3(:2'80%5-"5,!7/#91%;2&=4(91%4+7.#;2&:1&7/#5-"6/#91&92'81%:2':2&81%:2&;2&:0$8/#:2&;3'70#6/"92&<4(:1%6-"4+3, 5."5."80$;2&90%7.".%/&7.#:0&:1&8.#7.":1%7-"-$5+?5)<2'6,!8/$<3(<3(=4);3'6."2)2*70$;3(81%5.#6/#:2'7.#2(4+ 4+ 1)6/#70$3, 6/"6/#1),#/&2)0'6-"90%5-"4,!5.#4,!1)2)80$;2'8/%5-"4, 4+ 7/$91&6.#5-"5-"6.#5-"0(4,!5,!:1&91%3*5-!4, 3+6."7.#80$5, 5,!6-!7."6-!5, 3+0'4+ 6-#5,!1)4,!4,!/&2*90%5,!8/#:1%8.#6, 8/#<3'90%8/$=5)<4(5-!6-!;3';2&90#7.!;2%;4*:3(91%3+3+7."4, 5-!80%70%70%91&7-"4*5.#6.#91&7/$8/$90$6.";2&:2&6.":2&=6*<5)<5)>6)?7*=5(;3&80#91$   - - - -  - -J0!M2"N4"K3$G1$A.#9'6&7( 9*#8)!8%:&<(=)A,B-!<'7#4!6$9':(6%219&<(4 238$;':'9&6#5"4!4"00..,*'$ " " (. (%  - - -!#!              -     -        -       -          -        - -             - - - 1+!.(1*!5-$2) /&1+ /)4-#4-"1*2+ 0(0(2* 0(0)3-#3-#3.$2,"5, 1(1)2*2*3+ 3+ 2*3)/$+!-#-#,#2*3,!/(3+ 1*4,!7.#2)2)1(3* 4+ 0(4, 7/#6."7/#6."6-!8/#8/#7/#7.!5,8/"6-!6.!90#7."7.!;0#:0#90#5-!7/$92'81&:3):4):2'91%;2%9/!5+3)5-!91%;3(;5)<5*;4):3(6.#7.$;2';4(<5)=6)<5(;2&91%;4';4(;4(92&81%:3';3'5-!7/#;3':1&70$92%;4'<5)>6*=6)>6*?7+<3';2&>5)>5)<4(;3'<4(92%91%91$;3&<4':2%<4'>5)<3&<4'>6):2%:2%:2%@8+>6):1%<4(?7+?7+>7*=6*>5*=5)<2':0%8."8.#9/#8/"6-!8/#90%:1%:2&5, 7/#:1%:0%9/$9/#4*4*7-!;1%:2&;2&<4(=5)<4(:2&91%91%<3';2&80#90$90#:1$;2&<3(:2'7.#8/$90%91&:2'8/$7.#:1&8/$2)5,"8/$<3(;3(81%92&;4(:2'80%80%5,!5-"90%:2'71&83'93(81&5-#4,"4-#2+!2+"4.$5/&4.$/* .(555322...)))&&&&&&'''&&&%%%&&&+%-&/(,$,%+$+$.&.&*"(!*#,%-'0) /) -'.(/( 1*!3+#0(0) -'.'1+"/)-&.'0) +%*$.',%+$,%,%+%((('''&&&''')))///111222555888-&-&0),%.&/(0)/) 0*!2,"4.$5.$5.#80%80%3,!4-"5/#93'70&5.$;4*92(92(5.$4-#6/%4,"3+!4,!2*1)4,!5,!2*5,!4, 5-!81%:2&8/$5-!90%90$8/#4+2)5, :0$6, 5-!7/#6-!5, 5- 90$8/#3).$/%3)2)4* 6,"7-"6-!4+ 3*4+5-!3+2*5, 4+1(3*3*2)1)1)4+ 8/$5-!4+ 3+ 6.#5-"5-"6.#6.#7/$6.#5."6.#5-"3+ 4,!7/$80%3+ 1)3+ 3, 3+ 4-"6.$5.#4-"3,!2+4-"2*.&3+ 7/$6.#4-""""############"""""""""!!!   !!!!!!!!!""""""!!!!!! &&&$$$###$%& $& & )",%("+$)"%'!(!("*#,&& %)")#%)#,%/(+$'(!-&/'.&/'0(+#-#.$/&.%&%&&&&'''((())))))000666:::>>>,$0(1),$+#0(2)4+!2*/'/&2*6."5-!4+1(2)7."4+ 1(7.#6-!7.#4+ 4+ 8/$90%6-"5, 6-!90$8/$7."2)6-"80$8/#7.#80$91&91&6/#92&81&<4)=5*:3':2':2'80%7/#7.#:1&;2';2&>5*:1%4+7.":2&:2&7/#5."7/$91&:2'91&;3':3'92&:2&;2&:1%90$;2&;3'6/#6/"92&=4(:1&7.#4+ 4, 5."5."70$;2'91%80$-%.%4+!90%;2'8/$7.":1&7.".%4+>4);2&6,!8/#;2'<3'<3(<4(6."1(1)7/$<4)91&5-"4-!:2'6/#0(3+ 4,!/'5.#70%5-"6.#81%3+ -%2)5-"0'4,!90%5-"3, 5-"5-"1)0(7/#<3(:1&7/$5-"4+ 7/$:2'7/#6."5,!6.#7.#1(4,!4, 7/$6.#2*6-"5,!3*6-"6.#7.#3+ 3+ 4,!5,!4+ 4+ 5,"3+ 3* 5,!3+ 1)4-"5-"0(0(7.#3*5-"8/$8.#6,!7."90%91&80%=5*:2'5-"5-!:1%;3&7/"8/!8/#:3(80&70$2*4+80$4, 5-"80%7/%91'91&8/$5,!7.#8/$91%6."8/$80$6.!91%<4(80$:2&<5);4(<5)<4(>5)=4(;3&7/"90#     - - - -  -  - J0!M2"N4"N5%H1$B-!;(5$:*!<,$8) 6'7&:';(=*@-!>*;'6!33 7$8&7%3!26#9'5"15"323 6#7$6$5"3!1/0 +)(&'&%'**$   !          - -    -           - -     - -     -    -         - -  -        -          - - - .'0*0*!/(1*!3,"0(0'/)2,!4."3,!1*1*0(/(0)/'.'2,"3-#2-#4-#5-!3+1)1*1*3+ 3* 3* 4* .$+!,",#,#2+ 2,!.'2+ 1*3+ 4,!1(0'0'2)3*0(4, 7/#4-!6."7."5, 7."8/#8/#7."4+8/"6- 6.!:1$8/#8/":0":0#8/#5-!70$91'81&91':3(:2';2&<3&:0#6,3*6-":2&<4):3(=7,=6+;4)6.#80%=5*>6*>6*>7*>6);2&;2&;4(;4(92&92&:3&:3&;3'8/$6.":1&;3(91&92&;4(<5);4'=5)>6*>6*;3';3'=5)>6)=5(;3'=5)<5(;4'<4';3&<4';3&=5(<4':1%;3&=5(;3&;3&;3&@8+?6);2%=5(>6*=6)<5)<5)=5)>5*<3':0%8.#9/#90#8."6-!7.":1%90$;3'7."8/#;2&:0%9/#9/$4*4)7-!;1%;2&:2&<3(=5)=4);2&80$80$;2';2&80#8/#8/#:1$<3(<3(;3(5-!80%80%91%:1&8/$6-"8/%7.#2)7.#:1&<3(;2(70$80%:3';3(91&8/$4,!5-"6.#70%60%71&83'70%3,"4-#5-$1* 1+!5.%3,#1+!.(-'333211...((('''%%%%%%%%%%%%&&&-&.'0) -&.',%,%.'/(,$)!*#-&-'/(/) 0) 0*!2,"3,#3,"1*!-'.(.(1+!.(-'-'0* .(-'0* .(/)/(-',%.,)''''''&&&(((---///222444777.'-&/(/(.'0) 1*!0* 0* 2,"5/%3,#3+"7/&6/$4-"3,!4.":3(71&5/$;4*;4*92(5.$5.$70&4,"3*!5-"2*1)6-"6-"2*5-!4, 5."81$<4(7/#4, :2&;2'7.#5+2)3)9/#4*4, 7/#4, 2*5,9/#8."2(-#/%1(2) 5,"7.#6-"5,!5, 3*3*4+3*1(3+3+1(2*2)2*3*1(3+8/#6-"4+ 3+ 5-"4,!5-"7/$70%91&7/$5.#6.#5-"2+ 4,!91&:2'5-"3+ 5-"4,!3+ 4-"6.$5.#7/%1*2+ 4-"1*-%2+ 7/$5.#3+$######""""""""""""!!!!!!!!! !!!  !!!"""###""""""""""""%%%&&&'''%%%###(!)"*#%'!)")#,%("*#*#' )")")")",&' )"+%("' )"+$.'-%)"+#/'/'/'/'/&(-$-$/%/&&%&%%%&&&'''((('''---444777<<<.&.%1).'.&2) 3+!4,!4+ 2*0(3*5-!6-!4+1(3*7.#7."4+7.":1%7."5,!6-!6-"7.#6-"4+ 7.":1%8/#6-"5, 8/$8/#80$90%70#:2&92&92&92'92&<5):3'92'92':3'80%6."7.":1%:1%90$>5*:2&5, 7.":2&;2&80$80%;3(<4):2'91&:3'<4(;3'<3'<3':2&90$;2&:2&6/"6/":2&;2':1%6-"3*4, 5."5."80%91&80%7.#.&.%5,"90%;2'8/$7.#:1&6-".&4+ =3(;1&5, 6-!90$:1&:1&;3'7.#1(.&6.#<5*81&5."6.#:2'6.#0)3+ 5-"1)5-#6.$4-"5-"80&4,".&2* 5-#1)4,!80%4,"3+ 4,!5-"2*/'5-"<3);3(90%7.#2)6.#91&7.#7/$4,!4,!7/$2)5-!4+ 4,!4,!1)5-"4,"2*5-"5-"6.#3+ 1)3*3+ 2*2)6-#5-"2)3+ 2*0(3+ 5-"0(/'5,"2)4,!8/$8.#6,!8/#8/$:2'80%;4)91&6.#5-":2&:1&6."5-!7/$<5+6/%5-#1)1)5-"4,!5-"80%6.$:2(7/%7/$4,!91%91%91%7."91%91%5-!90$7/#5."81$:3'92&:3'<3'=4)=5)<4'80#90#     -  -     - I0!L2"N4#J1"I1#F."?*8$;) ?.%=-#9)7'9';(:(<) ;):&5#5"8#4 3 6#5#3!6#7$3 26#9&3 004!4!3!6$6$2 -.-)&('&%')("!   !!!                -   -          - -   -  - -    -   -      - - - - -    -  -         - - - - 2+-&-&/)0* 0) 2+!2+"/'/'1* 1+ 2, 2+ 1*2+ 0(.&/'/(/(3-#5/%3-#4.#4, 2+0)0)0)2+ 3* 1(2(/%-"-#,"+#1*3,!0)3+ 1)2+4,!1)/&0'3*4, 2)3+6."3,5-!6."4+6-!7/#80$9/#4*7.!5, 7.!;2%8/#8.!:0#;1$90#6."80%91'81&:3(;4);4(<4(=4';1$7-4+7.#:2&>6*:3(=6+=7,;4*7/$:2'?6+?7+>7*>7*=6):1%;3&<4(;4'71$81%93';4'80$8/$5-!:1&;2'70$81%92&<5(;4':3&;4';2&;3'=4(<4(=5(<4';3&?7*<5(:3&<5(:2%<4'<4'<3';2&91$<3'<3&:2%=5(>6)?7*>6)<3&>6*?7+<5)<5)=6*=4(;3'=3(<2'9/$8."9/#8/#6.!6.":1%90$<3'7.#7.#:1%:1%:0$;1%5+ 5*7-":0%;3';2';3'<3(<3(;2'91%91%;3'<3'90%7/"8/"80#;2';3(<3(5-"90%90%80$90%7.#4+!7.$6-"1)7.#;2'=3);2(7/$70$92';3(91&7.#3* 5,"80%92'71&72&82'6/$1* 2+!4,#2+"1+!5/%2+"1+!/)777333000+++&&&&&&%%%&&&%%%%%%+$.'-&.',%.'-%-&.'.'+#*#)"*#.'0) 0) .(1+!3,#4-$4-#0) /) /)0* 1+"/).(/(1*!.'-&/)/(/).',%-&,*)(((((('''(((,,,...333222555.'.&1* 1)/(3,"2+"1+!2,"4.$60&5.$4-#6.%4-"4-"5.#70%:3'81&5/#:4*;5*93(5/$5.#5/$3,!3,!7.#3*1(8.#6-"3*5-!3+ 3, 5."<4(6."4, :2&<3'8/#6,!4+ 2(6,!3)5-!7/#4, 2*4+5,6, 2),#/&3)4*!4+!5,!4+ 5,!6-"5, 4+3*2*0(3*0'-$0'1(1(2)/'3*80$7/#5,!4, 4,!4,!5."70$81%:2'7/$4-"5-"5-"3+ 6.#:2':2'6.#3+ 4,!5-"3+ 4-"5.$5.#70%4-"5-#5.#1*-&2+ 70%7/$3*$######"""!!!!!!!!!!!!!!!  !!!!!!!!!  !!!"""###$$$######!!!&&&%%%%%%&&&$$$*#' (!+$&*#*#*$+$*#*$*$+$+$)#(!)",&'!)#,&+%(!)"*#.'+$)",%/'/'/'/'2) 0'.%.%0'1(&%&$$$$$$%%%&&&&&&***111555888-%*"/(/'/'2* 2) 3*4, 3*1)3*4, 5, 4+2)4+90%5,!3*7.#8/#90$7.#8/#6-"5,!5,!5, 80$90%90$90%7/#80$80$6.":2&81%91%:2&92%81%6/#:3'92&70%80%:2&80$6."6-"91%91%90%<3(:1&5,!7/#:2&:2'91%91&:3(:3'91&81%92&;3';2'<4(<3'90$80$:2&:2&6/"6/":2&;2';2&6-!2)3+4, 4-!80%91&7/%4,!-%-%4+!7.$:1'8/%7.#8/$5,!/&3*;1&:0%5+ 3*6-!8/$90%:2&7.#0(-%4,!;3(80%7/$80%<4)70%0)3, 6/$2* 4,"4,"3+ 3,!7/%4,!,%0(3+ 0(3+!70%5.#3+!3+!6.#4,"/'4,";3(;3(80%6-"2)4,:2%6/#5.#1*1* 3-#/'3+!2*2* 1*/'2+ 2+ /(3+!4,!5-#3+!0(2*2*1)0(4+!4+!0(1*2+ /(1*5.#/(1)4,"1)5,"7.$6.#5,"5,!6.#7/%80&:2'81&5.#6.#91&91%4, 5-!7/$92(6.$4-#1*1)5-"2* 4, 70%4,"5.$5.$4-"0)5-#5-#5-"5-!6.#7/#4, 6."4, 4, 7/#70$6/#81%;3'<3'=4)=4(:0$<2%      - -      H0"L2"N3#K1"K3$F.!C, ?(A,!C/$?-#;*:(:'9&8%7%7%7$4 13!8&:&6"3 5"6$9&5"13!5#6#0.018&5$7%2!4"1!,*)%$''%! "%'&"!  !   -     -      -  -    -       - -    -       -        - -   - -  - - -  -    - -  - - - - - 2+ -&1*0).'0*/) /(1* 2*!0'0'0*1*4-"3-"0(2*/(-&/'0(0)4-#4/$2,"4-#4-!2+1*/(/(2*3+ 1(2(1&/$.$-$.&3,!5.#1*3+ 1)2*6-"1(/&1(4+5-!3+2*5-!3, 5.!6-!4, 6."7."80$;1%4*6.!5, 8/";2&7."6- 90":1#8/#5-!6.#81&91':3(<5*<4)<4(=4(;1$6-3)5-!91&>6+;4)<5*=6,:3)7/$<3(?7,>7+?7+?8+=6);2&;3&<4(;4(71$81%92&;4(90$80$80$:2'91&5."7/$92&=5);3'81$>6*<4(;3'=5);3&<4':2%;3&?8+;4';4'<4';2&;3&<3&;2&;2&:1$=4(=4(;2&=5(>6)=6)=5(>5(@8*?8*=6)>7*=6*;3';2';2';1&90$90$:1$:0$5-!7."90$90$:1&6-"7.#:0%:0&;1'<2'7,"5+ 7,"7.#91%:2&:2&;2'<4(:2':1&91%;2'<3(90$7."7."7.":1&;2':2'6."90%:1&80%90%6-"5,!90%6-"1(5,!:1&=4);3(7/$70$92';3(91&7.$5,"6-#91&91'71&93(71&5.$1* 2+ 2*!1* 2+"3,#2,#2,#/) 777333000***%%%%%%&&&&&&%%%$$$,%-&-&*#)#,%-&-&,%.&,$*"' (!.(1* /).'/) 1+!2,"4.$.(0*!.)/) 2,"2+"0* 0* 2+".'.'0) /) /(.'-'-'+)(((((((''''''+++...444111444-&.&2+!0)0)3-#1+!2,#4/%4/%5/%6.%7/%70&5.$4-#5.#5/#70$5/$3-"93)93)82(5.$4.#5.#3,!5-"7.#4+ 5, 7."6,!4+ 7/#5-!2*6/#:2&6."6.":2&:1&7.#6,!4*3*6,!2)2)6-!5, 2)3*3*5+3).$2(5, 4+"3* 4+!5,!6-"7.#5, 5, 6-!5, 1)4+2)0'1(2)1)2)1(4, 8/$7/$6-"4-!5-"6.#7/$80%80%81%5-"3+ 5-"6.#3+ 6.#:2'91&4-!2*4,!5."1*3,!5.#5.#60%4-"5.#5.#2+ .'3,!91&80%"""######!!! """ """!!!  !!!"""!!!     !!! !!!"""#########)))''''''%%%%%%%%%###*#&*#)"' /(,%+$*$)#+%,&*$+$+$*#+%-')#+$-'+%& %,&0) ,%*#.'0) 0(0(/(0(/&-$.%/&1(/&#$#%%%&&&'''&&&(((///444878<<6+<3(9/#;1%             - H0"L2#N3#K1"O6'I1#F/"B+ E.#I3(E0$>):';(=)9%6#3"5#4"/18$5#5%8%6"3!7$8%3!03!=*2 000//6%6%6%/.*)')'%%#!!"#''$#      -  -     - - -          - -              -    - - -       - -  -    - - -  - - - - - 4-"0),$0)1*0)/).(.'0) 2*!1(1)1+ 0*3-"4-"2+ 1)1)1)2* 0(1* 3-#2,"3.#5/$6."3, 2, /(/(2+ 5,"4+!3(1&/$/%.%/'6/$71%4,!3,!2+2*7/#3+0'2)4+5-!2*3+5-!4- 7/#7."6-!90$7."90$90#6, 6- 4,6-!:1$7."6- 90";2$90$5-!4,!80%81&92'<5)<4)=4)=4(;1$6- 2(4+ :2'=5*<5*<6+=7,;4)7/%=4)?7,>6*>6*@9,?7+;2&:2&;3';4(81%82%92&;4(90%5, 7.#91&91&6.#70$:3'<4(:2&6/"<4(<3':2&<4(;3&<4'91$:2%>6):3&:3&;4'<4';3&;3&;2%<3&90#<3'=5(;3&=5(>6)=6(<5'=5'?8*>7*<5)?7+=6+:3'91&;3(;2'90$8/$:0$<2'6."6."80$:1%:1%7.#8/$90%:0%<2';1&6,!5* 6+"6-":1%:2&:2&;2'<4)91&80$8/$:1&<3'8/$6."7."6-!91&<3(80%6.#80%:2&91&90%6-"6-":1&7.#2)5,!90&<3(;2'7/$80%:3'<4)91'7.$5-#6-#91&81&60%94(71&3,"1* 1* 1*!1) 2+"3,#2,#2,#/)555333///***%%%$$$&&&&&&$$$$$$0) 0) ,%)"(!*#.'-&-&-&+$+$+$-&1* 1* /).(0)1+!2,"2-#0+!/* 0* 0* 2,"3,#0* 0* 0) .'.'0) 0) -&-&-'-')('''''''&&&'''+++...222000222+$,$0(0(/(2,"1+!2,#4.$3-$5/%5.$6.%81'6/%4-#60%70%5/#3-"3-"82'93(82(4.$5/$6/$3,!6.#8/$3*5, 9/$7."6-!80$6."3+5-!5-!4, 6-!90$90$6-!4+4*5+ 5+ 4* 4+5, 3*3+4+6."6-!4*0'2)5, 3+!4+!7/$8/$6.#7."6-!4, 5, 4, 2*5, 2)/&0'2)0'0(1(4, 7/#7/#5-"4,!4,!7/$80%80%70$7/$5-"3+ 6.#5-"1)4,!81%80%5-"2+ 4,!6.#0)2+!4-#4-"4.#3,!4-"6.$3,!/(2+ 81&3,&"""###!!!    !!!!!!  !!!!!! !!!"""!!! ,,,***(((''''''&&&%%%""#+$' )"+$(!,%-&,&*$("+%,&,&+$+$*$,&-&)#+$,'*$%%+%/),%)"-'/(-&.'/'/(.&.%.%/&/&-$###"!''''''&&&'''---222777<;;/'1).'.&3* 6-#5-"5, 0(1)3*4+2*1)5, 6-!5,!6-!3*4+7.#90$7."6-":1&90$6-!7."7.#7."90%90$3*8/#90%7/#7/#7/#81%80$92&81$5.":3&81$70$:3':2&70$7/#5,!8/$91%:1&;2'90$5-!7.#91&:2'80%91&<4);3(91&91%91%:1%:1%;3'<3':1%80$81$92&6/"60#;2&:1%90$7-"3*3*4, 5-!7/$80&80&4-#-%,$0)6.$7/%6-#5,"4+ 4+ .&1(7.#:1&8/#2)1(5, 90%;3(6.#/'.&3+ 81%70$7/$7/$:3(:2'3, 3+ 4,!2*2* 4,!3+!3+ 7/$3+!.&2* 6.$3+!4,"80&7/$1)2+ 81&5-".'7/%>6,<4*5-"5-"4+ 8/#:2&5.#0* -('#&!#$$% (#'"*$)#)"+$,%0) .',%/(-&.'0)0(-%+$-&1) )".'/'-&,%.&/'1(2) 4+!3* 4+!3+!4,"5.$81'91'5.$4-"5."6.#1*1*5-#4-#2,"0) ,%.'4-#.'0(2+ 0)1* 1+!1+!/) 0) 2,"0* 0* 2+"1* /(/(-&-'0*!/(0* 1+!2,"6.$;3(80%7-"8."       -       - - -H1"K2#N3#K1"L2#J2"G/ F/"F/#I2'J3(E.#=&;'<(<(:&5#2!4#014 7$9&2!4%4"7%7$3!02 4"3!0/3!3!4"01 3"2!2"-+*('((%   - #&%%!       - -      -  - - - -      -  -       -  - -              -     -      -  -  - -   - 92'4.$3,!/(-%/(/(/(0* 0* 0) 1*!4,#2* 1)2, 0*3,!2+ 1*1)0(3+!5-#0(2+!3-"1+!4.#5/$6/#3, 2, /(/(2+ 4,!3)2(1&/%/%/&.&5."81%4-"5-"3, 2*5-!3*1(1(2)5, 1)6-"7.#5."80$7/#6-!90$7."8/#:0$6, 6- 5,6.!:1%90#8/!8/!;2%90%5.!4,!70$:3(;4);4)<4)>5*>5)<2&7- 2)4+ :2';3);5*<6+=7-;4)6.#:2'>5*>5)=5)>7+>6*<2&:1%:3&;4'92&92&:3';4'91%3+5,!90%91&4,!81%<5);4(<4(91%;4'<3':1%;2&<4'=5(91$91$=5(:3&92%<5'>6)<3'<3&;2&<3'90$<3&=4(<3&<4'<5(<4'<4';3&?7*?7*=5)>7+=6*<4):2'<4)>6*;2'8/$90$<3'5-!5-!7/#91%:1%7/#8/#90$90$<3';2&7-!5+ 6,!9/$;2&;2':2&:1&;2'80$7/#7.#:1&=3(90$8/#7."5-!80%<3(8/$6.#8/$91&90%90%6-"6-"8/$7.#2)5,!90&<3(:2'7/$80%:3';4)91'7.$6.#6-#91&92'4.#3."60%3,"0)1* 3,"0) 1+!3-#2,#2,#.(333222...)))&&&$$$&&&&&&$$$$$$-&/(+$)"' +$,%,%-&/(.',%+$-&1* 1* /(0) 2+!2,"3-#1+!0* -(/) /* 1+"2,#0) 0) 1* /(.'/(/) .(/) 0*!-'/)((((((''''''+++...222111111,%+$.&0(.'1+!1,"1,"3-#4/%6/&6/&6.%7/&5.$5.#70%71%60$4.#4.$60%81'70&3-"5/$70%4-"80%:1&4+ 5, 9/$7.#7.#90$7/#6-"7/#4+ 2)3*7."90%8.#3*2(3)6,!5+!5+ 5, 3*3*4, 7/#5, 3)2(3)4+ 2+ 4,"80%90&8/%4+!5+!5+!6,"3*1(4+ 3*0'1(3*0'.%/&4+ 90%7/$6-"4,!3+ 6/$70$80%70%7/$5-"2+6/$3+ 0(2+80%91&7/$3+ 4,!5-"1)2+!3,"2,!3-"3-"5.#6/$3,!/(1*5.#4+$"""###!!!  !!!  !!!!!!!!!   !!! !!!(!3330//,,,***(((''''''%%%%%%""#+$&)")"(!.'+%,%)#)"+%+$-',&*$)#,&,&("*#,')#&%+%/),%)".'0).&.&/'/(.&.%/&/'/&.&&%&$$#%%%&&&&&&(((+++///555999/'3+!/'.&3+ 6-#4+!4+!0(1)5,!7."4+2)1(8/#7."5, 4+4+7.#8/$7."5,!8/#8/$7."7.#8/#8/#90%:1%7.#:2&:1&80$7/#7/#91%80$;4'81$6/#:3'92&;4(;3'92&80$6."5-!8/#90%:1&;2&8/$5-"7.#:2';3(70%91&;3(:2'91&92&91%91%:2&<3'<3'91%7/#91%;4(70$81%:2&:1%90$7-"3*2)3, 4,!5-"70%92(5.$/'-%2+ 5-#5.$5-#3* 5,"3+ -%/'8/#;2'90$2)0'3*8/$;3(7/$1).&1*70$91&7/$6.#81&91&3, 4,!5.#2* 1)3+ 1)/'3+!2*/'3+!7/%2* 4,"91'7/$2* 4,":2(4,"-%6.$=5+;3*5-#6-#4,!7.#80%3,"-&&!),!  #%("& %*$'!("+$.&*#)!+#,$'*#+#+$+#,$,%1) 1) 1*0)0(0)2+!4-#80'4-$4-#2+ 4-"3,!0(0(1* 3,"0* .(,&,%.'+$-&.&+%/(.(,&*$+%,'*%+%/) -'*$)#'"&!*%*$*%($)$.) 4.%1* 2+ 4+ !       - -       -J1"K2#N4$L2"N4%F.D+A)E-H0%H1%F."C+ >(9%;':'8%3"/!0 118%8$5"8%3"6&:)8&104#5$2 //2 3!5#4"2 /,((*)*)&&"   !$$""  -    -    -   - -    -    - - -  -  - -       - - -    - -  -      -   - - -  -   - -   - -6-!90%93'4."1*.'-&0)1*0)0)/(.'/(3+"2* 2) 1, 1+1*/(/'2* 0(2* 4,"0(2+!5/$4.#50%5/#5."3, 2, 0).(2+ 3+ 2(1&0%.$.%/&/'2+ 6/$2+ 5-"4-"4,!7/#4+ 3*2)2)6."2*6."80$5-!7/#6."5, 90$6."8/#90#5, 5- 5- 7/":2%90$8/!8/!:2$80$6."5-"80%:3(;4)<4)=5*?6+>4)=3'5, 2(5+ 91&<5*=7,<6,=7,:4)6/$<3)>5*?7+>6*>6*?6*<3';2&=4(<5)<5(92&;4(<4(:1&5-!5-"80%81%6.#5.":3'<5(<4(:3&;3';2&90$:1%<4'=5(;3&:2%<5(:3&92%=6)?7*<3'<3'=4'=4(:1%;3&=4(=4(;3'<4(<5(=5';3&?7*>7*=6*>7+<4(<4);3(<4)>6+;3(90%90%:1%6."5-!7."90$:1%7/#8/#90$90$;3':1%6-!4+5+ 8/#:1%;2&;3'90%90$9/$8/#8.#:0%;1&;1&;1&:0%6-!90%;2'80%7.#80%91&90%90%6-"6-"7.#7.#2)6-"90&<3(:2'6/$70$92':2'7/%6-#5-"5,"8/%70%2,!2,!5/$70&/(1*!4,#0)0) 2+"2,"1,".)111000---(((&&&###&&&&&&%%%###,%.'*#+%*#,%-&,%-&/(/(-&*#+$/'0) /(2+!1* 0*!2,"0* 0* .).)/* 0*!1*!-&0) 0) /(.'.(/(-'-'1+!0) 0) /,)((('''''')))---000333111000,%/'1) .(/) 1,"1+"2-#5/%60&6.%6.%80'6.%4-"6/$71&71&60%5/$5/%70&6/%3,!3,!81&3,!80%6-"4+ 5-!8/$6-!6-!6-!5,!5-!8/#5-!3*3*6-"90$7.#3)2(3)7,"6,!5, 6-!5, 4+4+5, 6-!4*3)2)4+ 3+!6.#91&:1&8/%7.$4+!6,"5,"3* 2)4, 4+1(3)4*2)0'0&4+ :1%91%6-"4-!6.#7/$70$80%80%80%6.#2*7/$1)0(3+ 7/$91&70$3,!4,!5-"2*1* 3,"3,"4-#4.#5.#7/%4-"1)1*5.# !!!!!!  !!!"""!!!!!!!!! !!!!!! !!!""" !!!(!'!("3330//,,,***(((&&&&&&&&&&&&""#-&(!+$+$)"+$+%+$'!)#+%*$-'/( +%*$.'-'("*$/) *$& %+%/).'*#.'1) .'-&.&.&-%-%.&.%.%/&&%&%&%&&&'''''')))+++,,,333777.&1).&.&3+ 6-"2) 3*!2* 1(3*6-!3+1)2)6-"7."4+ 5,!5,!8/$90$5,!6-"8/#8/#6-"6-"90%90%8/#;2'8/$80$91%91%7/#5."91%81%93&5."70$82%71$92&91%81%80$6-"6-"8/#80$:1&;2'80$5-!7/#:2':3(70%81&:2'92':2';3':2&:2&;3'=5(<4'90$6.":2&<5)81$92%;2&:1&;1&8.#4+3*3+3+ 4-"70%80&4-#0(+$2* 6.%6.$3+!1)5,"4, ,$.%7.#:1&8/#4+0'3+ 80%;3(80%2*-&0)7/$;3(7/$2+ 4-"81&5-"4-!5.#3+ 1)5-"3+ /'3,!4,"1)4,!80&2*4,":2'80%3+ 5-#:2'4,".&5-#:2(:2(6.$6.$4+!4,!5-$/( )# "$%()   #!"& ("& %'!%#$%& (!*#(!.'.',%-%-%-&/(0) 3,$0*!.(,&/),&*$*$+&/) )$+&+%*$+%(")"' )"+$(#("&!'"'"##% #"" $,&*$-&/( $       -       - K2!L3#N4$M2"K1"H/ E-A)B*G/ H0#C,A*?)<(:':&9&5"0!/ 1!2"6"6#8%6#4!6$5$8)6%13!6%5$3!//2!6$3!2!1 0--(+*)*($  -  $%"    -   - -     - - -      -   - - - -  -  -              -    - - -     -      - -   - - -5. 6-!90%:3'4."/(.'/'1* 2+ 0(0(1)0(0)4,#0( 1) 3,!4,"1* 0(1*3,!/'2+ 5-#1* 2+!60%60%4/$4-"4- 3-!3,!1*.'2+ 3+ 3* 0&-"-#.%/&.&3-!6/#0)4,!4,!6.":1%5-!5,!3*3*90%5-!5,!91%70#7/#6-!5, 90$6.!7."9/#6- 7."8/#91$;3&91$8.!8/!:1#8/#6.!5-"81%;3(<5)=5*>6+?6+<3';1%4*1'5,!:2'<5*<6+<6,<6+81'70&=4*?7,A8-?7+<5(=5);1&:1%80$<5(<5(;4(;4(<4(91%4, 6.":2'91&91&81%92&=6)=5);3':2&91%90$:2&;3'=5(<4'<4'<5';4&:2%=6)>6)<3';3&>5)>6*:2&;2&=4(<4(:1%<4(=5)=5(;3&?8+>6*=6*?8,=6*<4(91&;3'>5*<3(:1&:1&90%7/#6."7/#:1%;2&8/#8/#8/#90$;2&:1%8/#6,!6, 7.#:1%;2&<3':1&:1%:0%9/$8.#:0%:1%:0$:0%:0%7-"90%:1'90%7.#8/$:1&:1&90%7.#5-"80$6.#2*6-"91&<3(91&6.#6/$92&92'7/%7.$4+!4+!6.$5.#2-!60%82'80'0(2+!3+"0) 0) 0*!1+"0+!/) 222///,,,&&&&&&###&&&&&&%%%.',%,%+%,%,&-&+$*$.'/(/(,$)"+$/(0) 0) 1*!1* 0* 0* 1+!0* /* /* /) 1+!0* .'/(0) /(/(.(/)+%,&/) 2,"1*!,*('''&&&&&&))),,,///222111000.'0(/'.'/) 0+!/* 1,"4.$70'91(70'7/&5.$3,!2+ 93)82'60&60%82(81&5/$2,!3,!:2'4-"7/$3+3+6-"7.#5,!7."90$90%80$:1&80$5,!5, 7.#8/#5,!1(1'2(5+!5+ 5+ 6-!4+2)4+4, 4+ 1(1(5+ 5,!4,"7/$90&:1'7.#7.$5+!5+!5,!4+ 5, 5-!4+3*3)5+ 3)1(1(4+ :1%90%6."5-"7/$80%80%80%80%7/$5-#2* 3,!1*.'1)7/$91&7/$3+ 3+ 5-"2* 1)4,"5.$5.$4-#5.#7/%5.#1*2+ 4,&!!!!!!  !!!!!! !!!!!!   """!!!"""!!! *$' ("& '!(!222/..+++)))((('''&&&&&&&&&""#.')"+$,%)",%,%+%(")#,&-'.'/) ,&+%/) .((",%.(+%'!)"-'0) .'+$/(1* .&,%-%-&.&-$.%-$/&.%-%%%%'''((('''((((((***333877:::0(-%.&3* 5,"3*!3+!2) 1)4, 4, 3*1(2)6-!7."5, 5,!5,!8/$8/$4+ 6-"6-"7.#8/#8/$:1&90%8/$90%6."8/$80$91&91%70$80$6."6/#4- 4-!70$81%81%:2&91%80$7/#7/#80$90%:1&;2'90%4,!6.#91&91&6/$80&:2(91';3(<4(<3(;2&<3'=5(;2&8/#6/";4';4(70#81$;2&:1&:1%7-"3*2*2+3+ 6.$6/$5-#4-#2+!-%1* 5-#5-#5,"4+!6.#6-",#/&7.#;2&7.#2)0(5,!80%;3(80%2*-&0)6/$:2'6.$1)5-"80&5-"1*4,"3+ 4,!6.#4-"/(4,"5-"1)3+!80&1)4,":2'91&4,"5-"80&4,"0(6.$92';3)80&7/%4+!2* 3,".($  -  $(*- ! "%"& & '!("("("("("+%,&'"%'!'!$$% )$$'"'"% $!" !"  *+,,+(&'&$$! !      -       -M2!N4#O5$M3#M4%H/ F-D+C+F.H0"E- @(>(<';&;';'8%3"0!0!0!4#7$7#5!7#6#4!4#2"0!1!5#5$4"3!0.2 7%5#3"/.*)*&),*)#   - !#!#   -        - -           -      -          -     -        -   -  - -    - -        -  - - -:2%6/!6-!8.$72&3.$.(-'/(1* 1*.'/'2*/(4-"2+"1)!/'2* 5-#4,"1)2* 3,!/'1)3,!1)2+ 6/$5-#5.$3-#3.#3."3.#2, /(3+ 3+ 3)0&,",#-$-%,$5/#5."0)4,!4, 4, 91%6-!4+3*3*90%6."4, 91$80$6."4, 4, 8/#6."7."9/"7-!8/#90$90$;2&:1$7/!90":2$7/"5- 3, 6/#92':3(;3(=5*>5*;2&:0%3*1'5+!:2':4):5*<6,>8.93(92(:2(?6,?7+>5*>6*>5):1%:1&;3'=6)<5);4'92&;3'91%5-"80$;3(91&6/$92&;4';3':2&<5);3':2&91%:2&<4'?6)<4'=5(<5(<5':3&=5(>6)<3'90$=5)=5);2&<4(>6*<3'91%<4(>6*<5(:3&>7*?7+>7+?7+>6*<4)81%91&;3';3(:2';2(:1&7/#6-!7/#:1%<3'80$7/#7/#90$:2&:1%9/$6,!4+7.":1%;2&<3':1%:0%90$8.#8.";1%<2':1%9/$8.$6,!8/$;2':1&8/$8/$91&90%7/$6.#5-"80%6.#2*5-!:1&<3(80%6.#5/"92&91%80$7/$4,"4,!6/%5.#1,!5/%:4)70&2* 1* 2*!0) 1* 0* 2+"0* 777333...***%%%&&&$$$&&&&&&$$$/(,%,%+%,%,%+%+%)#,&.'/(-%*#,$/(1* 0(0) 0)0) /) /* .)/* 0* ,&/)/)0)/(2*!1* 0)/(1+!*$-'1+!2,"4-$+)((((&&&&&&(((,,,---222222////'1* 0)/(0*!/* .) 0+!3-$6/&70'80'92(3,"4,"92(82(50%5/%81':3)81'4."1*3,!7/$5-#5."4,!3+5-!6-!6-"7.#90%80$7.#:1%:1&6-"6-"80$90$5-!2)0&2(4* 5+ 5, 6-!3*0'3*5-!5,!2)2(3)1)3,!8/%4+!8/%7.#6-#5,"6,"6-"5,!5, 6-"4, 3*5*5+ 3)1'1(3*90$:2&7/#5-"6/#7/$70$7/$6.$4-"5-"4,!6/$5.#2+ 3,!6/$81%6/#3+ 3*6.#5,!3, 5.#60%71&71&5/#6/$5."3+3+ 4*$"""!!!!!!"""!!!!!! !!!  !!! """'!*$-'("("'!& (!000..-***((('''&&&&&&&&&%%%"""+$*#)"-&)"*$*$+%*$*#,&/( ,&/( -&+%/) -'(!+%.(+%(!*$0) 1*!.'+$.'2+!0).'.'/'/'-$.%,$.&-%-%%$%#$"((('''((((((+++222767:::0(,%+#1)5,"4,"4+"2) 1)4,!4+4+0'1(5, 6-!5, 4+5, 8/$7/#7."7."80$90$7.#7.#90%80%90&90%6.#7/$7/$80%80%7/$:2'70$81%70$4-!:3';4(92%;4(92%91%80$80$90%91&:1&;2'90&5-"7/$80%80%6.$80&:3(:2';3(<4(;3':1%;2&<4':1%7."6/#:3':3'81$91%<3';1&;1&6-!3*3*3, 4,!6.#7/%7/%7/$4,"-%1)7/%6-#6.#4+ 5-"7.#/&/&7.#:1&7.#1(0'4, 91&:2'6.#2*.'0)5.#70%6/$2*4,!70%5-"1*5.#4,!4-"80%6.#1)4-!4,!1)3,!80&1)1*:2'81&4,"5-"7/%4,!1)6.$91':2'91&90&4+!2* 1* ,&" -      $'*+          "#      **('$!#""!##!  -         -        -L2!O4#P5$O4#N5%G/F.E-E.H0!J2$D,A)?(=(;':%:&;'8%3"1!0"1"2#5$5"5!5!5"5#4!.+/2"3!01 0//3"5%0/-,'('&&('" ! "   ! #!"  -             - - - - -  -   -  -     -   -  -    -   - - -  - - - - -    - - - -   -    - <4':2$8/#9/$71&4/%1+!/)/(2+!1* .'0)2+ 0)3+!3,#2*"1) 2* 3+!2+!0(2* 3+ 0)1*3,!2+ 2+!5.#6/%6/%5/%50&4/%4/$2,!1*4,!7-#5+ 1'-#,",$*#)"5-"5."1)5."4,!3+:1%7.#2)3*2)7/#6-!5, 80$91%7/"5, 4, 80$90$7/"90#7.!8/#90#80#;2%:1$6. 91":2$80#4- 2+5."81%91&81&:2'=4);3';2&5+ 2(3*80%:3(;5*<7,=7-:4)81'80&>6+>5*=4(>5)>4(:0$:1%=5)<5(:4'70$70#;4(:2&7/$80$:2'81%4-";4(;4(<4(:2&;3'<4(;2&91%90$=5(>6)<4'>6)>7*;4':3&;4'>6)=4(7."<3'=4(:2&<4(>5)90$80#<4(=5)?7+:3&;4(>7+?7+>6+=5)<5):2'80%8/$:2':2';2':2&8/#6."7/#91%;2&8/#6-!8/#90$:1%:1%90$5+ 3)6-!90$:1%:1&90%90%90$7.#8.#:1%<3':1&8/$8.$6,"8/$;2(<3(:1&90%90%8/$7/$7/$6-"80$7/$2*4+ 91&;3(7/$4,!5.#92&80%7/#7.#4,"3,!5.$5.$1+!3-#71'70&4-"4,!4+ 2* 1) 1*!1*"/) 666111---)))%%%%%%%%%&&&%%%$$$-&+$-&-&+$+%-'*$-'-'-&-&+$+#,$.'3+"/(1*!.'.(0* /)-(.)/* /)0* 0) 0) /(1*!1*!/(/(4.$,&.(1+!1+!2,")('((('''''''''+++,,,000222000.'0)1* 0).(/* /* /+!3-#6/&5.%5.$92(5-$5.$81'60&4.$5/%81'92(70%4-"2*2+7/$5-"7/$4,!2*5,!6."6-!7."90%8/#7.#:2&:1&8/#7.#8/$90$6-"3)4)5* 6,!5+ 5+ 5, 1(0'2)5, 6-!2)1'2(1)4,"7.$3* 7.$7.#5,"7-#8.$6-"4+!5, 6-!3+2)4)4*1'/&2(2):1%<3(7/$5-"70%80%7/$7/$7/%4,"5-#4-"6/$5.#3+!4-!6/$80%6.#3+ 2)5-"4,!3+ 6/$92':3(93)60$81%70#3+3*"""!!!!!!!!!!!!!!! !!  ,%("("*$+&*$*#' (!+$000.-,***(((&&&%%%%%%%%%%%%"""+$+$*#,%)"*$*#+$("' +%,&.(/) +%*$/) ,&'!+%/*!+%&)#/)2+!-&*#,%1) 0(.&-%-&/&.%.&,$,$,$-%###"$#((('''''''''***///5448880(-%+#1)4+!2* 2) 2)0(3+4, 4, 1(2)6-"8/#6-"4+ 5,!7.#7."6-!5, 8/$80$7."8/$:1&7.#90%91&80%7/#4,!5-"7/$7/$92&81%91&81%70#;4(;4'92%;4'92%81%70#70$91%:1%:2&<3'90$5,!7/#:1&91&7/$80%;3(;3(;3(;3':1%80$:1$<3':2&6."6/#81%81$5."6.":2&;1&:1%5, 3*3+4, 5-"6.$92'92'70%5.#,$2) 7/%6-#8/%5,!5,!6."0(0'5,!7/$7.#1)/&3+ 80%80%5-"1*/(0(3,!80%6/$1)2+ 7/%5-"2+ 7/$4-!3+ :2'7/$1*4,!5-"2+ 4,"80&2* 2* :2(91&4,"4,"6.$2+ 1)5-#91';3(:2&4, 0)2*/)*%   -  - -    !# #$%&''()         **))*&! """!      -          -       -J1!O4#Q6$P5$M3$E-B*B*C+F.I1#F.!@)?(>(<';';&;'@+ ;&5#1!0!1#2$1!3!4 25!4!1-,.0 1!..0 1!/..*)-)-''&&'!  -  -! #"!!""!      "       -       - -              -  - - -   - - -    - -      - - - - - - -  -   -  - - - - - - - - ->6(<4&:1%:1&72'2-#0* /)-&2*!3+"-&0)3,!0)3,"3,#3,#2+"2*!2+!2*!0)3,"2+ 1*0*0)2+!4-#4-#4-#6/%60&60&71&3-#0*/(3*5+!4*0&-"+"+#*#*#4-!6.#2*5-"4,!2*90%6-"2)2)2(6-"6-"6-"80$80$6."4, 4+80$;3'8/#9/#7.!80#91$90#;2&:1%5,90":2$80#4- 2+60#92':2'92';3(<4(;2&;2&5+ 1'3*91&93(93(:4*<6,:4)81':2(>5+>5*=5)>5)>4(;1&;2&>6*<5):4'70$81%;3';4(:2'80%81&91&6/#92&:3'<4(91%6/"7/#80$8/#90$;3&>5)=5(>6)>7*;4'92%:2%>6)=5)80#;3'=5);2&=4(<3(8/$90%<4(:3&=6)92&;3'=6*?7+=6*<5);4(;3(;3(91&;2':2';3(;3'90$7."7/#90$:2&90$6.!7."7/#8/#90$9/#4+3*6.":1%:1%:1&90%90%90%8.#8.#:0%<2'9/%7-#8.#7-#8/$:1':1&80%8/$80$7/#8/$7/#4,!7/#7.#2)3+ 80%:2'6.#4,!5-"70%80%7/$6-"2*4,!6/%5.$1+!4.$71'6/%3,!4,!4,!2*.&0) 1*!/) 444111...)))%%%&&&&&&%%%%%%$$$,%+$,%-&+$+$,&*$-',&,&,%+$,$-%/(2*!1) 2,"0* .(/)-'*%,(/*3-#1+!0)/(/(0) 0) .'/(60&.(.(/)1+!2,#('&''''''&&&(((+++,,,111111000.&0(0)0) 1+!-(.* /+!3-#6/&4,#5.$70'3,"4-#71&4.$4.$4/%81'92(81&4-"2*1*6.#4,!5-"2+ 0(2)7.#6-!6-":1&8/$7."90%:1%8/#8/#8/#90%6-!4+4* 5+ 6,!4*4*4+0(0(4, 6-"5, 1(0&1'2*4,"6-#6-#7.$6-#6-"8.$7.$5,!3*4+ 6-!4+3*4)4*2(0'2)3*:1&<3(80%5.#80%81%7/$70$80&6.#7/$5-#6.$5.#3+!3,!5.#80%7/$4+ 1)4,!3+ 1*6/#81&92(93(60%92&70$2*5,&    !!!  ""!""!!   .'*#*#)#'!)#)#(#("*#(!)#-&///.,*+++)))&&&$$$$$$$$$%%%"""*#+$+$,%)#,&*$,&'!'!-&,%-'.'*$+%0*!+%& *$-'("%(".'1*!.'+$,$/(/(-&,%-&.&/'.&,$*#,$-%$#$"$$&&&''''''(((***///444877888.&.&2*4,"4+"2* 3+!0(4, 5-!4+1(3*7."90$7.#4+5, 6-"8/#5,!5,!8/$8/$6-!8/$:1&7.#80%91&91%7.#4,!5-"7/$7/$6/$6/#81&92&81&92'92&81%92&92&6/$6/#6/#80$:1&:2&<3'8/$3*7.";2';3'7/$7/$:3(;3(;3(;3(91%7.#91%=4(:1&8/#70$92%81%5/"6/":2&;2&;1&5,!3*3+3+4,!6/#:2(92'80%7/$-$1)6-#4,!6.#5-!5,!6-"2)/&1(4+ 7.#1)-$1(6.$7/%5-#2+ /(.'2+ 80&7/%2* 3+ 80%4-"3+!7/$3+ 3+ 81&6/$0(4,!5-"3+!5-"80%4,"3+!:2'92'6.$5-#7/%2* 0(3+!80%:3'91%6/#2*/',%(#    -  -         !"#%()*)(''''&&$" !"""! "####!              - -       -        I0!N3#R6$Q6$T8(I0!B*@(@(C,E-D-A)>'=(<';%:%?*D."B-!>*7"4!1#0#0#0"/03 4!4 1--.// -,/2#1!.*& ((,,*'&$"    " " "  -! !!"  -         - -       -      - -          -      -  -  -      -  -   - -  - -   -  - - - - -?6)<4&:0$:1%:4(3,"/(/) ,&/(2+!,%0)0*/(2+!3,"3,#2*!0)1*!2+!1* 4-#3,"2+ 1* .'/(3,"4-$5.%60&60%5/%81&3-"/(.&2)5*4*1&-"* ( *"+#5-!6/#4, 5."4, 3+90%7.#3*2)2(6,!6,!6,"90$80$6."6-!4+:1%;3'80#7."5, 6-!8/#6.!:2%90#5-90"91$80#4- 2+70#92&:3(;3(<4);3'90$90$5+ 2'3*91':3)93):4*;5+93(92(<4*=5*=4)=4(;3';1&;1%:2&=5)<5(:3&81%:3';3'92&81%70$91&81&6/#92&<5);4'92&92&80$80$8/#:1%:2%=5(<4'<5(=6);4'92%91$=5(=4(:2&<4(=4(<3'<3'<3(:1&<3(>6*<4)=6):3'<4(=6*?7+<5);3'<4)<4):3(<4*:2(:2'<4*:2'7."6."7/#90$;2&;2&8/#8/#8/#8/#90$8/#4*5+6.":1%;2&;2':1&:1%90$7."7.#:0%<3'90%7-#7.#6-"6.#91&:1&80%7/$7/$7.#7/$6-"2*6.#7.#1)4+ 80%:2'70%5."5."70$81%80$6."3+ 2+ 4-"5/%2,"4.%81(5.$3+ 4,!5-"0(-%/(.'.(222000---)))%%%&&&&&&&&&######,%+$+$-&,%-&,%+$,%-&.'+$*#*"+$,%0(1*!1*!0* /(1+"1+",'.)/* /),%,%-%/(1) 0)-&.(4.$.(.(.(/)0+!0* '''''''''(((***)))000222///.&/(.'-'2,#2-#.* -(3-$5.%1*!5.%6/%1+!0+ 5/%5/%4/%5/%71'92(70&2+ 2*3+ 70%6.#5."5-"2*2*5-!6-!6-!:1&90%7.#8/#8/$6-!7.#90$:1&6-"4+4* 4* 6,!3*3*4+0(0(4, 5-!3*/&0'3)2* 4,"5,"6.#6-#7.$6-#7.$8.$5,!0'2)6-!4+4*6+ 6, 3)2)1'4+ 8/$:2'91%6.#7/$80%7/$6/$6.$6.$7/%6.$5.#6/$5-#2+ 4,!6.#6.#4+ 2*5-"4, 1)4-"6/$60&82'5/$92&80$4+ 4' !!!!!! !!!!!!  ! #"!""!  & ' -&)"("& & ("("'!& (!)#)#,%///.+))))(((&&&%%%$$$$$$$$$!!",%+$-&-&)".'*$,&)#(",&,%-&-&+%-'1+"+$&)")#'!%("+%,%.'*#.&1* 0(.'-%.&/'.&,%*",$-%.&+#$%%!"!&&&'''(((***000544878998/'0(2*5,"6-$3+!2)2*3*7."4+2)4+ 7."90$7."3*4+ 7.#8/$5,!7."90%8/$4, 7.#:1&80%:1&:1&90%5-"5-"5."6.#6/$70%80%81&80%80%:2'92&70%91&:2'6/$6/#5."70%:2';2'<3(90%3*7/#:2&:2'70$80%:2':2';3(;3(90%80$;3'?6*:1&8/$81%;4'71$3- 5.":2';2'80%5-"3*3*3*3+ 6.#91&:2(80%6-#.%0'6-#5-"6."5,!5,!8/$4+,#-%1)7.#4,!.&/'5-"7/$6.$2+ .&-&2+ 7/%80&2* 0)6.$4,!3+ 6.#3,!3+ 70$5.#0(4,!4-"2+ 4,!80%6.$3+!7/%91'7/%6.#91&4,"1)2+ 7/$92&91%7/#1*.'-&&!     -  -  -  - - -                  !        - -  -              -       H0!L3#Q5$S7%]>+T6$I/B*?'D,F/ C,A*@)?)=';%:$<&>)A+A,>)427$1$.".!.!.1!5#3 0-,-.,)+.1!0!,% % *+++(&&#  -  %$$"! ""!   -         -   -   -       -  - - - -          - -     - - - -   -   -    -   - - - - - - ?7)<4%90#;1&;4)6/%1* 2+"0) 0)2*!/'0)/(,%1*0) 2+!1*!0) 0(/(/(4-#5.$3,"0).'/(2,"5/%5/%60&70%6/%80%4-"/(/'2)4)4)0%-"* ( +$-%5-!7/#5-!6."4, 4, 91%7/#3*2*2)5, 4+4*90$90$5-!5-!4, 90$90$6.!7.!4+4,6.!4,:2$91#5-!70#6/"7/#4-!4- 70#81$:3';4(:3':3'80$80#5, 3)5,";3(93(:4*:4*:4*92(60%:2(=5*=5*<4(:1%;1%9/$:1%<4';4'93&92&<5(<4(81%6."6/#91&92'81%93&;4(:2&91%;3'<4(7."80$:2%91$<3';3&:2%;4';4':3&;3&>6)>5)=4(>5)=4(<3';2';2';3'=5)>6+=5*=5)<4(<5)=5)>7+<5);4(<4)<4(:3(<4);3);3)=5+:2'7."6."7/#80$<3';2&7."7."6."7/#90$:0%5, 5, 6."90$;2&;3';2&:1&:1%7.#7.#90%;2'8/%6-"7.#6-"6-":1&;3(:1&80%7/#6-"8/$6-"2*6.#7/$3+ 5,!91&:2'70$6.#6/#70%80%7/$5,!3+ 3,!5.%4-#2,"60'82(6.%2+!4+!6-#/'.&0) .'.'322---***'''%%%&&&%%%$$$###""".&-&,%-&,%-&-&,%,&/(/(,%*"*#-&.&0) 0) 1*!0* /(0* 2,"0* 0) 2,".'.',$+#0(2*!.'-&-'1+!.(.(.(/)/)/) -+(''''''''')))***.../////////0) .(.(0*!.) 1,"/*!2,#2+"2*!70&81'0)/)3-#3-$3-#5/%60&81'6/$2*1*5-"7/$6."5."5."4-!6."4+ 3*5,!90%8/#6-"6-"5, 3*5, 7.#7/#4, 2)3)3)4*2)2)2*1(1)4, 5, 2)0'0'3*4,!4,"5,"7/$8/%7.$5,"6-#9/%5,!.%1(7."3+4*6,!5+ 3)0'0&4+7.":1&91&6.#7/$7/%6.#6.#6.#6.$6.$5-"4-"6/$4-"2+4-!5."5-"3*2*6.#5-!1)4-"6/$60&71&5/$81%81%6-"!!!!!!"""!!! !!!  !!!!!!!! !! !!!! ! 1+",&*$& ' *#& '!%& ("'!& & &'!*#+$/..+++(((''''''&&&%%%$$$$$$+$-&*#-&,%*#.',&-'-&*$*$*#+%,&,%,%/) +$%'!)#'!%("-&.'-&)"+$/(/'.'+#,%/',$-%)!*#.&/(+#$#%"%$&&&''''''(((---222666888/'0(3* 5,"5-#2)0(0(3+5, 3*2)4+ 5,!8/#6-!3*5, 7.#8/#5, 6-!90%6-"4+ 7.#:0&90%91&91%80%6.#4,!6/$91&80%70$81%91&70%6/$;4(:3'81%:3':3(6/$5.#5-"6/#91&:1&;2'8/$5,!80$:2&80$80%91&:2':2':3(:2&7/#7.":1&=4(:1%8/#91%;4(70$2+6/#:2'90%8/%5,"0'2)2*3+ 5-#6.$91&80&4,!.&.&5,"6-#8/%6-"6-"80%4+ -$-%3+6."80%/'/'4,"5.#5.#1*,%,%3,!92'92'3+!0(6.$5-"5-"6.#5-"4,!80%6/#1*4,!5-#2+ 3+!80%7/%3,!6.$:2'6.$4,"80%4,"0)2* 80%70%7/$6/#1*.'-'%          -  -  -  -  -  - -            - -                - -   -  - -             -    K2#P4$R6%bA.[;(S3!H,B)D,H1"E. B+@*?*?*:%8#;%A*@*>(<&9$2 37$8%1$-!- -!0!1!0/-+**'&*...'! -& '))))(("  -   "  $%"     -              -  -     -  - - - - - - -      -         -  -  - - -   -      -   -  - - - - - @9*<4&:0#:1%;4(5.#0(3,"2* 1) 2) /'3+!.'/(2*1)/(0)1* /(/'.'4-"70%4-"3,!1* -'0)4-$4.$5.$70%6/$70%5."0(0'1(4)5)1%-"+ *!-$.&3,6/"5. 5.!4, 5, 91$7."2*3*1)4+2(2)90$90$5-!7."6-!8/#7.!6, 8."5+5, 5, 2*90#80#5-!70#7/#6/#6."3, 5.!81%81%93&:3&:3&:3&81$3+2)6.#91&;4)92';4*;4*:3)5.#70&=6+<4*<3(:1%;1%8.":1%;2&:2&:3';4(<5);4(70#5-!81&92'82&92':3&:3'<5(;3':3'>5)90$7/#80#80#:2%:2%:2%:3&:3&92%<4'>6)=4(<4(=4(<3';2'<3';2&;2'=5)=5*<4)<4(<4(<5)=5)>6*<5);4(=5)<4(:3';3(:3(;4);4*;3':2&7/#6-!:1%;2&80$7."5-!6-!80$90$:0$6-!4+5-!90$<3';2':1&:1%;2&6-"8.#:1&;2'8/$7.#8/$6-"6.#91&;2'91&8/$6.#6-"90%6.#1)5-"80$6-"6-"90&91&7/$6/#70$70%80%7.$5,!5-"3+!6/%5/$3-#50&81(6/%2+!5,"6-#0(0(1*!.',&100,,,''''''&&&&&&%%%""".',$,%,%+%,%,%-&,%,%/(0* .')"*#,%-&/(.'/)0) .(/) 0*!0*!0*!1+!0) 1) -&,%0)2+"+$,%0(/(/(/)/).(.(.(,)(''''''&&&(((,,,///111...///2+!/(0*!3.$1,"0+",'2,#0) /'3,#70&/)/)3.#61'61'72(5/%5.$3+ 1*2*6/"7/#5.!6."5-!7/$8/$4+ 1)4+ 7.#7."6-"7."5, 4+6-"8/#7/#6-"3)4)3)3*2)2)2*1)2*5, 4+ 1(1(0'2*5-#6.#6-#7.$8/$6-#5,"6,"8.$5,!1(4+7."3+5, 5+ 5+ 3*0&.%3*6-!91%80%6.#6.$6.$6.#7/$7/%7/%5.#4-"4-"81&4-"0)4-!7/$6.#4+ 2*5-"4-!2*4."70%71'71&5/$70$91%6-& !!!!!!   !!!!!! !!!!!!!! ""!!! ! -'/) /) .(*$%' +$' '!& ' '"'!& $&%("(!/..,,,)))(((''''''&&&###"""*#-&*#-&,%*#.'.( .( .'+$*#("*$+%*$*$-&*#%& ("%' '!,&/( +$' +#/(/(-&)!-%-%-%,$+#+$-%.')"$#%!#"&&&&&&&&&'''+++///3225550(0(2)4+!3*!2) 0'1(4+ 5, 4+ 2)4+5,!90%6-"3*4+ 7.#8/#6-!6-":1&4+4+7.#90%8/$90%80$91&90%4,!5-"7/$6/#6/#70%92&80%6.#;4(:3'92&;4):3(7/$7/$6.#6.#90%:1&;2'8/$6-"90%80$80$70$91'91';3(;3(92&7/#7.#:2&;2'6-"5-!70$:3'71$3, 5.":2'8/$90%5,"/&2)1)1)4,"3,!7/%80&4-".&.&5,"6-#8/%6-#5-"8/%4+!.%/&5-!80$6/#1*/'2* 5.#5-#0)-%,$2+ :2(92'5-"2+ 7/%4,!4-"6.#4,!4,!80%7/$2*3+ 6.$3+!4,!80%7/%5-"80&<4*6.$3+!7/%4,"0(2+ 92'70%6.$6.$2* -&-&$             -  - - -                            - -   -                    - -  -    - -    -  -                      K1"N4$R6%bB.]=)V7$O0E(F,G/!F/!C,@)>)=*:%6!8#='?)D-@*;%658":%9%6$1$,!+, -,--*(& # %*,+'%%&'&)$%##    "##"!"#   - -     -               - -   -      -     - - -    -    -  -        -   -  - - - - - - - - - - - - - - - - - - - A:,=5'9/#:0%;4(5-"/(2) 0'1(0'/&2*0)2*3+ 2* 0)0)1) 1* 0(-&2+ 5.#3,!4-"4-"/)0) 2+"3,"6/%70%6.#6.#5-!1)1(1'2'2'0%-"+ +!+#,%2+5. 3,4- 4,3+8/#7/"3*3*1(2)0'1(7/#90$6-!7."5, 6-!6-!6, 8/"6-!7."6- 1)80#90#6-!6."5-!4- 3+0)4-!7/#70$92&<4)92&92&70$2*0(4,!80&;3(81&;4)<5+;4*6/%70&<4+;4*:3(92'5-!7/#:1%91%:2&:3&;3'<5(;4'6."3+81%:3'81&92&:3':3&:2&:3':2&=5):1%91%8/#8/#:2%;3&;4';4'92$70#<3'>6)<3'<3'<4(:2&:1%;2':1&:1&;3(;3(:2':3';4'<4(=5)>7+>6*=5)>6*<5);4(;4(:3(;3)92(:1&:2&6."4+80$90$6-!6-!4, 7."90$90$90$7-"2)3*90$<3';2&:1%:1%:1&6."8/$:1&:1&8/$7.#8/$5-"6.#91&:2'91&7/$8/$7/#91&7/$4+ 5-"80%6-"5,!8/%90&7/$6.#6/$70$80%6-#2* 4,"3+!70&3-#1,"5/%81(6/%2+!4+!5-#/'1) 2+"/( 6660//---)))$$$&&&''''''!!!/(/'-&-&+$,%,%.'-&+$-&0) -&)"*#-&-&/(.'.'0) .(-'/).(1+!2,"1+!2+!0)-&0(2*!/'-&0(0)0(-'-'/(/)-'*(''''''''''((()))///333...///1*!-&0* 3-#2,#1,"1,#2-#1* 2+"70'60&1* 1+ 4/$61'61'71'5/%5.$4-"3, 2+6."7/#4-!7/#4,!7/$91%5,!3+7.#7."6,!8.#8/#5, 3*6-"7/#6."5,!2)4* 5+ 6,!4*5,!5-!2)1)4+2*/'1(2)3*4,"6.#6-#6.#7.$6-#6-#7-#6,"5,!5,!6-!4, 3*6, 6, 5+ 3*0'/&1(4+ 80$7/$5-"5.#6.$80&80%91&80&7/%5-#6.$81&5.#0)5-"91&91&5-"2*4+ 4-!3+5."81&71'60&5/$6/$91%      !!!!! !! .()#/) 0*!0*!/) )#%(!+$("'!'!& & ("("%& &%' ...---,,,***&&&'''%%%###+$-%*#+$-%+$.( .'.( -&,%+%)#*$)")#*$,&(!$& & ("& ' ,%/(*#%+#-&0(/')",$+#*"+#,%,$.&-%,%)""#$&&&''''''''')))---2125447770(3* 3+!3*!1)/'2)4+ 4, 4+1(1(3*90%6-"3*4+ 8/#90%7."6-"6-"5,!3*6-"8/$7.#80$8/$91&80%6/#6.#7/$5.#6/$80%91&7/$6/#:3(92&81%;4(:3(6/$7/$5."6.#90%91&:1&8/$6."7/#80$5-"7/$91'92':3(;3(91&7/#7/#:2&;2&7."5,!7/#:3'81%3, 5.":2'90&90%6-"2)2)/'.&2* 2*6.$:2'6.#/'.&4,!7.$7.$6-#4,!6.#4+ /&.%5-!91%7/$2+0(1*6.$5.$1* .&+$1)92&92'4,!3+ 7/$6.#5-"5."4,!4,!80%7/$2*1*6.#3+!4,"7/%6.$5-"92'=5+6.$4,"81&6.$0)3+!81&70&5.$3+!/'-&-&$             -  - - -  - - -       - - - - - - - - - - - - -    -   - -  -   - - - -   -       - - -  - - - - - - - - -  -    - - - - -   -  -  -             -  -         J1"M3#Q5%aA-_?+Z:&S3 K-K/L1 H/ C,A*@+<)9%4 5!6$?*B- ?(=&<%68!;%=(>*6$3#.!)(')+*('% $ '**(#! ')''# $#$#!"###! !"$"     -          -        -     -              -    - -    -  -     - - -          - - - - - - - - - - - - - - - - -A:+=5':0#:2%;4(6/$1*1) /&0(2* -%0'0)0)1)1)1)1) 1) 2* 0(-%2+ 4-"2+ 2+ 3+!.'0)2+!3,"5.$6.$4-#5-"4,!1(1(0&1&2&0%-!+ +",#,%1*3,1*3, 3, 0(5.!7/"3*2*0'2)2*3*7.":1%6."6-!2*4+6-!6, 6-!4+5,!5-!2*7/#7/#4,!5-"6."5-!2*/(2+6/#92&81%:2'81&70%6.#3+1(2*80%:2'7/%81&:3(<4*:3(:3(;3);4);3(92'4, 7.#:2&;2&;3';2&;3&<3':2%91%90$;2&;2&8/$80$91&92&91%91&91%;3':2&;2&91$91$:2%=4(<5':3&70#5.!;2&=5(;2&<3'>5)<3':1%<3';2':2&;2';3(92'92':3';4'=5)>6*>6*>5*=6*<4(;4(;4);4);4*92(:2&:1%6."4, 6-!7/#6."5- 5, 80$90$:0%90$6-!1(3*80$;2&:1%90%90%90%6."8/#91%91%7.#6.#7/$5-"5-"81&80%:2'80%80$7.#90%6-"3*4,!7/$5,!4+ 7.$80%7/%5.#6.#7/$7/$6-#3* 2* 2* 5.%4.$3-$5/&71'70&0)4,"3+!/'1) 3,#1*"4440//***((($$$!!!###%%%!!!.'-&,%-&,%.'-&.(-'+%,&0) *#& (!-&.'0) .'/(-',&-'.(/)/) /)0* 0* -&-&,%.&1* /'/'0)1* 0)/).(0* /) )''''''''((((((***...111...///0* +$0* 3-$2,#0* 2,"60&3-#4-#4-#70&3,#4-#60&61(72(60&6/%5.$4-"2+ 2+6."70#4-!70$4-!6.#70$4, 4, 90%8/$5, 8/#9/$6-!3*7.#8/$6."4, 1(2(4*6,!4*6."7/#2*3+6."4, 0(0'4, 4+ 2+ 5-#6-#6-#6-#6-#7.$6-#4+!3* 4+ 5,!2)1)6- 6, 4*2(0'/&.%3*6."6.#5-"3+ 5-"6/$7/%7/%7/%70%5.#6/$70%4,"/'5-":2':2'5-"1)4,!5."4- 5.#71&60&5/%5.#5.#80%  !! """!! 2+"0*!,&-'*$.)1+"1+"-''!%)!+$)#(!' && ("'!$$#%*"...***,,,)))$$$&&&%%%###-%-%*#,%,%,%.'-&/( .(-'*$)")#("*$+%,&'!$'!)#*$$' ,&.'*#%)",%0) 0()"-%,$,$-%-&,%-&,$)"+$%$% ! )))'''(((%%%)))4336557771(2*5,"6-$3* 1)3+ 4+ 3+3*3*3*7."90$5,!1)4+90%:1%6."5,!7.#6-!4+6-"5,!6-#:1&80%80%7/$6.#6.#5-"5-"6/#70$80%5.#5.#:2'92&70$:3(:3'6/$6/#5-"7/$:2':1&;2'80$6."7.#:1&5."81&:2(;3):3):3(91&7/#7/#91%90%7."7/#80$92&81$2,6.":2';2'90%7.#4+ 3*1(.'1*2*6.$:2(7/%1)/&3* 7.$7.$6.#4+!5-"4+ 0'-%4, 91%70$2+ /'1)6/$6/%5-#1).&2+ 91&91&4,!3+ 6.#5-"3,!5-"4,!4,!7/$7/$1*1)6/%5-#3,!7/%6/$3, 91&<4)7/$5-"91&6/$0(2+ 91'80&7/%3,".&-%-&#            - - - - - - - - -  - -     - -  -  -  -  -  - - -  -  -  -  -  -  -             - -  -  -  - -  - - -   - - -  - - - - - -  -  -  - - - - - - - - -   -  -  - - - - -           -    - - -         J1"M2#P4$aC0]=*[:'U5"N/M0O3"L2"F-A*?+@- :'5!5 8"9'<(@+>)<&>(;$;#;%<'<(6$0,(%$')(% %% ')(($ -#(&&&$"#!$###!"#!#!   -  -        - -   -     -    - -   -  -    - -      -  -   -    - - -  - - - -   -   -    -   - - - - - - - - - - - - - - - - - - ?8*=5'90#:2%;4(6/$0)0) -&2*!2*!-&-&.'/(2+!2+"/)2+!2+!1* /(,%0)1* 0)1*1* -%0(1* 3,"4,#4,#3,#4,"2+ 0)0(1(1'/$-#+ (*!*!+#0*1*0)3+ 3, .&4, 5."1)1)/&1)3+2)4-"81&4-"3,!/(1)4,!3+ 3+ 0(2)3*1)4+ 3+ 2*3+ 4-"3+ 1*/(1)4-"70&70'81'70&5.$3,"3* 0'/'5-"70%6.#80&:3(;3);4);4):2';3(:2&7/#4,!6/#:2';3';3';3';4'91%;3&:2%91%;2';2'90%5-!6.#91&80%91&:2&81%81%91%90%:1%90$90$<4(7/#70#5.!:2&<3';2&;2&=4(<3'90$;2'<3(:2':2';4):2'92&81&92&;4(=5)>5*>5)<5):3';4(;4);4*:4*92)91&91%8/#6-!5- 8/#90$6-!6.!90$8/#:1%:0$5, 3)5- 80$:1%90%90$7.#7/#5-!7.#91%91&7/#7.#8/$4-!5.#92'70$;3(81%7/$6-"80%7/#3+ 3*6-"5,!4+!6-#8/%7/%4-"3,!4-"6.#8/%4,!2* 1* 4-#4.$3-#4.%61'60&1* 4,"1*/(1) 3,#1*"222///***())$%%&'&&&&### .'-&*#,%+$-&,&-',&+%,&1*!+$'!(!,%-&/(/(/(.'*$+&*%,&.)*%)#+%*#-&/(*",$-&0(0)0)/).(/)/)*$+&((('''&&&((()))...000.......(.(/* 0*!1+!0+!1+!60'60&6/%70&80'4,#5-$6/&5/&60'60'60%6/$4-!1)0)80$6."5-!:2&5-!5-!6."3+ 2*7.#90%7-"6+ 7-"7-"4+7/#7.#4-!3+1(2)3)4+ 4+ 7."80#3*2*6-!5,!/'.%3*3* 3+ 7.$6.#7.$5,"6-#6-#4* 3)3*5,!7."3*0'8."8."5+2(2(0'/&3*8/$70$4-"1)3+ 2+ 5-#6.$6/$7/$4-"5-#6/$3,!0)5.":2';3'6.#1)4+ 5."4-!5.#70&60&5/%4-#6.#7-'  !! ""! !! !! ,%/(1*!.(,&,',&.(2,#0*!+%(!%( +$)#'!%%& & & %& $%///-..***)))&&&%%%%%%%%%### ,%+#)!/',%-%.&.&-&-&-'-'*$,&+$*$*$+%'!%*$.( ' %("+%,%*#&+#/'/(,$%+#-%,$-%/'/(*#-&+$,%%$%!$#)))((('''&&&***111444555/&/&5,#7.%3+!2* 4,!3+2)1(2)3*6-"7.#6-!3*5,!:1&:1&6-"4+ 7.#5,!3*5,!6-"7.#91&80$7/$8/$4-!5-"5-"5.#6/#70%81%6/$7/$:3'91&70%:3(:3'6/#4-!5-"6.#80%:1';2'8/$5-!7/$91&80%92';4):2(92'91&91&7.#7.#90%80$5,!5-!6."71$81%4-!6/#91&;2'90%6.#3+ 3+ 4,!1)2+ 2* 6.$91'80&3+ .&2)6-#7.$8/%4,"5,"5,!3*/&3+81%80%3, -&/(3,"5.#6.$2* .'2+ 80%81%4,!1*5.#6/#4,!6.#5-"3+ 6/$80%2*/'5.$5-#4,"80&80%3+80$<5)81%5."81%7/$1)3+ 4/#93'70%4-"0(.'+&#       -   -      -  - - - -  -  -    - - -  -  -  -   - - -  -  -  -  -  -  -             -  -       -  - - - - - -    -  - - -  -  -  -   -  -     -  -  - - - -     -  - -  - -    - - -         J0!L2"O3$aE2Z<*U6#S4!M.M/O1!N2"J0 D+@)>*:(6#5!9$;(=*!<);';&;%;$>(<%<&<&:&5$1 *%#&'''%% &))&$   $%#"$$"$#" !!  """ "             -              -  -  -      - - - -      - - -         - - -       -   - - - - - - - - - - - -?8)<5&7-!7/#72&4.#.(.(-&,%.'-&-&.'.'/(.(-&.(/(/(.',%/(-&-'0* 0*!1*!/) 1+"/) 0*"2+#1+"0*!0).',%.&-$,",")&(( )"/(-&+$0)3,#-&3,"3,".'.&,%.'1)-%/)4.#2+ 1*-&/'1)/'0(.&.'.'-%1) 0)-'-'0* 0)/(,%,%0* 3,"3,"1*!/'0) /(0'-%,$4,"70&7/%70&:2(:3(;3'<3(;3'=4):1%91$6.#70$:2':2':2';4(;4(80$=5)91%80%;3(:2'80&4,!5."81%92&6."80$92&81%80$7/#91%;2&6-!;2'<4(6."7/#<3'=4(:1%:0%=2'<2':0%;2'<3'90%91%;3(92&:3&92%81%<4(<4(=4)=4)<5):3';4(;4):3)93)82(91%91%8/#5-!3+7."90$6."6-!8/#8/#90$:0$5, 4*5, 8/#91%:1%8/$6."6-"5-!7."91%:1&7/$7/$80%4-!6/$:3(92':2'80%70$7/$7/#6-"2*3+ 8/$5,!3*6-#80%7/%4,!2+ 3,!6.#8/%5,"2+!2+!5.$4.$0+!1,"5/%71'0)1)2* 0(.'0*!0*!111...)))&'&%&%%%%%%%###!!! .',%+$,&,%-',%,&+%+%,&1* +%(!)",%,%.'-&-',&*$(#)$)%/* .(+%.(.(.'/(,$-%-&/'0) 1) /(+%/).(+%-'(((((('''(((***---000....../) .(0+!/)/* 1+!/)5/%70'5.%70&6/%2+!3+"60'5/&4/%5/%60%5/$3,!2*1)80$90$91%:1&6-"5-!70$4-!4+ 7."8/$7-"8.#<2&7."3*5-!6."5,!3*3)4*2)3)4+5-!7/#3+1)5-!5, /'/&3+5,!4-"7/%8/%6-#6-#6-#5,"3)2(2)5, 8/#5-!1(8."8."6, 3)3)0'0'5-!90%:2'6.$0(3+!3,!5-#6.$6/$7/%4-"5.#6/$4-"3,!6/#91&:2'7/$2*3*6."4-!5/#71'60&5/%5.$4-"  ! !"!"#""! 4-$2+",%,%0)1+".'-'-'-'/) 1+"0*!,&("$' +$)"'!%%& & %& ' & & ///---)))(((%%%&&&&&&&&&### .'*#)!.&-%,$-&.'.'+$*$+%+%-'-&+$*$*$%%*$.()#%'!)#,%*#'!+$,%.&,%' ,$-%)!,%0).&,%-%,%,%%$%#$$(((&&&%%%&&&)))-,-222333/&0(3* 4+"1(1(2*2)0(0'0'3*5,!8/#6-!1(5, :1%:1&7.#4+ 6-!4+ 4+ 6-"7.#6-#8/$8/$7/$8/$4,!5-"6.#6.#6.#7/$70%5.#70%:2'70%6/$:3(92'5.#2+ 3+ 7/$:1&:1&90&7."3+6.#80%80%92'<4*92'80&:2(91'3+ 6."8/$7.#5+ 4+ 5-!70$5."1*6.#90%90&91&6-"2*3, 4,!1*2* 2* 5.#80%7/%2* -$0'5,"7.$80%5-"5,"6-"4+ 0'2)70$91&3, .'0)4-"7/%70&4,"/'1)5.#80%5-"2*6.#80%5-"7/$6.#3+ 7/$80%2*-&3+!4,"2* 70%91&3+6/#<4(81%5-!70$80%2*3+ 5/#82&82&5.#/(,&&!"        -  -       -  -  -  -      - - - - -  -  - - - -   -  -  -  -  -  -      -      -  -   - -   - - - - -  -  -  -  -  - - - -  -    -  -             -  -           -        -  I0 K1"M3#X;)X;)T6%M/J,K.M0N2!J/F-C+?(:%5"3 7#;(=(;&=)<(:%<&9#='>(:$:%9&7$1!-&"'*'%&&(*($   -  $%"!!"%!   !  "!               -    - -  -  - -   - -  -  -     - - -        -  -    - - -       -    - - - - - - - - - - - - - - - - - >7(;3%5, 4-!61&0+!*%)#("*$,%)#)#)$*$+&*%(#*$,&+%*%)$,&(#(#*$+%,&)#-'*$+$*$+%+%+&*$& (!( '( &!"$%*$)"%*$-&(".'.')"("(!)"+$( (#,')$(#(#(")"("*$' (!' %+$-'*$& ("*$%!#(")#("+%*$+%)#)!(!)!0) 4-#5.%6/%80&80&6.":2&;3':1%91$8/#70%70%92':2'92&:3':3'93&;4(81%70$92':2'92'4-!4-!70#;4(70#81%:3&91%6/#5-!80$;2&7."91%80$5-!91%=4(<4(:1%90$=3'=2';0%=4(=4(91%91%:3'91%;4'81$70#<5)<4(;3(<4)<4);3(;3(:3(:3(92(92';2&;2&90$6-!4+7.":1%7."5, 6.!8/#8.":0$6-!3*3+8/#:1%;2&8/#7.#7."5-!6."90%91%7.#7/#80%5.#6/$81%92'92&6.#5-"4,!5,!7/$4,!1(4,!4+!3+ 8/%80%6.$2+ 2* 5-"70%7/%6-#3+!3,"5/%3-$.)0* 3-#71'1) 0(2* /'.'0*!-'222///---'''&&&$%$$$$### ,&.'-&*#,%-&-&*$,%,&+$*$-'*$(!*#+$+$+$+$.'-')#(#'")%-(/*!-'-'.(-&/(.&,%-&0(0) /(.(+%0)/(*$*$-*(((('''((((((,,,///...---///.(/) 3-#0*!.(0*!5/%70'5/%80'70&5-$6.%4.$5/&5/&5/%50%4.#2+ 1)1)80$6."6-!80$8/#6."70$4, 4, 7/#90$5, 8.#:1%7."4+ 5, 6-!4, 3*3)5+ 3*3*3*2*4-!1)/'3, 3+/'/&2)4,!5-"80%7/$6-#6-"6-#5,!2(1'2)4+ 6-"6-!4+7.!8.!6, 4*3*1(2)6-";2':2'3,!3,!4,"5-#5.#6.$5.#6.$4-"5.#6/$5.#4-!80%:2'91&7.#2*3+ 3, 4-!5.#60%60&60%5.$4,!  ! !!! "# !" !"3,#4-$3-$1*!,$,%1*!2,"/(.(-',&/) 1+"1+"-'(!%(!,%)#(!&%& '!$%%&' ...---((('''&&&$$$%%%$$$### .&,$+#.&.&,%-&.&.',%,&.'-'-&-&*$+%("$%*#-&("%*#,&,&)#(!,%,%.'-&,$-%/&-%+$.&-&,%,$,%.&/'%$%&&&%%%&&&''''''+++2226665440(3*!3+!0(0'1)3*1)0'1(3*4+ 6-"4+ 2)4+8/$;2&8/$5, 4+ 3*4+ 7.#7.#7.#:1&7/$6.#6.#3, 5-"6.#6/#6/#81%81&6/$81&:3(6/$5.#81&81&5.#3+!4,!7.$8/%80%:1'8/$3+ 6.#81&80%81&;4):2(92':2(91'3,!4,!7.#7."4+4+ 5,!6/#5/"3, 6/#91&90%90%7.#3*4,!3+ 0)1)3+!6.#70%6.$0(,#0'4,!7.$90&6-#5,"8/$5,!0'0(5-"80%3,!.'0)4-"6/$6/$4,"0(0)5-"7/%5.#3+ 6.$80%5-#6/$5."3+ 7/$7/$1),$3+!4,"1)6/$80%3, 6/#;4(81%4-!7/$:2'3+ 2+60%:3(70%5.#1),%)#               -  -  -  -  - - -  -   -  -     - -  -    -  -  -   -  -    -  - -       - - - - - - - - - - - -     -  - - -  -  -             -     -  -          -     -   - I/ K1!L2#K1!Q6$O3!O2!I-G+L0M2!K0 H.E,A+;&5 24!8$;';&>)=):&9#:#;%9#=';%9#5"5#3"/ '&&)+'%'))(%" ! " $$!  "    !#  -    - -     -  -   -     - -    -  -  - -    -     -    - -  -       - -       - -   - - - - - - - - - - - - - - - - - - - - - -'''=6';3%5+0*0+!)$&"% !"! "! "! "% #!!#  ""  !"""!!  !   - -  !"  !      #+%/) 2+#5-%6/&6/%5.$:2'<4);3(7/#5."6/$70%91&:2'91&81%70$93&:3'70%60$92':3(92'6/#70#82%;4(6/#91%;4':3&92&80$:1&80$80$:1%90%6.";3&<4(:2&:1%:1%=3'=3':1%<3(=4);2&:2&:2&92%;4(6/#6/";4(:2&:1&;2'<4)<4);3):3(:3(:3(92';2&:1&90$7."6-!9/#:1%7."5, 7."7."7-"90$6-!2)3*8/$:1%;2'7."6."6."4, 5,!7/#7/$5-"6.#80%5."80%92&92&80%4-!3+ 4, 4+ 7/$5-"2*6-"4,!3* 8/%7/$5.#0)3,!5-"80%6.#4,"1)1) 3-#3-#.)/) 2,#5/%1) /(.&*")#,&,&222000+++'''&''%%%%%% -'.'+$*$,&-',&*$,&,&(!'!,%)")")"+#+$*#)"*$-&,&% )%+'.* .* +&,&-&,%+#-&-%-%0(1*!/'.'-&/(.',&+%+)''''(((((((((,,,///111,,,000.(/* 2-#2,#3-$2,#4.$5/%5.$70&6/&4-$6/%3-$3.$5/&5/%5/$3-"0)0)3+ 7/$7/#6.":1%7/#7/#80$3, 3+90%90$5,!7."9/$5, 2)5,!8/#5-!4+ 4*6,!5, 4+3*2*4-!0)/'3+2*0'0&3)6,!6-":1&90%6-"7.$7.%6-$2) 0&1(4+ 5,!5, 4+6, 6, 4*3)2(1(1(2*:2&80%4,"2* 6.$7/%6.#6.#3,!3,!2+ 3,!5.#4-"1*5.#92':2'8/$2*3*2+3- 4."5/$60&81'5.$7-& "!!#!!"!! ! ! 1* 2*!2+"2+#2,#/(*#,$2+!2+!/).'-'+%/) 3-$0*!.(*$& (!+%("("& & '!'!%%%%' ---,,-)))(((%%%$$$""""""""" -&-&)"-&,%-&/(.'0) ,&+%/) -'-',%*$,&*$%$*$+$'!%)#+%*$&' *#-&/(-&)",$/&.&-%-&-&-&,%,%-&0)%$%##"&&&((()))'''+++1117775440(3+"2*!/'/&0(4+ 2*1(1(2)6-!7.#5,!3*4+ 90$;2&7.#5, 5, 3*2)7.#7.#6-#80%6-"5-!5-"3, 4,!5-"5-"5.#81%81&6/$70%:2(70%4-"6.$7/%5-#4,!4,"6.$7.$7/$:1'6."3+ 6.#80%80&81&:3(92'92'70%70%6/$6."7/#8.#5, 4, 5-!70$6/#4-!6/#80%8/$8/$6-"3+ 4-!4,!0(2* 5-#70%81&5-"3+ -$0'4+!5-"8/%7.$6-#90%6-"0'0'4,!7/$4-"-&0)5.#6/$5.#5-$2+!2* 6.$7/$5-"2* 6.#80&5-"3,!5-"3+ 5-#6.$0),$4,"6.#2* 7/$7/$3+5."92&7/#3+7/$91&4,!3, 70%80&6/#4-"0),%("!                     -  -  -  -  -  -         -  - - -       -  -  - - -  -  - - -       -                            - - -   - -  - I/ K0 L1"J0!O6%L3!I/H-H-H.N3"K1!J0 F.C,?)7"138#:%<(>(;'?+=(=&7 ;%<&='=(;&6"4"2!-,)&()*()**''$!  -   #"""          -                       -      -  -           -       -  - -      - -        - -  - - - - - - - -&%&60&3-#.&)#%       - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - -""" $("-( 1+#3-$1* 6.$91'91&8/$4,!5.#7/$81%92&70$70$6/#81$92&70$81$;4(:3'92'92&92%:3&<5)70#7/#:3';3'91%:2&<4(;2':2&:1%7/#70$;3'<4(:1%90$90$;2&<2':0%;2'=4(;3';3'92&:3&<5)5."6/";3'92&91&:1&<4)=5+=5*92'91':3(:3(:2':1&:1&8/#7-!:0%<2&8/#6,!7-!7-!7."90$5, 0'3*7/$90&;2(8/%5,!4+ 3*5-!80$6.#4,!5-"80%4-"6/$80%70%91&6.#5-"4+ 0(4,!6-"3* 4+!3*3*7.$6.#5.#/(5-#3,!5-"3+ 2*0(1) 3,#3-$0* .(3-#3-#0)0)/',$+$,&222111---****++'''&&&%%%!!!.'.'*#("*$-&+%)#,%+$'!(",&+%(")")"+$*#,&(!*$+%'"&"(#+&,','-(+%+$-&.',%*#.&/(,%.'.'.'.',%+%)'&'''(((((('''+++...333***111.(0* 2-#0*!.)0*!2,"2-#3-#6/%6.%3,"6/%60&3-#60&70'5/%1+ .'0(5-"6/#5-"6-"80$90%:1&80$4-!3, :1&7/#5,!6-"8.#4*1(6-!8/$6-!5,!4+6-!5,!5, 3+3+6."1*0(4+ 3*1(0'3*4+ 5,!:0&8/$7.$7.$7.$5,#2(0&1(4+4+ 4+3*3*5, 4+3)2(0&0'.%7.%6/$4,"2*6.$80&5-#5-#3+!4,!3+ 3,!4-"3, .'2*7/$:2'80%1)1)3, 3, 4."60&60&60&6/% "! "! ! ! !2* 0(1)2+ 1*!2+!2,#3,#0) *"+#1* 0)/(.(,%*#/) 2,#1+!-&,%(!(!,%("+%(")#*$("& &' & ' ..-,,,)))'''%%%""""""###""" .'+$*#*#,%,&/) -&0)!+%*$/) -&.(+%*$,&+%& & ,%*#' &("+%,&(!' +#-&.'+$',#-%,$,$-%.&/(-&(!,%0(%$%$%%'''))))))''',,,222888444/'2*!0(-&,%0'1(4+!2)1(3*5-!7."5,!3*5,!:1%;2&6-!4+ 5,!4+4+ 8/$5,!7.#80$5,!5-"6.#5."5-"5-"4-!4-"7/$7/$4-"5-#81&81&5.#5.#5.#4,"3,!3+!6.#7/$7.$8/%5-"2+ 5."80%81&81&:2(81&92'81&6/$6.#7/$80%7.#6-!4+ 5-!81%6/#4-!6/#80%8/$8/$5,!2+4-"5-"2*3+!3+!80%80%5.#2* -$0(4+!4+!5-#6-#6-#7.#7.$1(/'3+!70%6.$-%.'4-"6/$5.#5-#2+!2*6.$7/$5-#2* 5-#80%4-"1*5.#2* 4,"7/$1*,$4,"5.#3+!80%7/$2+5.":2&6."1)5-"6.#2*2* 7/%7/%4,"3+ /'*#'    -               vvvutu       -  -          -        -  - - -                                   - - - -   - - -  - J0 J0 K1!I0!M5$J2!H0F.D,E-C+H/ H/G.C,?*;&4 25!:'>)<'=(<'=(<&9#6 8!=%=&;&;'6#10 /!,**)'(*,*++($# # # " %# !"           -  -   -  -      - -        - -        -  - -                 - - -        - -   - - - - - - - - - - ))()((((((((''((()(()''(&&'%%&%%%$$$$$$###### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -"""")$-( -'0*"70'71(6/%3,"4-#6/%92'92'6/#7/#70$81$81%92&92&;4(;4(92&82%92%:3&;4(92%81$91%:2&:2&:2&<4(;3(90%91%80$7/#91%<4(;2&7/#6-!;2&;1&:1%;2'<3(:2&:2&:2&;3'<5)5/"60#;4(;3';2':2&;3(=5*<4*92'92':3(:3(;3(;3'<2'90$7-":0%;1&8/#7."7."6-!7."90$5, 0'2)7.$:1':1'7.$5,"5,!5,!8/#:2&80$4,!5-#70&5/#6/$92'92':3'5.#4,!3+ /'3+ 4,!4+ 4+ 1(2)7.$6.$3+ /(3,!4,"4,!4+!2* 0)3,"5.$4/%0+!2,"60&4.#0)/(/(,%+$,%111111---((('((%&%&&&$$$!!!+$,%*$*$*#,&+%("+$*$'!(",&*#& %&+$-')#& *$*$)$(#)%%!-) ,'.) ,&(!*#+$*#(!+$-&-%.'-'*$,&-&,&'&%(((((('''&&&***///333+++000-'.(.(/)0+!0+!0*!1+!2,"5.$4-$1) 5-$5/%3,#60'60'60&2,"/)1*6/$6/#4,!6-"8/$8/#7/#7/#3+3+91%8/$5,!7.#8/$6-"6-"90%90%6."7.#6,!7-"5,!5,!3+4, 7/#2+1*4, 3*1(0'4*5,!6-"7.#7."6-#7.$6,#5,#2) 1(2)3*4+2)3*5, 5+ 4*2(1&1'1(-%3+"5/%3,!1*4-!4-!2* 4,"6.#5-#4,!4,!5-"3+ /(3, 80%:2'80%3*2*3, 4- 3-!60%71'60&5-$ "! 3+!3+ 2*1)2* 2+!1*!1+"2,$3-%0) )!)".'0) .(.(,&*$/(0*!0* .'-&*#)",%*#+%)#*#)#+%+%("'!& (!...,++((((((%%%"""###$$$###.'+$+$+$,%,%,&*$/( +$,&.'+%,&)#("*$)$$& *$)#%#' *$+$(!&)"+$+$+#)",$,#*"+#-%.'/(-&)",%/(-&%&%'''(((''''''+++011666222.&0) /(,%-&/&/&0'0'/'1)5,!7.#5-!3+5-!91%;2'7/#5-!5-!4+ 6-"6."6-"8/$80%5-"7/$6.#4,!3+ 3+ 3, 3,!5.#5.#3,!5.#92':2(81&81&6/$4,"2+ 2* 5,"5-#7.$:1&6/#3+ 6.#81&70%6/$92';3)92'81&5.#5."70%6.#6-!6,!3*5-!70$5."3, 6.#80%80%7/$5-"2*4,!2+ 0(3+!2*80%80&70%3* ,#0'3* 4+!4+!3* 4+!6-#7.$3* 0(3+ 81&70%.'.'4,"70%7/%5.$3+!2* 7/$80%6.$3+ 6.$80%5-#2*5-#3+ 4,"6/$1)+#2* 3+!3+!91&80$3, 6/";3'6/#2+6.#7.#2)1)4,!6-#5-"3+!0(*"&                     jjjllliiiiiiiiieeeiiigefkijomn               -     -  -   -  -                                   - - - -  - -  -   J0 K0 K1 I0 I1!I1 F.C+C,E-G0!D,D-D-C,@*;&6"5!47#;'=(@+!;&:%;&='418"<$<%8!4 3 1...!+((%%%(++,)" " &%###"!" -                            - - - - - -  -     -   - - - -  -       - - -   -   -  -      -  -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ###  #*$1+#2,$3,#3,"4,"3,"7/%80%5."6."7/#:2&;4(80$81%<4(;2':1&60#81$93&:3&81%92%;4(92%92%5.!;4(=5)91%7.#80$6/#7/#;3';3'7."6.";2&:1&:1%;2';2'90%91%:2&:3';4(70#70$;4(<4)<4(:2&:2&;3(;3(:3(;3):3(:2';3(;3(<3(90$7-!90$:0%7-"8."8.#6,!6-!8/#6-"1)2*7/$;2'90&6-#5,"4+ 4+ 6-!91%80$4,!6/%80&60%60$92':3(:3'4-!4-!2*/'3, 3+!4+!3+!2) 4+!6-#4,"5-"2,!3+!2+!4,"4,"3+!1* 3,"5.$4.%1+!0* 3-#4-#1).&0)-%)#-&000000+++(((&''&'''''%%% *#)#("("'!*$+%)#+%,&(")#,&*$'!$&&.(.()#,&,')$($'"% .)!%,&*$%( )")!(!*#,%+%.(.(-',&+%)#*$((()))'''''')))///222+++...+%+%,&-(/* 0* 1+"1+"2,"4.%3-#.'3,#5/&4-$60'4.%4.$1,!/)2,!4-"3,!5-"5,!7/#7/#70$80$3+1*80$7/#4+ 6."8/$6-"8/#:1&90%4, 4+ 6,!7-"5, 5,!4+ 4-!7/#4-!3, 6-"4+ 2)2(5+ 5, 90%8/$8/#5,"6-#3*!4+"3*!2)0'2)4+ 0'1)4+5, 6,!3)/%/&.%-%2+!5.$2+ 1)3, 2*1*4,!5-"4,!3+ 4,!6.#4,!1*4, 70$:2&91%3+ 2+4- 0)0*6/$81&60%7*! !!! !!!!!! "! 0+!2,"3,!2* 1(0(1(2*2*!1*!1+"2,$3-$1) )")!.&1+!/(.(-'+%/)0) 0* .(,%*#)"+$)"*$)")#("+%,&)#(!& *#...,**((((((%%%"""###$$$###.(-&*$,%*#,%,&-'0*!+$,&,&*$)$)#&!+%(#%& '!)"%#&)"*#' &*#-&+$,$+#+"+"+"+#-%.'.&+#)!+$-&-%&&&""!'''(((&&&(((...444111.&0(/(-&.&/'1)1)1(0(2)5-!8/$6-!2)5-!:1&:2&6."5-!6-"4, 5-!6."80$80%7/$5-"7/$6-"5,!4, 4+ 5,!6-!6."5.#4-"6/$92'91'80&81&70%4-"0)1)5-#5,"6-#91&6.#3+ 6.#81&81&80&:2(92(81'70%5-"5-"70$5-"7-"5, 3+5-!70#4.!2,6.#70%8/$7.#4,!2*4-!0).&2+ 3,!81&:2'70%3* ,#0'3* 3+!3* 2)3* 5,"5,#3* /'3+!:2(70%.'-&3,!70%80%5-#1)0)5-"7/$5-"1)5-"70%6.$2*4,!3+!4,!6.#3+ +$0(4,"4-"81&80%4, 6.":3'7/#4,!7.#8/$2*0)4,!5-#4,!1(0'+$'!!                 efgeee[[[^^^]]]\\\\\\XXX]^]]_^[\[a_`dbd                -  -        -  -  -                           - - - - - -  - - -    K1!K0 K0 I0 H0 H/ F.D,@(@)D-D. B,B,A+A+<'9$6"8#6"6#:&;&=(>*:%:$6 348#:$;%:$6!0.,*+)'#"$&'**+%! -# (%%$$!! !"    -    -   #   -      -     -        -            -            - -   -     - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - -       - -        - - - - - - - - - - - - - - - - % (#,&1+"3-$5/%81(92(7/%5.#6.#91&92&80$81$;3'91%:2&5.!5."82%:3':3&:3&<5(81$91%81$=5);4(70$7/#92&7/#6.":2&<3'90$90$;2&;2&91%:1&;2&90%81%91%92&:3'81%70#:3'<5)<3(91%90%:2';3(92':3(;3):3(;3(;3(;2'90$6-!8/#9/$6,!6-!6-"5,!6-!6.#5-"2)3*7/$90&7.$6-#6-#5,!5, 5,!80$6."3,"5-$7/%5.#5.#70%81&92&3, 3+ 3,!1)4-"5,"5,"4+!1)4+!4,"3+ 3+!3-"3+!4-#5.#4.#4-#2+!3,"5.$3,"2+!1*!6.%70'1* ,%0).&+$.'///000+++((('(''''(((###+$("' ("& (")#'!("*$("("+$*#("$%*$.(.) +%,&,')$(##*%.)!+%,&("%("+$)#(")#*$)#*$+%,&*$*$(")#.+()))((('''(((...111,,,,,,("(",&-(/)0*!0+!0*!2,#5/&4.$/)4.$60&4.$60&60&4.$0* -'2,!3-"3,!5."6.#7.#6-"80$91%4-!2*80$7."6-"7.#7.#5-!8/$8/$8/$3+2*5+ 6-"4+ 4, 4+ 4-!6."4, 3+5-!3+2)4*6,!5,!8/#90%90%7.$7.$6-$5,#4+"2)-$2)5, /'0'2*5, 4+ 2(/%0'1(.&1* 3-"1* 0)3, 2+2* 5-#6.#5-"4,!4,!6.#5."3+ 3, 81%:3&81$3+2+4-!0*0)5/"60$50$ """###  !!!!!!""""""!  5/%3-#1+!3,"3,!2* 0(0'0(1)1) 0) 1*"2+$2,$1) *"(!.'2,"/).(.(,&0* 0*!2+"0)+$)")"+%*#+%*$*$*$,'+%("'!' +%...,)()))((($$$"""###&&&%%%.(,%*$,%)",&+$+%.(("+%+%'")#)#&!+&)#& '!("& $"%' )"%$)",%*#+$(!*!+",$,$-%-%,$,%*#*"-&-%'&'%&%((()))''''((,,,121222222.&/'.&/'0'3*2)0(1(3*5-"7/$5-!2)4,!91&:2&6."6."6."3+4-!6.#80$80%7/$5-"6.#5-"3+ 3+5, 6-"6-!7."7/$5.#7/%92'70%6/$70%70%5-"1)1(6-#6-#6-#8/%6.#5-!6.#70%81&70&80&91(81&6/$4-"5-"80%6.#7-!5+ 4+ 4-!70$4.!3, 7/$80%80$7.#4,!1)4,!1).&0)3+ 6.$80&7/%3+!-$0'3* 3+!3* 1(2)4*!5,#3+!-%1*92'7/%.'-&3,!80%80&4-"/'0(5-"7/$5.#/'2*80%80%2+ 3+ 2+ 4,!6.#3,!+#.&3,!4-"81&70$3, 5-!:2&:1%6-"4,!6.#3+ 0)3+!5-#6-#3* .&+#)#!                 ^_`Z[\XXXUUUSSSSSSRRRPPPNNNQQQRSRTSSSQRTST[Z\         -        -   -  -  -  -  -      -  -  -  -                         - - - - - -   - - -    J0!K0 K0 I0F-H0!F.D,B+A*>'A*C,A+?)>(<'8#6"5 8$8$7#:%;&9$:%;%8"40 7";&<(9%9#7#2/-*%%#! $&'&%#  -$&'#$##!     -          - -      -   - - -     - - -     -     -    -     -       - - - -       - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -                                    - - - - - - - - - - - - - - - - - - - - - -!!! )$-'2,#3,#5.$4-#4-"5.#6/$6/#6."7/#:2&<3(=5)5."4-!92&;4(:3':3&;4(6/#91%6/";4'92&70$81%:3&70#7/#;2&<4(;2';2&<3(;2':1&:2&;3'91%91%92&81&92&81%6/#:2&<4(;3'91%90%:2';3(91'91';3);3(;2';2':1&80$6-!7-!8/#6, 4+4+5,!6.#6-"4+ 2)3*6-#7.$6-$7-$7.$5,!2)5,!7."5-"3+!2+!5.$4-"4."6/$70%92&3, 1*4-!3+ 4-"4+!3+ 3+!3* 4+!6-#3+!4,"5.#1* 4-#6/%5.$2+!1* 3,"3,"2+!0)1* 6/%5.%-&,%1* -&+$.'+++//.+++(((()(''''(("""(!+$*$(")#'!(")#'!'!)#("'!(")")###,&.) ,&+&*$*$(#)$*%'"+&-&-&+%(")#,%)#("(#*$)#)$'!*$& '"(#)#+)'***)))***)))...000---+++' )#-',&.(1,"1+"0+!3,#5/%3-$0) 5.$6/%4.$60&60&3-#1+!.)1+!5/$70%7/$7/$7.#6.#91%91%4, 6."70$5."5.!91%90%5-!7.#7."6-!3*2)5, 7."5+ 4, 3*4, 5-!4, 3*5,!2)1(5+ 5+ 5,!7."90%90%8/%8/%7-$4+"4+"3*.%2)2).%.&2)4*3)2'1'/&2) 3+!5.$70%4-!2+ 5."6.#4,!5.#5."4-!4,!3+ 5."6.#4-!2*91%;4'91%3, 3, 4.!3, 1*4.!60$60$ """""" !!!!!! +$3-#4/%2,#1,!1* 1*2)1)0(0'0(0)0) 1+"1+$1+$0()!' .'3,"/)/)/),&0) 0) 1*!/(,%)"(!+$+$+$+$*%+%-',%)"'!'!,%.--+'&%%%&&&$$$"""$$$(((%%%0*!-'+%+%'!+$+$)#,%)#)#'!& % )#% )$&!#& )#'!#$%' ' ##' *")"+#)!+"+",$,$,%,$*",$' (!,$.&&%&&'&((((((&&&(((+++000011111/'/(/(/'0'2)1(0'0'2*5-"6."4+ 2)4,!90%:2'6.#6.#5-!3*5-!6/#7/$7/#7/#5-"6.#4+ 2)3*5,!7."6.!7/"70%5.#81&:3(70%6/$70%7/%5,"0(1(5,"6,"7-#9/%7.#4,!7/#80&70%81&82&92'92'70%4,!4-"80%6.#5, 4+3+3, 70#3- 3, 7/$91%90%7/$5-"0)3,!1)-&1)3+!4-"5.#5.#3+ .%/'3+!4+!4+!2*1(3* 5,#3+!-%0)81'6/$-&,%2+ 70%80%3+!.&/'4,!6.$6.#.'/'80&80&3+ 2* 3+ 3,!5.#4,".&.'3,!4-"70%7/#3+3+:2&:2&6."3+ 6-"4+ 1)4,"5,"6-#2* .&+$*$"               - -WXYRSTPPROOPLLLKKKKKKKKKJJJJJJJKKIKKIKLKJJKJKOOPSST                   -  - -   -     -  - - -  - -                             - - - - -   - - -   I0!K1!K0 J0E,F- F- A)@(B+A*?)>(@+?*=(;%9$7"6#5"8$:&9%9$:%:%7!6 7!25 9$;';'9&26!1-0 ,%!   !$$$$   ##&'%%$$    - - -     - -  -           -  -          - -              - - -       - - -      - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - -                             - - - - - - - - - - - - - - - - - - - - - -###")$+'0+#0+#0+"4-$4.#5.#5."7/$80$;3'80%5.#5-"92';4(:3':3&:3&6/#81%70$<4(:3&81%91%92&70$80$91%91%:1%:1%;2&:2&:1%91%91%91%:2&:2'81%81&70$5."91%<4(<3(80$:1%91&:2'91&81&92':2':1&:1&91&90$6-!7-!9/#6, 3)2)5,!7.#6.#4,!3*3*5-"7.$6-$6-#6-#4+ 1(5-!7.#7/$3+!3,"6/%5.$4-#70%70%91&3,!2*4-!4,!5-"3+ 1)2* 4+"2)7.$4,"3,!4-#4-"4.#5.$5.$2+ 1* 2+!2,!2+!0)1) 5.$70&1* .'0).(,%.'///--,)))))))))(((''' )#+%)$)#+%(#)#'!'!("'!'!'!'!(!*$$$)#,',&,'.((#% )$*%'"+%+%)#& '!)#*$("'!)#+%)$)#+%)#'"'"&!)$)'&***)))***))),,,//////***,,,,&.(,&.)1,"0+!/) 1+"3.$3-$1+"5/%5.$3-#4.$4/%4.$1+"1+!3-"3-#6/$6/$7/$7.#5-!81%6/#3+5."70$4-!3, :2&:2&6-"6."7/#6-!4+3*6-"7.#6-"3+3+5,!6."5-!5,!6-"3+2)5,!5+ 5,!6-"8/$90%7.#7.$6-#2) 4+"3*1(2)/&,#.%1(1(1'0&2(0&1(2* 5.#70%4-"1*6.#6/$6.#6/#6.#4-"4,!4,!80%7/$4,!0)80$;4'92%3+3, 4-!4- 1+5."71%6)! !!!  1* 4.#/(-&3,"4.$3-#2,"0)1*2*2*0'/&/'0(1* 2+#1+#0*"/')!( /(1*!.'.'.).(1+"1*!1*!.',%)"(!*#*$+%+%*%*$-',&*$' ' +%-,,*&$"""%%%%%%###%%%((("""*#*$& & )#'!*$'!'!*$'!("("("'!)##("&!##'!(!!!%&% !&)")"(!*")!(!*"+#,$,$+#+#)!( *",$+#&&&(((((('''(((***000111///0) .'/(/(2)3*0(/&/'2*5-"6-"3+ 2)5,!90%:1&6.#6-"5-!3+ 4-!6/$6/$6.#6.#4+!4+!3*2)3+5, 6-"7."8/#6/$3,!70%:3(70%6/$70%6/$2+ /&0'3* 4+!6-#90%7.#3+ 7/#81&70%81&82'82'82&70%4-!4-"7/$6/#5, 3+3*3+6."5-!4, 70$80$80$70$6."1)3, 2+ .'0)2+ 3+ 4,"6.$4+!0'0'4,!3+ 3+ 2* 2(2) 4+"3* .&1* 80&6/$.&,%2+ 80&80%3+!.'/'3+!6.$5-#.'-%6/$6.$1*1*3+!4,!5-"4-".'.'2+ 3,!7/$70$2+1*91%:2&6."3+ 6.#3+ 1)3+!4,"5-#2) .&+$)#!             - - -OOPLLMIJJHHHFFFFFFEEEDDDCCCBBBBBBBCCABCBCDFEEDDDEEEIIIMMM              -  -  -   -      -  -  - - - - -      -                - -    - - - -    - - -   H0"J0!K0 J0J1%G.!F-!F-!A)>&A*A*>)>)?* =*9%7!6!5"6#5$5#:%:%9$7"8#9#416!7":&<(;(9&3"02 -**%$    !##"  -!!&"'%"""#  -             -          - -  - -          - - -   -    - -    - -    -  - -  - -  -  - - - - -  - - - - - - - - - - - - - - - -                     - - - - - - - - - - - - - - - -!! !$ (#+%0*!0* 2+!3,!4,!4,!91&80%5.#5.$91':3)81&;4(92&6/#6/#81%:3';3':2&:2&:2&80$80$81$80$91%:1%:2&;2'91%90%80$80$92&:2&70%80&70$6/#:3'<4(;3'7/#:1%:2':2'81&70$70%81%90%:1&:1&90$4+5,!6-!6-!3*3)5, 7/#7/$6."3+ 2*5,"7/%7.%6-#6-"2)1(2*8/$5-"3+"3,#6/%5.$4-#60%70&80%4,!2+ 4-!5-"6.#5-"3* 3* 4+"3* 4,"3+!4,"3,"4-#5.$5.$3-"3,"2+!3,"4-#2+!/)0) 5.$4-$.'/(1+ .(,&.(0//,,,)))((()))())&&& *%*%)#(#*$("("'!'!'!("'!& & &("%%(#)$(#)$)$&!$% )$(#)#)#& "& )#+%)#% '!)$)#("*%("'!(#)#($'&%))))))))))))+++...000(((,,,,&-'-'.(/*!0+!/) 0*!3-$2,#0) 3-#4-#4.$60&5/%5/%2,"4/%4.$3-#60%6/$6.#7/#6.#81%4-!2*5-!6/#4-!4-!:3'91%5-!6."7.#6-!4+4+ 7."6-!5-!4+ 2*6-"7/#6."5-!6."4+ 3*4+ 4+ 5,!6-"7.#6-"5,"5,#4+"1(4+!4+ 3*4+/&-$/&0'1'1'/%0&1(1)2* 5.#81&4-"0)4,!6.#6.#7/#8/$6.#5-"4,!70%7/$4,!1)7/#:3'81%2*2+4-!3- 1+5.#70%!!! 0)+$.'2+!/(,&2+!4.$3-#1+!/)1+ 2+ 2*/'.&/'/(0) 2+#2,#0*!.&( )!0)2+!.'.'-(-(2+"1+!0) -'+$(!(!)#*$+%+%*$)$-'+%*#'!'!*#,++*&$"""&&&&&&%%%&&&(((!!!)#,%)#(!*$'!("' ("*$%%& %)#'"& (#&!""%&  !%& $ %%'!' ' '( )!*"*",$,$*#(!'*"+#+"&&&""!'''((()))***000222./.0)-&/(0)3+ 3*/'/'1)3*5,!6.#5-!3+ 5-":1&90%5-"5-"5-"3+ 4,!6.#5-"5-"5.#3+!4+!3*2*3+ 4+ 6-"8/#80$6.$3,!5/$92'71&6/$70%5.#2* /'0'3* 5+!7-#90&7.#3+ 6/#91&70%71%82'82'92'81&5."5-"7/$7/$5-"3+ 2*3+90%5-!6.#7/#80$70$70$6/"2+2+2+ /(.'1*4,!5.$6.$2* /'/'3+!3+!3* 1(1(3*!6-#3+!.&1)6/%6.$-&+$1*91&91&5-"0(0(3+!7/%6.$/(-%4-#6.$1) 2* 3+!3+!3,"4,".&/'2+ 2+ 70$92&2+0(7/#91%5,!3+ 7.#2)0(2*!5,#6.$3+!.'+$&        -          -GGGCCCBBB@@@??????>>>>>>>>>===;;;<=====>>>>>>>>>===AAACCC        -              -         -  -       -                - - - - - - -  -  - - - -   - H0"I0!K0 J0F-G.!E, C*B*D,?)A+A+?)<(>* 9&5"4 43!4"6$5#8%8$:%8#6!7!515 9$<(<(9'5$6%1 ./*% # $"  !$$!   !$""!$ "!#   -               - -     -      -   -   - -      -    -     -   - - - -    - - -  - -  - - - - - - - - - - - -                              - - - - - - - - - - $$#"(#+&/) 3,"0)2+!6.$7/$4-#5.$81':3)80&;4)92&6.#5."81%92&;4':3';4(;4(70#7/#81$81$91%:1%:2&:2&80$80$81%6/#80$92&7/%80&70%7/$;3'<4(:1%80$:2&:2&91&70%6/$70%80%90%:1&:1&8/$4+4+3*4, 6,!5,!5,!6."7/$7.#3+ 2* 6-$91'7/%5-#4,!2*/'2*5."4-"3+"3+"6/%4.$5.$5.$6/%80%5."2+ 4-!4,!4,!5,"2* 2)2)3*!3+!4,"3+!2+!3+!4-#4-#2+!2+!0) 1*!2,"0).'/(4-$4-#/(.'0).'+%///00/+++((((((((()))%%% ("("'"(")#& & &!% &!'!%#%$& &!#&!(#(#'#'"'"$ % $&"'"(#% #$&!)$*%% (#'"'")#*$'"(")$)$*%%$$(((((((((***,,,...///&&&++++%+%,','/* 2-#/* /) 3.$2,#/) 3-#5.%3-#60&50&3.$3.$50&4/%1+!5.$6/$5.#7/$6.#5-!3+2+6."6/"3, 3, 81$70$5."7/#7/#5,!3*5, 7.#5, 4+ 3*1(5, 7/#7."6-!6-"4+ 2)4+4+ 5, 6-"8/#7.#6-"5,#4*!2( 4*!4+!4+ 5, 1)0'1(1(1(1'0&0&1(2)3+!5.#82'2+ 0)2*5-"6-"6.#8/$6.#5-"3+ 6.#7/$4,!2*6.#91&80%1*2+4-"3, 0*4-!5.#!!! .'/(3,"1+ +$-&2+ /(.'3,"3-#1+!0+!1*!3-"3+ 1)/'-%.&0(0* 0*!2,"1+".%( *#0) 1*!-'-&,&,'.).) .(-')#' ' *#*$*#("'"(".(+%*#)"(!("++**&$$$$&&&''''''%%%'''(!)#& $)#& '!& & '!$$$& & ("(#(#'"$#$$ "& ("$$%%'!%%&(!)")"*#*#+#)!')",$*!'&'%&%'''(((((()))-.-232122000.'/(0)0(1).&0(2*4, 4,!5-"4, 2*5-":2'8/$5-"5-"4,!2*3, 6.#5."6.#6.$4,"4,"3* 1)3*3+5-!8/#80$70%4-"5.#71&71%6/$6/$5.#2+ 0(1(3* 4+!7-#80%6."2*6.$81&70%60%71&82'92'81&4-"4-"7/$6.#4,!2*1)6-"7/#5-"3+ 5-"7/$80%70$7/$3, 2+ 1*/(/(1*3+!6.$6/%1* -%.&3+!4+"3+!1(0(1)4,"2*!.&0(5-#5-#-&*"0(70%7/%4,"/'/'2* 6.%6.$0(.&4,"7/%2* 1)2* 0(3+!3,".'/(3+!2+6/$70$1)/(6/#80$3+2*7.#3+ 0)2* 5,#6-#3+!.&+$%                -AA@>>>==<;;:::::::999888888888777555777788999777888888999;;;><<                                                   - - - -   - - - - -  - -    - H0!J0 J0F.E-E-C*?'<%>'@*C- C-!>)<(8%3 12 3!3!5#6$6#6"8$8$9$8"4457#:&<(=*;(4"2!1!-+(& % $ !  #'$     #$$$"!  -!%!    -               -      -      -      - -                    -   -    - -   -  - - - - - - - - - - - - - - - - - - - - -                       - - - - - - - - - ###"("+$+$2+!4-#3,!1* 2+"70&92)5.$80&81&6/#70$92&;4(<5(:2&;3'<4(6/"5.!70#80$80$80$91%91%70#70$70$6/#80$81%6.$7/%5.#5.";4'<4(;2&90$:2&91%80%80%80%80&81&91&91&91&8/#5, 4+ 4+5,!4+ 3*4, 6-"5-"4,!2* 2*3+!6-$6-$4+!2* 3*-$2+4- 5.#1* 2*!4-$4-#5.$6/%70&70%4-"2+ 4-!2+ 2*3+ 2)2)2)1)0'3+"2+!1* 2+!3,"4-#3,"1* 0)0) 1*!.',%/(4-#1*!-&-&.(-&+%...//.++*(((''''''((($$$ )#*$& &!'"% '!$$% $"!%#)#&!"$(#'"&"'"#%!'"&!% &!% ##% #&!'"$#)$(#(#'!("'"(#'"(#'#'''(((''')))+++---///(((+++*$*%,','/* 3.$/).(3-$0+!.'3,"5.$2,"4.$4/%2,"1,"3.$3.$0+ 4.$6/$5-#6.#4,!6."5-!4-!6/"4.!3, 4- 6/#6/"6/#81%80$6-!3*5,!8/#7."4+3*2)5,!8/#6-"5,!7."3*1(2)4+ 6-!6."7.#5,"5,"5,"4+"2) 4+!5,"5,!5,!2)/'0'1(3)2(/%1(2)2)2* 4-"81&4,"0(2+ 5-"6-"7.#8/$7/#5-"3,!6.#6.#3, 2*5-"81%80%2*2+5.#3, 0*3, 6)!!!! 2,!0*.'0)4-#3,".'/)3-"/(.'4.#4.$1+"0* 1* 3,!2*/(.&.&/(0) /)/) 1+"1*"-%)!,$1* 1* .'-'+&-'/* /* -(-')#( &*#+$+%*$)#(#/) ,&)#("'!)"**)(''%%%%%%&&&'''######'!)#%#("& '!'!& ("%#$%$'"(#*%&!##$# !$$! !%%$#$%' &%)")"*#(!&)!+#*!&%&&&&'''))))))'((+++121343000/(0*2+ 1)0(-%/'2*3+ 4,!4-!2*1)3, 91&80%7/$5-"4,!1)3+ 5-"5.#7/%6.#3,!4,!2)0(2*3*5, 7."7/#70%5/#5/$82&81&5.#5/$6.$4-"2+ 2*4+!5+!6-#7/$5-"1*5-#81&70%70%60&71'92'5/$2+ 4,!6.#5-"4,!0'2*5-"7/#5-"2+ 5-"80%81%6.#6.#4,!3, 2* 0)0(0)1)5-#5.$3+!.&-%3+!3+!2) 1(/'0(3+!2* /'0(4-#6.$/')"/'5-#5-#3,"/(.'2* 6/%6.$0).&4,"7/%2* 0)2* 0(4,"4,".'/(3+!1)5-"3, .'-&5-!6."1)1)6-"4,!0)1) 4,"4,"1) -&*#& !              - -987776665554554444333222222333222111222111222///222222333444655                  -                                -  - - -   - -     - -   J0 J/H/ F.E-E-C+>&:#:$A+D.!A,!<(9%4!0104#6$7%7%8%6"7$6#9$8"425 8$8$6#6$7&4#..,($ # " -$ " " )'%"  !&&##!       -   !!      - -  - -        -  - -        -       -                   -      -   -  - - - - - - - - - - - - - -                             - - - - - - !! !*%/*$.) -'/)3-#70'3,"5.#70%6/#80%81%<4(;4(91%:3'<4(6/"5-!6/"6/#7/#7/#70$80$6/#6/#70#7/#7/#6/#6.$6/$3,!3, ;3'=5)=5)91%91%81%81%91&81&70%80&80&80%8/$6."5,!4+4+6-!5,!3*2)3+ 3,!3+ 1*2* 4,"6-#5-#4+!5,"4+ .&2+5."4-"1) 2+!4-$3,#3-#6/%81'81'5.#4,!4,!2* 2* 2* 2)2)2)2) 1)3+!1* 1*2+!3,"3,"3-#2+!0) 0) 0)*#+$/(4-#1*!+%-&-',&+%+++..-***((('''&&&'''#$# & )#& #$ "&!"$$#! ""&!! $ (#'"(#$ '" &!&!&!$$$#!% #$&"'"&!("& '"&!&"'"($(#''')))(((***,,,---...)))+++*$+%+%.( /*!1+".(/* 2,#0*!/) 2+"3,#4-#5/%4.$1,"/* 2-#4.$1,!5.$4.#4,"6.#6."80$7/#5."5."4-!3- 4-!5."4-!4-!7/#7.#5-!4+ 4, 6."7.#3*3*3*5,!8/#5,!5, 6-!2)0'2)4+5,!6-"7."6-"6-#5,#5,#3) 4*!5,"5,!4+ 0'-$0'3*2(0&2'2(3* 4,!3+ 2+ 6/$2+ 0)2+ 5-"6-"6.#80%5-"8/$4,!7/$6.#2+0)5."81%70$4-"3+ 5-"3, 1*3, !!!!!!   3,"4-$4-#1*!.'/(4-#2+!.'2+!5.$.'-&4-#1+!0*!0* /)1*0).',%-&.'.&-'0*!1+"1*!/'(!+$0)0) .'-'-','.(0*!-',&)$( ( +$+$*#)#)#(".(,&*%("(!*#))('''&&&$$$$$$#########'!)#'!$("&!% $'!& "#%$$$% %!!!"% " #" !!#$##$$$"#'!)#*#(!'*",$*"( &&&%%%((()))())*+*/00232000.'/(1*2)0(.&.&1)3+ 5-#4-"1*0)3+ 80%7/$5-"5-"4,!2*3+ 4,!3+!5.#4-"3+!3+!1(0'1)4+6-"6-!6."6/$6/$60%92'81&5.#5/$5.#5-#3,!3* 5,"6-#6-#7/#4,!0(4,"81&71&70&60&71&82'5.#2+ 4,!5.#5-"3+ 1)2*5-"7/$4-!3, 6.#80%80%5-"6.#4,!2+ 2* 1*0)/(/(4-#6.$4,"0(,$1) 3+!2* 1(.&/'2* 2+!0(0(4,"4,"-&)!/'4-#5-#4,"/'-%1)5.$5-#0(.&4,"7/%1)0(2)1)4+!4,".&/(2*0)5-"4,!/'.&4, 5,!0(1)4+ 3* 0(1)3,"3+!0(.&)##               -1100////.//.//....---------...---------,,,-,-)))+++,,,......///                     ʡ{|z||{}}|                    - -  - -    - -         -I/ J/C*F.F.E-E.D-@(:$>(C-?);'9&6#3 3!7%3"3!6%8'8&9&7$8%8$:&6!334 7#7$5#4"0/-,+(" -" -"  " ')&$!   "&$!!  -   #  -  - -  !!!!            -    -                               - -            - -  - - - - - - - - - - - - - - - - - - - - -        - - - - - - - - - - - - "! $!'#(#+&0* 3-#3-#4.#6/%6/$5."81%;3'<3(7/#:2&:3'6."5-!6/#6/#70#70#70$6."5-!7/#81%7/#6/#6.#6.$6/%3,!4-!:3'=5)<3'80$7/#70#70$80%7/$7/%70%80&7/$8/$6-"4, 2*3+7."5-!2)2*4,!3,!3+ 2* 1)2+!5-#6-$3+!5-#3*0(3+ 5."4-"2+!3,"5.%3,"2+!5.$70&70&6.$3,!3+ 2+ 4,"4+!2)1)2)2)1)1) 0)0(2+!2+"2+"2,"2+!0) 1*!2,"0* -'0* 3,#2,"+%,&.(,&*$***--,***((('''&&&&&&$$$!!!& $'!% "#"!  !"! "$"!$'"&!% $ &!% &"$" $#! !$##$ &!$$% #"% '"'#(&$)))))))))***,,,---+++---*$+%,&0*".(0*!.(.(/*!/) /) 0* 2,"1+!3.$3-$1+"0* 2-#5/%3,"6/%4.#5-#6.#5-"7/#6."5."4-!3, 3, 4-!6/"4- 3+5-!6-"5, 4+5-!7.#6."5, 4+ 3*5,!7."4+3*4+0'/&2*4+4+ 5-!6-!7.$8/%7.$6,#4+"4+!6-"5,!4+0',#0'1(0'0&2'3)3*4,"3+ 0)3-"0)/(1*5-!5-!7."6."6-"7.#4-"6.#7/$3, 1*5-"70$6/$4-!1*3, 2+1*7-&!!!!!! !!!!!!.&-%/'2+"2+"1*!1*!/(/(3,"/(-&2+"3-#,%-&3,#/)/)0* 0)0)/(-%-%.'/(.'-'0*!0*!/(.&(!,$0) /),&+%+%,&.(1+!-'*%)#)!)!+$+$)#)#*$'!,&*%*$'!' )")('%%%###$$$###"""###"""'!("& $$$%$% ##% #"#&!&!# " !!! "  "#"#"#$'!'!("' %)!+#+")"&%&"! '''((()***++...121///-'.(0)1)/(/'-&0(4,!5-#5-#3+!0(2* 7/%7/%4,!5-#4,"1)4-!4,!2*4-"3+ 1)1)/'/&2*3*4+ 4+ 5-"6/$60%71&81&71%60$6/$7/%5.#4,"3+!5,"5,"5,"7.$4+!/(3,"81&81'71'71'60&81&6/$3,!4,!5-"5-!1)1(0(6.#7/$5.#4,!5-"6/#7/$5."6/$4-!2+0)/(/(.&/'4-#6/%4,"0(+#0(4,#3+"1)/'0(2* 3+!1)0(3+!4-#.'*"0(5.$5.$4,".',$/(3,"3,".&-%4,"6/%0(/'1)1(4,!5-#/(1)2* 2* 6/$6.$1)0'5,!7/#1(0'2)3+ 0(2)4+!3,!1) .')#$     - - -  - - -    ******)))***))))))))))))******)))((())))((('(%$$&%%(''))))))***                    - xyzqrsqrsrrtpprqqprrruuu                  - - -       -          - J/A(B*G/F.E-D-C+C+A+C- @+;&7"5"3 4!6$7%9'5$8':(<(:'9&6"6!8#7"47#6"5"6$3!2!0-,,(($ ! -! - # ('&" "  $$!   #&! -    "         -           -  -    -      -   -                           -  - - - - - - - - - - - - - - - - - - - - - - - - - - -     - - - - - - - - - - - - - - - - - - - - - %$$$+%.) /*!2,"5/%6/%4-"6/#:2'<3(6."7/#80%5-"4,!6.#6/#70$6/"80$6/#3, 6.#81&6/#6/#7/$5.$6/$4,"5-"<4(<3(90%6."6."70$70$7/$4-"6.$70%91&80%90%6-"5,!3*4+ 7."5-!1)1)2*1*2+ 2+ 1*3+!5-#6-$3+!5-#2*/'2*3, 3,"2+!2,"5.$2+!0)4-#6/%6/%5.#4,"4,"3+!5-#4+!2*2)3* 2* 2* 2* 1)0)4-#2+"2+"1*!1* 0)0) 1+!0) /(2+"3,"1+!+%-'.(+%*$(((,,,***((('''&&'&&'"!"$!$ $ # !!" "! !#"$!##"$$""$#!"#$""#% $"$% &!'"&%#(((***)))(((+++,,,...---)#)#,&0*"0*!1+"/* /) 2,#0*!/) 1+!3-#2,"2-#3-#1+".(1+!3-#4-#6/%5.#4-"4-"5.#6.#4,!2*7/#5-"3+5-!6.#5-"4, 5-"5-"5-!4+ 6-"7/#6-!6-"5,!2)5,!6-"3*3*3*0(0(3*4+ 5, 6-"4+ 7.$6-#6-$5+"3*!5+!7.#4+ 1(.%-%/&1(0&0&2(2)3* 3+ 2* 1*4."1*/(1*6."7/#7/#80$6."7/$5-"6.#6.#3,!2*5."70$5.#3, 0(1*1*0("""!!!!!! """"""!!!"""-&-&-%,%/'3,"2+!0) 2+!1* 1* 3,"/(,&2+!2+!*#-&2+!0*!/)/).(/(/'-&-&-&/(/(.(/) /) 0(-%( *"-&.(-&+%*$,&/) 1+"-'+%*$*"*"+#+$*#+%*%)#.(,')#' '!'!'&%&&&######"""######### '!("& ###% ##%% "!"$#"! "# "!! "!# "$& & & $#)!,$+#*#$#$$%$&&&''')))))*,,,111111-'.'0(0(.'.'.'0(2*4,!5.#4,"/'1)6.$6.#3+!5-#4,!0)5.#4,!2* 4-"3+!2* 2* 0(1)2*2*4+ 4, 5."4.#4."6/$71&60%5.#5.#6/$5-"4,"3+ 4,!5,"6-#8/%3+ /(4-"6/%70&5/$60&4.$70%5/$3,!4-"5-"5-"4,!/'0(3+ 5-"6.#3+ 5-"7/$70%5."6/#4-!3,!1* .'0).'0(4,"6.$4,"/'+#0(3+"2*!1) 0(0)2* 3+!1)/'1* 4,#/(*#/'3,"4,"2+!.',$/(4,"4,".&,$4,"7/%0(0(2* 1)5-"5-#/'1)3+ 4,!80&80%2*0(7.#91%4+ 0(1)2*1)1)2* 2* 0)-&("&       - - - - -     ***(((((()))))))))******)))***)))((((((((((''%%%&%%((()))))))))                  - hghmklkijgefabcdeffgh_`abbcbbc``bbbbeeeiiikkk                 - - -   - -   -        C+C+B*E-D-D,B*@(D,E/B,>):%6"34 7%7&7&7&9(7&9'<);(:(6#45!8$5"8%8%5"4"2!.--,,'# ! - ! ! -# # &# # " "!"#$"    !!   - -  "#         - -   -                  -  -   - - -        - - -    - - - -     -   -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - - - - - ! #'",'1,"4.$3-"4-"80%80&5."6."80%7/$5-"6.#6.#6/#80$81%70$4,!5-"80%6.#6.$70%5.#6/$5-"4-":3(:3'5."4-!6/#81&70%6.$4,"5-#7/%80&80%80$5,!5,!5,!4+ 6-"4+ /&1)3+ 1)1)1*0(1)5-$6-$4,"2* 2*.&0(3+ 2+ 0)1+!4-$2+!0)4-$7/&7/%6.$4,!4,"2* 4,!4,!2*2)3* 1)2* 1* /(/(3,#2+!2+"1*!0) /(0)1*!0) /(0) 1*!0*!-'.(.(+%*$&&&,,,)))''''''(((''(!!!% !$" ! ! !#  % "!!! !    !! """#&!'"$#"(((+++)))(((+++...000+++***'!+%/) .( /) -'0*!3-$0*!/*!2,"2,"2,"3-$3.$1+!.)2,"2,"5.#5.$3,!4,"5.#6/$6/#4,!1)7/$6-"2*4, 6.#5-"5-!5-"4,!6.#4-!5-"6."7/#7/#5-!2)5, 6-!3*3*4+ 2)2*4+ 4+6-!7.#6-!7.$6-#5,#4+"2) 3* 6-"2)/&*"-$/&0'1'1'2(2)4+ 2+ 3+ 2+ 4.#2+ /(2* 7.#6-"7.#6-"6."5-!5-"6.#6.#2+ 0)4-!70$6/$4-!1)2+ 2+/("""!!! 1* 1) 0(1* 3+"0)-%/'2+!2+!/(1* 0) 0)4-#0)-&3,"0) (!-&2+"0* .(/(0) /(.',%-&/'0) /).(/) /) .'*"( )".'/(.(-'+%+&.(0*!-'+&*#)!(!)"+$*$,&+%+%.(,&*$'!)")"%$#%%%$$$"""!!!###$$$$$$ (")$% $# "#"""#!!!##!  " !"  "!" #%%%%'*"+#+$*$##$%%$&&&''''(((()))*///00/----'/'/'-&-&/'0(/'3+!6.$3+!/'1)5.#4-"3,!6/$4-"0(4,"2* 1*4,!2+ 4,"3+ 0(2*0(2)4, 5-!4-!3,!2,!5/#71&6/$5.#4."3,!4,"5-#3+ 5,"5,"5,"7.$3+ 0)4-"6/%60%3-#5/$4.$60%4.#2+ 4-"5.#5-"3, 1)1)4,!7/$5-"3,!3+ 6/$70$4-"5."3,!4-"2* -&0)/'0)2+!5-#4,"/'+"0(2*!2*!0(/'0(0(2* 1)-%0(3+!1* ,%/'2* 4-#3,"/',$0)5-$6.$/',%5-#6/%1)1* 3,!2*5-#4,".&1)4,"5-#80%70%1)/'6.#90%5,!1)3*3+ 1)2* 4+!4,"1) ,%(!%        -       )))((()))******))))))******)))))))))'''((((((&&&%%%((()))((()((           -       -fffeeeaaa^]]XXXXXYTTUVVXWXYUUVVWXWWYXY[XXXZZZ___eee                    - - - - - - - -         D,E-E-G/ E-B*@(C+E.B,=)<':%6"5!4!6$8&9'7&9(:(<)8%7$8%8#5 35!5"3!4"6#2 2!/,+*+-$ " ! " # &%! " -" $#$&$"  -     - - "#!      -  -         -            -               -  - - -  - -  -  -    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - - - - - - - - - - - !! "(#,'.(0* 6/$6/$4."3, 7/$80%6.#5-"6.#6/#70$80$91%4-!4,!7/$5-#5-#6/$5.#6.#5."4-"81%81%5.#4-!5.#70%7/%5.$4,"4-#6.%7/&5.$4,"4,"4,!6-#3*5,!6-#1(1(3+ 4,"3+ 1*1) 1) 1) 4,"5,#2) 1).&/'2* 2+!0)2+!0)/(.'3,#6/%7/%5.#3+!3+!1)2* 5-"3+!3* 2* 0(3+!2* /(0)2,"3,"2+!2+!0) /(0)1* 0)-'.'0* 1+!/(.(.(*%)#-,,+++''''''((((()''( & $$    "  !   !#$$ $"! )))+++)))+++,,,......+++)))("+%.( -'-',&1+"1+"0*!0*!3-#2,"2,#4.$3-$0*!/)1+"2,"3,"5.#2+ 4-"6/$7/$7/$3,!1)80%6.#3*4,!5-"4,!6-"5-"3,!7/$6.#6.#6."7."6."3+1)5, 6."4+3*4+2)3*5,!5-!6-!7/#6-"5,!6-#5,#5,#3*!2) 6-#6-"3*,#-$0'1(1(0&3)4* 1)1)1*1*4-"4-"2+!6.$8/$6-"5-!4, 6-"4,!5-"5-"5-"2+ /(3, 70%80%5.#2+3,!3,!7-&!!!  !!! /(2+!3,#2+!1*!0(1* /(.&/(2+!2+!.'0).'1* 4-$/(.'4-#1* )",%1* .(-'/(0) .(.'-'-&.'/(/(/(/) /) -%( )!*"/(/(,&+%)$+%/) 0* ,'+%("'' (!*#*$+&+%,&,&*$)#&'!)"&$#$$$###"""!!!###"""""" '!'"##"!$"""!  #!    ! #$$#"%("(!( )")#$##&&&'''''((((&&&***+++,++/(/'.'-&,$.&0(0(3+ 6.$3+ .&0(4,"3+ 3+!6.#3+!0)3,!2+ 3,!5.#2* 2* 3+!/'1)1)3+ 5-!6-"4-"3,!1+ 4.#71&5/$5.#4."3,!4,!4,"1)5,"6-#5-"7.$3+!0)2,!4.#5/$4.$4/$5/$5/%3-"1*2+ 5.#5-"2*/(1)5-"7/$4,!1*1*5."6/#4-"5."3, 3,"2+!-%,%.&.&1* 3,"2+!.'*"/'3+"3+"0(-%/(.&2* 1* -%0)4-#3,".&.'2* 3,"3+!/(,$0(5-$6/%0(-%5-#6.$1)2* 3+!2+!5.#4,"/'1* 4-#5-#7/%7/%2+ /'5."90%6-"2*4, 4,!2* 4+!6-#5-#2*!-&*#&            - - -  -***''')))***))))))))))))))))))))))))((('''(((&&&%%%&&&)))((()((                 \\\\\\WWWUUUUUUNNNONOONNLLLLLLMMNNNONNONNOPPPQQQRRRWWWlll                   - - - -   -         <&E-E-F.G0!E,A)C+F/A+9%7$8%:%8$;'9&6#9$8&5$6%7$9&8%4!5!8$7#5!23!3!11 2!0.,+()&! -" $$ $ &)&# ! &(('%"         - ""!  - - !  -       -     - -                         -  -  - - - -  -      - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $$"  &!*%0+!0* 0* 1+ 4-#4-#4-"4-"6.#70$6."6/#81%4-!4-!6/#4,!3,!6.$5.#5.#6/#5-"6/$6/$5."4-!5.#6/$7/%7/%3,"4-#3,"6/%5.$4-#4-"4+!2*2*3+ 5,"1(0(3+!4-"3,"0).&1( 5-$2*!0(2* 2*0(/'2*2+!2+!1*!1* /(.'2+!4-#6/%5.#3,!4,!1*0(4,!2)1(1)1(3+!2*!0)0) 2+"2+"1*!2+!0).'/(0* /(+%.'0*!0) .(-'.(+%*$,,,***''''''((((((&&'#"#&!##! !##""  '''+++)))))),,,...///---((((#+&.( -( -(-'0+"/) -(.)2,#3-#2-#3.$3-#1+!0* 0*!1+!2,!5-#4,"5-#5.#6.#7/$3+ 1)90%5-"2*6-"7.#5-"7.#5-"3,!6.#5."6.#6.#7.#6-!2*1(5, 6."4+2*3*3*4+5, 5-!6-!80$7.$5-"5-#4+"4,#2) 2) 6-#6-#2)+".%1'2)2(2(4*3*1(1)2*2, 6/$6/$4,"6.$8/$7.#5,!6-!7/#7/#5-"5-"6.#4-!0)4,!70%70%4."1*2,!2+ """!!! !!!!!!!!!!!! 5.$3,"1* 3,"3,"2*!2+!/(0(.&.&0)2+"2+!,%.',%1*!4.$0)/(4-#/(("*#/(-'.'0* 1*!/(/(/(0).'/(0)/(-',&*"' *$+$-'+%)#,&*$)#/)/),&+%)"( (!(!(")#*$*$+%+%(")"& %'!&%$#$#"""###"""###"""""" &!'"$$#""!"  ! !!! ""#%' ')")"%%%%%%&&&&&&&&&&&&)))---***0(,%-&-&.%.&/'0(2* 5-#3+ /'1*5-"4,!3+!4-"0(.'2+ 2+ 2+ 3,"2* 2* 3+ .&0(2* 3+ 3+ 4, 4-"4."2,!4.#60%4.#4.#4.#3-!3+!2* /&4+!7.$7.$7/%2+ .'1* 4-#3-#3-#4/$4/$4.$3-"1*0)4-"4,"2* 0(1)5-"7/%4-"1*1*5.#5.#4-"5-"3,!3-"0).'-&.'.&0)3+"2*!.&*"-%2*!3+"0( .&.&.&1) 3+"-%1) 5-$2+!,%-&3+!5-$4,".&+#/'4-#6/%0(.'5-#6.$1)1)2* 2+!5-#4-#0(1* 4,"4-#7/$7/%4,!/(4-"80%5-"2*5,!5-"2+ 5,"5,"3+ 0(-&*#("      -          )))))))))))))))((()))))))))((())))))'''''''''&&&%%%((()))))))''                 PPPPPPMMMNNNJJJGGGHGGIHHFFFEEEFFFFFFFFFGGGHHHIIIJJJLLLPPP                 - - - - - - - - - - - - -       ?)C+D,D,B*C*E.C,9#14"5"8%:%8#:'9$:$;&7&6$9%7$8&5!323 5"12 3"1 ../-**%# " ! -$'&'')'$ '%)*(%      - -    &$! !  "        -   -     -          -  -     -     -    - -  -    -     -      - -  - - - - - - - - - - - - - - - - - - - - - - - - - - -     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "#'")$)#,&2*!1* 3,"4-"6/#80%5."5."60#4-!4-!6/"3, 3+ 6.#5.#4-"5-"3, 6.#6/$4-!3+ 5-"6.$5.$5.$2+!5-$3,"7/&6/%6.$4,"4+!3* 4,!4+ 5,"2)0'2* 4,"4-"1).&.&6.%4,#1)0)2+ 0)1)3+ 5-#3,"2+"1*!.(-'2+"2+"4-#4-#2* 3+!0(/'2*0(0'1(1)2* 3+"2*!1* 3-#3,"1+!2+!0) .'.'1* /(+%-'0* .(-'-'.(+&+%+++(((&&&((((((''(&&'####     "!!$$'''))))))''')))+++---+++&&&'#+&.) -( ,(,(0+"0,"-(.)2,"2,"2,"3-#2-#0*!.)1+!3-#2+!3,!3,!3,!4-"5-"6.#2*2*80%4,!2*7/$8/$5-"7.#6.#5-"6/$5-"5-"6.#7/#6-"2*1(4, 6-!4+2*3*3*4*4*5, 5, 7/#7/$7.$6-$4,#4+"/'1)6.$3* 1)-$-$2(4* 2(1(4+5+1'0(4+5."91%81%3,!3-!6/$5-#4,!5-"7/$7/$4,!4-"7/$4-"0(2+ 6/$60%4-"0*2+ 2+ """"""!!!!!!!!! !!! 3,"5.$5.$4.#3,"1+ 1* 3,"2*!2*!0) 2*!/'-&/(2+!3,"0)1* .'1+!3,"/(/(1*!,%&)".'-'.'0) 1* /(/)/(0) .'/(0)/(.'.()"(!)#+%/(-',&-'+&*$-'.(-',&*#)!(!(!)"("("*$+&*%'!)#' $&&%#$$$######"""$$$$$$### '"%   !""  !  !!!&( ( (")"%%%#%%%%%&%%&''')))--,(((.'-&-&.&/&0(0'0(2+ 3,!2+ 0(2+ 4-"3+!3+!3,!1).'2+ 3,!4,"4,"1)0(2*/'0(1)2* 3+3+3-"5/$4.#5/$5/$1+ /)2,!2, 1*2*0'2)4+!5-#6.$1)-%1*2,!1+!2,"3.#4.$4.#5.$2+ 2+ 4-"4-"4,"1)0(4,!7/%5.#1*2+ 5.#6.$4-"5-#3,"4-"0)0)/(.'.'/'2*!1) -&*"+#0(3*!1) 0(/'1) 3+"2*!.&0) 3,"3+",%.&3,"80'4,#,$)!-%2+!6/%1* 0(4-#5.$1* 1)1* 2* 3,"3,"/(1) 4,"4-#7/%7/%3+ .'5-":2'6.#1)3*4,"2* 5,!5-"3+ /(-&+%)$!    -          )))(((((((((((((((((()))((((((((()))''''''((('''''')))))))))                 JJJGGGHIHEFFDEEABA@A@AA?AA@@@>??>?????>@@?@@?@@?CCCCCCDDDFFFZZZ               - - - - - - - - - - - - -   -   A*A)A)C*D,B+:$013!5#:%>(:%9#:$9#=':%5"7$7$7%6#35!13 1/1 1!-**(%%#  -! # &# $&''&$'))%$   "  -    ""#! !!#!            -      - -            -  -    -   -   -   - -     - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - #%(! & .&1) 3,"5.#7/$6/$3,!5."6/#4-!4-!5."4.!3, 4-"4-"3,!4-"1*5."6/#3,!3+ 4-"5.#5-#4,"1*!5.$5.$5.%4-#5.$3+!4+!3+ 3+ 3* 5-"2).%/'2*!4,"0).&0(7/&5-$3+!2+ 2+ .'0(3+ 5-#3,"2*!2,#/)-'2+"3,#4-$4-$1* 2* 0)/'2*0(1*2* 1(1) 3+"2*!2*!3-#2,"2+"1+!0) /(.'1*!0* ,&-&0) /),&+%.()#*%***'''&&&((((((''(&&'##" %! "#'''))))))'''(((***,,,((($$$(#*%.) -(*%*%-( 0+",'-(0* /* 1+!3.$3-#0*!/* 1+!5/%2+!3+!1*2+ 4-"5.#6.#2*3+ 80%5-!3+ 7/$7.#4, 5-!5-"7/$7/$5-#5-#6.#7/$5-!3*1(4+6- 4+3*4*3*4*4*4+ 3+6-"6-"6-#5-#4,#3*!/&0(5-#4,!3* .&.%1'2(0&/%3)4*/&0(4, 5."81%81%3-!1+ 6.$5-"4,"6.#6.$5-"1*3+ 70%4-"1)2* 4-"6/$4-"1*3,!5)!"""""""""""""""!!! 1+!1+ 2,!5.$5.#4-#2+!0*/(3,"2*!/(/(1) /'.&/(2+"0).(0).(2+!2+".'0) 0)+$&+$1* 1* /(/(.'.'0) 1* 0).'0) /).'.'0) (!' ' *$/(,&+%-'+&,'.(/) .(+%*#(!' ' )")#)#+%,&+%&!*$("%(!&$#$$$$$$!!!""" ###%%% $#       $'$*$!!"$!!&&&'''&''''''''((((((-&-&-&-%.%/'0(1)2+ 2+ 2+ 0)2+ 4-"2+ 2* 3+ 1*/(2+ 3,!4,"4,!1)1)2* 0(1)3* 2)3* 3+ 4-"4.#2,!3-"3-"2,!3-"5/$2+ 0)3* 2)1(2*4,!4-"0(-%0)1* 0* 2,#2-#3-#3-#5.$2+!2+ 4-"6.#4-"0(/'4,!70%4-"1*2+ 5-#5.#4-#4-"4-"4-"2+!/)/(/'-&-&0)0(.&+#*"/'2*!2*!0( -%/'2*!2*!/'0(3,"4,#.'.&4,#80'4,#,$*",$1* 5-$2*!1) 4,"4-#1)3,"4-#1)3,"3,"/(2+!4-#4,"6.$6.$3+ .'4,!80%4-!0(3*6.#2* 5,!6.#5-"1* .'.()#"  - -    -       - -((('''((()))(((((((((((((((((()))''''''''''''))))))))))))                 BCCABBABA>??;<<=>=:::;::;;:::9:99::9::9::9;:9998<<<======???EEE           - - -      - - -    -  9$@'A)E-C,9$1334!7$7#9%=(:$<&9#:%<(7#4!4"6#7"23 4!2 2 .-/-)&# ! !  !   %%%%$'%%&'''&"     - - !       "!   -     -  - -  -         - -  -       -  -  - -  - -   -     -    - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - */+,,* +#1) 2+!4-#81%6.#2*6/#6/#4- 3,5/"6/#3, 3,"2+!3,!5.#1)4-"5.#4,!2+ 3+!4-#5.$3,"1* 4,#5.$4,#3,#5-#3+!3* 3* 3* 2)4+!2),$-%0)2* 1).&0(4,#3+"2*!2* 1).&0)3+ 4,"3,"2*!2+"0) .(1*!2+!3,#3-#0)2* 0(0(2* 1)0)1)0'1) 2*!0) 1) 3,#3-#2,"/).(-&,%1*!.(+%-'0* /),&)#,&)#*%(((''''''((()))(((&&'"""""!   !#''')))((((((((()))+++&&&"""'")$,'-( -(*%+&.) +&-(/) /* 1,"1+!1+!.)/* 2,"5.$3,"3,"1*1*3,!7/$6.#3+ 3+ 8/$5-!3+6.#6-"4,!4,!5-"6.#5."5-#6.$7/%7/$4+ 3*1)3+5,4*4*5, 4*4*5+ 4, 4, 6."6-"6-#6-#5-#5,#1(1(6-#6-#3* /'0'1(2)3)1'2)5, 2)2)4, 5-!70$6/$2+ 1*5-#3+!3,!5-"4,"3+!0)2* 7/$5.#1*1*4-"6/$4-!1+4,!"""############!!!2+ /*0* 0+ 0* 2,!4.#2,!0* 0)0)-&/(1) 0(0) 0(/(/(/)2+!.(/(0) /(1+!1*!-&/(.')#' .'3,"1*!/(.'.'/(0)0) /(.'0) .'.'/(.'(!&&*$/) ,&*%-'*$-'0* 0+!.(,&*#&%' ("*$*$,'.(,'% '!'!'!)#&$"&%%$$$"""""" """$$$ ##      !    5#3 12=*#H3/<(#'" *$#!!&&&&&&&&''''&&&((''''-%.'-&.&.%/'1(1)1)2* 2* /(2+ 3,!2* 1)3+ 2*0)4-"5-#4-"5-"0(0(2* 1)0)1)1(2)2*5-#4-"2+!3,"4.#4/$4.#2,"0*/)/(0'1(2) 3,"4-#.'-&1* 0* /)1+"2,#2,"4.#3,"2+!2+ 4-"6.#3,!/'.'3,!6/$4-"1*1*4-"4-#3,!2, 3,!4-#2+!.'-'.'+$-%0(0(/',$)".&1) 2*!0( .&0(3+"1)!-%1*!5-$3+".'-%2+!5.$1* ,%*#-&3,#5.$2*!1) 4-#4-#0(1* 4,"0(2*!4-#1)2+!5-#3,"5.$5.#3,!.&2*7/$4,!1)4-"6.$2* 4+ 6.#5.#3,!/(-'(#&     -    - -    - - - '''((((((((((((((()))))))))((((((''''''(((((())))))                 122;<<:;;9::9:9787676566566555444555655555555554332433777888888;;;                      - -      ?(C+D,;&125!5!6"7#8%8%=)<&;%='9$;':&8%5"5"5!2//1 //,,-)$! ! " $$!  -$*((%# %$$'&%#         - -     !#  !       -   -     - -            -  -     -  -    -  - - -    - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - )"0)2*!4-#5-#6/#5-"5."6/"4- 2+5."60#2+5-#3+!3,"4,"/(4-"6/$4-"1*2* 4-#5-$1*!1) 2+"4,#5-$5-$5-$3+!2* 4+!4+!2)3* 2)-%.&0(1)2* /'1) 2*!3+"2* 2* 3+!0(0(0(2* 3+"2*!2,"1*!/)1* 2+"3,#2+"/(0(/'/(2* 1)0)0(/&1) 3+"1) 0) 2+"2+!1+!-'-',%*#0) 0) *$,&0) /)+$)#+%(")#)))(((''')))((('''&&&!! #    ('%"  "$  -"'%")))((())))))))))))&&&"""'"(#*%)$)$*%-'.)!+&.(1+!/)0* /) 0* .(/) 1+!4.$3,"3,!1*1*2+ 7/$7/$4-!3+ 7/$5-"1)6-"7.#5-"5-"5-"5-"4,!5-"7/%90&80%3+3*1(3*5+3*4*7-!5+4)5+ 5,!5-"6.#5-"5,"4,"3+!5,#0'1(5,#3* 2)0(1(2)3)3)/%0'4, 3+3*4, 3+ 5.#70%3,!1*4,"1*2*2+ 2* 3+!2* 3+ 6.$5.#2+ 1)4-"6/$3-!1+4-!!!!"""###$$$###5-#2+ 1+ 2-"1+ 0+ /* 0* 1,"0* .'/(.',&/(/'/'0) 0) /(/'0) 0) -&-&.'.'2+!0) +$-'.')")".'2+!/(.'0)1*!1*!0)/(.'/(1*!-&.'/(/')"&&+%0* ,&*%,&*%.(1,"1+!-'.(,$' &(!)"*$*%+&,&+&$%&& ("%#"'&&&&&%%%$$$""""""$$$ !#$       >%>$?$=$:#9%7$3!2/4!C0)L61B+'/')#''''''%%&%%%'''((((((-&.'-&-%-$.&0(1*2* 3+!0).'1*3,!2* 1)2* 1)0)4,"5.#3,!4-".'/'2* 1)0'0(2*4+!4+!5-#4-"2+!2,"3-#3-"2,"4/$2,"0* 0(0(1(1) 2+!5.$.'/(1* 2+!0*0* 3-#4.$3-#4-#3+"2+ 4-"5-#3+!/'-&2+ 6.$4-"0)1*3,!4-"3,!1*2+ 3,"1* ,%,%-&+#-&0) 1) /'+$( ,%0( 3+"1) .&-%1) 0( .&3+"5.$1*!-&,%1* 3,"0) -&)".'4-$4,#1) 1) 5-$5-$0(.&1) .&1)3,#/(1) 6.$3+!6.$5-#2+ .&2*6/#3, 0)3+ 5-"2* 3+ 5-"4,!2,!.'.()$!  -  -      -  -  - - ((('''''''''''''''(((((())))))((((((((()))))))() - -               454333333344232111/00011011000//0000111000000000...//.110222222444;;;               -     6"E- ;'3 24 6"6":$9%7$8%9$=)8$;&9%7$6"5"5#4!5"4!0/-1 .,+,*&!  " '(&%%&&&%$#$##%#          -   -     !    -    -              -         -   -     -    - -  - -   -    - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    - - - - - - - - -  %,%0(2*!5-#4,"6.#5."4-!4.!3, 1*4- 5."1*3,"1* 1* 2+!/(2+ 5.#5.#1* 2+ 4-#4-$1*!2+!3,"3,#5-$4-#4,#3+!1)3* 2)1(2)2* .&.&0(1* 1)0(2)!1) 0(1) 1)1)1)2*2+ 2* 2+!1*!2,"0* .'/(3,"2+!0) 0).'.&/'1)0)0)0(.%/'2*!0)0(0* -'.(.(,&+$-&1*!0)+%.(1+!/)*$)#*$'")#)))((('''((('''&&'&&& "!.<( P70<( +,-./134 6"8#:%;&;&;&<&<&<'<&;&:%9$8#8#6"5"4!2 0.-+(&%$# # $ / 6'"+! #! )))((((((''''''(((&&& '"(#*%*%,')$*%.) ,&-(0* /) 2,"1,"1+".(/)0+!4.#3,"3+!1*2+ 3,!5-"5.#4,!4,!5-"3+ 1)6.#7.#5-"6-"6.#6.#5-"5.#7/$90&:1&6-"3*1)3*5, 3)4*7- 4*3)5+4, 6-"6."4,!5,"5,"4+!4+!1(/'3* 3* 1)1(2)4+!4+ 2(0&2)5-!4+4+3, 3+5.#80&4-"1*3+ 1)2*2* 1*3,!4,"4,!6.#5.#1*0)4-"6/$3,!1*2'!!!"""4,!3+!4,"1+ /(2-"2-"0+!/* /) 1+!1*!.'-&,%-&/(/(0) 2+!2*!/'.'.(0) /(/(.'-&/(2*!+#/(0)*#)"-&1+!0) 1* 1*!0).'/(0) .'.'1*!-&-&.',%(!%&+$/) ,',&,',&.(1+!0* -'-',$( ' )"*$+%+%+%*$+%%$$%)#%$#&&&&&&'''$$$###!!!$$$"!"#$       A,"B,#@* ?'?*?+?)=%=#=$=% ;$ 7#7$3"2 .6!G2+L50?'"/)1%%%&&&&''&&&''''''&&&-&.'-&+#-%/'/'0)2+!1* /(.&0)2+ 2*1)2* 0(/'2+!4-#3+!3,!.&/(2* 0(0(1(2)0(1)4,"4-"3,!3-"5/%2,!2,"4.$2-"1* 0)0(1) 2) 1* 5-#0(/(1* 0* .(1+!4.$4-#2+!4-#2+!1) 3,!4-"2+ /'-&0)4."3-"1*1+ 3-"5.#3,!2+ 3,!2,!0)+$+$,%,%.&1) 1* /(,$' +$/'2)!1) -%-%1) 0( .&0(3,"1*!-%+$0) 3,"1*!.()"-&3,"2*!/'0(5-$5-$0) ,%0(-%0)4-#.&/(5.$5-#70&6.$1*-%1*7/$3+ 1)3+ 5-"3+!4+ 5-!4,!2+ .(/)*%!  - - -     - - - -  -  - &&&&&&&&&&&&&&&&&&&&&''''''(((((()))))))((                 ---------,,,++++++*++*++*++*+,++,++,++,*++++++++***+++,,,---------222          -  -  -         -     8$3"1 3!4!6#B*>(:$8$7$9%9%6"6#7#7#4!22 1 03 .-,---,**("  $&'(&(%%&&$%$%$"      -    !     "    !   -      - - -  -   -            -  -          -  -   - - -    - -    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - - "'!,%0(0(1* 3,!2+ 4-!3,!4-!5."3,!1*3, 5."1*3,"0) .'/(.'2,!6/$4.#2+ 2+!5.$5.$2+"2+"2+!3,"5-$2*!4-#2* /'2)1(0'2* 1)/(0(2*!3+!1) /'1) 1)!0(0(2* /(0(1)3+ 2* 4,"3+"3,"0* .'.'0)2+!1* 0).&.&-&/(/'0(/'-%.&0(/'0)2+!/)0) /(,&*#,%/(-'+%/(/) -&*$+%*$*$!!!((()))''''''&&&&&'"2!A+$K2+;&!.++,./24 5!6"6#7$9%:&8$8$8$9&:'9&7$6#5"3!1 0 .-,+*(''&% '/?.'?.'-"  !)))(((''''''))))))''' &!*%+&*%+&*%-(.)!.)!0*!0* /)1+"1+"1+!/* /* 1+!4.#4-#4-"2+ 1*2+ 5-"6.#4,!4,!4+ 1)2)6.#6.#5-"5-"5-"6.#91&80%7/$90%90%6-!2)1(4+6, 4*4*7-"4*3)4*4,!5-"6."4,!4+!5,"4,"4+"2* .&2) 5-#1(0(2)4+!2*0'0'3*4, 3+3*2+3+ 5.#6.$3,"1* 3+ 2* 2+ 3+ 1)1*3+ 4,!5-#4-"0)0)4-"6/$3-!1*3,!1)0(3+ 2* 2+ 1+ .'1+ 3.#0,!.(.'1*!2+!.',%*#,%.'/(0)1*!0).&-&.'0) /(0).'.'/(1* ,$.'.(*#*#-&1* 0)1* 1* /(.&/(/(/(/(/(.'/(/(.&*"%' )#.'+%,&,'+%,&0* /)-&-&*"'&("+%+%+%+%+%+%& %$$("%$#%%%%%%%%%$$$"""!!!%%%"""!!   ;' ;&;';':%;&=)!?*"?)"?)!@*"?*!?+ >) =&;#;!:":#7#7$ 4$4#.4C+&F.)9!1.6#$$$&&&&&'&&&&&&&&&&&%,%-&,%+",#-%-&/(1* 2+!0)-&/'1*1)1)2* /(-%1)2+!3+!3,"/(1)1)/'0(1)1* 0(1*3,!3,"2* 2,"5/$0+ 1+!3-#2,"0* /(/'0(2) 1* 5.$2+!0)0*0*/)1+!4.$60&4-#3,"2*!1) 3,"4-#3+!.'-&0)4-"3,!0*0*3,!5.#2+ 1*2+ 1,!0*,%(",%+#,$1) 2*!0(,%( *#.&0(2*!-%-%0(1) -%/(3+"2*!,%*"/(4,#2+"/()"-&3,#2+!.'/'4,#4,#0) .&0),%0)5.%-&/(4,"5.$7/%6/%1* +$0)80%7/$1*3+ 6.#5,!4,!5-"5-"3-!/).)+%!   - -    - - - - -   -  - -  -%%%&&&&&&&&&&&&&&&''''''(((('( - - -                 ((()))((()))))))))((()))))))))))))))())((()))'''(((***************...            -      -     1!1!3"4!8%<'>&:$9%8%6#8%8%7$5"5"4!002"/01-,,-+**%&"$)&" # %%%#" %'##$$#  - !          - -                    -   -          -   -    -   -       -    - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -      - - - - - - - - - - - -  #'")#-'/)/(0) /(0)3,!2+ 3, 2+3, 5."3, 1*2+4-"1* 3,"/(-'/(/(1* 5.$5.#2+!2+!4-$5.$3,#2+"3,#4-$4-$0) 2+!1* 0(1)0'0(1)/'/'.'.'2+!2+ /'1) 1*!/'0)1* /'/(0)2+ 1) 2+!2+"2+".'/(/(/(2,"2+!0(.&.&-&/'/(/'-%-%/'0(.'/(1*!0* 0) /)-'*#+$.'-'+%,&0* *#-'(#)#)#!!!((()))(((''''''(()  !/A)!H.'>)$2++-./13 4!5"5#7#8%9%8$9$9%:&:&9%7#7#6"4!2/-,,*)'&&&(0=*#D0*;("'! !))))))((()))******'''"""% )$*%*%+&*%-(.)!,'0* 0+!/)1+!2,#2,"1+!1+!2,"4.$5-#5.#1* /(1)4,!5-"3+ 4+ 3+1(2)5-"5-"4,!5-!3+ 5-"91&90%7.#90%80$5,!2)1(5, 6, 3*3*7-!4*2(2)4+ 4,!5-"5,!5,"6-#5,"4+!1(/&1)3+!2*1(2)4+!3*2)1(2)3*0(2)3+2)4,"6/%5-#3+!4-"4,!3+ 3+!0)0)2* 3,!4-"3,!/(0)5-#70%5.#2+ 3,!3+!1)0(3+!3+ 0(1+ .(0* 1,!.*,%,%0)3,"0)/(,%,%-&/'1) 2*!0).&-&.(/) /(/(.'0) 2+!1* ,$.'-&'!+%.(1*!/(2+!2+!0).&.'0) 0(.&-&-&.'/(.'*#%'!*$*%*%+%,&+%,&0* -',%-&*"&%(!,%+%,&)#*$*%& & &&'!%$$$$$$#$$$$$$$###!!!&&&###  -1444"6#7#6#6"6"7"7#9$;&=( =( <';&=(!@+#?*">)">&!=#:"8#7#8%6%4"4!6 445416' "!&&&&&&&&&%%&%%%&&&''&,%/(-&,$+#,$-%-%.'1) 0),%.&1*0(0)1*/'+#0)0(2+!3+!0(1)/(.&0(/(0(/'1)2+!1* 0(0* 3-#0+ 0* 2,"2,"0* /'.&/'2* 4,"5-#1* /(1* 1+!0* 0* 4.$6/%4-#2+"2*!1* 3,"5-#3+!/'-&/(2+!2+!0).'1+ 4-#2+!1)0*/*/*,&'",$+#-%1) 3+"1) -&)!)"-&/(0(-&-%/(2*!.&/(2+!2*!+$)"/'3+"4-#/((!+$3,"2+".'/'3,"3,#0)/(1* -%/'3,#,%/(3+"4,"3+"3,!2+ .'3+!7/$7/$2*3+!6.$4,!3+ 5-"5-"4-"0)/)-'#   -    - - -   -   -  - - - -  -''''''''''''''''''  - -          -          '''(((***)))((()))***))))))))))))))))))***))))))((())))))***)))))).--            -  -   - -      +0!4#7$8&8%8#7!8$9&6#7$6$6#6$5"1./3"1!/0/-)***$#! #%'&$# $ %$$  ! ##"#$       - - - "!!"!!      -    !#     -   -                  -   -    - -   -   - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -        - - - - - - - - - - - - - - - "(#)$*%-'.(/*/)2+!3,"0).(2+ 3,!2+1*2, 5."2,!0*1*3,"1+ 3,#1* /(0).'.'3,"4-#2+!1*!2+"3,#3,#2+"2+"3,#3,#2*!3,"2* /'/'0'0(0(2* 0(,$,%1*0(,$/(0) .'1) 1* /'.'/(0(1) 2+!2*!0) 0) .(.'0)0) 1*!0(.'/(,$/(/'.&.&-%/'0(.(.'.'.(0) 0) -'+$,%.(-'*$,&/) -(*$("(#("!!!))))))(((((((((***!! ###!$+. . ++,+,.1236!7#8#8#8#9$;&<'<' ;&:%9$8#8$7#6!3 0-+)(&&&&%',1 6$/&%%" )))***'''((())))))&&&"""&!(#)$)$*%*%,'+&,'/* /* 0* 1,"3-#2,"/* 0* 3-#4.#4-#4-"1).'0(3+ 4-"1*3+2*2)3+4,!4,!4, 5-"3+ 5."91&8.#6-!90%8.#5, 3)1(6, 5, 2)4+7-"2)0&1(4+ 4,!5,!5,"5,"5,"4+!2* 0(0'3* 4,!2*1(2)4+ 4+ 2)1(2)2)/&1(4, 1(4,"6.%3,#1)4,"4,!2* 3+!2* 2+ 4,"3,!4-"3,!0(1)5.#92'6/$5.#4-"4,!2* 0)2+ 3+ 0(1* /(/*.)-(-&,&2+!5-#3+!1* .'-&-&/'0)1* /(-&-&-&/) /(0* 0) 1) 2+"0) +$.'-&&+%0* /(,%1* 1*!/(-%-&0)/'-&.'.'-&.&-&)"%' *$-',&,&+&*$,&0+!-'*$+$)"&' *#,%+$+%)#+%*$'!' & %&$$$###"""###$$$$$$"""%%%### (?)$N71J3.2*)(*0102 4!4!4!6"8$;' ;& :%<' >)!<' ;'=)!?*"@*#@*$?("?%!<$8#8$9'7%5#6"8!7> A%;"7"7%!!!!,,,'''''(&&''''((('''-%/(-&+$*#*#-%-&/(1*!.'+$.'0)/'/'1).',$2* 0)3,"4,"1)1).'/'0(.&/'0(1)1* /(/(0)3-"2,"0* 1+!2,"0) /(/&/'2*!2+!3,"1* /(1+!1+!/)1+!2,"2,"1*!1*!2*!0)1* 2+!1) .'-&/(1+ 3,"0)-&1*4-#2+!0)/)-(/).'(!+$-%/&1) 2*!0( ,$)!*#-&.'/'-&-%0(1) .&0(2+"1*!+$)"/'2+!3,#/()!+$2+"3+".'/'4-#4,#0(/'1* .&/(2+!,%.'3,!4,"2+!4,"2+ -&0)6/$7/$3+ 3+!5.#3+ 2*4-"4,!3-!0)0* -($   -    -  -    - -     - -   - - -      -          -           +++((()))((((((******)))******))))))******)))))))))*********)))***                - - -    0 7%;(=*9&8%6"7$6$8%7%8&7%6$4"/.///-,-,,))$#!  -" %&%''&&' -$! "#"$      - -  -   !    %"       -    #    - -                 -  - - -   -  - -  - - -   - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -        - - - !$&!)$-(.).(.)0*0*0*2+ 4-#/(-&1+ 4-"3,!1+3, 4-"2, 0)2+!4-#2+!3,"2,"0).'.'/(2+!4-"2+!1* 0) 1* 1+!2+"1*!2+!2,"3,"2+!0(,$-%0(/'0(2+!1* ,$-%/(/(,$/'0( /(0(1)/(.'/'0)2*!2*!0) 0) 3,"/(.'0) 0(1) /(/'0),%,%0(+$,$.&/'0(/(.'-'.(/(.(,&*#+$.',&*$,&/) -'*$'!*$)# )))((('''(((((('''**+$$###"0 4 A(9#-.//024!7#8$8#9$:&:%9$;%<'=( =(!;':%:%:%9%8#7"5!3/,*('&&&%&))*+*&',(&&&&+++)))((()))(((&&&"""$$(#*%*%)$+&(#(#/) 0*!0* 0* 0+!0*!/).)2,"4.$4,"3,!1).'0(4,!3,!0(2*1)1)3+ 5,!4, 3+ 5-"4,!6/#91&7-"7-!90$7-"5+3)1(4+5+ 3)4*6,!2(.$0'3*4,!4,!3+ 3* 3* 3+ 2)0(0(3+ 4,!1)/&2)4+!4+ 2)1(2*3*0'1(3+ 1)4,"6.%4,#2* 3+!4,!3+!2*3+!4,"5-"3+!5.#5.#3,!1)6/$81&70%6/$5.#4-"2+ 1)1*2* 2+!1* .(0* .)/*.(,%2+!5.$2+!0).'/(0)0)0)0).&-%-&-&.'-&.'2+!0(2+!/(+$.'-&' -'2+".'+%0) 1*!0(,%.&/(.'.'/(/(-&-&,%)!%& +%.) -',&,&)$+%1+!-')"*#(!' )"*#*#)"*#(!("("'!& $#!###'$! !!!"""$$$$$$%%%&&&)#  ! -;&!9%,&$$&.0011114 7#9%9%:&<' ;'<'>)!?*#?*"@+#B,$A*$B(#A(#>("<'!9&6$4"6":"B'R4+X<4I/(>&8% 444777///''''''''((((###,%/',$+#(!(!*#/(0) 1* .',%/'0(/'1)3+!.'-&2+!1* 3,"3+"1) .&.'/'/(/'0(0)0)/(/(0(0* 2,"2-"/* 1+!1+!0) 0) 0'/'1) 1* 3,"1* .(1+!0* /)1+!3-#3-#2+!0* 1* /'0)1)/(-&-&/)0* 3-"0)-&0)3,"1* /(.(-(/*.'(!+#-%.&/'1) 0()"( ,%-&-&-'-&+$/(0)-&.'2+"1* *#(!0)2+!2*!/'(!*#1*!2+!.'/(5-$4-#0(.'0)-&/(2* .'/(3+"4-#4-#5.$2+!+$,$3,!6.#3, 3,!6.#4+ 3*5-"3+ 3,!/(.)-'&    - -      - -                                     -)))))))))((()))***))))))))))))((((((******)))((())))))******)))***          -  -        - - -    -6$=*=*9&7$4 6"5"8&;):(7%8&3"1 /0.,,*)+)+'" !  " )'%&()'&&'$#"""  -   - -  - -    !"#"       - - -                      -     -  - - - - - - -  - -  - - - -   - - - - - - - - - - - - - - - - - - - - - - - -     - - - - - - - - - - - - - - - - - -  %)#,&-'-'0* /*.(/)1+ 0*/)1* 4-".(-&1*3,!3, 1+2+ 2, 1+ /(2+!3,"2+!3,#3,#0) .'-&/(1* 3,"2+!1* 0)0)0) 1*!/(1*!2+"3,#1* /(-&/'0(.&/(0)/(+$,%0(/(+$-&/( 0( .&.'.&.&/(2* 2*!0).'.'1*!.'-%/'0) 1* /'.&/(,%-&0(,%-&/(1) /(.'-&,&-&.',%,&,$,$/(-'+%*%.),'+%(")$("((((((''''''&&&&&'///'&%((':%G1&[?4H1(7$2013 34!7#9$:&;&;&=' >( ='='=( =( <'<'=( <' :%9$8$7#6"30.+)((((*+.12.))!///(((,,,***))))))(((&&&"""$'"&!($*%*%+''"'"-',&+&/)0* /) .(.(1+!3-#3,"2+!1)-&/(4,!0(.&1)2)0(2*5,!4+ 3+ 4,!3+ 7/$80%7-!7-"8.#6, 3)2(1(4+4*2(4*4+ 0'-$/'2*3+ 3+ 3+ 3* 3+ 3+ 1)0(1(4+!4,"1(/&2)3+ 3* 2)1(3*3*0'0(1)0(3+!4-$3+"1)2+ 4,"4,"3+ 4-"4-"3+!2+ 5-#6/$2+ 1)6/$81&70%5.#4-"3,!2* 1* 2+!3,"4-#3,"0).)/*/* -&,%1* 4-#1* /(.'.'/(1* 2+!1* .'-&-&-'-'+$,%0) 0(2+!/'*#,%,%(!-'0* .(,&/(0) /',$-%.'/'.'.'.'-&-&,%)"%& +%.(,&*%-'*$)$/) .()")"( )"*#)")"(")"(")#)#& $##"###'#!!!!!!!!!!!!!$$$&&&))*("   " % &$#$'/20//0236"9$;&<';&;&=( ?)"?)!?)!@*#C+%D+%D*$C)$A)$>(#<( 9%8&:&<%H-#_A7dF>O3-=%:& ???777333'''&''(())))"""+$-&*#*#+#,%-&0* 1* 0* .'-&/'/(.&0(2+ /(-&1* 1)2+!2*!/(/'0(/'/'/'0(/(/'.&1)/)1+!/)0* /) 1,"0+!1*!0)0(0(0(1* 2+!.'-'1+!0*!/)1+!2,"2,"2+"0)0).'0)0)/(.&.'/)/*3-"/)-&/(2+ 0(.&,'-(.)-'(!+#-%-%.&2*!0) (!' ,%,%,%-&-&,%.'.'+$,%1+!0) *#' 0) 1+!2+!/((!+$1*!2+!.'/(4-#4-$0(/'0).'0(0).&0)3+"4,#5-$6/%4-"-&0(7/$6/#3, 4-"6/%4-!5,!5-"4, 3,!/)/) ,&%    - -   - - -                                    - - +++***((()))))))))(((((())))))))))))***))))))))))))()(***)))+++                    -   - -    06$8&7$7$36"<)9'?-"9(7&1 -3"1 ,*+,,+&((%" ! ! %*)&%')))'&$"    -          %# !    -         -   -   -               -   -    - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - -     - - - - - - - - - - - - - - -  #& '!%)#.(/).(/)/).(-'/)1+ 0* /)1* 3,!.'.'2+ 3,!3,!1*1*2+ 1* /(2+!3,"2+!1*!1+!1+!0) .'0) 2+!2+"1*!0* 0)/(0( 0)!/(3,#2,"2,"0) /(.&.'/'/'.'1* /'.'.'0)-&*"-%/(0( .'.'-&,%.'1* 2*!0)+$,%/(-&+#-&1) 1*!.'-&.',%-%.&+$+$,%/(.'-'.',&-'-'+%*#(!)"-%.(,'+%/) -(+%'!)#&!)$('('''''''''&&&,,,777-++))'9989'R9-^B8N80=)#5!25"7#7#8$9%;&<' =( >(!?)"@*"@*"?)">( >( >(!?*"@+#=(!:%9$9$9%8$6!4!2!0 .---,./9#H2)H3+:&0.444///,,,***(((((((((&&&!!!#&"'#)%*%($*&(#&!,&,'+%-'-',&,%,&0*!3-$2,"1* /(-%.'2+ 1).'/'3+ /'3*5,!4+ 3+ 4,!3+ 6/$6.#7-"7-!7-!5+2(1(2)5+3*1(4+ 4+/&.%2)3+ 4+ 3+ 3*3+ 3+ 3* 2)1(1)4+"4,"0(/&1(2*3*2)2)2)1(.%/&0(0(2+!5-$4,#2* 2* 5-#4,"3+!4,!3+!4,!2* 2* 4-#2+ 0)4-"81&71%4.#2+ 3+!2* 1* 3,"4,"4,"3,"2,!1,!2-"0+!/(-&0)4-#2+!/(.'/(,%0*0*/(-&,%,%/(/(,%.(.'/'0)-%)"+$+$(!,%0) ,&+$,%-&,%,%.&/'.'.'-&-&-&-&+#(!$& +%-'+%*$-'*$*$0* /)+$*#)")"*#)")")"("& %)#& %!"$#"#&# ######"""!!!######**+ !%  ! '&%$$%'.1113!6#7$8#8#:%>( =( <'=(='=&>&?'@( D*#F+&F+%E*$C+%B,%?*"=* <(;&<$D(eE)"?*"?)"?)"?*"?)"?) ?) ?)!?)!?)"?)!>( ;&9$:&;':&9%7#6#5"4!2 10/.15M2)Z@6N5-7!20%$#;;;777***(((((()))(((%%% #% &"(#(#(#*&)%%!+&,',&,&-'.'*$*$/)1+!1+!1*.'-&-&3,!1)0(.&3+ 0'3*5-!4, 3+ 4,!3+ 5."70$5-"6-"6,!4)1&1'3)5+ 3*1(3*3*1(0'3*3+ 4,!3+ 1)2*3*2*2)1(1(3*!3* /&.%0'2*3*3*3*2)0'-#.%0'0(2*!5-$5-$2* /'5-#4,"1)3+!2* 0)0)3,!4-"2+ .'3,!70%70%5.#2+!3,"2*!1)3+!4,"3,"2+!1+!1,"3.$3.#2* /(1)4-"2+!/(-&.',%0)/(-&,%+$-&/) /(+$/(.'.'/'-%+$,%*#'!,&1+!.(.'/(/(-&.&.&/(-&-&-'.&-&-'*#&#& +%,&*%*$,&)#+%/)-&*#*#)"(!)"(!)")#)"("(",%'!$!#& ""#&# $$$%%%$$$"""$$$""",,,+++% ($&1$9& 0'&%&',123 5"8$:&:&;&=( ?)!=(>( A+!@* >'@'B) A(D*"G+$E*"D(!D*#E,%B-$@-#=) :%:$=&V@6^G=D*(99#*AAA222(((&&&&&%''&&&',$*#,$)"( &+$-&-&.'.'-&-%/(0(1)1*2* /(-'/(/(/(0),%.&.'-%-%-%-%.&,%1* /(-&0* /* -'.(2,"1+!0)/(/'/'/'0) 2+!-'+%.(/).)0* 2+"2,#1+"1*!.(/(0(0).(.(.(0* /)2,"/),%.'0)/'+$*%.).)+$(!*#-%.&.&/'-&( '+#.&-&,%+$+$,%-&(!*#0* 0))"(!/(1*!2+"/((!+$2,"3,"/(/(2+!0) /(/(2+!-&.'1* .'.'1*!3+"3,"6.$3,"-&3+!70%7/$3+ 3,!70&7/$6.#5-!5-!3,!0)0) .'+$   -   -                                -               -((()))((()))))))))(((((()))))))))*******************))*()*))               -       - - - - -   - -228%:':&;(4"--*,+/,)+**('&  ! $('%# &&'((''# $$     -  !     -                      -    !   - -           - - -  - -   - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - - - - -  #'#*%*$*$,%.(.(+$,%0*!1+!0* 0* 0* 0* .(0* 1+!1+!/)2+ 1*/(/(1* 2+!1* 0)1* 2+!/(+$.'1* 0)1* 2+!/)0)-&/(2+"2+!1*!1* 0* 0) .'0* 0) 1* 2+"0) 0).'.'-&0(.'-%0(/(/'-&-&-&(!*#1)!0( /'.&,%*#.'0)0)0()"*#/'.&+#-%0(1) 0) /'/'-&-&.'+$+$,%,&-',%+%-',&.(,&+$( ',%+%+%*%.(-''"'!(#("*%&&'&%&%%%$$%333::;HHH?=< ;!? ?$;&7#6"6"8";&=( ?*"@+#@,$@+$@+#@+#A+#A+"A*!B+"B,#A+#@*#>)!='<';&9%9$9$8$7#6"6!4 210017F,#[A7]B:C*#2/1???;;;777)))))))))(((&&&$$$!#$ '")$($)$(#)%'",&,&,&,&+%+%+%)#/(/)1*!0)/(-&.'3,!0(/'/'1)2*4+ 5-!3+ 3+ 2+1)5-"70$5-"1(2(3)0%0&4*5, 2)1(3*3*1(/%1(5,!5-!3*0'0(2)2)2)0'/'1)1)/&.%0'1)2)2)4+2*0(.%0'2)1(2*!6.%5-$1)0(3,!2+ 1)2+ 3+!2+ 1)3,!3,!3,!1)4-"6/$6/%5-#2* 2+!2* 0(2* 2* 2+!1*!/)0* 2-#3.#0)0(1)4,"3,"1* .'-&.(2+!1* /(-&-&-'/(.',&/).'.&.',$,%.'*#(!-&0) .(-'.(.'.',%-%/'.&-&.'-&-&-'*#$$'!,&,&,&*$,&)$*$-'+%)")!(!(!)")")")#("& ("*$"##"$###%" $$$$$$$$$"""""""""666''(,,, -+&->/(M93E/)0)')*-24 5!6"7#9%<&=( ?)!@*!?)>(A) D+ D+ D+ C+B*!D,#E+#D*!E) G+#G+$E*%D+(@)&:'#8%5">* C.#;#64 0888///&&&&&&%%%%%%+$+#,$)!' &*#-&.'.'-&*#,%/'/(0(2*1*.'.'0) 0)0) 0) ,$-%-&,$-%,%,%.&1* 3,".'+%/* /* .(-'1+!0* /(/'.&.&.'0)1+!-'*$-'/).(.(/) 1+"1*!.(-&.'/'1* /(.'.(0* 0) 1+"/)+%.'/).',$,'-(+&)#)"*"+$-%/'/'-%)!(!+#.'/(,%,%+$,%-&(!("/)/()")".'1*!3-#0)(!*#1* 2+"/(/(1* 0* ,%/(0) -&.'0)-&/'3+"1) /(5-$1)*"0)5-"7/$2+ 0)5.#6/#8/$90$7/#4-"1* 1*!.(%   -   -   -                                          )))))))))***)))***)))))))))******************)'()(()((                     -   -      +15#8&7%8%1.+) //./,*)'''$ "  ! $(($'# &''(&"$"         - -    - ! !        -            -         - -      -   - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -      - - - - - -   - !(#+&,&,&-'-&.'.(,%-'0* /)/)0* 1+!0* -'/)0*!2,"1+!1* 1* 0)0)1* 1* 0)/(0)2+!/(+$.'1*!0)1* 1* .'/(,%-&0) 0) 0) 1* 1*!.'.'0)0)0) 1* .'-&*#,%-&.'/',%.'/(.&*#+$,&(")!.'/( 0) 0) -&*"-&.&.'.'&)!.'.'+#-%/(/(/(.&.'-&,%-&,%,%,%,%.(+%("+&-',&*$+$)!&-&*$+%*$-'-((#'"(#&!% %&'&&&&&&&&&&...666GGFMML >#8 648!:#;#<%>&A)!A*"B+#A,#B,#A,#A,"A+"B+"D+"C,"B,"A*!?) >)!>)!?)!=' :%9$8$8$7#6!4 2 0//016 I1(W>5M5-3..1DDD666000******)))'''%%%"""#$$ &!'"'#(#&")%'"(#-',&+%+%-&+%+$.(0* 0* 0)/(-'.'2* 0(.&1)0(3* 4,!4,!3*3+ 2*0)3,!6/#5."4+ 1'0&3(4)4*4*1'0'3*3*0'/%2)5, 4+ 2)/&/&1(1(1(2)3*2)/&-$/&0'0'0(0'2)2)1(.%0(2)0(1) 5-$3+"0(0(3+ 3+ 2* 0(1)3+ 0(3,!4-"1*/(3,!5.#4-#4,"0(0)1) 0)2* 1* 0)0* /)0* 0+!1,"2*!/'0(3,"2*!0).',%.(1* 1* .'-&-&,&/) /(-&/(/(/'/(,%,%.'+$(!,%.(-'/(/(.',%,%-&-&,$,%-',&-&,%*"#"& +%,&,&*$*$("*$.(-'+$)")")"+$)"(!'!("' ("*$$"#"$###"%%%$$$$$$###!!!***:::...++,FFF-&,:( R;5X=8=!0,,,,024 5 6!8#:%=(?* @*!?) >(?(A+!C,#C-#C-#A.%@.%A+"C*!E+!F+!F*#E*%?($=(#9% :' 8$8"9!:"7!6"4!+++&&&&&&&&&&&& *$*$*#+$)!' ( *#.'-&-&+$)#-%.'/'.'1)0).'.'1* /)0)0) ,$,%.&,%-%,$,%-&.'0) .(-'.).)-(-'/).(-&,%+#,$-&/(0*!.(*%-'0* /) 0* 1+!1+"2+"1*!.'-&-&0) .(,&-&0) 0*!1+!.(,%-'.'-&,%,','+%)"*#*"*",$/'/',$(!'!+%/'-%-%-&,$-%.&( (!/(.'*#)"-&0) 3,#.'(!+$1* 2+"/)/(2+!2,"-&.'0)-'-&0).'/'0(-&/(5.$1) *#1)5-"7/#2*/(3,"70$7/#7.#80$3+!0)1*!.(%   -  -        - -                                   )))))))))))))))))))))))))))******)))))))))))(()(                  -    - - - - - - -      )07%6$6$2!.,/1!02!0 /,)'(&&! -  " '(()'(&&$"""!   -         !"   !!!    - #            -   -           - -  - - - - - -   - -  - - -    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -       - - - - - - $(",%+$,$.'-&-&,&.'0) 0* 0* 0+!1+!0* .(0) 0* 0* 0* 0)1*0)/(0)/(.'/(0)2+!0)-&.'0) /(1* /(.'/),%,%/(0)0)3,"1* .'-&/(0)/(0).'-&*#,%-&,%,%+#-&/'-%*#*$+%(!(!,%/'/(0)-&+#,$-&.&,%)"*#-&-&+$-&.&0(/(,%,%,%,%.',%+$+$+%-&+$("*$,'-',&+$( ',%*$)#)#,&,''"&!&!#"$&&'&&'&&'&&'''(///CCBGGF K0&T4+K0(A(!<#;"<#?%A)!C*#D+#D,$D-$C-#B,#@*!?)C+"E,#D+#B*!?(?(?)!@*!?*">(!<';&9%8$6"5"3"1"0!../147!:%4 **+/AAA...)))***)))((('''%%%!$% $ &!% (#&!'#)$#& *$,&,&-'.(+%+$.(0* 0* 0* .(.(/'2*!0)/'1)1)1)3+!4,!3+ 4,!2+0)3+ 5-"5-"4+ 0'.$2(4*4*2)/&/'3+4+0&0'4+4+2)1(.%.%0'0'/&0'2)2)/%.%/&0'/&.%/&0'1(1(.&/'2)1(2*!5-$3+"2*1(3+!4,"4,"2* 2* 4,"1)3,!4-"0)0)4-"6/$4-#4,"/'/'0(/(2*!2+!/(/(-(/).*0* 2*!/'/'1*!0(/)/(,%/(0) /(-&,&-'.(0) /(-'.(.'/(0(,%-&/(,%(",&/).(/)/).'-&+$-&-&-&-&+$)#+%)#*#$"& *$,&,&+%)#("+%/),&)"(!'*#+$)")"' '!& '!*$$& "!$#$$#&"$$$###$$$###,,,000444666<<<0)+2M2+`A)"=(!=( =(?) A+"A+"@+!?+">*"@)!B*"E,"E+!C)!A("='!;&!9$9#9"%<#=$?'A)!B*!B*"C+"D,#D-$C.$B-#C,#D,#F-$F,$C)!@'@) @* ?*!@*#?)">(!<':&9%7$3"1"1"0!. - - -,,,+('&0 222((()))***)))'''&&&###"$#&!'")$!$'"% *$,&,',&.(.(,&*$.(0+!0* .(.(/)/(2+!/(.&0)1)1(2*3+!3+!4,"1).'2+3,!3+!2)/%-#1'3)3)2)/&/'3+3*/%0&4+ 4+ 2)0'.%.%/&/&-$.%2)3*/&,#.%0'/&,#.%2)2)/&.%/'2* /'/'3+"2*!2)2*4,!4,"5-#3+!4-"4-"2+ 3,!4-"1*1*3,!6/%5.$4,"/(/'/'.&1)2*!0)0* -(.(.)0* 1) -&.'3+"0(.'+$,%/(0) .(,&,&-'.'/) .'-&/(/(/'/'+#-&1* -&+$.'0*!.(-'-&-&.'+$-&,%,%,%+%*$,%*#*#%#'!*$-',&*$)#("*$-'+%)"' &)"*#(!(!& )#'!'!)#& % !$$#$#!"#"$$$$$$%%%))),,,55589:;<<,*)(.5"1+++.2 3 3 125!8$:&;'<( >)!?+#>)!='>(@+!@*!?)?) @*#C+$E-%E,#D-"A+!=(;':& 9%8!;"B&`?2kJ'!@)"B*#D+#E*!F* G+!G,"G,$G,$F,#E,#E,#C+"A+"@+#@+#?*"@*"@*">)!<' ;&9%5#.",011. * +-046!3 *&2"&&&''')))***)))$$$"""!!!#$ &!&!)$$% '"(#+%,&,&,&,&.(+%+%.(/) 0* .(-'+&-&/(.'.&/(/'0(1)1*2* 4,"1).'1*3,!1)/&-#-#1'3)3)2)/&0(3+2).$0&4+ 4+ 1(.%-$.%.%.%.%/&1(1(.%+",$0(1(-$.&2*1).&.%/'4,"/'.&3+"2+!0'1)3+!3+!4,!2* 4-"4-"1*2+ 4-"0).(2, 5.$4-#3,"0)/'.&/&2* 2* /'1* .(.)0* 2,!2+!-&.&5-$0)1* .',%/(/),&*$*$+&,&/(.'+$.'/(.&/()",%.'*$*$.(0* -'-'+$,%,%+%,%,&,%+$,&,%,&+$(!$$& ("-&*$)#*$'!(",&+%(!' &)"*#(!)#(!)#'!)#'!%# #"$$###"$""$##%$$###%&&,..144779-*(()**++,.12 4 3237#;' =)!<( =(!?*#>)">( ?* A+"A+"@* @*!C+$F.'G.'E,#C+!@+ >+!=+!;*!9&7!;#D(dC6vSEM5+02 %%%'''$##& '!(")#(!%' *#+$+$+%*$'!)"+$)!)!-%.'*#,%0) /(0) 0) ,%-&-&+#+#+#-$.&.'.'-',&-'-&,&+%-'.',&*"*#+$+$,%.',&*$.(.(.(,'.(/)/) .',%)"+$-&-&)#*$-'/)/) *$' +$.',%)#'#'"'!& ' &',$.&-%( "")#*$,%*$(!' )#)#'!&+$-'*#& )#-'/) -'(")#/(/) *#*#1*!1+!+%+$-'*#-&/(+$-&,%/(1* 3,#0(+$4-!81&5.#3,!3,!5.#6.#5,!6."6."3,!2+!2,"/) )#                                                       - - - ))))))))))))                         - - -        ")1!-++-.,*)+*+)'" # $ $ &&&',#&#!       -  -       !      -           -       !   -         - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -       - - - - - - - - - - - - - - -565..-%(!)"*$)#*$-'+%+&.(/).(-&.'/(,%*#-&/(/(/(0* 1* /(-&/(0) /)/)0* .',%,%.'/) 0* /)*$*$(!*$,%.'/(/(.'-&+$+$+$,$,$+#+#-&.')"("+%*#(!*#,%-&.'+$)"+#.'.'-&*#)"+$-&+$*#-&.',%*#*#*#*$+$,%-'+%)#,&+%)#)#+&-'.(*$' ' )#(#% % *%)$)$&!% $"$"%%&&%''&(&&&%&&>) @*!O6,X<2G.%;$:$;% =("@*$B*#E*#H,#H,"G+"F,#H.&G-%D+"C*!C*!C,"C.$B-%A,%B,%B,%A,$?*#=(!;'8$5"1"1 343/++-8#G-#M3)F.$3"+2 &&&&&&'''((('''!!!  $% % $'"&!% '"'")$-(-(-'-',&-(+%,&.(/) /) .(-',&,%,%-&-&-%.&/'1)1)1)4,"3+!0)1*3,!2+!0(,#-#0&3)3* 1(/'1)3*1)/%0'3* 4+!0',#,#.%,#,#.%0'1(0'-$,#-%0(0(.%0'2*0(-%-%/'6.$0(.'3+"4,#1)/(0(2*2+ 1*3+!3,!1*0)0)/(/(1*4-#4-#2+!/(/'/&.%1* 3+!/(1* .(/)2-"3-"3,!.'/(3,!2* 0(/'-&.'/(-&*#*$+%+%-'.',%+%,$.'.'( *#+$(!*#.'.(-'.(,%-&-&-'-&,%,$,%,%*$+%+%' %%%("+%)#*$+%(#)#-',%)"(!')"*#' *#& (!(!)#("%#  #$#$$#%# "! "! ""!"""!""&'')++-.// ,-4 5!-+*+-./24!4 3 36":&=)"<(!=(!>)"?)"@*"A+"B-#C-#C-#C.$H.(H-(F+%D*#A)>)>+!>+";*!9(9%?'K.$dD8tRCQ6,/5# "!"%&&'!*#' ' *#+$,%,&*$'!)#,%)")"-%.'+#,%0).'0) 0) ,%+$+$*"+$-%-%.&.',&,%+%.'-',%*$+%-&,%(!)")")#+%.(+%(",%,&,&,&/) /) /) /(,%%*#-&,%(")#+&-'/))#&*#,&*#'!%!% % %&&)!,$-&,$&!#("*#+%+%)#'!)#+%& & +%-&)"%*#-'/( -')#)#/) 0*!+$*$/(0*!+$*$,&+$-&+$(!*#.'0) 1*!0(/(/'4,!6/$4-"0)3,!5.#5-"5-!7/#6.#3+!0* 0* .(("                            -  -                              -                            - - - -       - *-+-,*+)'&-++(" '%((/!,  -&&$    -              !!!      - -  -           !"   -           - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -            - - - - - - - - - - - - - - - - - - - - - - - -@??!!'"+&*%-(/)0* .(,&-&/(-&+%-&/(.'.'0) 0)-&,%0) 0) .(.(1+!.(+$)#,%/) 1*!-&*$("' ("+%-&-'.'.'-'+$+$*#,%,%+#+$-%-&' '!*#("'(!+$-&.&,%(!+$,%.'-&+$*#,%,%,$)"+$/(-&)"*#)")"-&)"+$,%)#,&+%)$)#+%,&,&)#("(!*$)$&!$&!'"'"&"% $###$#$%#$%%%&''=$3;"?$=#<#;#;& >*#@+$C)#F+#H.$G-$F,$E-%E.&E,$D+"D+"D,#D,#D,#C-#B-#B-%B,$@+#?*"?*"=(!:&8$6%6"7751.,.F/$Y>5T90B*!0+1%%%((('''!"#&!&!% % )$(#*%-(-',',&+&,&*%+&-'.(.(.(,&+%*#,%,$-%-%,$.&1) 1)0(1)2+ /(1*3,"2+!0(-$,#0'3) 2)0'.&1)1)0'.%0&3* 3* /&*"*!-$-$+"-#/&1(/&,"*!-%/'/'/&1(2*/&,$.%/'5.$0(.'2+!3,"1* 0(0(2* 2+ 1* 2* 2* 0)/(0)1*0*/)3,#3-#2+!/'/'/'-%0(3+"0)2+"/)/)2,"2,!2+ .'/(2+ 1)0(/',%.&0)-'*$)#)#*#,&-',&-&,%.'.&(!+#*#&+$-'-(.(.(.'-&-'.'.'+$*#,%+%+%+%+$( %& & +%-'+%*$+%)$,&-'-&*#( ')"*"( *#%%%$& %#!$"!###"""!  !! """ "#$1 /3 F2)Q<3>) /++.//14!5"5"5!6":%;' <' =)!>)!?)"@+#B,#C-#D.$F0&G1'I/)H.)G,'F,$C+!@* >+!<* =+!;(!:'<%D* Z<2bC6H,"//! "%& %%)!(!' )"+$,&,&)#& )",%*#+$.'-&*#-&/(.'/(0) ,%,%+$+#+#,%,#,$-&,%+%*$-'-',&*$*$-&,%' (!*#*$+&.(+%("-&.(,%-&/) 0)!.(,&+%%*#*$*#)#("+&-(/) )#& )",%+$)#)$(#% $&&)",$-%,$$ #'!)#*$)#)#(!(!)"&&*$+%'!%)#.'-'+%(!)".(.()#,&/) /) *#*#+%*#,&,&,%+$.'2+"0) /(/(.'3,!6/$2+ /(2+!5.#4,!4+ 6."6.#2* 0) 2,"/)(!                         -                                                             - -         - %,/ ,&%''*&))! # $'$'&)*   #         -           !"    !   -         -       !              - -   - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -            - - - #)$+&+%.(/).(,&-'-'-',&/),&*$+$-'.',%,%/).(-'-&.(,&*#(!+$.(.',&)"$$("*#*$+%*$-'-&,%*#,$-&-&*#*#+#,$&& '!& %&*#,%-&)"*#*#,%-&+$*#)#,%,%-&+#,%/'.')"*#)!' ,%)"*#*$*$*$*$)$*$+%+&+%)#(!)"+%,&)#% ##&"% " "% % #"#%%&&&&:"39; =">%>&!>)#>*#A+$D+$F,$G-$G.&F/(E/'C.&E.%G.%G.%G.&G.&G.%E-$D,$C-$A+#?)!?)"?)">(!<':&8&9#:!9 621 1:&W>7_C=O3,8-+0%%%&&&"% %!'"% &!(#(#*$-( ,'*%)$(#*$*%+%-'-'/)-(,&*$*#,%.&-%-%-$/&/'.&/'0)1* .'0*3,"2+!0(-$-$0&1(1(.%-%0(0'/&.%0'3* 2).&+") -$-%.%/&0(1(.%+",$-%/'/&.&0(1).%,$-%0)4,"0)0(2+"2*!0(/'1)2* 2+!2+!2+!1).&/(2+!1* .'.'1+!2,"2+!.'.'/'-%0(2*!0(2+!/(/)0* 3-"3,!.'.'1*0)/(/'.&,%.'+%*$)#("("-'-'-&-&+$-%-&)!,$+$&+$,%.)-(.',%-&-%.&,&*$*$,%)#)#+$+$' %%% ,&.( ,&+%,&)#,&-&,%*#( ')")"' (!$%&& ("'!#!$!  """ 0/1F1&`I?N8.9"0,/0 004!6"6"6"7#9%;' <' >)!?)">)"@+#A+#C,#F.%H0'I0(H.(G.(G-(E,%C*!B+!A+">) <( ;& :%;$<#A'E)<"00'!! %' %%' ' &' *#)#)#*#& )",%*#*#-&,$)"-&/(.'/(/(+$+$,%+#+#,$+#+$-&-&,&*$+%,&+&*%,&,&*$(!' *#)#+%,&*$("+&-'+&,'.) /) .(+%*$)#*#*$*$'!$(#+&.((#%' *$*$*$*$("%$$%)"+$-&*#$"%' (!*#("*#)"(")"%$)"*$& $(",&,&+$' (!.(/) +$,&.(.()#)#,&*$.(/) ,%*#/(0) .'2+"0).'2+ 4-"2+ -&0)5-"5,!4+ 5-!4,!0)0)4-$1*!("                             - - -                                                          - -          -  #+-)&% %''# %$#   &#! %('" "!       -                     -    -   !!  -   #$         - -    -      - - -    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -        - - - - - - &!*%+%.(0* 0* .'.(.'-&)#.(+%+%*$,&-'+%,&/(.',&,&/(.(,&(!)#/) -&+%("##'!)#("*$)#,&,%+$*#,%.'.&,$)")"+$(!' ' &$%*#,%,%)")",%,%-&+$)#& )#+%,%("*$-&-&)"*#)"(!+$)#(")#)#+%*$*$*$*$*$+%)#(!)"*$+%(#&!#"$ "  "$ # =&F.#Q4(J-!>#<#=' >)">*#B+$E-%F-%G-&G/)G1+F1*F1*I1)I1(I0'I0'J1(I0'G.&E-$B+"?)!=( =( =(!=( ;':'9':$;"8 40 / 0 >*#U;5V;6="/(+0### !!!$$$$("(")$+&*$)$+&+&,&,&,&,'-(-'-'+%)#)",%-&,$,$-%.&.'-%.'1* 1* /(1* 1+!1+!/(-$-$/&0'0'.%,$0(/'.%-$0'3* 2)/&-$) ,#.%0'0'0(/&.%+") -$/'/'-%/&0'-$+",#0(1) 0) 1* 3+"2* 0(/'1)1* 1* 2+!2+!1).'.'1* /),%-&/)1+!3,".'.&/'-%0(2*!/(0* /)/)0* 0*0*-'.'0)/(.'/'-&+$,%*#(")#(#)#,',&-&-&+#-&.'+#,%)"$+$.(-),',&+$+$,$.'*$+%(#*$)#+$,$*$& #& '!-(/)!-',&-')#+%,&*#(!'')"(!' & $%' )#)#& #!#$! ""!0--9%T>4R;2B-#5!-/1 1 1 4 5!5"6"7#8$=(!>(!?*"A+$@+$B,%C,$D,#F-$G.%H/&G/'H0*H0)F-&C+"B* @)>' ='!;&"8% 7%9%8#8!8!1.1  !  '!)"'!%(!' &(!)#)"+$)"%("+%*#*#,%,%)#,%.'.'.(-'+%+$,%)")"*#*#,%-&,&,%(#)#+&*%)$,&*$(")"( (!("*$*$)#'!)#)$)#*$+%-'-'(")#)#)#*$+%("&!*%*%*%'!& '!*$*#*#)#'!$#"#(!+$+%("%!$(!*"*#*#)#(")#)#%#' *$'!%)#,&+%*#& ' .(.'*$,%/(.')"*#.'*$,&.(+$)"/(1* 2+!2+"1*!.'3+!4-"2+ .(2+!5."4+ 4+ 7/#70$0).'5.%/)("*#                              -                                                      - - - - -         "(($ &$ )('%#" " " &$'&'" -                   - - !            - -  !#   - ##"!            - - -     - -   -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -       - - - !"'"("(#+%/)0*-'-'-'*$("+$("*$,&-&-'+$,%-'-',&,&/) 0*!-'(!'!-'-&*#("$"(!("' *$*$,&+%*$*#+#-%-%+$(!&')!' ' & $#)#-'+%)#(!)")")#*$)#%("*$("& )#,&*$(")#(")#+%)#(")#)#+%*$)#(")#*$+%)#' ' )#(#&!##% "!"!##"  E/&W>3hI=S7+;"<$<& >*#A,%C-%E-%F-%G-&H0*H2,H4-H3+J2(J1&J1&J1'J1(I0'I0'F-$B) ?(>(<':&<( <)!8'6&:$:"7!3 . - 0!2<#9 0+%*!!!"% #& )#("&!(#(#)$,&+%*$+%+%,&-'-','*$("(!,%,%+#+#*".&/'-&.&/(/(-&0)0*!1+!/(,$,#.%0'0'-%,$0)1(.%.%0(1)0(/'.&,$+#.&0'0'/'.%-$*")!-$.&.&-%.&.%-$+".%0(/'0(0) 1* 3,"1).'0(0)/(0)1)2* 0)0)2+!/)+%-&/) 1+!3,"/'.&.&-%/'1* 0) 0* 0* /) 0* 2+!1* .'-&0)0).'.'-&-&.'-'*$*#*$*$*$*$-&-&*#-%-%*"+$)"%+$/(-(-(.'-&+$+$-%+%& &!)#)#)",$)#&$%'"-(/) -',&,'(#,'+&(#&!%#'!'!& %%& ' (")#$"!!#    !!! -+0?* F1'>) 6"10/1 3"4"4!4 5 6 6 9$;&=(!@+#B-%D.&F-&G.%H/'H/&F-%E-%F0)C-&B+#C+"C*A'@' ?("='#;&"6#5"6#:';(7#2:' "  %& %%(!&$(!)#)#*$)#& ' +$*#*#*#+$)"+$,&,&-',&*#)#+$( (!)!)!)#)#*$,')$(")$)#(#*$("(!("' ' '"+%+%'"& )#)#)#)#*$,&,&)#*#(")#*$)#&!&!&!+&(#& & '!)#)"'!'!$###$'!)#*#'!%"$( )!)"+$+$)#)#*$& !%+%+$'!*$-'+&)#'!(",'-'*$*$-'-'+$+$,%*$,%/)+$' -&1* 1*!0* ,%-%3,"6/$3,!.'2+ 5-"5,!4+ 5-!5.#0)/(3,#0) ,%/'                                                                                  - -  -         -    %$(*(,*(# " ! ! "&#%#" !$       -      -!!       -          ""!          - - #$!     - - -        -     - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - -      - - - % )$(#(#*%-'/)-&-'/(+%)#*$+%,&,%+%,&*#*$,&-',&,%.'/( ,&'!'!-'+%.( +%%!& '!&*#+$+%+$*$*#+$+$,%+#&#$(!' (!'!%#("-&,%)#(")#)#)#*$)#%' ("%&*#+%*$(!*$)#("*$)#'!("(")#("'!'!)#,&*$)"& %("(#% #% &!""!"!" G1'_E:nQDQ5+<#=%>("?*#A,%E-&F-%F,$F-%G0(G1)G1)G1'I0%I0%J1&J1'K2'J1'I0'G.&D+"B) @) >(=(>) <( 7'6':$9#5!1 + * -!0 31,(&*    !#"% '!("&!)$)$*$,'+&+%,'+%,'-'/) ,&*$("(!,%,%*#-%+$-%-%-&.&/(.',%0)1+!1+!.',$+".%/'0'.&,$/&/'.%.%.&/'/'0(-%,$-%/'.&/'/'-&,$)"*"+#,$-%-%-%-$-$,#-%-%.&/'/(2+"3,"1* ,%.'/'-&0(1* 0).'.'2+ 0),%-'0* 1+!2,".'-&.'.&/(1*!0* /)/) .(1+!0)0).'.'1* 0)/(/(-&,%.'.')#(!)#+%+&*$,&,%*#-%+$)",%)"%' *$,','.'.&*#,$,%*#%)#)#)$+%*$("& $$("-'-(,&,&,&*%-(,&)$&!%&)#(!& %%%%& & "!"##  !!!  +*,032110/03"5#7#7#8"9#:$<&=' =(!?*"A*#C+$E-&H0'J1)I0(F.%E-%E1)B.&B,#D,$F-"F+"F*#D($@'$;$!9% ;' >( Q90Z?5I/$/7# ""$$%' %"%(")"("'!& (!*#+$*#)"+$(!*#*$)#+&+%)#'!*#' ' )")!("& ("*%)#'!(#)$("("("'!& %& %*$+%'!%)#)#)#)#+%,&+%+%*$'!(")#'"$$$)$)$'!%(!+%)#&!'!$""""& )"("& %#$' (!("*#+$)#(")$$ & ,&*$&)#,&+%)#("("+&-'*$)#,&-'*$*#,%*#+$/( *#& -&0) 2+"2+"-&,%2+!3+!3,!0)2+!5-"4+ 3+5-!6/$1* 0) 2+".(-&1*                                                                                  - - - - - - -       -    &)()*)$ ! -!  "%  -% -                -  !    -        !!!    -    -   - - "!   - - -  - -             - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -      (#*%)$)#+%.(.(-'-',%+%(")",&,&*#)#+%)#)#*$,&+%)$+%,&*$& '!,&'!+%*$$"#& %)#*$*$*$)#(")#*#*")"' %&' '' '!& #' *$,%)#("' ' '!)#("&%' &%)#,%*$(")#)#'!)#)"(")#'!& '"%!% '"*$)#& %%'"(#$#$$"!  )G1'^E9cH*#A,%E,&G-%G-$G.$H/&I0(J2*J1'J0%J0%J1&K2'K2(J1'J1&I0'F.%E,#D,#B+"A+"@*!<'6'6&8$6#2 .) ) *.132+',  #"#'"% '!)#*$+%-'*$+%-',',&-'-(,&*$)"(!-&)"+$-%-&-%.'.'.'0)0)+$/(1+!0* .'-$-$/&/&-%-%+#-%.%.$.%/&/',$/'.&-%/'0(/'0(/'.&+#( )!)!*"-%-%-$+"+#+#.&-%.'0(0) 0) 3,"/(-&/'/'-&-&0(1*.'-&0*/(,%-'0* 1+!1+!.',&.'-&.'0) 1* /(.(.(2,"0)0).'-&0) 0)0)/(-&+%.(.(*#'!(#*%,&)#)"*$+$.&+$*#,%(!%("+%+&+&-',%*"-%-&'!%*$+%)$,&+%)"& $$(",&,',',&+%)$+&+&)$%$'!)#'!&& %& & & %" ! )*+,-..-../1 3!4!5 7!9#;&<' >)"?)"A+$B+$C*$C+$E,$G.&H/&G/&G/'E1(C0(C.%D-$D-#C,#A+"?)!>)<%>&A&C'bD9lLBR4(4 0 ! !$$#%# #'!("("' %(")"(!(!*#+$' )"*$("*$+&)#("*#&%' &(!& )#+%)$&!'")$'"*%)#& $#$"&!*%'!%("("("'!*$*$)#+%*$'!'!("'!$$&!'"'!%$%)"' $% #""""%("("& #!"(!)"(!("("'!("("# %*$)#%'!*$)#'"&!("+&+&)$'!*$,%)#(!,%)"*$+%*$%-&.'1* 1+!,%+%2+!4,#2+!0)2+!5-#3+ 2*4,!6.$1* .'0) /).'.' -                     -  -  -  -    -  - - -  -  -                                                   - -   -  -       - - -    $)()''! -  # &%"      -           -     -       -      ##     -  -    !       -     - -       - - - - -  - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - -"($+&,&*$,&-&,&,%-&/(+%)#)#+$*$("(!+%("(")#+%*$'!("*$("$%*$("("("##$%$)")#)"*#)"'!(")"( (!( ' '' &%& ' #$)")#'!("(!("(!*#)#'!%& & %("*$)#)#)#)#%'!("(")#'!& &!&!$&!)#)#' %$'"'"$ "#$ " " 3!;%E+ D* <$;%>(#>)$>+$A*$D*$G,$I-#I-$I.%K1(L2*K2(K1&K1&K2'M3(L3(K2(K2(I1(H/&H/&G.&E-$D,$C+">(9'9%:#6 2.**+2?%H/(G1+4%(-  !% #$'"% '!)#'!)#*$)#)#*$+%,&,&-'+%*$)#(!)"*#(!,%,%.&.'.'+#0)-%,%.(0+!/) .&,$.%/&/'-%-%,$.%.%,"-#-%.&+$.&/'.&.&/'0(0'.%,$*"( )!(!*",$-%+#) *!*"*"+#-&/(.',%/(+$,&/(/(,%.'0)0)-&,%0)0)-&-'0* 1*!1+!.(,&.'.'.'/(/)0)/(-'1+!0* /).(,&0* 1*!/(0* +%*$-'.')"& (#*%,&'!)",%,%-&*#*#,%)#)#+%*%($*%+%*"(!*#+#'!)$*$(")#*$*$*#& $$'!+$,&*$+%,&+%,&+%("%#'!'!'!%& %& & '!""     -)+1"0 -.//...0 2 2 26!8":%;&=(!>)!@+#B+$B*#B*"C*"E,$G/&H/&H0%F-$F+$G.&G/'C.%@,#>+!>*!>)>(;#<"F,"`D:eH>L/$6!-  !##"$# "%& & %#(!*#(!*#,%*#&' )#("*$+%("("*#%#$%%& (")#'"'")$&!$'"'!%#""% % )$% #$'!'"& )#)$("+%("% %'!& %%%& & $#%(")#% %" !!"$& '!%! )")"' '!'!& &!'!#!$("'!%& )#)#& $&!*%*%'"& *$+%)"(!*$'!(!,&+%' +%.'1* 0* +%*#.'5.$1* -&1*!4-#2+!3,"5-#6.$2+!0(1* 1)/'3+!                     -  -  -  -  -  -    -  -  -  -                                 -  -  -              - - -   - -       - -   - #&$'%$  -! $ *)##       -                   -     - $!$$""    - !                      - - - - - -  - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - -#(#+&*$*#,&,&-'+$,%.'+%*$)#*#*#'!'!+%& & )#+&(##&!'"(#"$("("'!'!##"#("("'!)"(")")#(")!(!' %&(!%$%& "")#)"& '!'!("& (!(!& $&' & (")#)")"("("%'!)"(!(!& $% % $&!'"("'!%$% &!&!"#$"   ;&8!9:!;%<' <(#>)$?*%B*%D+%G,$I-#J.$L0'L1)L1)L3)L3(L3(M3(M3(M3(L3(K2(H/&H/'I0(G/&E-$D,$C+#?)!;( :$:!74/*,-<$R6-Z>6T;37&(,   #&!#$&!$%& ("("*$,&*$)#+%,&,&,&*$)#$'!)#(!)"+$+$-&.'.'-%/(.'-&.'.(.'+$*"-%-%.&,$,$+#-%-$+!-$-%-&.'-&,%+$-&.&.'-%+#+#)!( )!(!)!+#+#*"( )!*")"*",%/(,&.'3,#1* ,%/(/(.',%.(0).'-&/(0)-&-&/) 0* 0* .(,%,&-&-&0)/(/(/(+$.(0* /)-',&1+!1+!/) /) ,%+$-&,%(!&% )$-(*%)#("+$,&*$("*$("(!+%,&($*%*$( ( )!)#(#(#)$)#)#*#,%+$' %#'!+%,&+$+$+%)#+%+%)#&#' ' '!$$#$#%    -08"P80R:1D+#9!420 1 2!3!4!5"6#7#8#:&=(!>(!>(!@*!A+"@'B)!C*"E,$H/'I0'I0&I0&H.'G.&F.%C.$B.$A-#@-#>)!=';%;#H/&\A9\A8H-$4+ -!""## !#$$##& *$(")"+$*#$$)#(")#)#'!'"*$%#"$%%& '"&!%!%!'#% &!&!$#" #$&!$#&!&!&!(#(#(#(#)$'"#"'!#$%%%& # #'!("% #!!#%& # (!'!& & &!% $% "#'!& #$(")#&!$% (#(#(#%+&,&)"'!+%*#'!/) +%'!)"/(2+!1* ,%*#/(3-#2+!/(2+!4-$3,"5.$5.$5-#1* 0(2+!2* 0(3,!,$                     -        -  -  -                                   -  -  -    -             - -    - -         -   !$#" " %! #('#!             -       "   -   ! -    ""      -  - - !  !"  -    -  -         - - - - - -   - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - - - -#'"*%)#)#+%+%,&)"*$,%)#)#)#)"(")#'!)#%%("*$(#% &!$'""$("'"&!% ##""$("'!& '!' '!)#'!%&&#%(!%%&%!!&' & & %'!'!' & $"$&&& &("& & & %' ("(")"'!$% % % &!'!'!& $#% % '"$$% #  >&?%B'=$7!9$"<(&<)'>*(@+'C-'F-&H.%I0&I0'I0(J1)L3(N4)O5*O5*O5*O5+O4,M2*J/(I/'H/'G.&E-$D+#B*"?( ;' :"9860+-2Q3*cB;\=6J/'3 ,,  !$!#&!$%& &!'!(#)#)#*$+%,&,&+%+%*$("*#)#&)")"*#,%-&,%+$-%.&,%-&.'-&*#*#-&.&-%+$+#+#-%,$*"+#.&/'-%,$,$,$-%,%-&,%*#+#)"(!)")!)"*"+#+#( ( *"+$+#+$-&+$-&1* /(.'0) /(,%)".'0)/(.'/(/(,%,%0) 0* /).'+%,&,&,%/(.'/(.'*#.'/) /) -&+%/) 0* /(.(,&+%-&,%(!' $'#,&*%)#("(",&+%' )"'!& +%,')$*%)")"(!'' ("'"(#(")#,&*$+$)!&#(!,&,%)#("*#*$+%)#% %"& ' '!%$$$!$"    /5 L5,X@7S:3@' 6101 2!3"4"5"7"8#9$:&=( =(!=( =(?) A) C+"D,#F-$H/'I0'H0%I0&I/'G.&E-%D-$A-%@,$=*"<(!;(!:%;&B*#L3,K0*?$40! !!"!!"#& $"'!*$' '!)"'  "("& '!("% &!("$"!#%% &!&!#$% &!% &!&!##!!$$%!#"$##'"(#'#(#'"& "##% $#$%& ! !% % %# !!#%$" && %$$#"#!!& & #!& '"&!#$ '#)$% & *%,%'!'!+%)#& ,%-'*#*$/(1+!0) )"+$0)3,"1*!.'0) 5.$5.$5-#4-#4-#1* 0(2+!1)2+ 91'0)1* 0)+$/' -                                                            -  -  -  -  -                -           - -   -    !   -" &%%  !  -        -              -   - - -     !"    - - -   - -! #"#   -      -         - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   %!'"*%*%)#+&+%*$("*$+%("'!'!'!(#'!$& %%& '!'"% $"$!#&!% $$!"#& & %& & &!&!$&!& %"#& &%#$!!' '!& & %%%'!& $""& '!#"'!& $%$%& (!("&!#$$%&!'!&!%#$$ #$!!#" C) U9/_A7L0'?&=$ =%">(%@*&B+&C-&E,%F-%I/'I1)I3,K4+M3)O5*P6,P6+O5*N4+N3+L1*J/(I/'H/'G/&F-%D+#B*!?'<$7 30..--5 U<5[>8O3-90,+    !% "$'"% % $#(#'"(#'"*%(#)$*$*%+%)#'!)#)#'!)#(")"+%-&+$*#,$-&,$.'.'.'*#,%,%.'-&+$*",$-%-$-%,$-%/&+$+$+$,%-%-&/',$)"*#)!)!+#)!)!+#+#+#( '*"+$,$+$*#*#,%0).'-'.'-&)",%-&/(/(.'.'.',%*$/)0) .(-&+%-&+%*$.'-&.(/(+$-'/) 0) -'*$-'.(-'-',&+%-&-&*#)"&!)$,&*%)#("("+$+%%(!%& +%+&($*%*#*#)!( '!("'"'"(")#*#*$*$' $"'!,&+%)"'!("*$+%*$& %#& & & %$#$ "$"   .1@+"P:3T=7H1+9#100 1!2!3!4 6 8":&;' =(!>)"?*#@+"A+"C,#E,$E-$F-%H/'I0'H0&I0&J1&I0%F.%E-%A-%@,$>*#=)"=)#8%6#6 8!8852-!  ! !"$"#"'!*#' &(!'!!"'"% '"'"% '"&!#""$% % &!$ "% % $&!& "#!!$$$ ! $" !'"&!'"&!$ $#"##$$ !$#"  !!"#!" $$% %$"""!$% !!% &!$!$)$)%$ $*$*$& & )#' & ,&-&(")#-'0)1*!+$+$0)4-#/)+$0)5.%6/%5.$5-#5.$1* 1* 3,"0(2* 91'2* 5.$4,".'/(-%(!*#'"  -                                                     -  - - -                           - -      -! $&!  !   -  - -      -       !!      - -        -     -  $&"     - - - -   - -   - -  - - - -  -    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   #"%!'#*%*$'"+&+%)$'!)#+%'!%%$*#& #& %$& '"% ###" "% % % "  $& $%#$&!&!$$$"#$$""#  %'!& & & %$'!'!%"!$& %#("& #%$%$%& $"$""$&!& $#$$%!#""!# -H-"iH;oL>U6*F)A%@& @("A(#B*#C+$D+#F-%I/'I1*I4-K4+M3)N5*P6+O6+N4*M3*L1*K0)J/(I/'G/&F.%E-%D,$B*">(8$4 2 0.--//?,&?+%1(((+ -  #!$'"&!% $$)$+&&!'"(#($)$)$)$*%(#'!)#*#&'!& '!,%,%,%)",%,%+$-'-'.(,%,%,%.'.'+#*"-%.%,$,$+"*!+"*"+#-&-&,%.'/(+$(!( ( *"-%*"*"+#*"*"'%&' )"+$+%)#)".'.',&-'-&,%+$.'.'.'-&.'-&+$(",&.(.(+%*$-&*$)",&-&-&,%*#-&/) .(*$)#,&.(.(.(,&+$,%-&+#*"($*%+&)$(#("(")"*$%'!$% *$+'($)$)#*#)"( '!("(#'"'!(")#)#)#& $#& *$*$(!& & ("*$("& "& & & & $$"# !""   0!.6"A,'G2-E0+9%1// 1!2!3!4 7 9":%;' =(!>)"@+#A+#A,"C-#F.%F.%F-%G/&H0'G/%H/%H/%G.%F.%E-&B,%@+$>+$>+$;(!:' 7#6!7!87525"!!  #""# %("%$'!'!! $#% % $(#%#"$$#$% $!!$$ "$$!" !"#"# &!%!'"% %  !#""""$#!$"!  !#"##!"#$##! " #$$!#%!$ #)$($$% )$*$%%("& ' ,&,%(!*#.(/(/(,%*#0) 1+!-&+$0) 4-#5.#5-#3,"2+!0(1* 4,"0(3+!80%3+!6.%4-#0(2+!2+!/(1* 2* /(-%,%.&,$( )"*#                                              -  -  -  -  -             - -         - -         $$" "         -  -     -  - " "     -      !  -   - $$  -  -    - - - - -     - - - -   -    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   - - - "$ '")$&!&!*$*%)$% '!)#& $%#& #"$%##% $"#%"!"$% &  #%$#""$$$$% "#$"!$" $& %$##$& &!% " "% !"$$!$"$#$& $## "% %$$##$ #"!" -J."lG8jF6W6'G)B&@&?' A(!B)"D*"E+"G-$H/&G0(H2*K3)M3(N4)N5*N4)L3(K1(K0(K0(K0(I0'F.%E,$D,$C+"@)!=* 7%2!2"0"-,,+*.*%&''+ -   "!$% '"&!% )$*%&!% '")$*%*%)$)$(#'!(!)#%%& $)"*#+$)"-&,%*#-&-'.',&*#,%.'.'*")",$,$+"+#+#-$,$+#+#.&-%,%-&.&+#(!(')!,$*!*"+"*")!&&( )!)"*#+%)#)#,&,&+$-&,%+$,%,%-&.&-%.'.'+#(!,&.(.(*$)#-&+%(",%.'-&+$)"+%.(-(*$'"*$+&,&,'*$)#+$-&+#*#)%+&,')$)#("& ("*$& & #$("($'#)#)#)")")"("("'#'"&!'")#*$*#& ###)#)#'!'!$& )#&!$!$$%%## "!!   /!---.///../ 1!3!5!8";#;& <' =(!>)"@+#A,$B,#C-#F.%F-%F-$F.%G/&G/%G/$H/%H/%G.&F-&B+%?*#=*"<)":(!8%8%8#9#@'"A'"<"4:%!!!!!! "###& %  !##$##%$""##"! !"!#$!#$"  "# #% % % '#% " "#% $!!%# #""   !$!!"!!!  !""# #&!$ $(#'"% % (#*$& $("'!% *$+%& & ,&-'+$' *#/(1* /(+%0)3,"4-#4,"2+!3,"2* 3+!4-#1)3+!6.$3,!7/%5-#0)4,"4-#0)2+!4-#2* 2+!3+!2+!1* -&/(.'-&.(*$)#("#!                                         -  -   -          - -  -         - -   -  -   - #"   !         -                 -    -    -   - "    -          - -   - - - -   -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    ##&!(#% '")$*%*$& & '!$"$#$ "% $ #" #$#!!"#$""#"#""#$#"!#! "" ##!######$""$ ##!$"$#$$!!!  "#$##"####    I, ];-V6)H+B'>&>' >)#@)"A)!D*!F+!G-"H/$G.%I0'K2(M3(M4)M3)L3(L2'K1(K0)K0(L1)I0(F.&E-$E-$C,#@*"=+"6'1"/"/"- ,,,,+(&%#&,   !!#$&!(#)$'#$ '"'"'")$+&(#&!%("("'!& %#(")")#)"-&,%*#-'-'-'+%)"+$-&,$( *"+$,$*"*",$,$,$+#*"+$*#-%-%,$)!' ''( +#)!*!)!)!( &&( (!' '!("(")#,&+%*#-&-&-&,%-&-%-&.&.'.',$*"-&-'+%(#(#-'+%*#,%-&-&,%)")#,&.(,&)#*%,&+&+%("("*#-%+#*#($+'-()$)$("%("("%%#$'"(#(#)$*#(!'!(")#("&!&!&!(#)#+$)#& ##!'"(#("'!#& *$&!" "$$#"!      /!.+.0110/00 0 3!6"9#;#<& =(!>*"?+#@+$A,%C.%D/%E-$F-%F-%F.%G.&H/&H0%H/%H/%G.&E-&B+%?*#=)"<)";(!:&9%7!A*#X?9\B;J/'8!8$  !  "& "#&!% #!!"!"& "!!!!#%##!"!!$!  ""#% #!"$#!!& ##"" !#!"!  ! !""G.%A)!F.%M3)S7,U8-V8-U7,T6,Q5+N4*K2)G/&C,#B,#*$& %-&1*!/()"& -&1* .(-&/(2+"3,"3+!3+!3+!1* 3+!5-#2+ 5-"5-#3+!5.#4,"1)5-#6.$4,!6/$6.$2* 2* 4,"4,"3+!0(2*!/(/)2,"0* /)0* -&+%,&*$& )#& ! - -                                   -              -  - - -         - - - -   -      - !" !         -   -           - -              -   -      -   -   - -    - -     - - - -  -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  D.$ - - -   "$ #'"% &!'")$&!$% & "!##$###""#!"$ #!  !#   !"!" "##!! !##"##"""!# !##"!# "$%$!     ##! !    " #>$?%<$9#8$8$"7%#9&$<'"?)!C+ F, G,!I-#K/$M1&M4)M3)M3(M3(M3(L2(L1)L1*L1*L2*J1)F.&E-%E-%D-$A+#>+#:)!4$0".!. -,,,+,,'$'+  !% % $(#($&!% % &!&!% *%)%'"& '!("& %#'!)")#("(!,%+#*".',&-')#)",$-&*#&+#-%-%+#)!+#,$+#)!(!*"+#-%,%*#' &&')!+#*")!)!( '%&(!(!(!)#*#*$,&,%.')#+$-&,%,%,%-&-&-%.&/',%+$-&-(*%'#($,&+%*#+#+%.',&)#+%-(-',&(#)$,'-',&("'!)"*#*")"&"*&,('"'"("'!'!'!$$##'"'#&"'"("(!(!)#)#("%!% '"(#)#)#("& ""!'"(#&!& "&!*%% ! "$$"         0"----01/001 1!3"6"9#<$<% <' >*#A,%A,%A,%B-$D.$D-$E,$G/&H0'H/'G/&H0%H/%H/%G/%F.%C,$@+$>*#<)";(!8%8#8"E,$bH?dH?O3)="8#    !" $" !!#$  !!& !!""" ""  !""! ! !$!"!  !" B+"_?2W8-M1(D+"<&;'>)"F/&N5+T9-V:.V9-U8-U8-R7,N4*J1'F.%B,#,%' #,&0*!/(*#(!/(2,".'-&/(2+!3,"2+!2+!2* 0)2+!2+!4,"5-#5-"2* 4-"4,"1)5-#5-#3,!6.$4,"3+!1)5-"5-#6.#3,"3,#1* 2+"6/&2+!2+!3,"2+"0* 0) /()#.'/) )$(#)$*%*%% "" -          -                                 - - - -            - - - -   -        -                -  -   - - -     "!        -     -    - - - - - -    - - - - -  -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  B,"E.$H0%K2'O4(R6*T6+U6+W7-V7.Q5+L1(E-$?)!<&:%$ %!'"% $% % !!"#!!   #  "## ! !#! !!#    !$$#  !""!   ! !!##!!   "" !09!54 3"4$"4$#4$"7'#;(">)"B*"E,!H-!I."J/#K0$J1&K2'K2'L3(M3(M3)M2*L1)K0)J0)H/'E-%D,#D,$C+#A*#?*#;("7%2"/!/./129%K7,S?5>,$+(*   "$ #&"'"&"% %!&!(#'"(#(#("& & '!%& $'!(!(!' '!*$)"& +%+%*$)")"+$-&*#&+#-%+"+#*")",%+#)!)"*#,$+#*#)!' &&' *")")!( ( ( '%'( '& (")#)#*$-'+%("(",%,%,%+$-&-&,%-&-&,$+$-'.(*%(#)$*%*$*#+$+%-&,%)#+%-'-'+&)$*$,'+&,&)#& )")")"("&!)$)$% '!)#'!'!& $"!"&!%!%!'!'!&' (")#'"%!%!'"("("("'"% !"("'"$" %!(#$! "% #"         /!--01100/01 2"4#5"8#;#<% ;' >)"@,%A,%A,%A,$A,#D-$F-%G.&H/'H0'I0(G.%D,!E+"E,$E-%D-%A-#?+"<* ;':%6 9"@'dJAhLBP3)=5 - "" "! ! ! $! "! #" "!    #!!!   "!!>' ?( 9%9%:%>' J/&R5*N1(H-&A)"<' ;(!=*#A.&I2*Q7.U9.U9-V9-V9-U8-R6,N3*I1'D-$A+!&$-&1*"/( *$*#2,"3-$0).'0* 3,"2* 1)2* 1* 1) 2+!3+!4,"6.$5-"2+ 5-"4,!1)6.#5.#2* 4-"4,"2* 4,"5-#7/%6.$4,"4-#1* 3,"70&2+!3,"3,"2+!2+!2+!2+!.'1*!3,"/)/(0)0(/(0)-&-&.(-',&+%+& &" - -                         -               - - - -           -                 - "   -            - -    !"!!!    - - -       -     -     - -   - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A+"C-#G/%K2'N4(R6+Y;0aB7eE;bB9Z=3R7-I1'B,#=( ;&:$9#9"8"7"7"=&$ !!"!!! !!"      ""!  !"    !"!! >( :#:$8%4#4$"3$ 4$ 7& ;(!=)!A)!E+!H-!G-!F-!F-"G.#I0%K2'L2(L3(M2)M2+L1*K0)J0(G/'E-$C+"B*"A)!@)"?("='":&!7$ 4#2 001:#M7,YC9ZD;=*"+('   !#$% % $$&!'"'"#$% % $#& & % ' )#'!%& )#' %*$,&)#'!'!*#+#' ' +$+#*"*#)!*",$,$)!)!+$,$)!)!( &%&(!+#)"(!( ( ( '%' ' ' && (")#+%-(*$(!& ("*#)"+$,%-&-&+$+$+$+$,&,&*%)$($)$*$)"+#,%,%*#)"*$+%,&,&("(#,&+%+%*$'!)#*$)"("(#)$)$&!'!'!' '!$# #% $ % % &!$#'!("("% % &!'"'!% &!$  !&!&!"! % % "  #""          -. -,6#B.'<' 42101 2!3#5#8#;#<$;& <(!?*#@,%A,%B-%A,#C-$G/&G/&G.&G/&H0'G/&E-"E,#F,%E,%D,$@+"=* ;(:':&;%:#>$\B7fJ@L.%<6      !   !"" !    :$:$7#6"6!7"7"6!5!5 6!8"=#?#@&>& >(">)#>*$@,%E0(L5,S9/V:/V:.V9.V9-U7-Q5+M3)H0&D-#A+!!,&/) ,&(!+$2,#2,#1* /(0* 3,"3,!2+!4-#3,"2* 2*!3,"4,"6.$5.#3+ 5.#3+ 1*7/$5-#3+ 5.#7/$3+ 6.#6.#7/%6.$4,!6.#2* 2* 7/$5-#5-#4,"2*2*3,!3,!1*4,"5-"2+3+ 4, 3+7/#3+ 2)5,!5,!4,!2*5-"5-".'.'2+ 2+!/(,%+%+&                 -  - -        -  -      - - -                      !  -  -          -      -    !!  !    -  -  -   -       - - - -   - - - - - - - - - -    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -@*!C,#F/%J1&N4(R6+V9.[=2`@5_@6[=3R7-J1'C,#=( <';%9$8"8"8"7#7"7"6!5 5 6!>&!!! !      K1'V:0V<2L4*>( 6#6#7$8%<'!>) A+ C,"E-%D.$C.#E.#H/$K1&M3(M3(L3(M2)M2+K0)I/'I/'H/'F.&E-%C,$B*"@& >% >&";%!7#3!2013J2)YC8\E) <(:'9&9%7#6!?+$@-&5#/1   "     6!6!7"8#8#7#6"6!5!6!6!6!5 5 5 5 5!8#=& F-&O4-O5.K3,G0*A+%@*$B,%F/'M3*R7,U8-V8-V9-V8-T7-P5+L2(G/%B,"@*!+%.()#& ,%1+"0*!-&.'.'/(4-"3,"2* 5-#2+!2* 3,!4,!5-#6.$1)4-"2* 3+ 80&4-"3+!6.$81&3+!6.$6.#6.$5-#5,!8/$4, 3+ 6.#6-"5-"4,!3+0(0(4,!2*4,!6.#5,!7-#7-#8.#9/$5+ 6,!9/$9/$9/%6,"90%7.$2*4, 91%:2'7/$3,"3,"6.%4-#2+"+$*#,%*$("  -                        - - - -               !!!"                  - -    ""!    - -   -      -  -     -     - - - -  - - - - -     - - - - - - - - - - - - - - - - - - - - - - -A+"C-#G/%J2'N5)R7+U8,U7,V6+U5+R3*N2(I0&C,#>( <'<& ;%:$9#8#8#8#7#7#6"6!7"8#7"6!6"7#8#;%:$   V8+hD3fD3W8)E)9!:#;%;&<'>*!@,"A-$C.'C/(D0(H0'K1&L2(M4)M4)L3(L2)L1)J/(H.&G.&G.&G/&E.%D,$B*"A(!?' =&!:% 7# 4 21/4R:2YB9P927!,*&( !#" !!$ $ "##""#$#" &!& & %%("'!%)#+&+&("& (!( ' *#+#+#*"(!(!*#*#*#&' +#*#)!&%%%&( )!(!(!(!' ' &%'' ( &%("(!)")#,&(#'!("' ("*$+%+%,%+$+$+$*#*$*%+&)$'"(#)#( )",$+$+$*$)$+%+&*$&!'"+&(#)#)#%& '!& &!'#)$+&'"&!%& $" !#$% $""%& %%#####% %  !%!$ "!       ,,5O4,[>6Z<3I.#50/1 3 6 8#8&7);)@)!A)!B*"C,#E-%F.&H/'H0'H0'I0(I1(I1(I0(H0'G/'F.%D-$C,$C+#A)"?(!<(!;' :&!7$3!4"6$3!-1'  24 5!6!6!7#7"6"6"6"6!5 45 6!6!6!5 5 5 5 5 7":%H0(X<2^?6[=4U90K1(A)!@( B*!G.$N4*S8-V9.W:/V9.T9-Q7,N5*J2'F.$B+"@*!.'*$'!-&1+"1+"0).'.'/(5.$5-#3,"4,"3+!1* 2* 4,!5-#5-#0(4,!1)3+!80&3,!3+ 6.#7/$2+ 5-#5.#6.$6.#3+ 91%4+3+8/$6."6-"6-!5, 4+ 3*5, 3*6."70$5-!7/#90%:0%;2'7-"6-":0%:0%<1'8.$;1&:0&7."90">5'>5';2%6-!90$;2&80$7/$2*1)4,"3,#1+!-(+&+&*&*%)$% -                       - - - -          -        ! -                    -   !"!  -  - - -    -     -     -       -     - - -    - - - - - - - - -   C-$F/%J2'M5)Q7+T8,V8-W7-X8.V7-Q4*K1'E.$@*!=' ;&:%9#9"8"7"7"6 6 6!7"8#8$8$8#8#7#7#9$9%:%9%:%;&<%:%:$   U5+c?4b@5U5*D&9;"=&=&=(>* @,#@,$A.&B/)D0+I2(K2'L3(L3(M3(M3)K1(J0(M3+L1*I1(I1(H0(F.&C,$A*"B)"?(!<%!8$ 6$ 4"3 1008"=(!3,'&$(!#"##!$"#####!"!$& '!%$("'!$*$,&+&& $& ' &)!)!*"(!'')"*")"%'*"*")!' $%%%(!(!&' (!' '( %%''$$)"(!& '!+%*$(#(#'!(")#+$+%+%*#+$+$(!)#+&+&)$&!&!(#' (!+$*$+%)#'!'")$)#% '"*%)$)#("%%&%%&!)$)$$&!& %$!""$ $" % %& #!"##"#!$ #           - -+*-;$P5/Y=5W=39%/-.258!9$8(;)?( @)!A*"C+#E-$F.&H/'G/'G/&H/'H0'H0'H0'G/&F.&E-$C,#C,#C,$B+#@)!>' <& 9%9%8$8%7%7$.11     24 5 6!8#7#7#7"6!5!5!6!6!7"7"6!5 445 5 434455 6!8#<&I.%S4(U5(O2(H.%A*!=) >) @+"H0'P6-U90W:0V:0T:/R9.O7,L5)I2'E.$A+!A*"+$("+%1*"1+!/)+$+$/(6.$4-#3,"3+!2+!2* 2* 4,!5-#4,"0(3,!0)2+ 7/%3+ 2* 6.$5-#2+ 5-"6.#80&80&6."6."4,!5-"90%7/#7."7."3*5, 6-"5, 5, 8/#81%6/"92&:2&80$:1%6."5-!80$90%:2&80$;3(<4(91%:3%=5(=4'<3&:2%<4'=5(;3';2&7."4, 8/$80%7/$6/#3, 4-!3, 2*3, .')#*$'!+&($!" -             - -   - - -         - -          -  -             -         -       -    -   -    -     - - -      - - -   - - - - - - - - - ""#'!#' ' $(!+$& #&!%!%!#!#& ' '!&!% $ !   "  E-%F.'K1(O3*R5+U7,Y:.^>1`?2]>2W9.N3)G.%A+">(!<' ;%9$9#8"8"7"6"6!7"7"7#8#8$9$9$9$9$8$8#9$:%;&<&<&<&<&<&='<&:$8#6"         -I,#S6.T7.E*!:: >%=$='<(>*?-!A-"B/"C0#D1#I0%J1&K1'K2'M2(M2(L1(L0(O4,L2*J1(I1(H0(E.%C+#A*">*!=)!:("7'!4%!3#2!0/...*(%$%( #!# ! ####!#""!"%% ""'!& #("+%+%%%'!%' )")!)"( %'(!("(!%&(!)!( &#&' & )"(!& ' (!&%)"$%' ' #"'!%& '!)#(#(")#'"'!'!)#*$*#)#*$*#& '")$($%!% &!)#'!'!+$*#)$'!% (#*$("% (#*%*%)#'!%$%%% % &!%!$% % $"  "!#$ ! % % %$"!!!"#!  #!        (&$,7#F0(K5,8&,+,0489"9%:'=&>'@( A*"C+#E-%G/'H/'H/'H0'H0(I0(H0(H/'G/&F.&F.%D-$C,$B+"@)!?' >&=' ;%;$;$=':$547#           <(34 6!7"8$8#8$9$8$8#8#8#7"7"7"7"7"7"8#8#7"6!6!6!6!6!5!5 5 455!6"7#8$:%=' >(!=' <&=(?* @+!B,!E.#M3)U8.X:0X:0W90V90S8/P7-M4*J2(E.%A+"A+"$& .'/(-'+$,%/(4-#3,"2+!2+!1* 3,"4,"2* 4,"4-"0)4,!1)2+ 70%3,!3+!7/%5-"3+ 4-"6.#91'80&6.#7/$5,!7/$;3'7/#7.#8/$4+ 5, 8/#7/#6-!90$;3%6. 81#91#91#91$6-!6-!91$80$81%81$<5(<5(:3&<4'>7*<4(;4';4'>7*>7+=6)<5)92%5.":2&:2':2'91&5.#80%5-!5-"7/$1).&1*/'4-"3,!-&/)2,"0*!0*!3/%95+<7-<6,<5* - -     - - -   - - -         - -       -  -     "     -          - !        -   - -      - - -      -   - - - - % '!&!! $'"(#'#)$*%'"'")$,'(#)$+%*#("+$+%(#& (")#+%.',&*$*#+$,%)"-'/) *#-&.'/'1* 2*!,%+%.(/(-'-&*#,$.'/( .( .( -( *%("%& (")#% &!&#%!&!$ ##!E-%F.&I0(N3*R5+T6,Z:/b@4fD7eD7^?3S6-I.&B*"='<&;%:$9"9"8#8#8#8#8#8#8$9$9$9$9$9$9$8$8#8#9$:%:%;%;%:%;%;%;%<&<&;%:$:%;%:$8#8#?)         6!7"7#9#9$6"8$;(!;' =)"?+$@,$B-$C.$E/%F1%J1&K2'K2'L2'N1'N1(O2(O2(P3*N2(J1&H/%F/$E-#C+"A*"@($>'#;'#8&!4$1"0!/-,+)%#""$)  "!  #"!"! ""#"#!"%%!!& & $'!)#)$&' '!$%)!(!' ( &( & ("(!&&' ( '&#'(!(!("'!& %&$$( #%'' $#' ' % &!'"'"'!("'!& & (")#)#("*#'!&$)$'#%!% $'!'!'!+$("(#'!%(")#'"#% '"(#'"&!$#%%#&!'"% #$&!#" !  #! $% ##""" "" !      -)$ !#).*'().479 9#:&<&=&?( A)!C+#E-$F.&G/'H0(I1(I1)J2)I1)I1(H0'G/'F.&D-%D,$C+#B*"@(!?&>&=&@( I0)Q90P8.@(5:$        @,"5!4 5!7":#9#9$9$8#8#8#8#8#8$8#8#8#8#7#8#8#9$9$9$8#8#8#7#8#8#7"6!5 44446!7"7#7#9$?' F+#I.%I/%H/#F-!D+F- J/#P3)W7.Y90X90W90V8/S7.O6,L4*I2(E.$A+"A+")#/) ,&'!(!,%0) 4,#2*!1) /'-&-%4,"2+ 1*4-"1*5-#1)3,!91&5-"4,!6.#3+!2+ 4,!6.$80&7/%5-#5.#4,"5-#91&7/$5-!80$6."5-!80$6."4, :2&<4&7/!81#91#;3%:2$7.!7.!91#81#81$92$=6(<5'92%<4(@9,?7+<5)<5)?8,@9,=6*=6*:3&6/#;4)<5);3(;1'8/$<3)6,"8.$:0'3)1(5+!3* 8/%6.#1)4-"60&60&71'94*<7,>8.?8-?7+  -    - -   - - -         -      -  -                     -     -   -    -         -      -       =6,:3)81(2,#2+#0*!+%)$($(#)$+&+%.'*$*#*#,%/).)+%.) 0*!0*!,%.(-'-'+&-'/)!0*"*$%*$,&/)!1+#2,#2,$2,#/(+%/(2+"1* 0* 1* /(.'1)1+ /(-'.(.'0) 4-#3,#1* /'0(3+".&2*!2* -%/'0(3*5-"4,!1)/)1+!2,"0* 0(.&0(2* 2+!1+!1*!0) -'*#)"(!+#,%&& )%)$(#&!% % C,%D-%F.&I0(L2)P4*T6+X9-[;/]=1Z<1Q6,H/'B+$>(!<&:%:%:$:#9#8#8#8$8#8#7#8#9$:%:%9%9%9%9$7#8#9$:%;&;%:$:%;%;&<&<&<&;%:$:$:$;%;%;%;%<&8#7"5!='      ),- /!2$5'6'6&9(!;("=)#?+$@+%C+%E-%H.'I0'K2'L3(M3)M2(N1'O2(P3*P3*P3*N2(K1'I0&F/$D-#B+!A)"A'%=&$:$"7$ 4"2 1 00.++*%"#%  -!!""! "% !!!!"$&  !'"%$%'!)#%&& $' (!( ' ( %( %(!(!' ' (!(!'&%&&& '!'!& %' %%&#%&' $#$' "% '"&!%'"'!%& '!(")"'!(!'!%$(#&"&!%!% '!' &(!'!("'!%'!)#'"% &!(#&!% % $"$""$ '"&!$% % "#   # #$"!  !       - (#!&)+*'()-3689#;( ?*"A+#B+#C,$D-$F.%F.&G/&I1(J2)K2*K3*J3*I2)I1(G/'F.&E-%D,$C+$C*#A)"@(!@' @'C*"I0(N6-S:1N6,B* =& -          L7*B-#7"4 6!7";$;$;$:#:#:#:#9#8#8#8#8#7#7#8#9%9%8$9$9$:%;&;& :%9$9$9%9$7"6"6!6!5 5 5 5 6!6!6!7"7#8#:%B*"N2)X:0\>3\?3S7+J0#G- I-!L0$S5+X90Z:1Y:1X90V8/S7.O5+L3)I1'D-$A*!+$.(-&)#*#,$/'0) .&0(0(0(,$5.#2+ 1*0*3,!7/$0)4,"7/$4,"3+ 3+ 2*2*5,!6.#80%6.#5-"7/$4,"5-"91&6.#5-"80%5-!6.#80%5-!4, :1%<2&:0#;1%:0%;1&:0$9/#9/#:0$90#91$:2%>6)<5(91%:2&?8,?8,=6*=6*?8,?8,=6*@9-;5(70#<5)=6*<4);2(:2'>4*7.$9/%<2(5+"5+!7-#3):1'8/%5,"7/$:3(:3(;4)=7,=7+?8,?7+            - - -  -            -   !"             -         -   -    -     -    - -              -  ;4)<4*=5+81&:2'91'4,"1* /).(0)1*!2+!2+!0(/(1)0)4-#3-#/)2,"81(5.$5.$5.%5.$5.$3-#5-$4-#5-$2* )".'1* 3,#6/&6/&70'60&4-#2+!5.$6/%3+!5-"7/$4, 1)3+4-!1*0)1*3+ 3,!80&5-#3+!0(2)7/%/'3+"4+"2)3+ 3*4, 7."6-!3+ 1*3,!5.#3,!0(/&1(3* 4,"3+!3,"2,"0)-&+$+$.&/'(!("*&(#("&!% B,$C,$E-%H/(L1*P4+S6+V7,W7,Y9-W9-Q5+J0)D-&?)#<'!:%8$8#8#8#8#8#7#7#8#8#8#9$:%:%:%:$9$8#8#8#8#8#9$:$:$9#9#9#:$:$;%;%;%:$9$:$;%:$:$:$;%;%;%<&<&<&9#7#6"='H0$            8$+-/"1#4%6&8' :(!;)#>*$@+%A*%C)%G,&K/(K1(K2'L3(L3(M2(N1'O2(P3)O3)O2)M2(L3(J1'G0%E-#B+!@)!=&!:& 8&6%4#3!2 2115!?,%B2*4&'$$   !"  #"!""   "$& #%$$& '!("'!%%$$%("'!%%&%&' ' ( )!)!$$' ' &%%%%$& $$$$$&'$##&#&!(#&!#% %%%& (#*$("'!)#& $'"'#&"% $'!' $%' ("'!%& )#'"#"$&!$$" #!!"% % $&!'"#$!!!!! "#!   -       - )$#%,2:"6 *))-136 8$;(>* @*"B+#C,#D-%F.&F.&F.&H/'I0(I1(I1)I1)I1(I0(H0'G/'G.&F,%D+$C*#B)"@'!@' @' @' B)#D,%M5-S;3F.&:#               R=.F1&:&4 6!7"8"9"8!7 8!9":#;$;$:#9#9"9"8"7!6"6!6!6!7"8$9$;&<' ;& :%:%;&;&;%:%9$8#7"6"6"6"6!6!6!6!6!6!6!6!7"8#9$;%E,$Q4*X9.Z<0W;/N3(G.#G.#I/%N3)U8/[;3\<3[;2Y:1V8/T7.P5,L3)H0'C-#A*!.(.(,%+$,%/(0) -&/'/(,$.&2+ 1*2+ 3,!4-"5.#0(1)5-#2* 2*2*1)0(4,!4+ 90%6.#5-!7/$4+ 5,!7/$5,!4+ 6-"3+6-"7/#5,!5-!8/#:1%9/#:0%:0$:0%:/$9.#;1%:0%9/$9/$;1&?6+?6+;2%=3'A7+@6*>4(?6*B9,@7+>6)C;.=5)80$=5)=6*;3):1';3(<4)8/$90&<2)7-#6-#8.$4* :1':1&7.$91&=6*;4);5)=7,=7,@8-?7+         - - - - - - -        -    -  ! !!                             -     -   - - -           -  -    ?6+?6+>5*90%;2'<4)91&5.#1* 0)1* 3+!5-#3* 1(4+ 4, 3*80$7.#4, 7/#;4)70&81&70&81'81'6/%:2(81'70&5.#+$1)5.$7/&80'80&92'91'6.$5-"5-"6-"4, 4, 7."8."6- 6-!7/#4-!2+2+ 3, 4,!81&6.#7/$3*4+ 90&3*5,!4,!3* 5,!6-!5, 7."5-!4, 3, 4-"6/$5-"2)1'3*5-"6.$5-#3,"4,"2+!.'-%/'1) 1( *#*#,&("'"'!% B-%E.'I1)M3,O4+Q4*U6+X8-X8,V7+Q4*L1)F.'@*$=(";&"9%!8$8#8#7#7#7#7"8#8$8#8#8#:$;%;%;%;%;%:$8#8#:#:#:$:$9#8"8":$;%;%;%<&='<&<&<'='='=' =' ='<&<&<&<&;%;%;%;&<&8#6"4 ;&F/$Q7*             >&>'C-$A,#:'7$7%9' :' ;(!?+$A,%B*$D*#G,%K/'K1'K1'K2'L2'N2(N1(N1(N1(N1(M0'K0&J1'I1'G0%D-#C,"=(:&8%6%5$3#3!2 336E.%U?6XC:B.%.'&  !#! ##"!!"%!% "#$#$%& "& %"$$&'!%$& %&%&&(!)"' $&& %%%$$$%%###%%&&%$%& $& '"% % % % #$%'!)$("(#)###% '#'"% #& & $&'!'!& $&("'"$"$% $$#!#$!#%!$#$&!$$!! "  !         - .*+-5 >& H/(L2+>(10/03 6"8%9(;*>* A*"C,$E-%F.&G/'G/'G/'H0(I0(I1(I0(H0(H/'G.&F.&G-&F-%E+$C*#B)#A("A)#@("?'"=&!<% 9#6!436"                _J7R>.G2&;'4 6!7"8#8"8!8!8!8!8!8!8!8!9":#;$<%;$:#9"9"9"8"7"8#8#8#8$9$:%;&<' >(!>(!=' <'<&;%:%9$8#7"6!6!6!6!6!5 5 6!7"6"6"7#8#8#8#:$@'E( I+#I-&G-&D,$C,$E.&H0(O4,W:2\>5]=4[<3Y:0V8/S6,O4*K2(F/%B,"@*!/),%(!,%.'0(/(.&/(,$-&3+!3,!3,!0)1*80&1)3+!5-"1*1)3, 0(2)2*5,!:1&8/$4,!8/$2*5,!7/#4,!4,!6."3+5,!6-!4+ 5,!7/#80$7/#90$80$80$6."91%:1%90#8/#90$;2&@7+A8,<2&>4(B8,@6*=3&@6)C9,A8*?6(D;->4':1$?6)>5';4':2&;3'<4(91%:1&=4)7.#7.#8/$6-":1&91&7.$:2&?8,?7,=6+>7+?8,A9-?6*    -    -    - -            -                              -   -   - - - -         - - - - -  >5*>5);2&>4(?5)=3(91&5.#4-!7/$80$90%8.#4*5, 6-!5, ;2'90$5, 80$=6+;3):2(92':3(:3(:3(<4*;3):2'6.#.&4,!7/$7/$70%70%81'91'6/$7/$80%:2&6."5, 7."6-!6, 8."91%70$3, 4, 5-!7/#:2&3*6-"5, 5, 8/#5,!4+ 3*3+!7.#6."4, 80$90$6."3, 4-"6/$5.#4,!2)2)6.#5.$3,"4-#3,"2+!.',%/'2*!1) *#*#-')#& $A,$C.%I0(O3*R5+U6,Z:/_>2cA4bB5\=2R5,H/'B+#<':%9$8$8$8$9$9$8#7#8#8$8$8#8#9#:$:$;%;%;%:%9$9#;%>&?&>%=%=%<$<%=&='=' >( >(!?)!>( =' >( >(!=' <&='=' =' ='<&;%:$:$:$;%<&<&;%;%;&<&8#6"5!;&F.#O6)        J/%U8.^A7R6-A&<#<$<&=(>* ?+!A,"C-#E-#F-#H/$K1'J1'K1'L2(O3)P3)N1(L0&P4*N1(J0%I0&I1'G/%D-#B+!<(9%7%6%4$2"2 235;!R81X>7R:27 +%%   !     !!$% """ "#%'!#$#"$'!' $#%%%$$&' (!$"$%$$$$#"$$#$%$%' &##%& $$$$% &!&!##$%'"&!("("%"%!'"&"$"%%#%& & & $&'!'"$"$% $"& """ "% ""#$&!% !         - **+3 ='E.%M5+B,"3 11 2 5 7!9#:%;(=( @)!B*"C,#D,$E-$E-%F-%G/&H0'I0(I0'H0'H/'G/&G.&F-%E+$E+#D*#C*#B)$A*$A)#@("?'!=%:#7!4 11           K2$H/#D,!@);%19$9$9$8#7"7"7"8#8#8#8"8!9"9"9"9"9":#:#:#:#:#9"8!8!:$<% <& <' ;&:%:%;%<&;&;%<&>( >( >( ='='=';%:$9#7"6!5!6!6"7"7#7#8#8#7#7#7#7"7"7"7#9#=$@$B'"C*$D,%E-$F-#H.#K0$P5(U:.Y=0Y=1W<1V;0T9/Q7-M4*J2(F/%B,"@*!C+#C+#C+#B+#A+#@+#@+#@+#@+#A+#@+"?) =';%:#=$I/$U9/U8-N2'B*"6$3 5"2)4,!91&8/$5,!8/$2*4+ 80$4,!5-!5-!3*5-!5-!4, 5,!7.#8/#80$91%8/#8/#7."90$;2%91$80#91$<3'@8+@8+=3'?6)D:.@7+=4(?7+B:.?8+=6)@8,;2&:1$?6)=4';4(;3';3'<4(:2&91%=4(8/#8/#91%7/#:3&92%70#;3'?7,@8-?7,>7,?8-@8-=4(    -   - -     - -       -        !      -           -  - -         -     - - - - - -  -    - - - - - -  >5*=4);2'=4)>5*=4);3(80%7/#:2':1&;2';1&5+6, 8/#6- <2&<2&5+:1%=6+<5*;4);4)<5*:4);4);4):3(92'70$2*4-!6.#7/$81&81&92'92'6.#5."7/#91%6."6-!80$8/$7."90$91$91%5-!4, 5, 6.":1&8/#:1&5,!5, 7.#6-!6-!5-"4,"6.#6-"5,!;2';3'7/#3, 4-#6/%6/$6-#3)1'3+!4,#2+!2+!2,!2+!/(.&/'2*!2*!+#)#)$&!'!C,$D.%H0'M2)P3*S5+V7+Z9,_>0eE8eF9X:/K0&E,#@)!=( <&;%;%;%9$8#8#8$8#8#8#8#8#8#8"9#:$9#:$:$;%;%=&>&@' A("B)"A(!@' A(!B)"C*#C*#B*#B*#A)"@)"?)!>(!>( >( =' <';&;%;%:%;%;&;%9#9$<&=' ;%:$:%;%<&<&=' >(!>( <&:$;%;%@) D,"G.#J0$      K2(R9.V=2K2(>$=$>&>'?( @* @+!A, A, C.!E/"G1$J2'L4)N5*O4*N2(N2(N1(N2(S6-O3*I0%I1&J2(G0&C,"A*!=)!9&7&6$4#2!1 235<"V<5U<4J1)-' #%  -!  !#" ##!#$$##!!#& & $#$%%%#$&&"!#$$$##"#$$#$#"#%%##%& %#%& %& %#$$$& '!("& #!% &"&"$"%$#%%$%$$& % #!#% &!#&!""" #%  "#"#"#! -        +)(*.27"7#4!2!2!2!5"7#9$:%<'>(?) A*"B+#C+#D,$E-$G-%H.'J/(K0)L1)L1)L0(K/(K.'J.&I-%H-$E,$D,$C+%B+$A)#A(!B(B'A'=%7"315"          M4&I1$D."?)9$1.;$:#:#:#:$:%:%9$8$7#7#7#7"7"7"7"7"7"7"7"8"8"9"9#9#:#:#;$;%:#9"8"9":#<%=' >' =' <&;%;%<&='<'<&<&<&=( >(!>( =' >( >( =' ='<&:%9$8#8#9$9$:%:%:%9$8#7#7"6"6!6"7"8#<%B(!I.$N3'S7+S7*O2%K-!J-!L."R4)X:/Z<1Z<2Z<1Y;0W9/S6,P4*K2)G0&B,#A+"C+%D,&B,%@+$@+#@*#@*#A*"@+"@,">+!<) <(;&:%;%?(!B+%B*$='!9%5#3!4!5-!:1&7/$4+ 80$3+ 3+ 7/$4+ 5-"6-"3*5-!5-!4, 4, 7."8/#90$91%7."8/#80#91$:1%90#8/#:2%;3&A9,?7*<2&@6*E;/@7+=4(?8,C;/>7*;4(<5(80#91$>6)>5)<4(=4(<3(=4(<3';2'=5):1&90$:2&8/#:2%:1%7/#<4(=5*?6,>6,>7,?7,@7,        - - -   - - - -      -                -        - -          -      -   -  - - - - - - - - - - - - - - -   =4)>5):2&;2&>5*<4(<3(91&7/$91&91&;3(;3(3*4+ 7.#5,!=4)=4)5, :1&=5*<5*:4):4):3(:2(:3(:3';4(92'70$4-"5-"7/$70$81&82&81&:3(7/$5."6.#91&7/#6/#80$:1%7/#90$:2&90$5-!5-!7."8/$;3'80$:1%6-!5,!90%7.#7.#6.#4-#6.#8/$7."<%D*!O3+S7/P4,K/(C(">$<$;%<% =& ='!>'!>'!>'!?'!?'!@("@("@("@("?'!>' =/'B+"C,#F.%J0'N2)P3*R4+T6+U7+Y;/[=1U8-N1(J.%E,#B*"?)!>( >'>%<%;%:%:%:&:%9$9$9$9$9$:$<&=' ='<'<&='>' ?( A(!B)"B)#C)#C*#B)#A("B)"C*$D+%D+$C*#B)#B)"A(!A(!@(!>'<&<&;%:$9$9#9$9$:$:$:$:$:$9#9#9#;%=' >)!=( ='<'<&<&<&<&;&;%;%;%;&<&;%<&<' 4 5!>'B* E,!F-"     8$8%<( =) ;%:$<%>'!@("A)$A)$B*%D+&F-(H/)J1)J2(L3(M4)O5*P5+Q5+Q4*P3)P4*P4+N3)K1'I0&H0&E.#A* =&>(";% 9& 4"3"1!2!2 239"F/)F.(:#( % $'  -  "! !##$!$%""$& #!!%' %"#&$!"$$$"!##$#"#""$$$##$%$$'!$"$$##$$%& & % "!% (#'!% #$#!""#& $!"!! #$&!% $!! !"!!!"!! !            .+)&'*,/1233!4"5$7%9'<(?)@*!B+#C,#D,$E-$F-%G.&I.'I/'J0(K0)K0)K0)K0(J.'H,%G,$G,#E+#C*#C+$B+%B*#D*#J0'Q7,Z@5]C9L4*;$42         K2$G/#D,!:&5!/,8!8!9":#:#9"9"9"9"9"9":#:#9#9#8#7#7#7#7"7"7"7"6"6"7"7"6!5 6!7"8#:$;$:$;$;$;$:$:$:#9#:$='=( >( >(!>(!=' <&<&='>( >( >( >( =( =' =' ='=' =' =' ='<&<&<&:%8#9$9$:%:%:%:%9$8#8#7"6!6 7 8!9":#B)!M2(X:/`A6gH>]>4P1(K,#L-$N/&S4+Y90[;2[<3Z;1Y;0X:/U8-P5+K2(F/%B+"A+"B*$C+$B+$A+$B+"C+!C+!B+!@*!>)!<)!;( ;(!:(!9& 7%7% 8$ 7#5"4"2!2 3 80%6."3+:1&5,!5,!6."2*5-!7.#3+5-!5-!4, 5-!7/#7/#7/#91%7."90$:1%91$:1$90#90$;3&:2%@8,>6)<2&A7+D:.?6*=4(@8,B;.>7*<5(<4(91$91$?6)=5(<4(=5)=4(=5)=3(<3'?6*;2&:1%;2&8/#;1%;2&8/#=5)>7+?8,=6*;4)>6,@8.     - -     - - - - - - -                              -   - -       -    -  -   -     -   - - -   -  >5*90%80$=5)<3'<3(80%91&91&7.#:1&;3(4+ 4+ 7.#3*=4);2(4+!;2'>5*=5)<4):3):3);5*:3(;3'=4)<4(7/#4, 6."7/$80%:3'81&5-#91'70%5.#5.#81&6/#6/#:3&70#70#92&:1%6."3+5-!91%;2'<3(91%91%6."4+ 6-"5,!5,!5,"4,"6.#80$7#9#;%='>(!>(!;& 9$:$:$;%=& ='!>'!?("@("A)#A)#A)#A)#A)#A)#A("@("?(!>' C-#F.%K1(O3+R5,T6.V7-W8-W8,U7+R4)N1'J.$E+"A) ?( =( <' <' <&=&=&<&;%;%;&:%:%:%;&<&<&>( >( =' ='<&<&>&>&@& A("C)#C*#C*$B)"A(!B)#D+$E+%D+%D*$C*#B)#C)#C*#A)"?(!>( ?)!?)!=( <&='=( =' >( >( ='<&;%:$:$;%<&=' ='<&<&=' >( >(!>(!='<&=' >( <&;%;%;%<'>(!=' ;%:%:$;%<&;&:%9$9$9%,/4 <%@(D+    //12!5"8%;(!=)#?*#@*$B*$D+&G-(I.*J/,K0,M3+M4*N4*O5*P4*Q5+R5,R5+Q4+P4*N3)K2(H0&E.$C,"A*!>' <#:"8"4!1 1 3#1 //-./*#""%  - " "$"!""!"$%"! %& $!"' $! "$$#! #"###"!"$$#"!#$!#'"$"###"#%$$$$""$&!%##$" """ ""! #% % $"  !   !               ,*((*.24554 5!6#7$9&;'>(?) @)!A)"C*"D+#E,$F,%H.&J/'K0)L1)L1*K0)J0(I.'H-&G,%E+$D+$C*$B+$A+$A+#B+"F-$L1'U:/^C8V<2F.$;$5 7"      I2%D."<(5"0+(6"6"7"8#8#7#7"7"7!7!7 7 8!9"9"9"8!8!7 7 8!9":#:#9#8#8#7#7"7"7#7#7#7#7#6"6!5!5!5"7#8$:$;%;$:$:$;%<&='<&;%;%<&='=( ?)!=( <&<&<'='>( >)!?)!?)!?)!>( >( >( >(!>( ='<&;&;%;%;%:$9$9$8#9$:$:$;$;%;$:#8"8!8!8!7 7 9"B(!J-%S4+Y;2Z<3P2)I,#H,"I.$L2'Q6,U:0X=2X=2V<0U;/T:.R9-O6+K2)F.%B*!B+"A)"@)"@)"?)"@)"A)"@)"?)!>)!=)!>* >* >)>(@* D,#M4+V<2N3)A';%5#2 4!5-"4, 91&6."5-!6."2)3+6."5, 7.#7/#6-"6."8/#8/#7.";2&8/#:1%:1%:1%;2&:1%:2%;3&:2%@8+?6)=3'A7+A7+<3'=4(?8,@9,=6)<5(=5);3&:2%?6*=5(=4)>6*=4)>5*=4)<3(@7+;2&91%;2&8/#>4);1&7."=5)>7+?7+=6*;4(>6,?8-  - -   - - -   - - - - - -       -               -               -         - - - -   - - -    -  >5):1%;2&?6*>5)=4)8/$;2';2'4+ 6.#91&0(2)2)1(=4)90%7.#;2'?6*=5*<4):3);3*<6+<4)>6*?6*;3'4, 3*7.#80%80$90%6-"80$7/$81&70%6/$81&5/#70$92&81%70#70$91%7/#5, 6-!90%;2&<3'80%6.#2*2)5-"7/$5-"4+!3* 5,!7#8#9#9$8$7$5$5$8$:$;%<& =&!>'!?("@)#A)#B*#B*#B*#B*#B*#B*#B)#A)#A)#C-$F0&K2)O4+R5-T6.U7-V7,V7,T6*Q3(M0&I-#E*!A(?'<&<&<' <' ;&;&<&='>' ?' @' ?' =&=&=&='='='<&;&<'>' ?' @'!A(!A(!A(!B("C)#C)#B("B)"D+$E,%E,%E+%D+$C*#C*#C*#B*#A*#?)"?)"@*"@*"?*"?)"@*"@*"?)!=' =' =' >( >(!>)!?)!?)!@*"@+#?)!=' >(!?)"?)!>(!>( >( =( ='<&<&;%;%;%;&;&;&<'<'=( >)!>)">)!=( <&;%;&;'<'<'=' =&!=& <%<%<%;$:$,048#<%C*  5245 5 6!9%<(!>(!?)!A*"C+#E-$G/%I0&J1'K2)L4,M4-M4,N4+O4*P4+R6,S6-S6-Q6,N4*K2'F.$B+!A* @) >'!<%!:$ 8$4"1!0 .-,++(&$ !$&  -  ! !"  $$!!"" "#%%#! #$! "##""""!$$!!  """! !"!"& $"##"!#$#""#" "% &!$"#" !!"!# #&!##$                    ,++-4!<'E/&H1(@(9!8"7"7#7$8%9%;&=&@' B("C*#E+$F,%G-&I.'J0(K1)L1*L1*K1)J0(J/'I/'H.&F-%C,$A+$@+$@+$?*#@)"A)!C* E+ M1'N4*C+":#53<(6#0)&/000012 3 4 5 5 7"8#7#7"7"7"6"6!7!7 8!8!8"9"9"9"8!8!8!9"9":#:#:#9#8#7#6#6#6#7$7$6#6#6"6#6#6"6"8$:%;&<&<&;%;%;&<&<&<&<&='='=' >( =' ='='='='='>( >(!>( <&<&=' >(!?)!?)">(!=' <&<&<&;&;%:%:$:$;$;%;$:#;$;$:#:#:#:#9"7 6668!>$A'D) D*!B) A) A*!C,"E.$I2(P8-U<1V<1V<1V<0V)"=)"=)"<(!<(!<(!=) =)>(@)B)E, J/$T8-]@4S5*D(<%4"2 4!6-"91%5-"5,!6."2*4, 7.#6-"8/$80$7/#8/#91%90$7/#<3'90$:2&91%:1%:2%:1$;2%;2%:2%@8+?6*?5(@7*?5);2&=5(?7+?8+=6);4'<5):2&91$?6*>5)=5)>6*<4(>5*=4)<4(@7+:1%90$;2&8/#@6*90$8/#<4(=6*?7,?8,=6+>7,>6,  - -    - - - - -           -                       -           - - -     - -  - - - - - -    -  =4(:2&=4(@7+>5)91%:1&80$80$5-!7/#91%2)4+ 6-"2)<3(;2'8/$;2'?6+>5*<4*;4*<5+=6,<4)>6*>5*;2&4, 3*8/$90%90%8/$4+ 80%80%:2'81&92'93'5."70$81%:3&80$70$80$5,!3*4, 6."7."91%7/#6."2*2*3+ 5-!5-!4,!3* ;%>'C+"D,#A) >&<%;%;%:$:$;%<% =& >'!?'!@("@)"@("?'!A)#C+$C*$B)#B)#B)#A,#D.$H0'M2)P4+T6.V8.W9.\>2eG;eG'<';&;' =(!>)!>)!=( <';&;%<' ?("?(!>' ?' >&>&>&>&>&>' >'>& @' A(!B("B)"B("A(#B(#B)#C*$D+%D+$C*$C*#B)#B)"B)"A)"@)"@)"?)"?)"?)!>(!>( >(!>(!>( ='=' >)!>)!?)!?)">)!>( A)"C*$A)"=&<&>( >( =( ='<'='>( ?)!?)!?)!=';%<&=( <'<&<'=' >(!?)">)">)!>)">)"=( <';&<&=&>& >&!>&!=& ;$;$;$;$;$:$:%:%9$8#8#8#5!21#'-26";%:"D+"R90P6.C*!=%=%>&?'@( B+"E-%E-%F.%G.%G.%H0(I1*K2+L3+M4+O5+P5+Q5+R5,R6,P5+M3)J1(G/&D,$A*"?( <'9&8&7%5$3#3"2!1/-,*(&$%&(  - !#" !# !##! !!"!!!!" !""  "! ! !$"!##" "!  !"" !%&!#!" " # ! % ! #                 ++,-6#@,#H3)P:0I1(>&<%;%9$9%:&;'<'>'@( C*#D*$E+$G-&I/(K0)L1*M2+N3,M2+K0)J0(I0(H/'G.&E-%D+#B+$A,$?+$>*#>)#?)"?)!?'?&=%:#6!204!#%'+....//023 4 5!6!6!6"6"7"8#8#7#8#:#:$:$:#:#:#:#;$<% =&!<& <%;$;$;$:$9#8#7#7#8$9%8$7#7#9$9%:%9%9$9$:%;&<&='<&;%;%;%;%<&<&='='='=' ='<&<&<&='>( ?)!?)!?*"@*"@*"@*"?)">(!>( >( <':$9$9%;&:%:%:$:#:#:#:#:#9"9"8!8!8"8!8!7 7 7 7 9":#:$:%;&=)?* @)!B)!C*"F-$L1(S7-X;1Z<3Z<2Y;1X:/V8.R6,N2)I/&E,#C*"@(!@("@)"?)#?*#>)">)!>)!>)!=) <(;';';&;&<'?)!E/'J3,C+%:$6"2!13!91%4, 5,!8/$5,!6."80$6."91%7."6-!7/#91%91%80$;3'80#:1%90$80#8/#90$;2&;3&<4'@7*?5)>4(@7*?5);2&<4(?7+=6*;4':2&=5);3&91$?6)>5)>5*>6*<4(>5*>5)=4(?6*:1%:1%:1%90$@6+:1%:1%=5*>6+>6+>6+=5*?7,  - -    - - - - -             -     - -                      -    - -       - -    - - -   -  ;2%=4(A8+;3&:2&91%6."7/#80$;2&<4(5,!6-"7."3*90%:1&8/$:1&>5*=5*<4*<5+<5+<6+;3)=5)<3'<3'7/#5,!80%:1&:1&8/#3+80%92&;3(81&92';4)6/$80%92&;4'81%7/#80%6."4, 5-!7."7."91%8/#7/#4, 4, 5, 5,!4+ 3+!<&@( J1(Q8/P6.N4+H-%A'?' =& <& =& ='!>'!?("@("@("@("@(!@(!@("A)"A)#B)#A*#A*#@+"C-$G/&L1)P3+S5-T6-T6,W9-bE9iL@Z=2K.$G+"D*!A)!A*"@*#@+#?*#?*#?*">*"=)!=( >)!>)!>(!>( >(!>(!>( =' <'<&=&>&>' ?' >' =&=&=&?' @'!@'!A(!A("A'!@'!A(!A("B)"B)#C*#A(!@'!@(!?(!?)!?)"?)">(!=' ='<'<&<&<&;%;%='>(!>(!>( ?' @'!C("C)#A)"?( <&<'=( <' ;&<'=( =( =' =( >( >(!?(!?'!>%=%>&?' @(!@(!?(!>(!>' ='>( >( >(!>(!?' ?% ?% >% =% =% <%;$;$;$;$;%9$7"6!5!4 3 21/+'$! E-$U;2aG>Q6-A&?%@&A'B)!B)"C*"C*#D+$D+$E,%F-%F.'G/(H/(I0'J0'L1'N2(P3)P3*P4*N4)K2'G/%C+#B+#A*$@)#@("=' 9%7$6$3#1!1 126!<&!C.)?+&2 *'&(  -!  !" !!!    !"!!!       ""#!""!     !  $$  ! " !!!!# !!!                *++/5":&?)!@) =&<%<& ;'!;'"<("=(!?( @)B* E+#G,%G,%H-%I/'K0)L1*L1*L1)K0)J0)J0(I0(I0'G/&F.%E,$D+$B+$@+$@+%@+%>*$=)"=' <%;$9#5!2/0!$'),-//0122 3 4!5!7"7"7"7#8#9$9%9$9$:#:#;$<% <%<%<%;%;$:#9#9#9#:#:#:#:#8#7"8#8#9$:%:%:%<'=( =( =( ;':%:&;&<'<'<&<&<&;&;%;%;%<&<&<&<&='='=' >( >( >( >(!?)!?)"?*"@*#A+#?*"=( <'<'<';%:%:%:%:%:%:%:$:#:#:#:#:#:#9"8!8!9"9"9"9"9":#:#;$<%=%>&C+$L3,O5.J0)D*#E*"G+"L1'S7-W;1Z<3Z<2Y;2X:1V8/Q5,L2)F/%C,#A+"?'!@("@)#?)"?)"@*"A+"@*!?*!>)!=)!;( :' 9&8%7$6#6#6#5#3!2!1!2 4"4, 5-!80$5-!6-!7/"6."91%5-!4, 6-!91%90$90$;2&8/#90$90$80#7.!91$;2&;3&=4(?7*=4(<2&@6*?6*;2&<4(?8+?8+<5(92%=6)<4';3&@8+?6*>5*?6*=4(?6+?6*=5)>6*;2&;2&90$:1%@7+=3(;2&=6+>7,>6,>6,=5+?7-  - - - - - -   -                         -      -       -    - -        -    - - -   -  ;2%<4'>5(;3&80$6."91%<3'90%;3'=4)7.#5,!7."5,!90$90$8/#:1&>5*=5*;3);4*=6,>8-=6+<4(;2&:2&5-!3+90%;3(;2'90%6."80%92':3(91':2'<5*70%92&:3':3'92%70$80$8/$6-!7.":1%:2&<3'6."7/#7/#4, 6-"7.#5-"3,!=%B*"H/'O5.T:2L2)B(@( ?(">'">("?("?("@("@("@("@("@("@("@("@'!@("A("@)#?)"@+"B-$F/&K1(O3+R5,T6-T6+S5*X;/]?3V9.M0&F*!B(@'?( >)!>)!=(!=(!=(!>)!>)!?)!>(!>( >)!>)!=(!=)!>)!=( <' =( >)"?*">(!=' =' >( >( ='<&=' ?)!@*"@*"@)"?' ?' A(!C*#A(!A(!A'!?&=%>' ?)!?)"?)"?)">(!=' ='='?)!?)!>( =' =( >(!?)!>(!?)!A)#C)$B(#A("@("?(!=( <'<';&;&;&<'=( >(!=' =' >& ?& ?& @'!A(!A("A("B)"A)"A(!@(!@'!@(!@(!@(!@' @' @&!@%!?%!?%!?&!>&!>&!=&!=% <%;$;$9#7!7!6!5!4!2/,(&$:#>&I1)N5-D+$<"=#@%B(!C*$C*$C)#E,%F.'G.'G.(G/(H0)I0)I0(I0'J0&L1'N2(O3)O2)N2(L2(J1'E-$A)!@(!?("?)"?)!=' :%8$6$4"1 0 003 @+#O91L4->%2)'  !!  !  #! "" !!  !!""    "     !"   "              ++++-03 5 8"9#:%;&!<)#>+$@+$B+#D,#G-"H.%I/'K0(M1)L1)L2)L1)K1(K1(K1(J0'J0'H/%G.$G.$G.$G.%F-%D,$A,$A,#A,$@*">( ?' @% @%!@%"=$ 8!1.3"$')+--./24"5"5"6"7"7"8#9$9#:#;$;$:#:#;$<% <% <%;$:#:#:#:#:#9#9":#;$;$;$:$9$9$9%;&=( >)!>)!=)!=( =( =( =( <';&<'=( <'<&<&='='=( >( ='<&<&<&='='='='='=' >(!?)!A)"A*#@*"?*"@*"@*#?)!=( <'<&;&:%:%:%9%8$7"7"8"8"9"8!8"9"9"8"9"9":#:#:$;$<& >'!=&!=& @("E-'L2+Z?7iMD^B7K0$A'A(D+K1&R8-V:0W;1X;1X:1W90T6.P3+J1'E.$B,"A+"@("@("@)"?*#?*#?*#>*#>*#=)"<(!;(!;(!;'!:' 9& 8%6#5#4"4"4"2!0 2 5#7."91%6."7."7."6-!91%5-!4, 5-!:1%80$80#90$8/#90$80$7/"8/";3&<3':2%<4'?7*>4(;1$>4(?6*;2&=5(@9,@8,=6):2&=6);3&;3&?7*=5)=5)?6+=5)@7+?6+=5)>5)<3':2&91%;1%?5*>5);3'=5*=6+=5*=5+>6+?8-   - - - - -               -  -          -        -     - -    - -        -   - - - - - - -  :1$;2&=5'<3&:2&90$:1&<3(;2'<4(<4(6."5,!8/$6-"90%90%6-";2&@7+>6+;3):3);4*=7,>6+<4(<3(:1%2*2)90%:2';3(;3'91&91&91&:2'91';4(<4)5.#70$;4':2&70$7/#80$7/#6-!6.":2&;3'=5)91%5-!7/#5-!6."7/#7/#8"9":#:#;#=%?' ?'!>(">(">("?(">(">'!>'!>'!?'!?'!?("@(!@'!@'!@("@("?)"?)"C-#F/%I1'M3(P5*S6,T7,U7,V8,U8,S6*O3(J/%E+"@'?( ?)!=( ;&:%:%:&;&;&;';&;&;&;&;';&;'<';';&<'='='=( >(!>)!?*"@*#?*"?)!?)!?)"@*#@+#@*#?)"?)!>(!>' >&>&?' ?' >(!>(!>(!=' ;%9#:$:%<&='>(!@*"@*"?)"@*"?)!>( ?(!B*#B)#B)"A("@)"?)"=(!<';&:%:%:%;%;%=' ?)!@)"A)#B)"A("A(!A("B("B("A("A(!A(!A(!@'!@'!@'!@'!@'!A(!B("B)"B)#B)#B(#A(#?(">(!>'!=& ;%;$:$9#8!6!5!4"3 0-)&# 458":#9":"<$?& B*$E,'E-'E-'F.(G/(F.(F-'G.(H/)I0)J1(K2)M3(N3(O3)O3)O3)M2(J0&H/%F.%C,$@("='!>)!>)!=( ;&:$8#6!4 20007%C0(B.&;'2 (& -  ! "  !  !     ! !!                    ----./13 6 8!9#:$:&;( <*!>*"A+#D+$F,%H.%H/&I1&J2'K2(K2'K2'L2(L2(L2'K1&I0%H/$H.#H.#G.#G-#F,#D,#B,#A,#A-#A,#@+"@)"A'!D($R73Z@;H0+7"1/!$'*+-./024 5 6!7"8#9$9%:%:$:#:$;$;$;$:#:#:#:#:#:#;$;$:$:#9#9#9#:$;$;$:#:$:%;&=( >)!>)!=(!=( <( <' =( =(!=' ;&;&;&<&<'=' =' >( >( >( =' ='='<&;&<&>( >(!>)!?)"@*"@*#@)"?' ?(!?)"?*"@*"?)"=( <'<&<&;&;&:%9$8#7#8#8#9#:#:$:#9"8!8"9":#:$<%<% <% <% <% <%;$<%@'E* O3(]A7fKAS9/C* ?'A)D,!J1'P7-S9/U:0W;1X;1W:0T7.P4+J1(E.%A+"@*!A)#A)#@)#?)">)"=)"=)"<(!<(!<' ;' <' <' ='=&;$:#:#:$:$8#5"1!2 4#;3'7/#8/#7."6-!91%6-!4, 6."80$7/#8/#90$80$80$7."8/"90$<3&;2%80#:2%?7*>4(:0$>5)@7+<3'=5)@9,B;.=6)92%<5(:2%<3&@7+<4(>6*>6*=4)@7+?6*=5)>6*:1%;3':1%;2&=4(>5)<3(=5*?8-?7-?7-?7->6,      - -              -  -    - - - -   -   -  !     - - -        -   -     - - - - -  <3&?6*=4(<4(=4)=5)<4(:2&<4(=4)8/$7."8/$7.":0%:1%7.#90%=4)=5*<4*;4*<5+>7,?7,=5)=4(:2&2*2)90%90%:2(:2(:2(;3(91':2(:2(:3(;4(6/$70$;3':2&6/#7/#90%7/#5-!5-!91%:2&<4(91%80$;2&5-!5-!6-"8"9#:#:#;$<%=% =&!='!>'">'">'">'!>'!>'!>'!>&!>& ?'!?'!@'!@("A)"A)#@*#@+#A,"E.%J1&N3(R6*U8,W9.X:.X9.V8,S5*O3(J0&E-#@) >) =) ;( 9&8%:%:&:%:%9$9$9$9$9$9$8$8$8$9$:%:%;&;'<'<'=' >(!?)!>)!?)!?)!?)"?)#?)"@*"@*"@*"@*"?)!>( =' ='='<&<&=' >( =';%;%;&<&>( @*"@*#@*#@*"?)">( ;%<&@)"C+$B+$@*#?)">( =' <';';&;&;&<&=' >(!A*#C+$C*#C*#C*#B)#B)"B)"B)"B)"B)"A("@' ?&?& @' A(!A("B)"C*#C*$C*#B)#B)"A)"@*#?*">)!=' <&;%;%;%;%:$9#8"6!30-)&"7"14 7#9$;%<& >'!@)#C+%D-'F.(G/)G0)H/)G/(G.(F.'F.'H/'J1(L2(N4)P4*P4*P4*P4*O4)L3)I0'F.%D,%B+$@*#?*">)!<' ;%:$8"7!5 30.,*)('&$& -      !   !                -  - -//03 7$<(A+#C,$?( <%<'<( <)!=*!?)!@)"C*#E+$F-$G.$I0%J1'K2'L3(M3(M3(L2'K1&J0%H.#I/$J0%J0%I/%H.%G-%F-%D-%C-%B-$A,#A+#B)#B(#M1-X=9R94B,&6#04!$'*-/13 3!4"5"6!7#9$:%:%9$9$9#9#:#;$<% <% <% ;$:#;$;$;$;$;$;$:#9":#;$;$<%;$;$<%<&=( ?)!?)">)!>(!>(!>(!>)!>)">)!>( =' <&<&<&=&=&<&='=' ='<&='='='<&<'>(!@*"@*#@*#@*#?)"?)"@)"A)#@)"?)"=(!=( <' <' ='='<';&9$9$:%:%9%9$9#8!7!8!9"9"9"9#9#;$<% =&!=& <%;$9"8!9":$=%?&A( @' =$=&=(>( >( A+#J2)Q8/T:1V;1W;1W:1V8/S6,N3)I1'D-#?) >( A)"A)#@)#?)#>)#>)#=("=("=(!=(!=(!>( >' >'@(E-%J1)L3*L3*D,";#7#2"2!4#6-!7."6-!6.":1%6."4, 7.":1%8/#8/#80$8/#80$7."80#90#:1$91$80#:1%?7*=4'<2&@7+@7+;3'>6*@9-A:-<4(;4'>7*:2%<3'@8+=5)?6+>6*<4(>5)>5)>6*?7+;2&<4(;2&;1%<3'>4(<3(>6+?6+@8-?7-?6,>6,       - -                         !      -   -          - - -   - - - -  ;2&?6*>5)>6*>6*>5*=4);3'<4(;2'8/$7."90$7.#:1&:1%7."<4(?6+=5*;4*=6+@8.@9.>7,=5)<4(:2&3*3*90%91&91'91&:2';4):2':3(<4):3';4(:3&80$:3'92&7/#7/#90%7.#4, 3+80$91%;3'80$80$91%5-!8/$9"=&A*#C,%E.'C+$?( >' >'!='!=&!='!>'!>'!>&!=& >&!>&!>&!?'!?'!@("@("@("@)"?*#@+"D.$I0&N3)Q5*T7+U8,U7,Y;/dF:hJ>Y<1L/%F+"A( >':%8$7%5%6$7#8#9$9%9$9$8#7"7"7"7"8#8$8#7#8#9%;&=(!?)"?)!?)!@*#?)!=' =' >(!>)!>(!>( >)!?)!>( ='<'='='='<&<&<'=' >( >( ='<'>( >)!?)"@*"A+#A+$A+$@+#A+#@*"?)"@*"?*#>)!<':%;&<'<'<'<'<&>' @'!B)#D+$E,%E+%D+$C*#C*#C*#C*#B)"B("B)"B)"A(!@'!@'!@'!A(!B("B)#B)#B)#B)"A("A("@("?)">(!=' ='<&<&;%;%;%:$:#9"5 20.+'!7!:#?)"@)"?)!?(!@)!A)!A*"B*#E,$G.'H/&I0'I0'I0'I0(I0)I0)J1)K2)M3)N4)P4*P4*O3)M2(L2(L2(J2)H0(E.'C,&B+$?)!>(!<' ;& :%8#6!4 30.+)''&%%'                                  .0 2 4!>)G1(M6-R;2J2*?'>( >)!=)!=*!>)!?( @(!B*"D,#F.$H0%J1'K2'K2'L2'L3(L2'J0%J0%K1&K1'L2'L2'K1&J/&H-%G,$E,$C,$B,#@,"@*"@)"A'"A'"D*%B*%;%4!0/&),.012 4!5"6#6"6"7#7#8$9$9$9$:$:#;$;$:#:#:#:#;$<%;$:#:#:#:#:#:#;$<%<%=& >'!>'!='!=' >( >(!?)!?)">(!>' >' ?(!?(!>' >&>&?& >' >'=&<&='>( =( ='<&='=' =' =( ?)!@*"@*#@*#@*#@*#?)#@)#A)"A)"@)"?)!>( <'=' =( =' <';&:&:%:%9$9$9$9$9#9#9"9"8!7 57 8"9":#:#:#9#8"8"8"8!8!9";#;$:#:$;%<'>( @*"D-%K3*P7.S:0U:0U9/U7.S5,O2)J0&E-$@) <%='B*$B+$B+$A+$@+$@*$@*$?*$?*#?)#?)"?(!@(!@(!B*#H0(L4,P7/Q80G.&;$6#2"2 5, 6-!5-!6.":2&7."4, 7/#;2&90$80$90$80$91%8/#7."6.!7."91$:2%:2%?6*=3'<2&@7+>5):2&>6*A9-B;.;4(;4'=5):2%<3&@7+>5*?6+>6*=4)<3(<3(=5)?6*<3';2&;2&9/$<3'>4);2'>6*?6+?7,?7,?7-  - -      -                 -      -    -     - - -  -   -    -  -   - -  -    ;3'?7+>6*>6*>5*>5*?6+=4(<4(>5)90%7."90%8/#:1&90%6-"<3'=4)=5*=5+=5+=5+>6,>6+=5)=4);2&5, 4+ 90%:1':2(:3)91';4):3(;3(;3(92&<5);4(80$:3':2&70#90%<3(90%4, 3*80$90$91%8/#:1%:1%5,!9!>&E-$N4,V<3R7.F,#A( ?(!=&!<% <& >'!>'!=& =& >'!>'!>'!?'!?'!?'!@'!@(!@)"?*"?*!B,"G/%L2'Q5*T7,W9.X9.Z;/hH=sSHcD:Q2)G*!B'?%<%9$7#6#6#7#8#8$9$9%9%9$8#7"7"7"7#7#8#9$9$8#8#9$;%<'<';&='?)!>)!=' ='>(!?)!?)!>)!>(!=' <&='>( >( >( >( >)!?)!>(!?)!>)!>( =' =' >(!?)"@*#@*#A+#@+#?)"?)!>)!>)!>)">)"<' ;&;&;&<'='=( >( ?(!A)"C)#D*$E+$E+%E,%E+%D+$E+$E+%D+$C*$B)#A("A'!@' @' A(!A("A("A("A("B("A("A(!@(!@'!?(!>)!?)"@*">(!=' ='<&;%;%:$9#7"5 31-)$ ;"O6,bH?[B8P8/I1(D,#C+"D+#D+#E+$F,$G-$H.$I/%I0&J/&I/'I/'I.'J/'K0(L1)M2*M2)L1(K0'H.%G.%H0'H0(F.(D,&B+%A)#?)"=(":& 7$5"3!2 10/2!5%1"+'&&)                                   @-#>,"<* ;)9'&   ../27#?) C,$F.&D,%?' =&=(=) =*!>*!?*"@*"C+$E,%G.%I0&J1&K2'L3(M3(N4)N4)M3(L2'M4(O5*N4)M3(M3(L2'J0'H-&G-%E,$C,#A,#@+"@)!?' >$<"9 6310 %(+.012 3!3 24 6"6"7"9$:%:&:%;%;%;%;$;$:#:#:#9"9"9"9#:#:#:#;$;$<%>'!?("@)#@)#?(">'!@("@("?' >' ?' ?(!>' =&<&<%;%<&='>( >( =' =' >( >(!>(!>(!>( =' =' =' >( >(!>)!?)!?)!?)"?)"?)!?)!?(!?( ?' ?' ?(!>(!>( >( =( <';&;';';&:%;&<';&:%:$9#9"8"8"7!6 6 7 7!8!8!7!7 7 6 67 8!9"8"8!:#=& ?("?( =&=%>%D,"L3(Q7-T8.T8.T7-S5,P3*M0'I.%D-#@) ='B*$C+$C,%C,%B,%B,%B+%B+%A*$@*$@)#?)"?)"?)"?(">(">("=(">)#>(":%7"4"2!3!7."6-!7/#:1%7."4, 8/#91%8/#80$:1%90$90$8/#7."7/"8/#;2&<4':1%?6*>4(;2%@6*?6*:1%=5)@9,A:.;4(;3'<4':2%<3'@8+@7+>6*=5)<3(;2&;2'=4(=4(<3'<3':1%8.#=4(?5*91%>5)?6+?7+?7,?7,  -      - -                  !  -      - -   -  - - -  -    - - -   -  - - -<4)<4)?6*?6*=5)>6*>5);3'>6*;2'7.#:1%7/#;2':1&6-"<3'=4)>6+>6,<5+<5+=6+=5*>5*>5);3'7."4+90%:2(:2(;3);3);4)92':2';3(81%<5);4(70$:3'<4(:3&91%;2':1%3+1)90$:2&:1%90$:2&91%9!=$D*!P5+\@6Z>3O1'F+"A)!='!<& <& =& =& >'!>'!>'!>'!?'!?'!?'!@("@("@("@)"?*"?*!A+"E.$K1'P4)T7,W9.Y;/[<1aA6eE:^?5S4*J,#E( @&=$:$8#6#5"5"6!6"7#8#9$9%8$7#7"7"7"7#8#9%;& ;&:%9$9%;&<&<&<&<&='<&;&<'>(!>)">(!=( =( >( =' =' =( >( >(!>( >( >( ?)!?)!?)!?*"?)">(!>(!?)"?)">(!>)!?*"@*"@*"A+#@*"?)">(!<';&<'=( =( =( =' >' @)"C+$E+%F+%E+%E+%E+%E,%E,&E,&E,%C*$B)#B)#B)#B)#C*#B)#B)"A(!@'!B)"C*#D*$D*$C*#C*#B*#A*"@*"?)"?)">(!=' ='<&<&<&:$9"7!5 1.+(#=%A'R8.]C9T:0J0&H-$E*!D*!C*!C*"C)"D*#E+#F,$H-&H.&I.&I.'J/(K0(K0)L1)L1)K0)L1)K1)J/(H.&G-&H.'G.&F-&C,%@+$?*#>)#<(":' 7&4$1!/ .-/@+$Q<4J4-=(!1 (&##/0123 4 5!6"7#7#8$9$:%:%;&;&             [>4[?5\?5[>4Z=3         C.#A-"@+"?*!=) ;(:&8%6#4"E/$F/$F0%8#9$;$:$7!5 5 5 4!4!5"5"4!3 2/+(&$"   -  ---/14 6!8"9"9"9#:%:';(<) =)!?)!C+#G-%G.%H/%I0&K2'L3(N4)N4*O5*N4)N4)N4)O5*O5*N4)M3)L2(K1'J/'J.&I.'H.&E-%C,$A*"@(!?'!=% ;"8!6!3 1!0"(+.0123!4!3 3 4 6!7"8#9%;&:%:%9#8"9"9":#:#:#:#:#:#;$<% =& <% <&=& >' @*#B,%A+$?)#?)#?)">(!>(!=' ='=' >( =' <&<&=' >( >( >( >( >( >( >( >(!?)!?)!?)!?)!>)!>(!>)!?)!?)"?)!>(!>(!>( ='<&<&<&<&>&?' ?(!>(!>( =' <&:%:%;&<'<&<&<'=' =' ;&9$9#9#9"9#9#9"8"8"8!8!7!7 7!8!8!8!7!7!8!8!9"=%I0(Y@7U<2F-";"=#@&F,!O5*S8-U8/U8/U7.T6-Q3+M1)H/%C-#?) <&A)"A*#B*$B+$B,%B,%B+$B+$A*$A*#@)#?("?)#?(#=("<'!<&!;% :#8"7"6"4"2!3!7."90$:2%6."5- 80$91%7."7/":2&90%:1%8/#8/#90$:1%<4'<4':2%@7*>4(;2%@6*?7*:1%<4(@9-@9-<5(<4(<4(;3&;3&?6*?7+>5)<3(;2&90%<3'>5)>5)<3'<3':1%:0$?5*?5*:2&>5)?7+?7+?7+>6+  -      - -                  -       - - -    -      - - - -   -  - - ->6+>5*?6*?7+>5)>6*?7+;2&=5)<3'80#91%7/#<3'<3'80$=5)<4)=5+>7-=6,=6+>7,?7+?6+<3(90$7/#6-":1&;3)92(:3)<5*<5*<4)=6+>6*81%<5);4(6/#92&=5):2&80$;3';2&5-!2*80$:2%91%91$;2&5!7"<&H1'V=3W>3M3(D+"?)";(!:'!:'!:' :' ;' <' <' <' =(!>)">(">(!?("@)"@)"@)"?)!@*!C,#H/%M3(Q6+U9-W:/Y;/Y;/X:.U7,P2(J.$E*!A'>&:$7#5"4!4!4 5!6"7#8#8$8#7#6"6!5!6!6"7#8$9%:%:%:%9%9%:%;&:%9$:$:%;%<&=' >( >(!?)!?*"?)!=( <&=' ?)!>)!>(!>)!?)!?)!>( ='=( >( ?)!?)"?*"?)!>(!='='>( ?)!?)">( =' >(!?)"?)!>(!?( ?' @' @' B)"E+%F-&G-'G-'F,&E,%E,%E,%E+%D+$D+$D+$D+$D+%D+$D+$D+$D+$D+$D*$D+$E,&F-&E,&D+%C*#A)"@(!>( >( >( >( =' =' >( =';%;%;$9#7!5 2/,'!8!<#D+#G.&E+#C)!B)!B)!C*"C*#C+#D+$D+$E+$E,$F-%G-%I.&J/'K0(K0(J/(J/'I.&I.&J/(K0)K1)K0)J0(I/(G-&E,%B+#?+"=*!<( ;' ;&9$6"3 /--1?)!K3+J1*E+%4 &&   !&*,-01233445 7"8#8#8#9$8#7"7"7"6"6!6!6"6"6"6"6!7"7"8#8#9$:%:%9$9$9$9$:$;$;$E.$F.$F/$G/%G/%G/%G/$G/$D/&E/$F0%G0%P3*Q2)S3)cA6lK@[?6L4,O7.R91S91U91V;1W<2Y=3Y=3Z>4Y=4W<4V<3V<4W<4Y<3Z<2[=2\>3]?4^@5_A6_A6`B7`B7`B6`B6`B7`B7`B7bC7cC6dC6dC5cC6bC7aC8aC7`C7aD8bD8cE9dD8eD7dC6cB6aB6_A6_A6_@5_@5`@4`?3a?2`?2`?2_>2]=2]=2\=2]>4]?5^@6^@7_A7_A7]@6\>5\>4\>4\>4\?5]?5]@6]?5]?5]?5\>5Y;2V90U:0S9/R9/P7.O4,N2*M0(R3,[=6X;4G-%=%:$9#:#9"8!7 67 9"9#9#:$;$:#7 7 7 7"7#5"3 5!6"6!5 6!7#6!58";%;$:#9#7"6"6!5!4!4"5"4!320-*'%"  -   .--,.01344 5"7%8':(=* @+"C,#F-#H-$H/%I0&J1'K2(M4)N5*P6+P6+O6*O5*O5*O5*O5*N4)N4)M3)M1(L0(K0(I/(G-&D+$B*#A*"A)"A("C)$F,'C*$;%6"5"&),/13 3 3 3 3 4!5!6!6!7"8#9%;& ;% 9#9":#;$;$;$;$;%:$9#9#:$;%<&=' ?)!@*#A+$A+#@*"?)">(!>(!>)!>(!>( >( >( =' =' =( =' ='=' =( >( =( =( =' =' >( >)!?)!>)!>(!>(!?)!?)"?*"?)"?)!>(!=( ='='='<&<&>' ?' @' ?' >&=%<$<$<%<&=( ?)!>(!>( >( =( ='='<&<%<%;$:#8"8!8!8!8!8"9#:#:$;$:$9#9"8"8!;#?$J.#_C7w[P_C7C(>$>$@&I/%P5,R6-S7-T7-T7-Q4+N2)I/&D,$A*">(!<&A(!A)"B*#C+$C+%C+%C+%B+%B+$A*$@)#@)"@)"?(!>' <&<%<%=&>' <%:#6"3!4 5-!7/#6.!5- 7.#90%6."7."<3'8/#7."8/#6-!90$;2%<3&:2%;2%@7+?6)>5(A8+@7+;2&=5)@9-A:->6*;4(<4':2%;3&>5)=4)>5)>5)<3(:1&=4(=5)<4(;2&;2&;1&:0$?6*?6*:2%=4(@7+@7+@7,?7+ -       -                   -     - - - -      - - - -  - - -   - -   - - -=5*;3(<3'<4(=4(<4(>6*91%=4(<3'90$:1%80$=4(>6*:2&<4(<4)<4)=6,=6,=6+?8-?8,@7,:1&7."7."80$:2&;3):3*;3)<5+<5*=5+>6*=5)70$;4(;3'6."91%=6*91%7/#;2':2&7."3*80#:2%:1%:1%4!4 5!;%D-%H0'F-$B*">)!:' :' :' :' :' ;' ;' <(!=)"=*">*#>*#>*"?)"?)"?)"@("@("@*!B,#E.$I0%N3(S7,V9.X:/Y;/Y;/W:/S7,M2(F-#@) =&:%8$6#4"4!4 44 5 6!7"7"7"6"6"6"6"6"6"7"8#8#8$9$9%9%9%:%:%:%:%:%;&<'<' =( >)!?*"A+#B,$A,$A+#@*#?*#>)"=' <&<&;%;&<&<&<&=' >(!?)"?)">)!>(!=' <&<'=' =' =' =( >( >(!?)!@)"A)"B)"C*#C*$C*$C*#D*$D+$E,%E,%E,%E,%E,%E+%E,%F-&F-&F-&F-&F,&E+%E,%E,%E+%E,%E,%E,&F,&E,&D,%C*#A)"?(!=' <&<&;&<&;&;%<&<&;%:#9#7"4 2/*$ 4 5!6"9$<&=& >' @)"B*$C+$C+$D,$E,%E-&E-&F-&H.'I.'K0(L1)K0)K0(K0)L1*M2*M3+M3+L2*L1*K1*J0)H.'E,%B+"@) ?) ?( <&;%7#3 0-,,.2 7#:&9%/&' -  "'+.02344345 6!7"7#7"7"7#7"7"6!6!6!6!6"6"6"6"7"7"7#8#8#8$8$8#8#8#8#8#8#9#9#:#:#9#:#;$:$9$<' ?*#@+$A,%C-&F/'H.'K.'N/'R2(T2(Z7,lH( ?)!>(!>( @*"B,$A,$@*#?)">( =' =' =' =' >( ?)!?)!=' <'='=' ='='='=' >( >(!>)!>(!>(!>(!>)!?)"@*"@*#@*"@*"?)"?)"?)!>' >' ?' @(!A(!A(!@' ?&?&?& ?&>' =' =( >( >( >(!?)!>( =( =';%:$:#9"8!8!8!8!8!8"9"9#:$<% <& =&!;%:#8"8!7 : <L/$fKAfMCL3*?'=$<"B( K1)N4+M3)O4*Q5,P5+N3*J1'G.&D,%A*#=' =( A( B*"C+$D,%C+%C+%C,%B+%A*#@)"@("@("?(!?' =&>&A)!F-%L3+O6.F-%<$7#4!3 91%80#5, 7.":1%7/#8/#;2&7."6-!5-!5-!7/#91$:1%90$:2%?6*>5(=4'A8*@6)<3&=5(>7+>7+=7*:4(<5(:2&;3&=4(<4(>5*>6*=4);2&=5)>5)=4(90$;3'<2&7.">5)A7+90$<3'A8,A8,@8,  -       -                 -     - - - - -       - - - - - -   - -    - - -<4(=4(=5)<3'91%?7+:2&<3':1%90$:1%8/#<3'=4(91%:2&>5*;4);4)=6,=6+>7,>6+?6+:1%6."6-!80$:1&;3):3*;4*=6,<5*>6,@8,>6*7/#:2&;3&7/#91%>6*:2&80$;3'90%6-!3*80#;2%:2%:1%3!4!5!6!8!9":#;$;% ;& <& <& =& >'!?("@)#A*#B+$C+%C+%B*$B*$B*#A*#B*#A*#@)"C,$F.&H/'J0'N3)S7,U8-X:.Z<0\>2W:.O4)F,!@)<':&9&6%4#4"5"6"5!4 4 4 5 6!6!6!6"6"6!5!6"7#8#8$8$8#8$9$9%:%;&;&:&:%;&<'=' =( >)!?)"?*#@*#A*#A*#@*"?)"?)">(!='<&;&;%:$:$:%;%<&='=' =' =( >( >(!>(!>( >( >( ?)!@*"?)!?)!@)"A)"C*$E,&E,&E,%E+%D+$D+$D+%E,%E,%E,&E,%D+%E+%E,%E+%D+$E+%E,%E,%D+$D*$D*$D+$D+$E+%E,%E+%C*#A("?' <&<&;%;%;$;$;%;%;%:$8"8!9#8#5!3/*#:%7$6$ 7$7$9%9%:%<' ?("A*#C+%D,%D,&E,&E,&F-&H-&J/'K0)L1*L1)K0)L1)M2*M2+N3,N3,M2+L2*K1*I/(G-&D,$B+"@* ?)>'<%:$7#4#1"/", )))))('&)  - #)-025 6!6!6!7!8"8#7"6!6!6!7"8#8#9#9#9#:$;%:$8#9#9$9$:$9$9#9#9":#;%:$:#:#:$:#9"8!7 8!9":#:#9"9";$=& @("B*$C+$D+$E,%G,&H.'I/(H.'I.(O4.Q60L1*I.&H.&H.&H/'H.'G-'J/)C-&?*#@+#?+#:&8$9%;'!='"<&!9#9$;& :%8#9$:$:%:% 9$<'"<'":&!:% :&;':&9&8$8%9%9%:&:'8%9%9%9%8%9&;&!:% ;&!8#:% ;'!7"7"9$;&!;& =("=(#:%=(";%?'@( A)!D,$C+#C+#F.&H0(J1)K2*N5-P7/Q91R91O6.K1)I/(H.(H.(H.(G.'H.'I.'L/%N1$N0$K-"F) A&?& =& ;#9":#;$:$:#8"8!9"9#8!8!9#:$;$;$:#9":#:#:#:#8!8!:#;$:#9"9":#;$<%;%:%:$:$:#9#8#7#5"4!20/-*'$   -   -.04>(H0&L3)P7+H.#>%<%<%<& =(#?*%B+&D,'F-&G.&I0&I0&I0&J1&K2'M3(M3)N4)O5*O5*O5*O5*O5*N4)O5*O5*P4*Q3*M1)I/(G.'E-'C,%C+$B)!B'M1(Y>5T91E-%<%8#$(+.145 6!7"8#8#8#7#7"7#8#9#:$;$;$;$<%;$;$;$;%<&;%:$<&>( >( ='>( @*"@*">)!?)!@*"@*#@*"?)"?)!>(!>( =( >( >)!>(!>( >( >(!>)!?)!>)!>(!>( >( =( =' ='='='>( >)!?)"?)"?)"@)"@)"A*#C*$D+$B)#A(!A(!A("A(!@'!@' @' @' @' @' ?' >' =' ;%9#:$<&<'<&;%;%:$9#8"8"9"9"8"7 567 8"9#;$:$9#8"7!6 5 348#C.&K5.B-%:%8":$='D.%J4*K4*K5)N6+O7,M5+J3)H1'G/(D-%A*#=' A) B)!C*#D,$C+$C*$B+$A,%A+$@*#@)#@)"@(!?(!?'>&@'D+"K1(T;1W>4J1'<%8#4"4 7/"4, 90$:1&7/#90$90$6-!80$:1%:1%90$8/#90#91$<3&>5);3&=4'A8*@6):2$<4'?7+?8,=7,;6*;5(;4'<4'<4';3'<4(=5)=5)91%;2&?6*<4(6.";2&>4)90$>4(?5):1%<4(A8,@8,A8-  -       - -                   - - - -   - - - - - - - -   - -  - - -;3(<3'91%;3'=5)>6*<4(=5);2&90$90%7/#:2&;2&80$;2&=5*;4);4*=5+<5*>6,>6*>5)90$5-!4+ 7.#;2';4*;4+;4*=6,<4*=5+@7,>5*8/#:2&;3'80$91%=6*;3'91%;3':1%7."4+80#;2%:2%5"6"7#9#:$;$;$;%;& ;% ;% <& ='!?("@)#A*#A*$B+$C+%C,%D,&D,&D,%C+$B*#A)#@*#C+$G.'I/(J0)M2*O3*S6,V8-\=1cC7iI=Y:-I+D(>%:#9%8%5#2"3!5 5 5 5 4 4 44 5 5 5 5!5 6!7"8#8$8$8$8$8#8#8$9%:%:&;&;&;&<&<'=( =( >(!?)"@)"A("A("A)"B)"B)"A)"?(!=&<&<&<&;&;%;%;%=' >)!>( >( >(!?)!?)"?)"?)"?)!?)!?)!?)!@)!A)"C*#D+%E,&E+%D+$D+$C*$C*$C*$D+$E+%E,%E,%D+%D*$C*$C*$D*$D+$D+%E,%E,%E,&F-&E,&E,%E+%E+%E+$D+$C+$B+$@*#>( ;%<%<%;$:#9"9"8"7"7"8#7#4!2.)#<#H-!S6*R6*M3(G.$B) >'>' >(!?)"A+#C+$D+%D+%D+%E+%F,$H-%J/'K0(L0)L0)K0)K0)L1*M2+M2+M2+K1*J0)H/'F-&C+$?*#=)"=(!<' :%9#7"4"2!0 / /-,+)(')  %*.2236!8#8"7!7!7"7#7#7#8#:%;&;%;%;%;%<&<&<&<&;%;%<&<&;%:$;$;$<%<%;#:#;$;$:#9"8"8!9"9"9":":#;$;$<% @(#B+%D,%E,%D+$C*$D*$D+$E+%E,%E+%D+%B,%B-%F0*H2+L5.J4-I2-L50D0)A-&B.&@,%;)";)"=+$>,%>*$=)#9& :& <)#<(":'!;(":'!;'!9& 9& :'!8%6#5"5"6#6#5"4!4!6#5"3 4!3 4!5!5"4!6#6#6#7$5"6#8%4!6"8%8%8%;("?,&?,&C0*A-'D-'F.(G0)J2,H1*H0*J3,L4.N6/O70P82Q92P81L4.G.(D+%D*#F,%G.'G.'H.(H.'I.'R5+Z=0^@3_A5Q4+D( @& >&!<% ;$;$;$:$9#8!7 9":#9"9":#;$;$;$:#:#;$<$;$:#9"8!;$<% ;#9"9"9":#;$;$:$;%;%:$:#9$8$6#5"4!2 0.,)&"   - -,.19%D/'J3+M6,I1(?( :$9#8#8$:% >'"A)#C*#E+$G.%I0%G.$F-"I/%K1'L3(M4)N4)N4)N4)N4)M3(M3(L2(L2(M2(O2(N1(J0'G.'E.'C-&@+$?)">&?&B)!B*#;%6!5"6$()+.146!6"7"7"6"6"7#9$9%:%;%;%<%<% <%;$;$<%<%<&<&<&=' >( >( =' >( ?)!@*"?)">(!>(!>(!>(!>)!>)!>(!>)!>)!?)!?*"@*"?*"?)!?)!?)"?)"?)"?)!>(!=( ='<&='=' >( ?(!@(!@("A("A("A("A)"B)"B)"C*#C*#B)"A("A(!@'!@'!@'!@'!@'!@' @' ?& >&=&<&<&<'=' =' =( >( =' ;&;&;%:$:#:$:$8"7!6 6 6 7"8#6"4!3 334 2234 5 35 4 7#9%=)F2(J6+K6*M7+M7,L6+J5*H4)H1(G/(C,%?("=' A) B)!B*"C+$C+$C*$A+$@+$?*#?*#?)"@(!?' >& >&=&=&>&A( E,#F-$?&8!5!2 3 7."90%90$5-!90$80$6-!91%:2&;2&:1%:1%90$8/#<3&>5);2%<3&A8*?6):1$<4'@9,@9->8,<7*;4'=6)=5(<4';2&=4(<4(=5)90$91%>6*<3'7.";2&>5)91%<4(?5*;1%<3'A7+A8,A8,  - -     - - - - - - - -            - - - - - -  - - -    -  =4)<3(>5)>5*>5)=5)=5)=5);2&90%:1%8/#:0%<3';2&92&<5)>7+=5+<4*<4*;3)>5*=4(90$4, 3+7.";3(<4*<5+:3)=6,<5*=5*?6+;2'7.";2&<3'91%91%;4(:2&90$;3';3'90$5, 90#;3&8%?+$F0*M6/O7/F.&>&=&='!;& ;% ='!?(#@)#@*$A*$B+%B+%C+%C,%D,&E,&D,&D,%C+%B+$B+$B*#H/(L3,N4,Q6.O4+N2)R5+V8-`B6mNBkL@X9-J, B'>$<$9$7"3 4!3345 5!5!5 4 5 6!6"6"6"6"7"7#9$:&:%9$8$7#6"6!5!7"9$:%;&<' <';&<'=' =( ?( @(!A("A("A(!@'!@'!A("A("A(!@' ?& ?&>' >&<&<&>( ?)!>( <&<&<&=' ?)!?*"@*"@*"@*"@*#C+$E+%F-&G.(F-'E,%E,&F-'F-'E,&E,%E,&F-&E+%C*$D+%E,%C*$B("B)#D+$E,%F-&F-'F-&F-&F,&E,&E,%D+%C*$B*#?(!<&<'=( =' ;$:#9"9"9"8"8"8#8#7#5"3!0,(;%<&O6,^C8Y=2S7,L0$D)A'?( >(!>)#?*$A*$B*$C*#C*"D*"E*#F+$H-%I.&J/'K/(K0(K0(J/(J/(J0(J0(J0(I/(G-&E,%B,$@+#>*"=)"<(!<'!:%8#6"4!2 26!A* G/&D+#?&2)*  !&+.14 7"7"7"7"8"8#9$9$:%:%:%:$:$:$:$:$;%<&<&=' >( >(!>( ='<&<%;%;$;$<%<%:#:#:#:#9"9!9"9"9#:#:$;$;$;$<% ='!?(#A*$A*#B*#C*$D+$E+$E+%D+$D+$C*$A)"=( <( <( =)!@+$=(!;&;&!7$6"6#4"1 2!3"2!22/./.-.//.0100/2!1/.-..-,,,+,,,.1112 00//3 1114!13 27 :":#<%9"8!;$;$:#:":#<%A*$>'">("@("C)"E+$F-&G.'G.'H.'J.'S6-]@4bD7bD8V8.H+#A' =% =% =% <%;$;$:#:#:#;$<$;$:#:#;$:#9"9!8!9":#9"8!9";$;#:#9"9":#;$;$;$;%:%;&<';%;$:$9$8$6$4"2 1/-*'#   -$,-.0 4"7#8$9$7"6!5!5!5"6#;' ?*"A*"B) D+"G.$I0%J0&K1'L3(M3(M3(M3(M3(M3(M3(L2'L2'K1&K1&K1&L1&M1&J/%F-$D-%B-&@,%?*#?)!>'=%:#7!324"'*-/245 6!7"8#7"6!8#:%:&;&;%;$;$:$:#:#;$=&!?(">(!>)!?*"@*#@*"@*"?)">(!>)!?*"@*">)!>( >)!?)"@*#A+#A+#@+#@*#@*#@*#A+#@+#@*#@*"@*"@*"?)">(!>( =( =' =' >( @(!A("A("A(!@'!@'!@'!A(!A(!A(!A("B)"B)#A("@(!@'!A("A("B)"B)#B*#C*#B*#B)"B)"A)"?(!>(!>( =' =( =( <';&;%;%;%:$:$8"8"7!5 5 6!7"7#7"7#3 112331313 3 3!6#5#6"9&A.#J5+L7,N9-N8,L6*J5)J5*J4*H0(F.'C,%?("@*"B*!B*"C+#D,$D,%C,%B+$@*$@*#@*#@)#?(">'!>& =&<%;%:$9#9"8"7!6!4!3!4!90$90%6.!:1%90$7/#90$;2&:2&8/#91$90#90$<4'>5)<3'<3%@7*?5(;2%<4(@9,@9.>8,;5)<5(>6*>5(=5)90$>6*=5)=4(;2&;3'>5);3'8/#<3'=4(:1%=4(?6):1$:1%?6*@7+@7+    - - -   - -  - -  -                 -    =5)>6*=4):1%;3'=5)=4):1&90%;2&8/#90$<4(:2&81%<5(=6+=6+=5+=5+<4+=5)<4(90$4, 3*7/#;2';3);4*<5+>7,=6+>7,=6*:2&7/#:2&<3'92&92&;3'92%90$<4(=4(91$4,80#9$>(G/%S:0[@6R6+F* B)!?'"=&!=&!?'"@(#A)$A)$B*$C+%D+&D+&E,&E,&E,&F,'E,&E,&D,&C,%@( D+#H/(L2*P5,Q5,Q6,S7-V8-Z<0bC7mNBcE9T6*G* @%>%;%9$6"4"4!344 5!5!6!5 4 5!6!8#7"7"7"5!6"7#9$9$8$8$8$7#7"7#7#8#9$:%;&;&;&<&=(!?(!?(!@' @'!A(!A(!A(!A(!@(!A(!@'!@' @' ?& ?& ?& ?&?& ?& >& >&=&=&='>(!?)"?)"?)!?)!?)"A*#C+$D,%D+$D+$E,%F-&F-'G.(F-&D+%D+$D+$D+$D+%E,%E,%D+%B)"@' @'!A("B)#C*#D+$E,%C*$A(!A(!B)#B)#A("@'!>' =' >( >(!=& ;$;$;$:$:#9#7"7"7"6"5"3!/*&5";' J4,R:2Q8/N4*G-$@'?'='!>)#?+$@+%B,%D-&F.'G.&G,%F+$G+$G,$G,%H-%I.&J/'J/'I.'H.&H-&G-&G-&F-%E+$C*"B* A*@* >( <' ;& 9%7$6#4!34<$H-!S4(W7+P3(:%+, - - !'+.146!7"8#:$;%;&;&:%:%:%:%;%;%<&<&<&<&='='='<&<&<&:$:$9#:#:#;$;$;$:#:#;#:#:#:#:#:$:#:#:#:#9"9#:$<& ?("@)#@*#A*#A*#B*#B*#C*$C*$D+%F-'H/)I1*=' 7#4"3!3!3 1.,+*))*)))***+,-..--.//.--../.........-.0/,+++-./00000025 6 654444443447";& ?(#B(#E*$G-'G-'G-&G-&I.'K/&N0%P2&Q3'M/%F*"B(!@("?'">&!=% <%<% =&!;$8!8!:#:#:#:#9":#;$:#7 8!9":#:#:#:#:#9":#;$;$:#:":#;$;&;%:%:$:#9#8#7#5#4!2 10.+($   -  /,,-./1345 5 5!5"7$9& <(!>)"A*"C+!D,"F-#I0%L2(M3(M4)M3(L3(M3(N4)M3(M3'L2'K1'L2'L2'M2'M1&K0&H/%E.%B,$@+$>*#>)!='=%<$:#8#7"6"5#*,/0234 5!7"7#7#7#7#7#8#8#8"8"9#;$;$<% =&!>'!>'!=' =( ?)!@*">)!>( =( =' >)!?*"?)"?)!?)!>(!?)!A+#B,$A+$A+#A+$A+$A+#@+#@*#@*#@*"?)"?)">)!>(!=( =( =( =' ?(!A)"A(!@'!?& ?& ?& @' @'!@'!@' ?& ?& @' @'!A(!A("B)"B)#C*#C*$C*$C*$C*#C*#B*#A*#@+#?)"=( =' >( >)!<':%:%8#9#7"6"5 344 5!6!6"6!7"5!1111122 3 3 23 4!4!34<%E.%L4+O7,Q8-Q7-O6+O6+N5+L3+I1*E-'A*#>' A) B)!C*"C+#D,$D,%C+%B+$B*$A*#@)#?(">'!<' ;&:&9& 8&6$5#5#5#3"2!1 1 4 :1%8/#;2&:1%8/#91%91%90$6.!7."7."8/";2%>5(=4'<3&@7*?6)<3&=4(@9,A:.>7,:4(=6*=5)=6(?7*80$>6*<3':1%;2&=5)>6*<3'80$<3'<3'90$=4(>5(:0#90#?6)@7+     - - - - -   - - -                <3(=4)<3(80$91%;3'>5)<4(;3'<3'8/#90$>5);3'81%<5(=6+=6,=6,=6,>7-=5)<4(7/#3*3+7/#;3';4*;4+<5+>7-=6+=6+=5*:2'70$91%;4'91%80$<3(;3':1%<3'<3'80#5,5!7";%F.&P7-L2(E* B)!>'!=&!>'"@(#A)$B*%B)$B)$C*%D*%E+&F,'F,'F,'G-'G-(G-'F.'E.'C.&A( G.&K1)N3+P5,R6-T8.T7-U7+X:/]@4bD9X:/M0&E*!@&<$8#7"6"6"5 44 5 5!5!4 434 5!5!5!8$8#6"6"6"7"9$9$:%:%8$6!7"9$9%:%:%;&<'<'<' =' >& >%>&?&?&>%>%>%>&@' @'!A(!A("A("@'!?& ?&?&?&?&?&?& ?&?& @(!A)"A)"A)"A*#A*#B*#C*#C*$C*$D+$E,%E,&E,&E,%E,%D+$D+$D+$D+%E,%E,%D+%C*$B)#A(!@' A(!C*#D+%E,%D+%C*$B)#A(!@' @'!@'!@(!?)!>(!>( =' =& <%9"8!9#:#9#8#7"7"5!3 0,'#2 6#:&='@(A) A) @)!?)!>)"?+$A,&B-&C-&D-%F,%G-&H.&I-&H-%H-%H-%I.&J/'J/(J/'I.'I.&G-&G-&G-&F-&E,%C,$A,$@+#@*"?)">(!;'!9& 6%4#2!1 2 9$C*"O3*Z<3O5-9%-- - #'+/25 7"8#9#:$;$:%:%:%:%:%;%;%<&=' >( >( >( =' ='<&<%;%;%:$:$:$:$;$;#:#:#;#;#:#:#:#:#;#;#:#:#:#:#9$9$:$;% ='!>(">)"?)"?)"@*"A*#A+#A*#E.'K3-R82Y=7Q60>& 4/,,+*)+,,,,-.///11123!4!4!4!5"5"5"4!4!4!4!5!6"6"6"6"7#7#6"5!5!5!5"5!4 3 3332234 4 4 3 123 5!6"8#8#8$9$8#7"4111126";&!?)#C)#E*$F,&G-'G.'G-'H-&I-%J-!K- L."K-"F*!C(!A("?(">'!=&!=&!=& =& <% :#:":#:#;$;$:#:#;$;$9"9"9"9"9":";$;$;$;$:$:$:$:$;$;%;&;&:%9$9#9#8"7"6"5"3 10.+($   -   0---/02456 6!6"6#6#7$9%;' >( A* C+!E,"H/%K2'M3(M3)M3(K2'L2'M3(N4)N4)N4)M4(M4(M4)N4)M3(L3'K2(I1(F0(C/'B-&B,%B+"B)H.#O5*K1'A);$:$(+.0235 6!6"6"6"6"7"7#7#8#9$;%<% ;$;$<% <% =&!?(">(!>( ?)"A+#A+#A+#A*"@)!@)!A*#B*$B*#A)"A)"A(#B)#B*#A*#A*#A+$B,%A,$@*#?)"?)"?)"?)"?)">(!>(!>( >( =( >( >(!?(!@'!@' @' @'!@'!@'!@'!@'!?& ?&?& @' A(!B)"C*#B*#B)#B)#A)#A("@'!@' A(!A)"A)"@*"?*#?*"?)"?*"@+#=( ;&<&:$8#9$9%5!35 7#8$7#5 36!5!1011001027#C/'H3+D.';$:": B'J/'O2*R4+T6-V8/U7.S6-P4,L3+H0)C,%?(";%B)!C*"C+"C+#C+$D,%D,%B+#A)"@)!?(!>(!<' ;' ;' 9%8#7#8#<' C-&F0(@)"9"6!2 4 8/#<4(;2&6-!80$8/#7/#8/#90#6.!7.";2&=5)=4(=4'@7*?6)<3&>5)@9-A:/>8,;5)>7*<4'=6(=4(<3'?7+=5)<3';2&=5)>6*;3'80$;3'<3'90$<4(@7*;1$90#=4'@7+      - -    - - -             =5)<3(;2'90$80$;3'>6*>5)<3'=4(80$:1%?6*;3'81%<5)=6+=5+=5,<5*>6+>6*=4)7/#3+4, 7/#:2';4*;4+;4*>7-=6+<5*=6+;3(7/#92&;4(80$7/#;2'<3':1&<3'<3':1$3 3 3 4!6"6#7#9%<&!=("?)#@*$@*$A+$A+#B+#C+$C,$D,$D,$E-%E-%F-%G.%G.&G.&G.'F-&B* F-$J0(L2)N4+Q5,R6-U9/V9.V9-U7,S6*O2'J-$F+"C)!?':%8#7"6"6"6!5!6!6"6"5!5 4 5 5!6"7#8$9$8#7"8$8#9$9#9$;&<';&;&<' =(!<( <'<' >(!>)!>)!=)!?)"@("@("?' ?& ?& ?& >%=$>%@'!B)#C*$D+$B*#A(!?& >%>%?&@' A("C*$D+$C*$C*#A("@'!@'!A(!A(!A(!A(!A(!A(!@(!@'!A(!A("C*$E,%E,%E,%D+$C*$C*$E,%E,%C*$B)"A'!@' B)"D+%E,%E,%D*$B)#B)#C*$D+$C*#B)#@(!>( >' =' <&;$;$;$:#9"9"8#7"6!4 2/,)%8$4!5#8$<&?(@( A)!@*"@+#@,%A-&C.'E/'G0'H/&H/$J/&K0(K0(J/'J/(K0(K0(L0)L1)L1)K1)K1)J0(I/'G-&F,%E,%C-%A.%@-%@+$?)#?'!>&=%;$7$4#2"2"3!5!:$@(#:% 0-  %+.136!7"8#9#:$:$9$:%;&;&;&<&<'?)!@*#@*#@*"?)!='<&<&;%;%;%;%<&<&<%<%;$:#:#:#9"9"9":#:#:#:#:#:#:#9#8#9$:%;&;& <' <' =( >(!?)"?*"?*#?*"B-%G1)O7/Z>5R6.A'!72/..//012334444455 6 7 7!8"8"8!7!7!8"9#9$9$8#9$<';'8$8#9$9$7#6"6!7"8$8#7!6667 7 7 7 8!8!7!6 456 8"8#9$;& ;'!;&!:%7#6"5!5 4 33 7#<'!?("C*$F,%G.'H.(H.(H.'H-&J.&N1&P2%N0$L."H+"D)"B)#@)#?'"=& ;$:#;$;$;$;$>'!?(#>'"=& =& <% <%;$;$:#:#:#:#;#;$;$<%<% <% <%<%;$:#:#;%<&:%9$9#8"7!6!4!3 3 20.,)%"   - !/-/16"<& >' @( >&:#9#8$7$7$8&:' =)!A+"D,#E-#H/$K1'L3(M3)M4)M3(L2'M3(M3(N4)N4)N4)N4)N5*O5*N5*M4)L3)J1)H0)F0)D/'C-&C,#C* G-"X=2aF& >& >& ?'!A("B)#B)#B*#C*#C*$C*#B)#B)#B)#C*$D+$D+%E,%D+$B*#B)"A(!@(!A*"A+$@*#?)"?*"@+#@*#?)"?)">(!>( >(!>)!>( =' =' >( >' ?' @'!A("A("A("A("A)"B)"B)"A)"A("A("A)"B)#C*#C*#C*#C*$B)#@(!@'!?& @(!B)#C*#A)#?)"?)"?)">(!?*">)!=( >(!=( ;%8#:%8$6"6"8$:&:%7"3342/.////01=% S;5eLF\C=M3-A& <>"E)!N0)R3+V6.W80W90V7/S5-N3+J1*F.'B+$>(!:$D+#C+"C+#C+#C+$C*$B*#?)!=) <) <) <( ;( ;&;%;$;#=$A'I.%V;1Z>4P3)D) ;%3!3 ;2&;2&90$80$7."7/#90$90#5- 90$<4'=5)<3'=3'@6*=4';2%>6*A:-A:.?8-=6*>7+;4&<6(=5)<4(=4)<4(<4(;2&=4(?6*<3'8/#;2&=4(:1%<4(@6);2$90"<3&>6)           - - -  -          ;3(=5*<3(;2'>6*>6*=4(:1%=4(:1%91$>5):2%70#;4'=5*<4*=6,<5*=5*>6*>5*90$5-!6-!8/#91&;4*;5+;4*>6,>6,<5*=6*;3(6/#92&<4(80%7/#:2&<3(;2'<4(<3'4 5 5 7!8"9#:$;%;& <'!>(">(#?)#@)#A*#A+#B+#C,$D-$E-%F.&G/'G/&G.%G.%G-%G-%F,%B*!E-$I/'L2)O4+Q6-S7.U8/W90X:1X:0V8.Q4+H-%E*#A( >'<&:%9$6"6"6"7"7#7#7#6"6"6"7"6"6!6"6"9$8$7"7#9$9$;&:%:%;%;&;&=( @*#@+#>*">)!?)"@*#@+#?+#@*#A*#B*#B)#B)"@(!@'!@'!@'!@'!@(!A)"B)#C*$D+%C*#A(!@'!?& >%>%?& A(!C*$D+%E,%C*$A("@' @' @' A("B)#C*#C*#B)"@(!A(!A("B)"B)"C*#D+%E,%C+$B)#C*#C*#C*#B)#B)#A("B)#D+$D+%C*#B)"A("@'!@(!A("A("@(!@("@)"?)!>' <&<%<%<& =& <%:#9#9$7#6!30-+(%9#:$<&@)D,"E,!C* B) B+"B,%B-&B-'D.'G/'I/&K0&L0'L0(L1)L1)L1)L1*M2*M2*M2*N3+O4,N4,M3+L2*J0(H.&F,%D+$C,#A,"A,#@+#?)">("='!;& 9%7$5#4#2"0 //.-,-  !&+/235!7"9$9#:$:%;%:%9$:%<'>( ?)"@*"@+#@*"?)!>( ='=' >( ='<&<&='<&<&;%;$;$;$:#9"9"9":#:#9"8!9":#9"9"7!6!7"9$:%;&;&;&<'<'>(!@*"?)!<'=' >)!?)A(G,!>#631001245 5 5!6!6 554567 7 7 569"9"7 7!:#;%;%:%8$8#9$9#8#8#8#8#9#8#7"7!7"7!6 55667 7 8!8"9"9"8!667 8":$;%;%;%;%:$9#8"8"7!6!5 6!:$<& >'!B)"F,$G.&H/(G-'F,%F,$J/'[?4hJ=bC7Y:/N1'D( @' =& =& =& =& ='!>'!>'!=& =& ?)"A+$?)#>'!=& =& <&<%<%;%;%<%;%;$;%<&<&=&=&<&<&;%;%;%;&<':%9#8"7 54321000.*'$      /,-.8$E/(J3+K4+G/&?':$9$9%9% :&!<'">("A)"D+"F-#G/$I0&K2'L3(M4)M4)N4*N4)M4)M4)L3(L3(L3(L3(L3(M3(N2'O1'M0'K/(I.(F-(E,'E+&E*$F)!O3*Y=3T80H.&A(!=% &*.136!7"8#9$9$9$9$9$9#:$;&<&<'=' @(!B)#C*#C*#B)#B)"C*#E+%D+$C*#B)#C*#C*#C*#C*#C*#C*$B)#B)"C*$D+%D+$B)#A*#A*#?*">(!=' =' =' >(!?)"?)!>)!>)!>(!=( <'<&;&<&>' @(!A(!@'!A(!B)#C*$D+$E,%D+$B)"A)"C*#D+%D+$C*$C*$C+$B*#A("@(!@(!@("A("B)#A)#@*#@+$>)!<'>(!>)!=( >)!?*">)!;&;&:&9%8#7#7#7#6!5 435!3 2 1000047E+&Z@;eJE`E@I.(@$< @$F*#N1)S6,U8.V9/U8.T7.Q5-M3+I0*F.'B+%>( A) B)!C*"C*"C*#C*#B*#B*#@*"?*">)!=( =(!<(!;' :&:%:%:$;$B*#N6-Q90G/&>'7$2 2:1%90$8/#8/#80#:1$90$5- ;2&<3'<4(;2&<3'@6)<4&91"=5(@9,@:.@:-=6*=6);4'=5(>6*<4(=4(<3';2&;2';3'?6*<3'7/#;2&?6*;2&;2&A8*=4&:0#=4'       - -      - -         -   ;3(>6+;2';3'>6*?6*<4(7/"=4(;3'91$>5);3&6.":2&=5*<4*>6,=5+=6+=6*=6*:1%6."7/#91%91%:3);4+;4*=6,>6,<5*<5):3'6/#81%=5):3'90%;3'<4(;2&<3'6 ;%@)!D-%H1(D,#>&<%;%;% <& ='!?("@*#B+$C-%D-%E.&F.&F/&F/&G/'G/&H/%H/%G.%G-%G,%F+%B*"H/'L2+O5-R7.S7.S7.U8/V90V90U80S7/J0(B)!?'=%;%<&;&:%8#7"6"7"7#8$8$8#8#8$8$6"6!5!5!7#9$9$:&:&:%<&<'<&;&<'>)!?)"?)">)"?)"?(!@(!A("?'!@(!A)#B*#B)#B)#C*$C*$B)#A("A("A("A("A("A("B)"B)#C*#B)#A("A("A(!@'!@'!@(!A(!A("B)"B)"A("A(!A(!A("B)"C*#D+$C*$B)"@'!@'!@'!A("A("A("B)"B)"B)"B)"B)#C*#D+%E,%C*$B)"B)"B)#A(!?&?&@'!?(!>(!>)!?*"@+#@,$@+$>)!<&;&;%;%;%<&;%;%:%9$7"5 1-+)&#;$F.$P6,T:/Y=2Q6+G-!C*C+"B,$C-&C.'E.&G.%I.$J.#K/%L1(M2*M2*M2*M2*M2+M2*L1*M2*M3+L2*K0)J/(H.'G-&F,%D,$C,!A+ @*!?*!>)"<(";'"9'!8& 6%5$4#6#8$:%<&8#0--   !%*.25 7!8!8"9#:#:#;$<%<&<&='?)!@*"?)!>( >(!?)!?)!?)!?)!?)!>(!>( >( >( =' ='<&:%:%:%:$9$9$9#9$9$9#8#8#8#8#7"6 57!9#:$<%<%<%<& ='!>(">)#?*#@+$?*"<' :%7"8"7 41///012 3 4!5"6"5!5 4345 6 6!6!7"7"8#8#9$:%:%:%8#8#9#9#8#7"6!6!7"7"7"8"8#8#9$9#7!6!6!6!5 5 6!7"9$:%:%:%8#7"7"8"9#;$;$;$:#:#:#9#8!7 7 6 7":$:$<%@( E+ E-#F.%D,$C+$C*"F+"W:0gI=cD8[<0P3(E* D*"C+$A*#?)!>(!>( >(!?)!?)!>(!?)!?)!?)!>( >( =' ='<&;%;%:$;%;%='=' >( >( >(!>( =' ='<&='=( <';&:%:%9$8"6 44 4!4!4 2/,)&#     .,+-2 :'!A,$C-$C,#>(9#9$8$:&!<(#>)#@*$C*$F+#G-#H.$I0&K2'L3(M4)N5*O5*O5*O5*N4)N4)M3(M3(M3(L3(L2'L2'M2&K1'I1(G1(D0(B.(A,&@+#A)!B)D,!D,!?(:%9%8%+/245!6"7#9$:%;%:%:$:$;%<' >(!=' <' ?(!B*#C*#C*$C*#C*#C*#D+$D+%C*#B)"C*#C*$C*$C*$C*#B)#B)#B*#C*$D+%E,%C*$B)#A*#A+#?)">( >(!?)!?)"?)"?)!>(!=' =' =' <'<&<&='>' >' ?&@' A("B)#D+%E,&E,%D+$C*#B)"C*$B)#A("B*#C*$C*$B*#B)"B)"A(!@' @'!@("A("A*#@+$?+#>)"@*">(!=( >)!?*">)!>(!<&<' 9%8#8$9$7#8#:%6"6"5!4 3 2232036=#F,'\C=bICV>7E+$: ; @%H-%N3*S8.S9/S9/S8.R8.O5-K2+H/)D-&A*#=(B*!D*"D*"C*"B*"B)"B*#B*#B*#B*#A)"@(">'"='!;'!:&!:& :& 8%6#7$8%7$6"4 2 027/#7/#8/#8/#80#91$5,;2&=5(>5):2%;2&?6(=4&:1#=5(?8+@9-?9,<6);5(<5(=5(?7*>5)=4(<4(:2&:2&=4(?7+<4(7.";2&?7+;2&90$A8*>4'90"<3&     - -      - -          <4)=5*7/$90%=4(>5);2&5-!<3';2&90#>5)<4'6.!:2%>6+<4*=5+=5+>6+=6*=5):1%7.#90$;2&90%92):3);3)=5+=6+=6+<5*<4)70$70$=6*;3'91%<4(<3(90%6!<%A*!K3*T<2O6,C* =&;%:%;& ='!?(#@*$B+$C,%D-%E.&F/'G0'G/'F.&F.%G/%H/&H/&H.&G-%F+$>&C*#H/'L1*O4+P5,Q5,S7-T80U91S80R80M4,C+$>&;%:$:%:%9$8$7#6"6"7#7#7#8$9%9$9%8$6"6"6"7"7#8#9%;& :%:%<&=' <&<&=( ?)!>(!<&=( ?*"?(!>&?&?& @'!B)"B)#@(!@'!B)#D+$E,%B)#A(!@' ?& @(!A)"A)"B)"B)"A(!@' @'!A("A("A("A(!@' ?&@' A(!A)"B)"B)"A(!@(!A(!B("A("A(!?& >%>%>%?& A(!A("@(!@' @'!@'!B)"C*$D+$D+$C*$B*#B)#B)#B)"B)#B)#@)"=( >(!>)"?*"?*#?)">(!=( <';&:%9$9$9$:%;%9$6"30-*'$8"=&L3+W=3\A6_C8R6+D)C)B*!A*#A,%C-&E.%G.%I.#J."J.$I.&J/'K0(L0)L1)L1)K0(K0(J0(J/(J0(J/(H.'F,%F,%E,%D,#C,!B,!B,"A+#?*#=)#;'"8&!6% 4$4"4!:$@(K1'V;1M5,8%,,  "'+/25 7!8!9";$;$:#;$<&<&='='='='=' >( ?)!@*"A+#@*#>(!>( ?)!?)!=' ='>( ?)!=' ;&;&;&;&;&:%9$:%;&;&:%9$8#9$9$8"7 8!9";$<% =& >&!>'!?(!@*"A+#B+$C,%B*#@(!<%9"4 1/.-..01356!6"7"7"8"7!656 6 6 7 7 7!9":#:#:$:$:#:#:#:#9"8!7 7 7 7 7 7!8!9"9"9"9"8!7!7 7 7 7 8":#;$;%;$:#;$;$:#9":";";#;$:#9"9#8#5 344 6!8#9$;%?' B)B*!A+#A+$A+$A*#C)"K/&T6,S5*P2'L.%G+#D*$A*%@*#?)"?)!?)!?)"?)"@)"?)"?)!>(!?)!?)">(!='<&='='<&<&<&<&=' >(!?)"@*"@*"@*"?)!?)!>(!?)!?)!>)!=';&;&:%8"7!7!6"6"4"2/.-*'$!  -  -.++-03!5!7!7!7"7#8%9& <(">*#@+$C,$G-#I.#I/$I0&K2'M4)M4)M4)N4)N4)N4)M3(M3(M3(N4)O5*O5*N4)M4)M4(K4'I4(G3)E2)B1)@.&>,$>* >(='=';%7$6$6$(-25!6"7#8$9%:%:$9#8":$<&<&<&<'=( ?("A)"B)#B)#B)#A("A(!B)#C*$D+$D+$D+$D+$D+$C+$C*$D+$D+$C*$B)#B)#C*#B)#A("A)"@*"@*"?)!?)!?)!?)!>)!>( =' ='=' =( =( ='='>( ?)"@)"B)#B*#B*#C*$D+%E,%D+$D+%B)#@'!B)#A("A("B*#D+$C*$B*#@(!A("@(!@(!A("A)"B)"A)"@*#?*#>)"?)">(!=' ?)"@+#>(!>(!<':%7#6"9%:&8$8$9$7#5!43212321158=%E-'H1*D.';%8"9#<%B*!J1(P7-R9/S9/R8.R8.Q7-M3+I0*F.'B+$?(!<&A)!B*!B)!B*"B*#B*#B*#B*#B*$C*$B)#@(#>'"<&!;&!;&!9% 7$5#3"3!3!2 2 10026."7/#8/#80#80#5- ;2&<3';3'90$;2&@6)>4';3%?6*A:-A:.?8,>7+<5)<5(>6)?7+>5)=4(<4(<3';2&>5)?7+<4(6.";2&@7+:2&:1%A8*>4'8/" - - -                 ;3(6.#7/#=5)<4(91%5, ;3&:2%91$>5);3&6.!90$=4)<4):2(>6,>7,>7+=5)80$6."91%<3'90%:3*92(:3)<4*<5*=6+=5*=6*91%6/#=5):2&7/#;4(;3'90$7#9%E0'T=4S;1I1'B+">(!<& ;& ='!?)#A+$A+$A+#B+$C,$E-%F.&G/'G/'G/&G/%G.$G-$G,%G,%G,%?'!A)"F-&J0)L1*N3*P4+R6,S7.T91S91Q80N6.F.'?(!=&:%9%8$7#6"7"7"5!6!7"7#7#7#8$8$7#8#9$:%9%8#7"7#9%:%;&<&<&;%:%<&=( =' ;&;%<'>(!>& =$>%@' @(!A("B)#@' A("B)#C*$C*#B)#B)"B)#?& @'!A)"A)"A("@(!@'!@'!A)"C*#B)#B)"A("@'!@' @'!A("B)#C*#B)#B)"A("A(!@'!?& ?& ?& @' @'!A(!B)"B)#B)"B)"A)"A("B)"B)#C*$D+$D+%C*$A(#A("@(!A("A)#A)#?)">)!?*"@+#A,$A-%?*";&<&=( <' :%9$8$8#9$9$7!420-*&#5";&B+"I0%N4)P4)J.#E)D) B*"A+#@,%B-&E/(F/'H.%I.%J/&J/'J/'J/'K0(L1)L1)L0)K0(K0(J/(J/(I/(H-&F,%F,%E,%E-$D-#C-#C,#A*#@)#>'";&!8% 6$4#4"5#:$?&N3(\@4M5+6$.-   #),0247!9#9#9"9":#;%<&<&;%<&='='='>( @*"@*"?)"?)"?)"?)"?)!?)!?)!?)!>( =( =( =' <' <'<';&;&;%;&<&<'<';&:%:%:$;%<%<&=' >(!@)"A)"B)"C)"D*"C)!C(!D)!F)"K/'P4-L1*F-'9#3/,,-.036766 7"7!6 7 8"9"8!8!8!8!8!8!8"9"9#:#:#:#:#:#:#:#:#:#9"9":#:#9"9"9"9"9"9"9":#9#9#9"9"9#:#;$<% <% <% ;$;$:#:#;";!;#<%;$:$9#7"42234 6"9$;%<%='?)!@+$@+$?*#?)#@)#B)"E* F* G* F)!C)"B)#@*%@+%A+$A+#?)"@*"A+$A+#?)">(!>(!>(!?)!?)!='<&;%;%='=' <&<&>( @*"@*#@*#@*"@*"@*"@*#@*"@*"@*"?)"?)!>(!=(!=( <&;$9#8#6"4!3 1/.+'%"     .**+-/135 7"8$9&:(!<)#?+$A,#C-#G.#J/#I/$H/$J1&L2(L2(L2'L2'M3)N4)M4(N4)O5*O5*P6+P6+O6+O5+N4(L3&J2'H2)E1(B0(@-&>+#>*!?(@)C*B*='8$7$7$-15!6"7#9%;& <& ;&;%:$:$;%;%<&<'=' >( ?' ?' ?& ?& ?& ?& @'!A("B)#B)#C*#C*#C*$C*$C*#B*#B)#B)#B)#B)"A(!@' @' @'!?(!?(!?*"@*#?*">(!='<'='=' =( =' =' >( ?)!@)"A*#A*#B*#C*$C*$C+$E,&E,&D+%C*$A("@'!A("B)#A("C*$D+%C+$C*#@(!?' @'!@'!A)"B)#A)"@(!?)">*">)">(!>)!=' >)"?*"?*"=( <'<':%8$8$8#8#9$8$7"6"6"6"4!2 13 3 2136!5 2234 5!5!8$<'D.%L3+Q6/T7/V8/T7-S6+O4*K2*H/(D,%A*#;%;'A)!B*!B)!B)"B)"B*#B*$B*$A)#A("@("?'"='";&!:&!9& 7%5$4"3!5!8#9$7"5!1 04!90$80$91$80#8/#<3&>6*?7+;2&<3&?5(=4&<2%?6)A:.A:.>8+=6*;4(:3&>6*?7+<4(;3'<4(>6*:1%;3'=4(:1%4, :1&@7+;3'<3'B8+>5(:0# - -    - -     -       ;4(91&70$<4(=4(80$5-!:2&:1%91$>6)=4(6-!6.!<3(=4*=4*>6+>6+?8,=5)6/#6."8/#;2&:2'91':3);4);4);4)<5)<5*>6*81%6/"=5)92&70$=5)<4(3!3 4!7#8%9%:&<' <'"='!='"?)#@*$@*#@)"A*"C,$C,$D,$D-%F.%F/&G/%G.$G-%G-%F,%E+$D*"?(!D+$G.'J0(M2*O4+Q5,Q5,Q6-Q6/P6.M4,G/'=' ;&:%9$7#6"4 5!6!6"5!4 4 5!6"7#7#7#9$:& :&:%9%8$8#9$9%9$9#:$9$8#:$=( >(!;&:%9$:%=&>&>%?& @'!A(!B)#A)"@' B)#B)#B)#A)"A)"B)#A)"?&?&@(!A)"@(!@' @(!A)"B)#B*#B)#B)#B)#B)"@'!?& @' A("B)"@(!@' @'"A("?& =$>%?& @' @(!B)"C*$D+$C*$C*#B)#A)#A("A("A("A)"A("A("A("B)"B)#B)"B)#?(!=' =' =( =( =(!>)!?*#@+$?*"=( :&8#8$8$:%;%:$7"4 3 1.*&8& 4"7#<%@'D)F+H+ G+!F,$F-%E/'E0)E/(E.'F.&G-%H.&I.&J/'K0(K0(K0(K0)L1)L1*L1)K0)J/(H.&G-&G-&G-%F-%E,%C,&B,%B,%B*$A("?& =%:$8#5"3!2!2 36 >%F,"<'/- -  $*.25 7":$;%<%<% =& ='!=' =' ='<&='=' ='='>( ?)!?*"?*"?)"?)!?)!?)!?)"?*"?)">)!>(!>(!>( =( =( ='<&;&;&<&='=' =';&;%;%;%;%;&<'=( ?) @*!A)!B)!D*"E*"D(!D( F)!I,#V9/_C9[?8T:4E,'6 0,++.1356 6!6"5#6"8"8!8!7 6 7 7 9"<%<% <%;$:#:#;$;$:#:#:#;$<%<% ;%;$;$;$:#:#:#:#;$;$;$;$;$;$9"8!:#<% =& =&!<% ;$;$;$;$;$=$ >% >% =&!;%9#9#8#6!31/15 7!9";$;%=' ?*#?+$?*#?)"@)"C+#G-$I.#H,"G+"F,$C*$?(#='"?)#@*#?)"?)"?)"?)!>( >( >( >(!?)!>)!>( =( >( >( <&:$;%='?)!A*#@*#?*"?*"?*"?)"?)!?)!?(!?)!?)">( <'<' =( <&:$9#8#7#7$6#3!1/-)&#    .+*+,/2 5!8"9$:%:':(!<*#?,%A-$C.$E.#H."I."G/$H/%I1&K2'K3(L3(L4)M4)M3)M3(N3)N4)N4*N5*N5*N4*O4)P3(O3(M1)I0)E-'A+%@*$@)"A(!C( N2)Y=2O5+D,">'9$+/4 6!6"7"8$9%:%<&<&='<&;%;%<&=' >(!?)"?(!@' ?' ?& @'!A("A("A("A("A("A(!@'!@'!@'!@(!A("A("A(#A("A("A("A("@(!@(!@)"@*#A*#A*#@(!>' >' ?' @'!@("A("@'!@'!A("B)#B)#B)"A)"@(!@(!@(!C*$D+%D+%C*$C*$B*#C+$E,%D+$D+%D+%C*$B)#B)#@'!A("A("A)"B*#B)#@(!?(!@*"=(!?*#?*#>)!=( =( >(!=' ;&<':%8#7#6!5!8$9%8#6"6"6!6"4!3!4"5"3 012123 3 2 5!6"6#9%>) G0'O6-S9/U9/U8/T6.R4,N3+J1*F.'B+$>( :%>&@'@(@( @( @(!A)"B)#@)">'!='!<'!<&!;&!:% 9% 7$8#8"6 5B+#R:2P8/F/%='4"1 5"90$91$8/"8/":1$;3'<5(91$<3&?5'=4&<3%?7*B;.A:.=7*;5):4':3&=5)>6*<4(<3';3'=5)80$:2&<4(:1%5, ;2&@7+<4(=4(B9,?6)<2%    - - - -  - -       :3'70$91%<4(:2&6."5-!91%:1%90$>5)=4'7. 6- ;2':2':2'=5*?7,@8,=6*7/#6."90$:1&91&:2(;3);4);4);4);4(<5)>7*81%5."<4(92&7/$;3)3!2 2 2 3!4"6#8$;& <'!='">("?)#@*#A*#B+#C,$C,$C,$C,$D-$E-%F.$F-$G-$G-%G,%F+$D*#>( @+!D.$G0'J3)L6+M5*Q4)Q2(W3)W2)Y3*d?6fD:S5+B(<%7#5!4 5!6!6"6"4 336!8#8$7#7#9%:%9$8$9%9$8$8#7#7"7"9#9$;%=( >)!<&:%:%9$9$=&@(!@' ?' A("C*$C+$@(!@' A)"C*$D+%C*$C*#C*#?' =%<$>%?& @(!A("B)#C*#B*#B)#B)#B)"A("A("@(!@'!?& ?& A("C*$D+%D+%C*$A("@' @' @'!A("B*#D+$E,&E,%D+%C*$B)#A("@'!@'!A("B)"A("@'!@'!A("B)#B*#B*#@)">(!=' <' =( >)!=' ;&<&=( <'9$7#7"7"9$;%9$7"5!2 0-)$5#5"8#<$>$A&D(G+ H-#H.&H.'G/'G0(I0)I0(I.&I-$I.&J/'L0)M2*M2*M2*M2*M2*M2*M2+M2+L1*K0(J0(J0(H/'G-&E,&C+&B+&B*&B*%@'"?%=$;#8"4!2!0!0!1!1 10-*+   !'+/37"9$:$;$;$<% >'!?("?(!>( >( =' ?(!@)"@)!?(!@)!@)"B+$D-%B+$A*#B+#B+$B+$A+#@)">( >(!?*"?*"?*">)!>( ='<&<&=' =( <( <' <'<'='=' <' <' =( >(!?)!@*"B*"C*"E+#F+#F*#F*#G+#I-$P4,U:2R81N6/E-(51,*)-1356!7$6%5%6#7!7 7 6668!:#<%<%:$:#:$;$;$;$;$;$;$;$;$<%<% <% <%;$9"9"9":#;$<% ;$;$<% =& ;$:#:#:#<% >'"=&!<%<% <% ;$:#;#=#<$;$;$;%:$8$5!223236!9#;%>'@) A+#A,%A,$@+#@)"J0(^B9cF;S5+H+"G+#E+$A*%?)$=(!<&>( ?)"?)!>(!>( >( ?)!@*"?)"?)!?)!?)!?)!?)!>' >%@' B)#C*#C*#B*#B)#B)#C*#C*#B)#A("A'!@'!@'!?' >' <';&;%;$;$:%:%9&8%6$4!1-)%#    -,)*-5$>,$A-%D.%A+"<';'<( =*#?,%@-%A-#C-"F-"H."I.#J/%K0&M1(N2)O3)P3*P4*Q4*R5+R5+R5+R5+R5+R5+Q4*P4*Q4)Q4)N1(K/'G,&C*%B($A'"A' B'N2)aE;cG=S8/F,$=%7!/25 6!6"8#9$:%:%;&<&<&;%;%;%;&=' >)"@("@(!@(!@'!@'!@'!@'!@'!@'!@' ?& ?& @' @(!A)"@)"?(!>' >'!?(!?)"@*"?)">(!?(!@(!A("B)#B)#A("A("A(!@(!A("B)"A("@'!@'!@("A("@(!@'!@' @' A(!B)"B)#A("A("C+$C*$D+$D,%D+%D+$D+%B)#A("B)#A("A("B)#C+$D,%D,%B)#@("@)">)!=' =' >(!<&:$;&<&:%9#8#6!6"6"6"7#8$8$7#5!4 5!6#5"5"6"5!4 31/1321135!6":$A*!J2(R8.T9/U8/U7/T6.Q4-L3,I0)E-&A*#<&8#>&>&?&?&?'?'?'!@(">'"<'!;&!:& :% :% 9$6#5"6!6 55J1(^E;V<3I0'>'2!15!90$7/"80#91$=5)>6*80#;1$?5'>5'=4&?7)B;.@9-<6);4(;4(;4(?7+@8,=5)<4(;3';3'8/#;2&<4(;3'6.";2&?6*=4(>5)B9,@6*     - - - - - - -     70$91%<4(91%6."5-!91%;2&80$=5)?6):1#7.!<3'<3(:2'=5*?7,A9->7*70#6.":2&<3(;2(<5+=6+=6+<5*=5*<5)<5):3&81%70$;4(;3'91&5"5"6"7#7#7#8#9$:%;& ='">)#@*$A+%A+%B+%B+%C+%C,%C,%C+$C+$D+$D,$E-%F-&F-&F,&D+$=(>(B,#F0&J2)J4*L6+O5*Q4(U4)Y3*a:1lD;qJAmJ?S2&E(<":"7"6"5!5!6"5!4 4 5!7#8$8$8#7#8#7"6"7#8$9$7#6"6!5 5 8":$;&=' <&;%;&;&;&=' <$?& @(!@'!B*#D,%C*$A(!?& ?& B)#C+$C+$B*#B)#>&>&<$<#>%@'!A("B)"B)#B*#A("A("A("A("A("A("@'!?& >%>%=$>%?& @(!A)"A(!@'!A("C*$D+$D+%D,%D,%D+%D+$C*$C*$C*#B)#B)#B)#B)#A("A("@(!A(!A)"@)">(!=(!=( <';&:%9$8#8#8$9$9$9$9$9$:%:$8#7"4!2 /+':& 4"6#:$?&D* F*D)D(F+#H.)H/(H0(I0(J0(K0'K/%K.$J/&K0(L1*N3+N3+N3+N2+M2*M2+N3,O4,O4,N3,L2+K1*I/(H.'F-'D,'C+&B*$A)#>("<' :& 8%4#1!1!1"1"0"/ .-++, - $*/35!8#:$;%<%<%<% =&!>'!>(!>( ='=' @(!B)#B)"B)"A("B)"D+$E,&D+$C*$D+%E,%D+$C*#B)#A("@)"@*"?*">)!=( ='<'<'=' >( =( =' =' =' =( >(!>(!>("?("?("?)"@)#A*#B*$C+$C+$D,$E,$D,$B*"A)!C*#C+$A*"?)!=' 40,**.2356!6#5$5$6$8"8!8!8!8":#;$;$:$:$;%;$:#9"9#:$<%<% ;$;$<%<& =& =& =& <% ;$9#:#:#<% =&!:#9";$=& ;$:#:#:#<% >'!=& <%<%<%;%;$<$>$>% >'"=& ;$:$8#7"5 422248"<$?'B)B+!B,#B+$B*#A( I.%dG' <&;%;%<%<& ;%:%8%7$6#4!1-*&$!  -   -(*-:&J5-R;2T<2O7-D-#<&=( >)">*$?,%@+$A+"D-#H.#J/%L0'M1(N2(O2)P3)P3*P3*Q4*R4+R5+S6,S6,S6,S6,R5,Q4+P3)O1&L0&I/&G-&D,&B*%@("?' ?&B(T9/cG=T:0F-$=&5 -14 6!7"7#8#9$:%<&<&;&;&<&;%:%:$;%<&>' @(!@(!@)"@(!?(!>' =' =' ='=' >(!>)"?*"@*#>(!<'<'=' =' >( >(!>)!?)"@)"A(!A("A("B)#C*#B*#B)"A("@' ?& @' @(!@'!@'!?& ?&?& @' @(!A("B)"B)#B)#C*$C*#B)"C*#C*#C*$B*#A)"A)"B)#B)#B)#C*$D+%C*$B*#A)#@("?(!?)"=( <'=( ;&9#9$:%8#7"7"5 345!7"6"7"7"7"6"5!6"6"6"5!5 4222322;'H3+H3*<'37!<$D,!N4*S9.T8.T7.T7.S5.O4,K2+G.'C+$?(!:%8#<%=%?&?'?' ?' >' =' <' ;':&9&8%8%7$7#8#9"9!: >#P5+_C9T9/I/&=(2!2 6!80":1$;2%<5)=5)8/"<2%@6)>5'<3%?7)B;.@9-=6);5(;4(:3'>6*A9-<4(;2'<3'=4(:1%;3'<4(=5)80$:1&>5)=4(>5)B9,@6*   -    - - - -    81%91%;4(:2&80$6."91%;2&6.":2&>5'<3%90#=3(=4):2'=5*?7+A9->6*80$6.";2&<3(;2(<4*<5*<5*<5)>7+=6*<5)81%81%81$;4(;4(8$=(!B-%G1)I3+@+"8"8#9$;% ='"?)#@*%A+%A+%A*$A*$A*$B+%C,&C+%C+%C+%D,%D,&D,%D+%C+$B*#?(!?) A+"E.%H1'J2)L3*O5+Q4*U6+X5,]9/lH>uRHkK@Z;0G*>$;"9#7#5!3 4!6"6!7#7#7#8$8$9%9%8$7#7#7"7#8$8$6"5!5 45 7!8#9#9#9$;%=( =(!:%>& A("@'!?& @'!A("B)#A)"@'!?& >&A("B)"A(!A)"A("A(!@(!>&=$>%?& @' @(!B)"A("@'!@'!@("@("@("A(!A("A("A(!A(!?' >%>%?& @(!A)"B)"B)#C*$C*#B)#B)"B)#B)#B*#C*#C*#C*$C*#B)#B)#A)"A)"B)"A(!?' >& >( >)!=(!=( <( <';&:%9$8#8#8#8#7"6"9$<&:%7#6"4"2 .+'6#4"<(!E.'S:1^D9T9.G+ D(D)"E+%F-&G/'H/%H.$J.$K/#K.$I.&J/'K0)L1)M2*M2+N3,O4,N3,M3+M2+M3+M2+L2*K0)I/(G.'F.'E.'C,%B+#A*"@*">)";' 8&5$2"1!2!7$;&>)@,8%0-.  !&*/36!8$;%=&!>'!>'">'!=&!='!>(!>( =' ?( A)"B)#B)#B)"A("B)"D+$E,%D+$C*$E+%E,%D+$C*#C*#C*#B)"A)"@)"@(!?' =&>&>' >' ?' ?' ?' ?' ?' ?(!@(!?(!?'"?("@)$@)$@)#@)$B+%B+%A*$@*$@+#?*"=( <'>(!>(!;&9%7#3!0-++.146 6!7"6"6#7#:#9"8"9":#;$;$;$;$;$:$:#9"9":#;$;$;$:#:#;$;$:#:#:#:#8!7!:#<%<% <% ;$:#:$;$<% <& ;$9#;$<%<% <% :$9":#<% =% =#=$ =& =& <% :$9$8#7"5 2025 9#<%@(D* D+"D+"B*"A(!@'B(W;/iK>Y;.H*G+G+!D*"B)#@)"?)!@*"A+#@*"?(!>( >' >(!?)">(!='>' @)"A*#A*#A*#A)"B)"C+$D+$A)"A)"B*#B*#A)"@)"@)"@)"@(!?' @)"A*#>(!;&;&;%<&='!<& :%8$7$5"10/,)&#   - ,**-6D,$O6-R8/S9/I/%?&>&='!=)#=*$?+$A+$D-$G/$I0&L2(O3)O3*P3*P4*Q5+R5+R5,S6,T7-T6-S6,S6,S6,R5,R5+P4*O3(M1&I/&F.&D.&B-'@,%?*$@)"@) E,#J1'G/%?) 8$3!3 0244 5!6"6"8$:%;%;%<&<&<'<&;&<&<'<'<&=' >)!>)!=( =' <&<&>( @*">)!=' =' =( =( =( >( >(!>(!>)!>)!?)"?*"?(!>%>%@'!B)"C*$D+%B*$A("@'!?&>&>&>&>%>%?&?& @'!@(!A)"C*#B*#B)#B)#B)"A)"@'!@(!B)"B*#C*#C*$C*$C*$B*#B)#A)"A)"A("A)"?' >%>' <' <'<&:%:$;%9#5 5 7"5!224 5!4 4 5 5!6"5!5"6"6"5!5 4 22346 9#G1)\F>jTKT>48#7 9!=%G.$P7,R7-S7-S6-T6-Q4,M3,I0)D,%@)"='8#=( =' =' >' ?' ?'!>'!=' ;' <'<';&:&9%8$7$7#6#6"5"5"7#:&;&9$6!3!1!3 5 :2$;3%<5(>6*:1$>3&A6)?4&;0#>6)B;.@;.>8+;5)<5(:3&=5)B:.=5);2&<3'?6*<4(;3';3'?7+<3'<3'>5)>5)>5)B8,  -   - -   -    :3'<5);3'81%5-!:1%;2'5-!80$@6)=3%9/";2&>5*<4)=5*>7+?8,=5)80$6.";2&<3(;3)=5+<5+<5*=6*?8->8+=6)<6)81%6/":3'9$?)!F/(R;3^F?P80@':#:$:%<&!=(">("?)#?)#?)#?)#?("@)#A*#B*$B+$C+%D,&E,&D,&D+%B)#@'!?(!?*!A+"D.%F0&J2(L1(P4+S5,V7.V7.U6,_A6oRFiMBR9/C* =&9#9#9$7#5!4!6"7#7#7#6!7#8$6"5!9%7"8#8$8#7#7#7#6"5!6!6!6!8"8#8#8#;%>)!>)!<'<&A)"C*$@'!>%?' ?& ?' ?' >%>&?& @(!A)"A)"@(!C*#B)#B)#A("@(!A("A("A(!@' ?' @'!@'"@'!@'!@'!@(!A("B)"B)"A("@(!@'!?' @'!A("B)#C*#B)#@(!@'!A("B)"B)#C*#B)#A(#B)#C*#B)#A(!@'!A("A("A("A(">' ;%;%;&;&;&:&:%9%9%9%9$8#8#8$8$9$9$:%:%9$7"5"4!0,(%5"8$A*#N6-cI?rWL\@5E*D)F,$F-%E-&E-%E,$F,#H-#K.#J.$I.&J/(L1*M2*M2*M2+N3,O4,N3,N3+M2+L2*L2+L2+J0)H.'G-&F.&E.%E.$E-#C,"A* ?( =' ;% 8#7"5 8"@(!I.%S7-[>2E.%2/  -%*.135!7#:%<'!>("?*#>("='!>("?*"@)"@(!A("B)#C*#C*#B)#B)"B)#D*$E,%G-'G.'F-'F,&E,%D+$C*$C*#C*$C*$B)#A("A'!@' ?& ?&@& @' @'!@'!A(!A(!B)"C)#B)"B'!B(!C*#C*#B*#B+#B,$B,#A+#A*"A)!A(!B' C' D'"C'">& :%7#4"/*+-036 8 9!9"8"6!8":#:$:#:#:#;$;$;$;%;$;$;$;$;$<% <%:$:$;%<%:#9":#:$:#9"8!8!:#<%;$;$=& >'"<& ;$<% =&!<% ;$<%=& ;%:#:#:$:$;$<$>$>% =& =&!='!;% 8#7#8$8#5 34 6"8$9&=(!@)#@)$A*$@*$@+#A+$B,$A+$@*#@+#@+#@*#@)#?("?'"?'!?& @'!A("@'!?& @' A("A("A(!A'!A("A("A("A("B)#B)#A*#A+#A+$A,$A+#@*"A+#A+#?)!=( =( >( =' ='>)!@*#?)!<( <'<&=' >'!='!;%9%7$5"4 21.*'$!    - -,)+.7!?("B*#E,%A)!=%<%<& <("<)#>*#A+#D,#G.$J/&K0'L2(M2)O3*P4*Q4+R5,T6-U7.V7.U6.S6,R5+Q4*P3)O4)N4*M3(L3'J1'G/(F.(E/*D.)C-(B+&A)#?&!<$9#7#5"1 .+-.02 4!6"7"8#9#:%;&<&=' <';%;%<&=' =' =' ='<'<'<'='=' =( >( >( =( =' <'<&<'=' =(!>)">)">)">)!>(!=' =%=$?& A)"C*#D+$B*#@'!?& >&>&?& ?& >&>%?& @'!@("A("A)"B)#B*#C*$C+$B)#A(!?& >%?& A("C+$D+%C+$B)#A("@'!@'!B)#B*#C*$A(">&=&<&9$;%8#9$<&;%9$9#8#6!423345!4 4 5!6"4!5"6"5!4 4 322579 =%Q90qYOoWMJ2'79!:"?'J1'P6+Q5+R6-S6-S6-O4,K1*F.'B*#?(!;%8#=(!<( >(!@("@("@("?(!=' =' >&!>%"=%!<% :$ 8$7#5#3"1"0!/ . . . ,,/ 1!35<4&<5)>7*;2%>4'A6)=2%:/">6)A:-A;.=8+;6)<5(:3&>7+?8+<5(:3&<4'=5(:2%91$<3&?7*=4(;3&=5)=5)=4(A8+  - - - -      :2&=5(=5):2&6-"91%:1%3+5,!A7)=3&9/#8/$<4)<4)<4)>7+>7+;4'8/#6-!;2&=3(<4)=5+=5+=5*=5*>6+<6);4(>7*81%5."9#:$<%J2+ZA:X?8L2+C*#=' :%;& ='"=(">("='!<& =& >'!>'!?("@)#B*$C+%D,&E-&E-&E,&D+%B*#A*#;&?) C-$F/%H1'M3*Q4.T6/U6.U6-T5-R3*N3(L3'E0$<(8$8%5!6"7#7"6 55 7"8$8$6"6"8$6"5!8#:%:%9$7"6 5 6!5 5 7"7"8#:$:%:%:%<&>)!<';&=&=%A("A)"@'!@(!@'!@'!?' =%>%>&A("A)"@'!@'!B*#A("B)#A)"A)"B*#C*$A("?' ?& @'!@'!@'!@'!@(!A("A)"B*#B)"A("@'!@' @'!@(!A("B)"B)#@'!>%?& @'!@(!@(!A("A)"B)"B)#B)#A)"A(!A(!A("A("@(!?'!>' ='='<'<' <( :&8$8#8#8#8$9$9$9$9$8$8$8#7#7#5"3 1.*&:$7";$A( O5+cH=hL@R6+A%C(D*#D,%C-&C-&D-%F,%G,$I,$I.&J/(K0(K0(L1)M1*M2+N3+N3+O4,N4,M2+L2*L1*K1*I/(F,%F,%H-%G-%G-#F,"D+ B)@)>(<& :% 9#7!;"B&!N/)Y92\<4D,%0/ - ").14 7#9&:&;' =(!>)#?)#?)#@*#A+#@(!?&A(!B)#C*#C*#B)#B)"B)#B)#D+%F-'G-'F,&E,%D+%D+$D+%D+$C*$C*$C*$C*#A("@'!@' @& @'!A("A("A("A("B("B)"B)#C)"E(!E)!D)"D+"C,"B,"A+!B,"C-#D,#E+#F*#H+#P1*^>8]?9L3->)"7"31,++/46 9!9":$9$9$;%<&<&<%<&=& =' <&<%:$:$;%;%<&<&<&='>(!>(!<&:$;%<&;%;%<&='=' =' <'<&=' >( =' =' >( ?)!=( <&<&='>(!@*#>(!;%<%=' =' >(!=' <&<%;%;%;%:%9$7#6"6!5!4!4!6#7%;(!>)"D+%C*%C*%C,%C-%C-$C-$B,#A+!A+"B+#A*"@'!@&!@&!?% ?%?&@' @' @' @' A(!A("A(!A'!B("B)#B)#B)#B("A("A*#A+#@*#@*"@+#A+$A+$A+#?*">( ='<&='>(!?)!?)!>(!=' <'<'<&<%;%:$9$7$6#4"2 /,*(%"      /+*),/24 7!9#:% ;'"<*#=*"=*"@*!B*!F+"I-$J/&K1'L3)O3*P4*P4*Q4+T5,V6-W7/W80V8.T7-S6,R5+P4*N3)L2(K1'I0&H/'F/(E/)E/*D.(D,'C*$B("@'>%:$6"3 13 )+-/24 6!7"8#9$:$:%;%;&;%:%<'>)!>(!>(!=' <&<&<'=' =( =( =( =( =' <'<'<&;&;%;%=' >)">)!>(!<';%<%>%@' A("B)"B)"A)"@(!?' ?' ?& ?& ?' ?' ?' @'!@("A("A("@(!A("A)"B)#C*$C*$C+$C*$A("@'!A)"B*#B*#B*#A)"@(!@'!A("B*$C*$B*#A)#@(!?& =':&;&;&:%;%;&:%9$8#7"5 33335!6"4 4 6!4 4 5!5!4 4 4 335788 ?'\D:t\R`H=A(:":";#D,!N4*P5+Q5,S6-T6.S5.N4-J2+F.'C+$?)!;%:&>(!>(!@)"A)"A)"A)"?(!=(!='!>%">$"<# ;#8#7#6#5#2!. ../0 0 / 0 0 1 45=6*?7*<3&?4'B7*>3&9/";3&?7+>8+=7*;5(<5(;3&>7*<5(<5(<5'=6(>6(:1$91$<4&?7)=5':3&=6)=6)<3'  - - - -    ;2&<4(;3'7.":1%<3'7/#80$A7+=3(8/#8/#;3';3(;4)=5*=6*:2'7.#5, :1%=3(=4*=6+>6+>6+>6+>6+>7*=6*=6*;4(9#8"7!:#@(!C*#B(!@' =& ;& ;& <& ='!>(">'"=&!=& >'!?(!?("@)"A)#B*$C+%D,%D,%D,&D,%D+%B+$A+$=(A+"E.%H0'K3)P4,R5-S5-T6.T6-T6-O4*G0%@+ <)7%6%5%5#6"6!8 655!5!5!6"4 34 5!7#7"9$:%:%8#7!7!7!6!7"8#8#9#:$:%:%:%:%;%<' 9$=%@'!A)"B)#@("B*#A("C+$B*#@'!?& ?& A("A)"?' @'!?' ?' ?& ?& ?' A("A("@(!@'!?' ?' @'!A("A("A("A("A(!@(!@(!@'!?& >&@'!A("B)"B*#B)"@'!?& @'!A("@'!@' @' @'!@'!@'!@(!A("A("A("A("A("@'"?(!>(!=( =' <'<';'9%7#7#7"8#9$8$8#8#8$8#7"6"5"5"2 0-*(%9#6!:#=$F,#Q7,P5*G,!C'B(A)"B,%C/'C.'D.'E-&F,%G,$H-%I.&J/'K0(L1)M2*M2+N3+N3,P5-O5-M3+L2*K2*J1)I/(G-&H-&I-&I,%H,#F,"E* B)?)=):( 8'!7%6"7"9!?$F)#E)"8"// %+.035"7$8$9$:%;%<% =& >("@*#B*#C*$C*#B)#@'!?& C*#F-'E,%C*#C*#C*#C*#B)"B)"B)"C*#D+$D+$C*#C*$D+$D*$B)"A(!A(!A(!@'!@' @'!A(!B)"B)#B)#C)#C)#D)"D)#C*#C+#C,$B,#A+!C,"E-$G.%I/&K/&L.%W8/hH?eH?S;3F0);'4 20-,/24!6#6"7"9$;&<'=( >(!?)!>(!=' <&;%;%<&;%:$:%='=' <';&:%:$;%;&<&='<&<&;%;%=' ?)">(!>( =' <&=' >( =' <&=' ?)!@*#A,$B,$B,$@+#>)!>)!?)"@*#@+#?)";&9%9$8#7#7"7#7"5 44 3 3 3!6$6#<%A("B)"B(!D+#F.%G-$F,"H-$K0&I/&E,$C*"B(!A' @' @' A(!A(!A'!@'!@'!@'!@' @' A(!B)"C*#C*$B)#A("A("B)"A)"@)">)!>( ?)!@*#@*#?*"?)!>( =' ='<&;&;&='=';&:%:%;%<&=&!:%8#5"3 2 100.+'$    #-,-.025 8!:#<% >("?+#>,#>,#?+"A*"C+"G,$I.&J0'K3(N3*P4+Q5+R6,T6-V7.V7/W8/V8/U7.S6-R5,P4*N3)L2'K1'J0&H0'G/'E.(D-(D-(E,'E,%E+"F+!H-#H-#A(;$6!27!),.024 6!8#:$:$:$:$:%;%;%<&<'=' >(!>(!<&:$;%;%;%;&<&<'<&;%:%:%:%:$9#;&>(!=( ;&:%;%='?(!A)"A)"A("A(!@'!@'!@(!A("@(!@'!@'!@'!@'!@(!A("B)#A)"@'!@' @(!A)"B)#C*$D+$D+%D+$C*$B*#B)#A)"A("A("@(!@'!@'!A("A("A("A)"@("@'!>' <';&?)"=( <&:%;%:%9$7!5 4 5!5!5!5!5!4!5!4 334 4 4 4 4 3246765A*!T>4R=3@*!8"9":">&I0&O5+Q5+R6,S6-S5.Q5-M3,I0*F.'B+$?) ;%=' <'='>' ?'!?'!?'!>(!=)"='!>& <$:#8#6#5#5#5"2 0129"@("A)#A("=&6#3!5 6 ?7*:1$>3&C9,?5(:0#=5(@8,A:-<6);5(:2%;4'?7+<5(<5(=5(>5(>5(:1$;2%=4'>6(<4';3&>6*>6*:2& - - -    :2&<4(:2&6-!<3'?7+:1%90$>4)>4(7-"6-!:1%=5*<4)=6*=6*91&8/$7.#80$;2&=4)>6+=5*>7,=7+=6+=6*=6*>6*5 4455 6 9";$:$9$9$:$;% ='!>'"='!=& >'!?("?("?("@("A)#A)#B*$C+$D,%D,&E,&D,&B,%;&@*!D-$G0'K3*O4+R5,T6-U7.W8/U8.S7-K3*B.$=* :(7&5$4$6$6#7!9 8 56"6"6"6"5!34 5!7"7"8#:%:%:%9$8#7"7"7!8"9$:%:%9$:$<&>)!=( ;&;%>' A)#@("B*$B*$A("A("D,%B)#A)"@'!?' @'"@("A("A("@("@'!?' ?& >&>%>&>&?& @'!@'!A("A("@'!?' @(!A)"A)"A)"A("@'!@'!@(!A("B)#C*$B)#A("A)"B)#B)#A("@(!A("A("A(!@'!@'!@' @'!A)"A("@'!>& =' <( >)"?*#>)!<' :%8#7#7#7$9%:%8$6"7"8#8$8#7#6"4!1/+(&=' 9#8":#<$>'!A*#A*#A)#A)"A)!B*"D-%E/'D.'D.&F.&H0'J0(J/(J/(J/(K0(K0(L1)M2+N4,O4,O4-O4-O4-N4,M3+K2*J0)H/(H.(G-'G,%F+"F*!E* B*?)<)9) 6(!4& 2$1#0!1 331/0 - %*-013 4!6!7"9$;% ='!='!=' >' @(!B)"C*#C*#B("A(!B)#D+$D+%E,%E+%D+%C*$B)#A("@' A(!B)#C*$D+%E+%E+%D+$C*#B)#B)#C)#C*#C*#B)"B)"B)#C*#D+$D+%C*$C)$C*%C+%C-&D.'C.%C-$D-$F-$H.%J0%K/%K-$W8/gH>bF)!8$30/0124!6"6"7"8#9$:%;%<&<&<&<'<'<&<&;%<&=' =';&<&=' =' <&<&<'=' >( >( =' <'<&<&=' >)!=( ='=' >( >( >( =( =' >)!@+#@+#@*#@*"?)"?*"@*"?)">( >( ?)!>(!<';&:%:$8$8#7#7"5 4323 5"6"7#<%?' B)!E*"G+#H-$K/%O2'V8.`C8_B7P4*F+"E*!C)!B( B(!B)"C)#B)"B("B)"B)#A("A'!A(!A(!B)#D+$B)"@' @'!B)"A)"?(!>( >(!>)!?)!?)!>)!>(!?)!>)!>( =' <&<&<'='<&;%;&<&<%<%9#6!4 4!2 10/-+(%!  -   -.+,.26 :#>& >&=%>&>( >*!>+">+#@+#B,$F-&I.'I0'J2(L3)O3*Q5+R6-T6-T6-U6.V7/V8/U7.S6-R5+P4*N3)L3(K2'J1&I0'H0(G/(E/'D-&D,%D*$D) E(V9/fJ?^B8R8.F.#:#6 (+./1246!7"9#9$:%<&<'<&;&<&<'=(!>)"=(!=' ;&:$9$:$:$;%<';&:%:%;%:%9$:$<'=( =' =' =' =' >' ?' ?' ?& ?' ?' @'!@(!A("A("A("A("@("@("A("A)"B)#B)#A("@(!A("A("A)"B)#C*$C+$D+%D,%E,&D+%C*$B*#A)"@(!@'!?' @'!@("@(!A("A("@(!?' =' ;&=(!>(!<&:%:%:%9$6!45 7"6"7#7#5!34 6"21124 4 3234 444107#:%7#7"7#8#8#A)!K1)O4+Q5,R6,R5,R5,N4,K2+H0)E-&A*"=(;&=(!<' =' ?'!?'!>& =%=' =(!='=&;%9$7$6#5#5#5"5!5 69G+#T7/W8/X90J1(8'2!46 7.!<3%C:,?6(;2$=5(@9,B:.>7+;4'>6)?7+@9,>6*=5(?7*=5'?6)=4'=4'>5(>5(;3&91$=5)=5):2&  - -     <4(<3'5-!<3'@7+91%91$@6)=3'6,!4+=5)>6+<5*>6+>6+80%7/$6.#8/$:1%=4)>6+;3(<5*<6+=7+=6*=6)2012 3 3!4"5"7#9$:%;%;& ='!>(">'!='!>'!?("?("?("@("A)#A)#B*#B*$D+%E-&D+%B*$@)#:&>) B,#E/%H1'K2(O4)Q5)Q4)S6*T7,T6,O2(H.$A)<(9&8&6$5$6#7#8 8534 5!6"4 35!9%6"9$:%:%:%:%:%:$8#7"7!8#:%;&:%:%;%<'>)!>)"?)"=(!=( <' =(!?*"@*#>(!>' @)"B*#A)"B*#@(!>%=%>%>& ?' @'!A("A)"@'!>&=%=$=$?& @("@'!?' ?' ?' @'!A("A("@'!?& @'!@("A("A)"A)"A)"A)"@(!?' ?' ?' A("B)#B)#A)"A("@(!@'!@'!@' @(!A)"A("A("A("@("@(!@(!@(!@)"?*"<':%:%:&:%9%9$9$9$8$8$7#7#6#5"3 1.*'%<%:"?& D+%D+%@(!@( @( A)!A*"A*"C,#F.%F.&E-%E-$F-#G.$I/&K0)K0(J/(K0(K0)L1)M2+N4,O4-P5.O4-N4,M3,L2+K2*J1*I0)F/)E.)E-&E+#D*!C* A)>(;(9(6(4'3&2%1#0"0!0// - %+-/13 5!6"7#8#:%=& =' =' ?(!A(!B)"B)#B)#B)"B)"B)#B)$D+$D+$C*#B)"B)#B)#B)"A(!B)"B)#B)"B("B)"B)#C*#C*$C*$C*#C*#C)#C)#C)#C)#C*#C*$E,&F-'E+&D*%D*%D*%E,&G.'G.&G.%J0'M2*M2)M3(L0&K.$K.#K.#H-#C,$?*";&6"4 10124 5!7"8#9$:$:$9$9#:$;%:%:%<&=' =' <&;&;%=' @*#?*"<&;%<'=' =( >( >( >( =' ='='='=' =' <'<&>(!@+#?*">(!=' <&=' ?)!?)!>(!>(!?)!>)!=( =' >( >(!>(!=' ;%:$:$:$9$9$7"6!5!5 42236!9$;&@( C*"F+#H,$J-$M/&Q3)Y:/eF;hI?X90J,#G+"D)!C)!B) B)!B)#A("A(!A(!A(!@'!@' A(!B)#C*$D+%C*#@' ?&@'!@(!?(!>(!?)"?)">( ='=' =( >(!?)">(!=' =' ='<'<&=' >("=' ;&:$9#8#8#7#6#5#3!11/,)%"   -   +-.09$E.&L4,P7/M4-D+#=$=&<'<) =+!?+#A,$D-&G.(I0(J1(L3)N3*P5+R6,S6-S5,S4,U6-V7/T6-R5+P3*N2(M1'L2'K2'I1&H0%I0'I1)H0)F/*F.'F,%E*!D(O2'`C9dH=Y>3M3)@(59!*+.13 5!6!6!7!8#:%='>)!<':%:%;%;&;%;%<'=' <&;&;%:%;%;&;%9#9#;%<&:$8":%<'=(!?*"?*">(!=' >' ?& ?& ?& @'!@("@(!?(!?(!@("A("A("A("B)#C*$B)#@'!@("D+%D,&B*#@(!A("A("B*#C+$D+%D+%D+%C*$B*#B*$C*$B)#A)"@(!@'!@(!A("B)#@'!>%<%;'<' =( <' ;&:%9$8#6!5 7"8#7#8#9$7#5!4 4 5!312222234 5 24323 2 25"7#7#7#;%F-%N3+Q5,S6-S6,S6+P5+M3,J1*H0)C,%@*"='=(>)!>)">(!?'!?'!?'!>'!=(!<( <&;%:$9$9%8%7%7$6$6#6"6;"K/&X:1\=3_?4J3)6&3!56!<3%A8*?5'=3&?6*A:-B;.?7+;3';3&>7*@8,>6*=4(@7+<3&?6)?6(>4'>5(>5(;2%8/#=4)=5) -   =4(=5)6-!<3'A8,<3';2&A8+>5)7."7/#=5)@8->6+>7,>7+70%5-"5-"7/#90%;3'=5*<5*>7,=7,>7,<5(2!1 4#7& 9(":)#8'!5$5#7#9$:$;%<& ='!='!>'!>'!>'!?("A)#B*$B*$B*$C+%D,&D+%C+$C*$B*#A*#@*#>) B-$F0&H1'J2(L4(O5(Q6)S6+S6+S4*R2([=4]@7H/&9$8$7%6$5#5"5 65423324 7"5!6"7#9$9$:%:%:%;%:%9$8#6!6!8#9$9$:$:%;&;&<'>(!<' =(!>)"<' <'=( =( =( >)!?*"@+#A+$?*">(!=' ;&<&>(!?("@)"@)"?(!=&<%;$=%?'!?(!=%<$>&@'!@'!@(!?' >%=%>%?& @'!A)"B)#B)#A)"@(!@(!@("@'"@'!@(!A)"B)#A("?' @(!B)#B)#B)#B)#A)"B)"B)#B*#B)#A("@("@)"?)">)!=( =' <';&9$7#6"7"8#8#7#6"4!2 10,'$<'>&B'R8/aF>X<4J/&D*!A(A) B)!B*"D,$F.%F.%F-%F-%F.%G.&H.&J/'J/(J/(K0)L1)L2*M2+M2+M3+M3+M2+L2*K2*K1*K1*J1*H0*D/)B.(A-%B,"B+!C*A(?'<&9&7%5$5$5"6"5!3 0./ - &+.123 5!7"8$:%;%=& =' =(!?(!A)"B)"B)"B)"B)"B)#C*$D+$C*#C*#D+$D+$C*$C*#D+$D+$C*#B)#A("@'!@'!@'!B)"C*$D+$D+%C*#A("B)"C*#C*$C*#D+$F,&F-'E,&E+%E+%E,%E,&F-&H.'I0'H.&H-%J/&L1'L1'L1'K0&K/$G-$B+#?*"=' 8"310035 6!7#9$:%:%:$:$9$;%<&<&;%;%<&<&<&=' >)!>( <&<&<'<&:$:$<&=( =' <&;%:%;%;%<&=' <'<&>( ?*"?)!>(!=' <&=' ?)"?)!='='>)!>( ;%:$<&=' >( >( =' <';&;%='>( :%7#8#9#7"5 4 4 6"6";&?)"B+#C+#E,$H-%L/&M0'P2(X9/]>4S5,I,$F+#D*#B*"B*"B*"C*#B)"@'!@' ?& ?& ?& A(!D+$E,%E,%D+%B)#@'!@'!@(!@)"@*"@*#A+#?)!='<'<&='=' >( >( >( =' <&;%:$:%:%;&:%8"7!8"8#7#5#2 0/-+(&$    -   /029%G1'R:1T<4U<4I0)=%<%<&<';( <)!>*#A+$D,'F-(H/'J1'L2(O3*P4+R6,R5,S5,T5,T5-T5,R4+P4*P3)O2)N3)M4)M3(L2'L2(K2)I2*G1*G0)G/'G-%F+"I,"V9/bF;X=3O5,C+#8"5')+/24 5 5 58";%<'=' <' <&<' <' =' =( >(!>(!=( <';&;&;&;&<&<';%9$:%<&;&9$:$<&=( >(!=( =' =( >(!?)!?)!=( =( =' =( =( =(!?(!@("A)#B*$C+$C+$C*$C*$C*$D,%E,&C+%B)#A)"A)"A)"C*$D+%C+$C*$B)#A("A("A)"A)"A)#A)"@'!?& @("B*#@(!>%<%<&<' =(!>)"=' :%8#8#8#8#9$8#6"7#8$9%7#5!5!4 5!32212333 4 32332102 4 5!7#8#?) H1)M4,P6+Q6,Q6*O4(M2)K1*H/(D,&B+#@*!=(9%>)">)"?("@("A)"B*#@*#?)">(!>& >% =%!=&!<'"<(#:'#8'"7% 5#5!5 :#B* H/$K1&K1&<(/ 147!?6(>5'>4'?6*A9-B:.A8-;3'>5)?7*?6*?7+=5)@7+=4'?6)?5(=4'=4'>4(<3&7/#>5)>5)  <4(7.":1&=4(<3'=4'B8+@7*;2%90$;3'?7+?7,@8-?8,:2'6.#7.#90%<3';2'=4)<5*>7,=7,>7,6!5<&D-%L4,T<3P7.B(9 9":$:$:$:$;%=& >'!?("?'!?("A*$C,%C+%B*$C+%D,&D,&D,%D+%D+%C+$A*#=(@+"D.%G0'I2(K3)M5(N6(S8+U8,V6+U3*`?6pQHfI@B)!7 6!6"5"4"4!4 55 4 3 5 5!5!6"5!36":%=(!=( <';&<';&:%9$9$:%:%:%:%:%:%;&<&;&;&;%;&=( =(!:%:$;&<'=( ?)">)">)!?*"A+$@+$>)"='!<' <&=( >)!>(!=( <' <&;&<'=' =( =( <';&<'?)"@)"=&:$;$;$<%=&>& ?' ?'!@'!?' @'!@(!@(!A("@(!@'!@(!@' ?' A("C*$C*$C+$C+$B*#B)#@'!?& @'!A("A("A("@("@)">(!<&:%:%:&9%9$9$9$8$7#6"3 10/+&$?(E,"R7-eJ@pUJZ>4E)C(C(C* D+"E,$E,$F-%F-%F-%F.%F.%G.%H.&I/'K0(K0)K0)K0)L1)L1*M2+N3,N3,M2+K1*K1*J1)J0)I0)I/(I-'G,&D+$B+#@,#?+!>)=';%:$9"9 ?'"G.)M3-J0)B(!4,- - "*-/13 5"6"7"8#9$;$<%=' >)!A)"B)#A("@'!A("B)"B)"B)"B)#C*#C*#C*#B)"@'!@' A("B)#A("A(!A(!A(!A(!A(!A("A(#B)#C*$D+$D+%D+$C*#C*$D+%E,%E,&F,%F+$F+$F+$F+$G,%H-&I-&I.&I.&I.&G-%F,$G.&H0'I0(J1*F.'A)#?(!=' ;& 7"3335 7"9$:&<&=' =' =' =( >( =' <&<&='='='=' >( >)!?)!?)"?)!>( =';%9$9#<&=' <&:%:%;%;%<&;&;%;&<&=' >)!>(!>(!>( =( =' =' <'<&<&<&<&<&<&=' >( @*"A+#@)"@( ?( >( >(!>)!;&9#8"8!7!5 5 6"7":%<'!>)"@+$C-&E/'G-&H-%J.%K.%L.%L.%J-%H,%E+$B+$A+$A+$B+$C+$B)#A(!@' @' @' @' @(!B)#C*$B)#A)"@'!?& @'!A(!?(!>( ?)"?)#>)!=' <&:$;%<&>(!@*"@*#?)!=' ;%:%;&<';%:$9#8!8"7#5"4!20/-+*'#    -   -0.04!A-$N80P81P70H0)>' ;$:%:&:&:' <(!>)#@)$B)$D,$F.$I/&L1'N2)P4+R5,S5-T5-S4,R4+R4+R5+Q5+Q4+P4*N4*M3(M2&M1&L3(L3*J3+I2+H0)G.'G-%G,#F*!C(@%<#8"6"6#9#'*.3 4!5!6"7"9#;&<'<&;&=( ?)"?*"?*">)!=' <&<&<&;&;%:%:$;&=' <' <&;&;&;%;%;%=( ?*"=( :%:%<' >(!=(!=(!=( =' >(!>)"?*"?)">)!?("A("B*$D+%D+%D+%D+%D+%C+%C*$B*#B*$C*$B*#A)"B*$D+%D+%B*#A)#@'!>& >%=$?' B)#A)#?'!?' @'!@("?'!?& =' <'<' =' =' ;&:%:%:%;&;%9%7#8$9%8$7#4 4 5!4 4 322332223 212214!9&8$7"9#8$:'B-$H3+L5,O6-P6+Q5)O3)M1)K0)H/(D-&B,$?*!;'=' >)"?*#A*#B*#B*$B*$@*#>*#@)$B($B'%@'$?'$?($>($;'"8%!6$4"3!3!4"6$7%8%6$2!/124"?6(=5'?5)?7+A9-A8-=4(>5(?6*=5)@7+=4(?5)?5)?6)>4(=3&<2&=3'<3'8/#>5)  =5):1%:1%>5)=4(<3&A8*?6);2%8/#;3&<4(>7+@8,;4(70$6.#7.":1&=3(<3(=4)<5*>7,<6+5 48"?' K2*[A9`F'!?("?("?("@)#B+$C+%C+%D,&E-'E-&E+$E+#F,$F.%D+#>)!@*!C-$F0'I2(L4*M5*N6)Q7+V9-W9-\9/`=4oOFlNEU80=#9 6"6"4!3!4!5!6"34 6"6"6"6"5!5!5!8$9$;&<'<'<'<';&9$8#9$;%;%:%:%:%9$8#8#9#9$;&;&<'<'<'=' >)!?)">)">)!<' ;&=(!?*#>)"=' <' <'<&=' =( =( =' <' =' =' =' =( >)!?)"=(!<' <'<';&9$9#9$:%:%;%;%;%=&?' @'!@(!A("A("A("A("@'!?' ?& ?& @'!@("A)#B*#B)#B)"A)"A("@(!@("@("A)#A)"A("@'!>' ;'<' =' <';%9$9$8#7#6"4!2 00.*'%B*!M3)]B7hMBfJ@P4*C'D(E)E+!F-#F-$G-%G-&G.&G/'H/'H/'H/'I/'J/(K0)L1*L2*L2*M2*M2+L2*L1*L2+L2+K2*J1)I0)H/(H/(H-&G,$F,%E,%B,%@,$=+#:) 7'6&5$5"5A) O4,V92V70I-'6!+,   #)-023 5!6!8"9#:$;$<%='!?)"A*#A*#@(!>&?' @(!A)"B*#A)"A)"A)"A)"A("@' @'!A("B)#C*#C*#B)#B)#B)#B)#B)"A("A("A(#A("A(!C)#E+$E,%E,&E,%D+$E+$H,%I,$H+#I+$J-&K.&H-%G,$G,$F,$F-%G-&G-$G.#T9/`E;R80A*">&<&:$7"6!5 6!8#:%<& >'!=' =' =&=&=' >( >( >( =' <&=' ?)!>)!>(!?)!?*">)!=' <'='<&9$9#;&=' ='<'=' >( >)!?)!=' ;&<&<&='=' =' =( =' <&<&<'<'<&<&='=' =' >( ?*"A+#A+#@+#?(!>%?' @(!?(!>( =( =':$8!7 6 6 7!9#;$<& ?*"A,$D-%F.&G-%H,$K.%M/&L.%K-$K-%K.&G-%C+#A+#B,$B,$B+$A*#?(!?( ?)!@)"@)"@)!@)"@*#@)"?(!>(!>( ?)"A*#A*#A("A("A("@("?' ?& ?' @' ?& ?&>%>%>%=$=$=$>%?&>' >( =' <%;%:%8$7"5!20.,*'#    - &,-.14 5556 7!7#7$8%8& ;(!=)#?)#A)$C+%F.%H0&K1'N2)O3*Q4+R5,T5-R4+Q2*Q3*Q4*Q4+Q4+Q4+O4*M4)N3'N2%M3'M4)K3*J3,I1+H0)G.(H-&G,$D*!B(>&;%8$5$8$')-2 4!5!6"7"8#;%=' <'<&<'=' =( >(!>(!<&9$8"6!8":%:%:$:%<'=( =' <&<&<&<&<&<'=' =' <&;%;&;&<&=( >)!>(!>(!>)!?)"=(!<&>' @(!A)"B*#B*$C*$C*$C+$C+$C*$C*$B*$B*#B*#B*$C*$B*$B*#B)#A)#@("?'!>& >%>&?'!@(!@(!@("@(!@'!@'!@'"?'!=(!<( <';&;&<' <'<' <&:$8#8$9$8$7#5!6"6"5!5!34 4 3 3210133 13"4!5 ?(O9,XA5O6*B)<$9!>& E,&L2,P4-Q5-R5+R5*P4+N2+K1*G/(D-%B,#>) 9%='>' @("A)#B*#A)#@("@*#@+$?+%>+&>*$>)!>(>'=%:$8#6#3#2"1!1!1!1 2 20/13 4!>5(?6*@7+B9-A8,=5)>6)>6*=5)B9-=5)>4(>4(?5)>4(=3'=3'>4(;2&9/#>4(   ;3'91%;3'=4(<3&?6(=4';2%8/#80#<4(=5)>6*<4(<5);3'80$;2&=4(=4)<4);4)=6+6"5 4 6 ;%K4,X@7M4,A'=%:$9$;%<& <& ='!>'!?("?("@("@)#A*$B*$C+%D,&F.(G/)F-&F+$F,$F.%E,$C+#>) A,#E.%H1'J3)N5,Q5,T7.T7,V9-Z;0_?4eG&=' <( =( =( <&:%9$9#8"6"5!3 2 0.,)&9#=%C) K0(R7.N3*E*!D)D* E*!E+!E,"E-$F-%F-%F-&G.&H0'I0(I/'I/'I/'J/'K1)M3*M3+M3+L2*K1*K0)K1)K1*J1)I0)H/(F-&E,%G,$G,$D+$C+$@*#>*#<)":' 8&5%4#4!5 @) N4,R6.Q4,B)"/(  - $).3446!9":#;$<% <& =' >( >(!>(!>(!>(!>(!>( =( =( >( =( =' <'<&>' @' @'!A("A("A("A("A(!A("A("A("A("A("A("A("?& >%@'!B)#C*#C*$D+$D+$E*%G)&G)$F)"G+"I.$I/%H.$G.$F/%G/'I/&K/&N/$S1%mH:]MbC8@*";&:%9#7 6 6!6!7"8#<% >'!=& =&<$<#<%<&<&<&>( @*"?)!=' >(!?*"?)!=( <';&<&<'='=&=&=%<%=&=&?' ?(!@)"A)"@)"?(!?(!?(!>' =&>'>' >' =&<&=&=&=&=&=&='>' ?(!@)"@*"?)!>( ?' @'!A(!A)"@(!>'>'>( <&:#8!557!7"8$:&=)!A,$B,$D,#G-%J.&M0(P2)R2*R2*P2)N0)J.&E+#B*"A+#A+$@+#@*#?)!>(!?)"@*#?)">(!>)!>)!=( ='=( >)!?*"@*#@)"@(!A(!B)"A("?&>%?& A("@'!?& @' @'!A("B)#B)"A(!?& >%>&>( >(!='!<& ;%9$8#6"4!20.+(%!   -   -/.-.0223344!4"5$7%9& <("?)#@)#C*$F.&J1'L1(N2)N2)N2)O2)P2*Q2*Q2*Q3*Q3*P3*P3*P3)O3)O3)O3(O3'N3'M4)L3*I2*G0*H0)H/(H.&H,$F+!C)@'<%9$8%7%9%),03 4!6$6#7"7"9#:$;&<';%:$;%<&;%9$8#9#9$:$:$:$:$;&=( =' <&;&;&<&>)!A,$@*#>)!<' ;&:%9$:%=' ?)">)!=( >(!>)">)!<' <'>' @("A)#B*$B*$C*$C*$C+$C*$C+%C+%B*#A("A)"B)#A)#A)"A("@(!@'!@'!@("?'!>& ?' @'!@("@("A("A)"A)#@("?'">'!<' ;&:%:%;&<' =( =(!=( <';&6"4 5!8$8$8$8$6"6"6"6"5!4 3 33333 02 5 5=&R9.gODdK@T:1B(!=#:!@'!G.(L2,P4-P3+P3(P3)N3+L2+I0)F.'D-%A+"<(9%>&>& @'!A)"A)#A)"@(">(!<(!<'!<'"<& <%<%;%:%8$7$5#4"3"3"4!4 6740./02?6*A7,C9.B9.=5);4'=5)=5)D;/>5)>4(=3'?5)>4(>4'>4(>4);1&:0$<3'  =4);2&<3'>6*=4'=3&>5(<3&6.!81$;4'>7*=6*=6*>7+;2&8.#;1&=3'<3(=4);4)<5*3!12 3!:&A,%@*#>'<%:$:$;% =& >'!?("?)#@)#@)#@)#A*$B*$B+%B+%C+%E-'G/)G.'G-%F,$E,$D,#C+#>) A+"D.$H1(J3)M5,P6-S6-U8.W:.V9-U6+U6+S6,N2(D,#:&6#4#2"2!2!3!2102325!6"5!6"7#7#:%9$:%:%9$9$;&=(!=(!;&;&;&;&:%9$9$9$9$9$:%;%;&;&:$8#9$9$9$:$:%;&<';&:%:$:%:%;&;&:$9#:%;&;&;&<' =( =( =' <';&;%;&;&:%:$:%:%:$:%;%:%:$;%?' @'!@("@("?'!?& @'!@(!@'!>&>%>%>&?' @'!@'!@'!@(!?)"?*"?*"?*"@*#@*#@+#A,$@*#>)!<&:$:$;%;&:$9#8"6!5 4!3 1.,(%57!9!=$?&B(!C*!C*"C)!C*!C*"D,#F-%G/&F.&F.&G/'I0(I1(I/(I.'I.'I.'K1)N3+N3+M2+L2*K1)K0)J0)I0(H/'G.'G-&F-&E-%E-$D,#C+"A*"?(!<& ;%9$8#6#5"3 37"='@)!A) 7"+) -  $*034 6!7"9#:#;$<% =&!=' =( ='<&<&='=' >(!>(!>( =' =( =( <'<&>&@' A(!B)"B)"A)"A(!@' @'!A("A("@'!?& ?& ?&>%>%?& A("C*$D+%E+%E+$E+&F,'F+&G+$H,$K/&J/&I-%G,%J0)J0*J0*J.(K.%O0%gE9xVH[?4>)"<'9%7"5 4345 7"8$:$:%:%<&='='='>( ?)!?)!?)!=( <&='>(!>(!>(!>(!>(!=' <&<&@(!@(!>%<#>%@' @(!A("A("A("A(!@(!@'!@'!@(!@(!@'!@(!@'!?& ?& ?& ?& ?&>%>%>%>%>%@' A)"@'!?& @' @' ?' =( =(!=)!=(!<' ;&:$8#6!5 5 6!7#:%=)!A,%C-%E-$G.%I.'O2*V8/`A8aB9X91O2*I-&E,#C+#B+$@+$A+#A+#@+#@*#@*#@*#?*"?)!?)"?)"?)">(">(!=( >( ?)!?)"@(!A(!A(!?& <#9 =$@' @(!A(!A)"B)#C*#C*$C*#B)#A("@' ?' >(!=' ;%:#9$9$6"4 310/-*'#    -  -  1 -----/2345!5#7%9&;'='@(D*!G-$I.%K0&L0'M0(M0(M0(M0(O2)P3*R4,T6-S5,Q4+P3*O2)O2)P3)P3)P3(O3'N3)L3*J2*H1+H0*I/)I.&H-$J.$M2'N4)I0&C-#<(5#7#)-/022!3"6"8"9$;%;%;%;%:%;%;&;&;%;%;&;&:%:$9$9#9$:%;&;&;&;&;%<' >)!>)!<':%:%:%;%;&<' >)!>(!<' <' =(!>)!?)"@+#A+$B+$C*$C+$C+$C+$C*$B*$A)#B*$D,%D+%C*$B*$C*$C*$D*$C*$A(">&>& ?'!@'!@'!@("A)"A)#A)"@("A("A)"A)"@(!?' =' ;' ;' <'<'<'<' =( =( <' ;&9$7#9%8$8$7#7#8$8#8$7"5!4 4 4 3 3 4 5!5!5!5!58!E-$X>4hMDhLCL1)A& 9 <#A)$H/*L1,N2-O2*P2(M0(J/(H.'F-'C,%B,#?) 9%=' >' ?' @(!@("A("A)"?)"=)"=)!=)!>) >(>'=';':'9' 8& 6$ 5#5#6#;$A'F)K-!@'2--/2 @7+B9-B9.:3'81%<3(<4(D<0?6*=4(<2&=3'=3'>4(>4(>5)<2'90$   ;3':1&=4(?6+<3&<3%>6(8/"6.!81$<5)>7+>7*>5*>6*:1%7.#;2&?5*;3':3'<6*3!001 3!5"7#9$;%;%;& ;& <& <& ='!>("@)#@)#@)#A)#B*$C,&D,&D,&E-'G/(H/(H.'H.&F-%E,$D+#?*!@+"C-$G0'J3)M5+P6-R6-R6-W:/X:.V7,T4*M/$E(A%:$7$6$4$3#2!3!3 211123 5!6"4 6"7#8#9$9$;&;&9$9$<' ?*">)!;&;&;&;&:%:%:%:$9$8#8#9$:%:%:%:%:%:%9$8#:%;&<'<' <&:%:%;&<' ;&:%:%<'<' =(!=(!=(!=(!=(!=(!=' <';&;&;&;%:%;&;&;&;%:%:%:%<%>%@'!A)"A)"A("A("A)#B)#@'!>%?' @(!A("A)"A)"A)"A)"?(!>(!>)!?)"@+#A+$A+$@+#?*"?)">(!>(!=( <';&;%9$8"8"8"6!421.+'444 8":#;#>' A)"B*#C+$D,$D,$D,$D,$E-%F.%F.&G/&H/'I0(J0(J0(J/(J0(L1*M2+M2+L2*K1*J0)J0)J0(I/(G.&F-&F-%E,%E-%D.$C-$C-#A+"?(!=& ;% :$ 9#7"5!3 20.-,*(* -  %*035!7"8#:#:#:#:$;$;%<&<&<&;%:$;%>(!?)">(!=( =' =' =( >( ?' ?& A("C*$B)#A(!A(!A(!A("A("A("B)"A("A(!@'!@'!@'!@' @' B)#D+$C*#A("B+%D.(E-&F,$G,#I,#J-$L.&L/(K0+K1-L1,L1+J/'K/%U8,Z=0M4*A,$=)!:&7#4 2015 6!6!7"8$:%:%;%:$:$:$:$;%=( =( <'=( @*"@*"?)!>( =' <&<&>' @(!A("@' ?& @'!A(!C*$E,&D+$B)"B)#C*#B)#A("A("A("A)"B)"A(!B)#B)#@' ?&?& ?&>%>%?& @'!@' @' @'!A(!@(!@' ?' =' ;';&=' ?*"=(!:%7"4335!8#;&>)!C,%E.&G/'I/'K0(P4,W:1cE;fH>]?6Q6-I.'F,$C*!A)"@)"A+#B,$A,$A+$@*#?)"?)"?)"?)">)"?)">)!>)!>(!>( >)!?)"@)"A("C*$D,%C+$C*#B)#B)"B)#B)#B)"B)#B)#C*#C*#B*#B)#B)#B)#A*#@*">(!<& :$7#7"6"5!3 10-*'$"     ---./ 2 6#<& =&!:#7 7#8%8&9'<(?*B+!F-#H-$H-$H-$I.$J.%L0'N2)O3)O3*P4+Q5+Q4+O3)N2(N2(N2(P3*Q5+P4)P4(N3(L2)J2*I2+I1+I0)I.'I-$I-"T7-_C8[@5R9/G0&<&7"9$+-/000 3!6"8#:%;%;%;&<'<' <'<'<&;&;&:%:%:%:%:%9$:$9$:%;&;&;&;&;&<';%9#9$9$:%=' =( =( =( =' <' =( =(!>)!@*#A+$A*#B)#B)#B)#B)#A)#A)"A)"A)"C+%E-&C+%B*#A)#A("A)"B*#B*#@("?' >& =%?' A)#B*#B)#A)"@("@'!?'!?'!?' ?'!>' =' ;&;%:%:$9$:%<&<&;%;%<&=& <&:%:&:&:%9$7#6"5!4 33 4 5!5!5!5!5!6 7 7 ;#C( Y>6`E=W;4C*$9#7!<&"B,(G0+L3-N4-P3+N1*K/(I.'F-&D,%B+#@* <'8$>' >& >& @'!A)#A)"@("?(!=(!=) >)>(>'=&;&9&8%6%5$4"4"5!<%I/&U7,^>2gE7L3)2 ..03!@7+?6+92%;4'<4(=5)C;/>5*<3':1%<2&<2&>4(>4)>5)<3':1%  8/$<3'?5*;2&;2%<4'<4'7/#7/#92&@8,@9,@8,?7+:1%7.#;1%<3':2&81%4!2113 6"8#9$:$;%<'!<'!<&!<& <& =&!>("@)#A*#A*$B+%C,&D,&D,&E-'E-'F-'F-&G,%F-%E-$D,#D+"?*!C-$E/&I2)L5+O6-R7.S6.T8.W:.U8,U6+P2'E(?#=$9%8%6% 4%4#3!3!4!4 4!4"4!3 5!6"6"7#8$6#6"7#9$;&<' ;&;&=(!<' :%9$:%:%;&<'<' ;&:%9$9$9$:%;%:%9$9$:%:%:%:%:%;&<' =( =' <' <&;&;&=(!>)!=( <' <' <&<' =' =' =(!=(!=' <' <';&;%:%:%;&;&;&;&:%9#9#<$=%?' A("A)"A)#B*$D+%C*$@(!>&=%<$?& A)#A)#@(!@(!=' <' >)!@*#@+#@+#@+#A+$@+#?)">)"?)"?*"=(!<&;&:%9#7!6 5 4 1.,)%6!8 8 :"=$=%>' ?(!B+$D,&E-&E.&E.&E-&E-%E-%F-%F.%F-%G.&I/'J/(J0(J0(J0(K0)K1)K1)J0)I/(I/(H/'G.&F,%E,$D+$D+$E,$F.%E.%D-$A+#?("=&!<&!;%!9#8"5!310 .,**)   ")-036"8#8#9#9#:#:#:$;$;%;%;%;%:%<'?)"?)!=' =' =' <'=( >(!?'!@'!B)"C*#C*#B)#A("@'!@'!@'!@'!@' @'!A(!A("A(!A("C*#C*#C*#B)#C*$D+%B+$@+$A*"B) E*!I+"I+#J*%I*&G+&G-(H/*I0*I1)I0'J0%I0#F/%D.'?*#;'9%7"5 347"7#7"8#8$:%;&<'>(!>("<&:%;%<&='>( ?*"@+#A+$@*#?*"?)">)!>( ?)!A)#C*$B)#B)"A(!@'!C+$F-'C+$A("C*$E,&D+%C*$B)#A("B*#C*$B)#B)#C*#B)"A("A("@'!@' ?' @'!@'!@'!@'!B)"C+$B*#@'!?(!>(!<' ;&=' @*"?*";%8#7#6"4!4 7#:&>)"C+%F-&G-&I/'J/(L1)Q5,Y=3]A7Y=3R7.M2*I/'F+$C)"@(!@)"A+$A+$A+$@*#?)!>)!>)!>(!>(!>(!>(!>( >( >( =' ='?' A(!B)"C*#D+$E,&D,%C*$C*$D+$E+%D+%D+$C*$C*$B*#B)#B)#B)#@(!=' ;%;$9#8#7"6#5"3 221-)&"   -  -  /./3"<)!F1)M6/Q81E,&8 7!7"7$8&9&:&=&A)!F+$F+#E*!G,#J.%L0'N3)O3*O3*O3*O3*O3)M0'K.%L/&M0'N2)O3*O3)O3'M3'K2'J2(I1)H0)H/(H.&I-$I+"R4*`B7dG=\@6Q7.D,#8"8"8#,.0002 5!7"8#9$9$:$:$:$:$:%;&;%:%:$:%:%:$:%;&;&:%9$9$:%;&<' <'<&<&;%;%;&<' <' <' <&;&<&<'<' =( =(!?)"@*#@*#A)#B*#C*$C*$A)"@("@("@(!A)"B*$B*$B*#B*$B*$C*$B*$B)#@("?' =%;#;#=%?'!?'!@'!?'!?'!?'!?'!?'!@'!@(!?' >& >& ?'!?' =%<$<$<$=$=%?' @(!?'!<&:&:%9%8#6!6"6!6"6"6#7#7#7#6"5!6"8#6"44:#@'D+#B)"<$9#6"9%;'!B.(H4,J6.L5,M4*M3*M2*J0)H/)D-%A+">):%7$=& >&?& @("A)#A)#A)"?)">)">)!?(>(>'=';&9&7%5%4#3"4"6"?( L0'Y9/fD8jH5*@8,=5)<3';1%=3'<3'>4(=4(=4(<3'   :1&;2'?5*:1%8/#<3'=4(<4(70$92&>7+?7+?7+>6*90$7.";1%<2'=4)5 46!8#<&?)!A*">&<#;$;%<& ='">(">(">(">("?("@)#@)#A*$B+%C,%D,&D,&D,&D,&E+%E+#E,$E-$E-$E,$>( A,#D.%G1'K4*N6,O6-Q5,R6-U8-V9-U7+S4)M/$D(@%<&:&8& 5% 4$3"2!3 4 4!3!5#6#7$7$7#7#9%7#5"6"7#8"9#;%<& :$9$9#9#9#:$:%<&=(!=(!<';&<'<' ;&:%;&;&;&;&;&;&;&;%:%:%;&<' >)!>)";&8#:%<' <' <' <' <'<'<' <' =( >)!=(!=' <' <';&;&:%:$9$9#9$:%9$9$:$<$=%?'!@(!@'!@'!A("B)#A)#@'!@("?'!?& @'!A("@'!>%=&=' =( =( >)"?*#@+#@+$A,$@+#?)">)"?)">)!=( <'<'<&:$8"7!6"4 0-+)6#;$@'G,!J/$I/$C*@(A) D,%D-&D/&D/&D/&D.&D-%C-$D-#E.#F.$G-%H.&J/(J0(I/'H.&I.'I/'J/(J/(I/(H.'G-&F-&E,%E+$D+$D+$F,$G-$F-%D,%A*#>("<&!;% :$9$7#4 24"4#0!+*** - - %*.135 7"9#:#9#:#<% <& ;%;%<&<'<'<'=( >( >( >( =' =' =' =( >(!?' @'!@(!A("D*$E+%C*#B)#B)#B)#@'!>%?& @(!@'!?& ?& @'!B)"C*#C*#A("@'!>(!=("@(!C( F*"I+#I+$I*&H+'H,(F,(F,'F-'I0(J1'J0%G."E.%C-%?*";' :&8$7"5!6!8$9$9$8$8$9$;%;%;&;&<&='=( >( >)!@*"@*#@*"@+#@*#@+#B,%A+#>(!?)"C+$D+%B)#A("A("B)#D,%E,&C*$B)#C+$D+$D+$C*#B)"C*#B)#D+%D+$B)#B)"A)#A("A("A("B)"B)#B)#C*#C*$C*$A)"@'!@' ?&>& <' ;';&<&=( =( :%6!6!6"5!4 8#;&?)"D+%G-'H-&H-&H-&I.&I/%J0%K1'L2'M2)M3+L1)J/'G-&D*$A)"?)"@*#@+#@*#?*"?)"?)">(!=' <&=' =' =( >( =( =( ?(!B)#B)"A("A)"B)"C*#D+$D,%D+$C*$B)#A)"B)"B)#A("@'!@' ?& >& <';&;%;%9$8#7"6!5"4!21.*'#   -  - -,.2>) K4,P80R91I0)>%9"9#9$8%8&:&<&?' B)"D*#E+$G-%H.'I/'I.'I.'J/(K0)K0(K/(J/(J.'J/'K0(K0)K0)K0(K1'K1%J2&I2'H1'G0'G/&G.%H-$I,#L-$T5+[=3V:0O4+E,$<%9"7",-...03 6!7"8#9$9$:$;%<&<&;&:%:%:%;&;%:%:$;%;&:%9$:%;&<' =( <' <'<&<&;&<&<' <' ;&:%;&;&;&;&<' =(!>)">)"?)"@)"A("A)#B*$A)#@("?'!?'!?'!?'!?'!A)"B*#B*#A)#A)"A)"@("?' >&<$:";#<$=%?& @(!@(!@("@("@("@(!@(!?'!>& =%>&>& =%=%=%>&?' @("A)#A)"@(">(!<' ;' ;' ;&:&:&9%8$8%9%8$7$7#7#7#6#5"4!3 36#6!5!6"7"7#6"8%9& =*$D1*K7/M8/P8,P7,O4,M2+J0*G.(C,$@*!<'8$='!?(!A("A)"B)#B)#B)#A)#?)"=(!=( <' <&<&;%;%9$7$6$5#5#5!5 =%G,$T6-aC8_B8F0)3"0.13 >8+?8+=6*>5*>5*=4(<3'<3'>5(=3'<2&<3'=3(=4(  80$<3(:1&90$<4(=4);4(92&91&;3(=5*@8,@7,;2&7.";1%=3'5 59"A*"K2*U<3_E(">("='!=& ='!>'">'!>'!?'"@)#B*$B+%C+%C+%B*$C*$D+#E+$E,$F-%E-$>( ?*!B-$F/&I2)L4+N6,P6-Q4,S6,V9-T7+R3(R3(J-$C'=$9%8%5$3#3"3!2 134!4"5"6"8$7#5"7#:& 9&7#6"6!6 6 7"8"7!7!9":#<$>& >& =%=%<$<$=%>' >' =& =&<&<&<&<%;%:%:%9$9$9$9$:%<'<' ;&;&:$9$:%;&;&<&<' =( =( >(!>)!=(!=( <' ;%:%<&<':%9$:%:%:%;%;&=%=$>%?'!?' ?& ?& >& @'!@(!@(">& >%?& ?' @'!A)"@(!?(!>(!>(!>(!>)">)">)"=(!>(!?*"?)">(!=( =' ;&:%:%;%:$9#7!5!30-+'7"D+!R6,\?5_C9X<2L0'B(B(!C)#D+%E-%E.&D.&D.&C.%C.$C/%D0&F0&H/'J/(K1)L1*J0(H.&H-&H.&I/(K0)J0)I0(H/'F-&E+$D+$D+$E+$F+$F,$E,%C+$?*#<(!:' 9&8%6$5"4 5 D0(Q=6E2*8&/+,  ").14 5!6"8"9#9#9":$<% <& <&;&;%;%;%<&=' >( =';&<&<'=' <( =' >&?& @' A(!C+$E,%D+$C*$C*$C*$C*#C*#A("?& >%>%?& A("B)#C*$D,%E,&E,&C,&C,'E,&G,%J.&M/&L.&J-&H+&E*&D*&D*%E+$G,$G+!H+ G+C+"?*"=(!:&9%8#7"6!6"8$9%:%:%8$8$<'>)!?(!?' ?& >&>&>%>%>%?' A("A)#D+$C*$B)#B)"@' @'!A("A(!A("B)#D+$E,&D+$B)"B)"B)#C*$E,&D+%B*#C*$D+%D+%E,&D+%B)"@'!A)"C*#B)#A("A)"B)#A("A("A(!@'!@' ?& ?& @' ?' ='<' <&;&<';':%8#7"6"6!6"8$;&>(!D+%G,'H.'I.'H-&H.&I/&J1&J0%I0%J0'K0)J/'H-%G,%F+%C*$?(!>(!?)"?*"?*"?)">(!=' ;%9$:%;%<&=' >( >)!@*"B*$C*$B*#B)#B)"B)"C*#D+$C+$C*$B)#B)"B)#B*#A)"@'!?' @' >' =( <' ;%;%9$8$8#8#6"4!1/-+)%"   - -  ,-/8#C,#I1(I0(D+$=$8 8!8#8%9'9':&<' ?("B)$D+%F-&F-&G-&G.&H.'H.'G-&G-&H.'H.'H.&H-&H.&H.'I/'I/(I/&J0#I0$I1%H1'F/&E.&G.&H.'I-%J-#J-#J-#H,"C*!@( <%8#7"6!+,...15 6!8"9#9$:%;&;&:%9#9$;%;&;%:%:$9$9$9$9$:$;%;&<' <';&;&:%:%;&;&<'=( <':%:%:%;&>)!?*">)!>)!>)">)"?)"?)"?)"@*#?*#>)"=("=(!=(!>("?("A("B*#C*$B)#A("@("?'!?' >& >%=%=%>& @("@("@("@("@("@(!?'!?' ?' >& >& =%=%=%=%>& ?'!?'!@(!@(!@("@)"A)#@)#>(";' ;' ;' ;&:&:&9%9%8%7$6#6"7#7$7#5#3#1!3!4!3 3234 5"6$8&9' @-&I4,M8/O7-Q6+P5+O4,L2+H0)E-&B+">(:%6">'!@("C*#C*#C*#B)#A)#@("=(!<(!;(!;'";'!<& <%<$;$:$9$7$6#6#6#7"7!8!:!7 0--.02 A9-?7+>6*>6*=4)<3'=3'=4'<2&:1%<3'>5*  =4)>5*90%7.#;3'=5*;3(92';4(>6+>6+@8,@7,;2'6,!:0$4 45=%F-$W<3gKA_B8L/$A%=%;% ='!?)#?(#>(">(">("?("?("?("@)#A*$B*$B*$B*$B*$B*#D*#E+#E+#E,#D,#D+#?)!A,#D.$F/&I2(M5+O6,N2)O3*S7+T7+T6*Z;0[=3Q5+B':%6#4#2#2"3"3!2233!2 24 6#7#5"7$8%8$7#7"7!7!6 7!8":$:%:&;';' <( ;&:&:%:$;%>(!?)"?)"?(!=' <%<%<$;$:$:%:%:%9$9$9$8#9$:%<' ;&9$:%;&<'<' <' =( >(!=(!=(!<' ;&;&:%:%<'>)!=' ;&:%;&;&;&<' =&=%=%>%=%=$=%=$=$>%>& >&=%=$=%>&?& @(!@(">(!>(!>(!>(!>)!>)"=(!<' =( >)!>(!<';&<'=( ;&:$:$9#8"6!4 31-*$:$N4*bE:bD:^@6Q4*H+#C&D(!E)#E+$F,%G-&G.&G.&G-&G-&G-&G.&I/'J0(K0)K1*L1*K0)J/(H.&G,%H.'J0)K1*J1)I/(F-&D+$D+$C*$E+$H+%G,&E,%B+$>*":) 9(7'6%4$4"4 :$N7.ZA9P7/B)!4 *,  $*.13 5!7"9#:$:#9";$=&!='!=( =' <&<&<&=' ?)"?)">(!<'=( >)!>)">*"?)"@(!@'!?& ?' A)"B*#C*#C*$C*$C*$C+$D+$C*$B)#@'!?&@'!B)#B*#B)#C*#D+$C+$D+&E,'F-&H-%J.%L0%K/&J-&I-'I/)K1*M2+O3+R3*Z9.iE8dB5L2)<' :&9%7"5!6!6!7"8#9%;' ;' :&;&=(!?)!?'!?& >%>%?&@' @'!@'!@'!@'!@'!B)#B)#B)"A)"@'!@'!B)"B*#A("A("D+%F-'C+$B)"B)#B)"A)"A(!B)"C*$D+%E,%E,%D+%B)#@(!@' @(!A(!@' ?&?' @'!?& ?& @'!A(!@' ?& ?' ?& ?' =' =( <' ;&;&:%8$7"5!4 5!5!8$:&<&A)#F+%F,%F,$E+#F+$I/%K1'K1&J0&K1'J0(I.'H-%G,%G,&D*$@)">(!>)!?)!>(!=( =' <&:%9#9$9$:%;&='=( ?)"B*#C*$C*#B)#B)"A("A)"B)"B)#C*#B*#B*#B*#B)#B)#A("@("@'!?' >( <' ;& ;%;%:%8$6"5!4!3 31.+&"    - .--06";$;$;#9!76 6"6$7&8(:';' ='!?'"A("C*#D+$E,%F,%E+$E+$F-%H.&H.'H.'H.&G-&G-&G-&H-&H.&H.&I.$I/$I0&I1)G1)F0)G0)H/(H.'H-%G+"G+"F+!B) >':%6$6#6"(+-..03 6!7"8#8#9#8#8#8#8#8#9$:%9$9#9$9$9$8#8#9$:%:%:$:%<&<&:%:%:%:%;&=( <' ;&:%:%:%;&<' <' <' =(!>)"?*#>)"=( =(!=( =( =(!=(!=(!>)"?("@("A)#B*$B*#A)#A)"@("@(!?'!?&!?&!>& ?'!@("@("@(!?' ?'!?(!>& <%<%<%<%<&=& ;%9#:$;&<' =)!>*#?+$@-%@+$A)#?(!<' :&:&:&;' ;' ;':&9%8$8$8%9%8%8$7#5%3%3#3!3!4 4 6!7"7!6"7#9$=("F/(O5.Q5.R4*Q3)O3+N3,K1*G/(D-%@*!='9%5!=& >'!?'"@(#B*#B*#B)#@)#=)"<(";($;'%<'#=&!>&?%>%=%;$9$8#6"5!5!5!420.../00?6+=4)>5+=4)=4(<3'=3(:0$:1%=4(@7+  >5*8/%6-"7/#:2';3)70%:3(>6+=5*=5)?6*=5)8.#/126 :#F.'W>7X@9K2,@'!>&!<&!>(#@*%A+%A+%A*$@)#?)#@)#@*$@*#@*#@*#A*$A+$B+%C+%C+$C+#D*"D*"C*"B)">( @*!C-$F/&H1(K4*M5,P5,R6-S7-T7,X;0^?5jKAeI?P5,?'8$5"3#3#3#2!10111125!6"6"6"7#6"7#7#7"6!7!8#9#9#9#:%;' :':&9%9%:%;&<' <' <( <(!=(!=(!<( ;' <(!=(!<' ;&:%:%:%:%:%:%:%:%;&;&:%:%;&;&<' =(!=(!<'<'<' =( ;&:%9$9$:%;&<' ;&:%9$9$:%;&<'=&=%=%=$<$<#<#;#<$<$=%>&?' >& <#;#>& @(">(!=' <';&<'=( >)!>)!=(!=( =( >)!>)">)">)">)!<&9$:$:$8#5!4 31,'5!;%O7,\B8X<3O2*H,$C( B'C(!D)"F+%H-&I-'J.'K/'K/'K/'K/(K/(K/(J0(J/(I/'J/(J/(J0(J/(I/(K1)L2+L2+L2+J0)G.'E,%D,%D+$G,$J-$H,#E*"B)!?(!<' 9&7&5$4"2 2=%P6.Z>6S5.E)!5( - -  #)-0246!7!8"8!8"9#:$;%<'=' =' =( =( >(!?)">)!>(!=( >( >(!>)"?*"@)"A)"A("@'"A("A)"B)"C*#C*$C*$C+$E,&F-'C*$@(!A("B)"B)"B)"A("A(!A)"C*#D*$F*&G+'G+%H,$J.%K0%J0&I0'H0(G1(I1(J1'P3)X7+eB5yRDpK=N4+<' :%7#5 345!6!6!8#;& :&:%;'<'>(!?'!@'!?& >%@' A("@(!@'!B)#D+%D+$C*#B*#B)#B)#C*$C*#C*$B)#C*$D,%C*$A)"B)#C*#B)"A(!A("A)"A("A("A("B)"B)#B)"A("@("A("B)#B)"A("A)"@' =$>%>%?& @'!@'!?& >&?' ?'!>(!=)!<( ;&:%9$8#8#6!4 5!6"9%9%:$=%A'!D)#F,$F,$F,$H/&K2(L3)J1'I0&I.&J/'I.&G,%G,&E+%B+$?*"?)">)!>(!>(!>(!=( <&;%;%:%;%<&<' =( >(!@)"A*#@)"@(!@(!@(!@(!@(!@)"A*#A*#A*#A*#?(!?' >' >' ?'!@' >' <( <' =&!;% 8$8#8#6"1/00-+'$"     -'.--/02455 5!4"4#5$6%8&:& <& >&!?&!@'!A(!B)"C*#D*#D*#E+$F,%G-&H.&H.'H.'H.&G-&G-&H.&H.'G.%G.$G.%G.'F.(E.(D.(D.(E.(G-&H,$G+#E+"B)!>( ;' 7%4$6#7#(+-/1!4!7"8"8#8#8#8#8#8"9#:$:%:%:%:%:%:$:$:$;&;&:%:%:%;&;&;&;&<'<' ;&;&;&;&;&;&:%9$9$:%:%<' =(">)"?*#>)"<' <' <' <' =( =)!>)"?*"?)"@("?(!?(!?("@)"@)"@)"?(">'!=' =' <' <' =(!>)!>("=(!<'!<' ;':&:&:&:&;&;';&9%8$;&=)!>)">)">*">*">)"@)#A)#?)"=)!=(!<'!<'!<( ;' ;' :& :&9&9&:&:&9%8$6$3$3$5#5!5 7:"A'C)?&:!:";"B(#K/(Q4,R4*S3(Q3)O4,N4-J1*G0)D-%@*!='8$6"?(!@(!@("A)#A*#A)#@)#>("<'!;&"9%$8%$:%"<& >%@%>$=$;$:$7#5"3!3"3"1 /..,++++=4)?6+?6+<3(:1&;2&90$;1&>5)A7+ - - -   =4*81%70$90$;3'=4)80%;3(@8-?7,=5)<3'<3'/ 00237"=( A+%=)#9% :& <& ='"?)#@*$A+%A+%A*$@)$@*$?+$>*#>*#>*"?*#?+$?+$?+#@,#A-#B,"C+"C)!B( ?)!@*"B-$D.%F0&I2(K3*M4+R6.R6-U8-X;/aC8mNDfH>V:1C) :$4!3!2"3"4"2!1002 3"3!3 4 5"6"7#8$6#5!5!6 6!7!8"9#:$:$;&:&;&:&:%:%;&<' <' :&:%:&;&:%:%:%;'=(!=(!<'!;' ;&:%9$:%:%:%9$9$9$9$9$:%:%;&;&;&:%;&;&<' <';&:%9$:%;&:%:%:%9$9$:%;%;&:%:%;%;%;%;%;%;$;$=%=&<%;#;#;#<#<$=%<&<'<&;&<&<' =(!>)"?*"=' ;&<' >(">)">)!=(!=' <&;%:$7#5!31.*%455:">&@(?'>'@(!A)"B*#D,&E,'F-(G-(G-'H-&J.&K.'K.'H-&H-&H.'H.'I/'J/(J0)K1*L2*L2*L2+M3,M3,K2+J0)H0(G/(G/'G.$H-#F-#E-#B*"@(!=&!;& 9%8#7!4!25"=)#D-(C*$:!0( - %*.23 36!9#;$<&<'<&;%;%;%<&=( =' =( =( =( =' <&<'>)!?)">)!?)"@*#A*#@)"?)"@)"@)#@("A("B)#D+%E,%D+%C*$B)#A("B*#C+$A)"@(!@' >&@'!B*#D*$F*&G*&F)$H+$I/%J1&I1'I2(H1'G0'H/&I/&N2)T5,aA7sRGiJ@M4,>(!=(!;&5!3335 5!5!6!6"7#:%<'>' @("B)"@'!?&@(!B)#A("@' B*#E-&E,%B*#B*#B)#B*#D+$B*#B)#B)"C*#C*$A)"@'!A("A("A("@'!@(!B)#C*$B)#B)"A("@'!@'!@' @'!A("A)"A("@(!@'!@' ?& ?& @'!@(!@' >%=$>%?& ?' =' <' <';&:%9%9$9$8#5!5!7#9%8$8#;' ?*#A*"D*"F+"I+"T4+dB8iF)">)"?)"?*"@*#>)!=' =( >)!>)!>)!>)!?*"?*"?)">)!=' ;&<&<'=&>%=&<' <& <&!;% 9$8$7#6"3 00/-,)%#"    ..../00124!3!3"4"4#6$8$9$;$=%>&@' A(!B)"B*"C+#D+#D+$E,$F.&G/'G/'G/'G/&G.&G.&F.&F-%F-%E-%E-&E-'D-(C.(B,(B+'C*&D+%C*#B*"@* =( :' 7&3$3"4 ')+-.1 5!7"9$9$9$8#8#8#8#:$:$;%;%<& ='!=&!=$ =% =' <' <' <& ;&;&;&:%;&;&<';&:%9$8#9$;&<' ;&:%:%:%;&<'!=(!=(!=( =( <' <' <' <' =(!>)!=(!=(!=(!<( <(!=)">*"=*"=)"<(!<' ;' ;' ;' ;' ;'<' <' ;&9%:%;&;&:%:%:%:%;&<' ;&:%:&;&<' =)!?*#?*#>*"?)"?'">'!='!;' ;' ;&;';';' <' <(!;' :&9&9%8%7$7#5#5#6"8"8 ; H,"\?6lNEbE=E)!; : <"C)!K0'N3*N3)N2(N2)N3*L3*J2)F/'B+$?(!;&7#@( A)!@*!@+"@+#?*#=)!<' =&?%;%7$!7% :%;%=%=$=$=$;$9$6#4"3!2 110/.--,,-?6*@7+=4(;2&<2'90$;1&?5*    - - -;4(91%;2&>5)?6+:1&;2'>6*?7+?7+;4(. ./0134 5"6$6%7%9$:$;& ='!>("?)#?)#@)#?)#?*#>*#>)"=)">)">*#?+#@+$@,$A-#A,"C+"C*"B(!A& @*"B-$D.%C-$E.%J2)M5+P5,R6-T7-U8-Z<1eF)"@+$@,%B-&C/'D/(D/'E-&F-%H.&I/'I.'G-&H.&J/(K0)J/(I.'I.'I.'I/(K1*K2*L2+L2+K2+J1*I0)G.'E-&E.$D.#D.#C-#A,#?*"<)!:(!8' 6%4#2"1 1!2!0.-*+ - !&+/2 4 6!8#:$;%;%;%;%:%:%:%<'=( >( >)!>( =' =' =' =( >(!>)!?)"?*"@*#@*#?*"?)">)"=(!?("B*#C*$D+%C+$B)#B)#C*#C*$C*$C*#A)"A("@'!>&A(!D+%D+%D*$E*$D)"F+$I/'J1)J1)I0(I0'I/'I0'K0)L1)L0(S7/]@8V:3H/(@("<&:&7#4 337"9$7#6!7#8$9$=' >( A)"B)#@(!?& A("B*#A("@' A("B*#C*#C*#C*$C*$C*$C*$B)#A)"B)#B*#B)#A("@'!A("B)#B)#A)"A("C*#C*$A("A("A("?' @'!@(!A("B)#B)"A("@'!?& @' @(!A("B)#A("?& >%>%>%>&?' =&;&:%8#9$9%8#8#7"4 5!7#:&7#6"9%:&>(!C+#E+#H+"R4*dC9nKAfC9Z8.P1(J-$G,$D,#A*#>*#?*"?)"?)!>)!>(!>)!>(!<'<'<'<&;&;&<'=' >(!?*"@+#@+#?*">(!>(!>)">)"=(!=( >)!?)">(!=( <&:%;%<&=&>%=%<&:%;%:$:%:%7#5!3 110/.+&# "   -  - 0.--/1 4!6#5!3 3 3!4"4#5#6#7#8#9#;%>( ?*"A+#B,$C,$C,$C+$C+$D,%E-%E.%F.%F.&G.&G.&G-&F-%F-$F-$F-%F-&E-'C.(B.(B,&B+$C)!D(O3'Z?2Y>1R8,H.#>%72/(*,.024 5!6"6"6"7#9#:$;%;% ;$:$;%;% ;% ;#<#<%<' <' =(!=(!=(!<' ;%9$:%<';&:%9$8#8#:%<'!<' ;&;&;&;'=( >)!=(!=( <' <' <' <';&<'<' =( >)!>)"=)!=)!=(!<( <(!<(!=(!=(!<'!<' <';&:%:&;';&:%9$:&:&9%9$9$9%9$9$9$9%9%9$8$:%<( =(!<( <( =& =%<&;&:&;&;&;&;&;' =(!<' :&8%8$7$7#6#5"4!38!: ="D([>3pSHuXMY=2?#; :!=$D,#J2*K3*K3)L2)M2)L2)J2(H1'D-%A+$>(!9%7#C*"B*"@+">*!<( ;' ;&;%;#;"9#8%!9% ;%;%;%;%<%;&:% 8% 6$5"7":$?' E,#F-#:%....-. =4)<3';2'>5):1&;2&>5)    - - -:3'80$:1%=4(?6+<4(;3'=5)=5)>6*--.//0123!5$6$7#9#:$;%<& =&!>'!>'!?("@*$@+$?*#>)">*">*#?*#@+$@,$@,#A-"B,"C+#B)!A' >( A+"D.%E.%F.%J2(N6,O6,Q5,Q5,P3(P3(S5*V8-Q3)D()!=(!<' :%;&<' ;&:%:%9$9$:%:%:%7"7"7"8#9#9$:%:%:%<' <';&:%;&<' =( <' <' =&=%<%:&:&:%:%:&:&9%9%9%9$8$9$9%9%9$9$9#8#7#5!1-*'5 57 8"9#9%;'=)!=*">+$>+$?-&@.'A.'B/'B.&C-$D.$F/&G0'G.&H-&I.'J0)J0)I/'H.'H.'H.'I/'I/(I0)I0(I/(H/(H/(H/(G/(F/&D/%C.$B-#A-#?-#>,#;*!8'6&4$3#2"1!0 0 .+,,   "',/13 5!7!8"9#:$9$9#9$;%;&=' =' =( >)!=' ;&<'>(!=( =' >(!?)"?*"?)">)!?*"@*#>)!<'>' A("A("A)#B)#B)#C*$D+%D+%B)#A)"A)"B)#A("@'!B*#F-&E+%C)#D)#D("E+$G.&I0'J1)J1)I0(I0(K1)M2*L0(I-$H+#I+#F*"C*#@("<&9$5!35!6"6"5!6"7#8$9%<&?'!@'!?& @'!@(!@(!B)#C*#A)"@(!@(!@'!A("C*$C*#C*#C+$B*#B*#B)#B)#B*#B)#A("@'!@(!A("A("A("A("A)"A)"A("A("A("@(!@'!@("A("@(!@'!@'!@'!@'!@'!A("A("A("A)"A("@(!A)"B*#@)!>)=';%8#5!6"8$ 7$4 3126"8$6"6"9$<& ?("B*$D+$F+#L0(Y<2bD;\>4T6,M1(I.%G.&E,%B*$?)#?)">(!>(!>(!=( >)!>)!<&:%;%<'<&;%:%;&=' >("?)"@+#?*">(!=( >(!>)">(!=( >(!>(!=(!=( <';%;%<&<&=%=%;%9$9#9#9$9%7#6"4!3 2 20/+($"   -  135=$G-"R7,Z?3Q6*@'7 5 4!4"5#5#5#6#7$9%;( <*#>+$@-&B,&C,&C+%B*$B*$C+#D,$D,$E-%F-&H.&G-&G-%F-$F-#E-$E,%D,&B,&A,&B,&B,&B*"B)J0%V;/^C7Y?4P7-C+"6!3/(+-/134 6"6"6"8$:&;&!='"='!<% ;% ;% :$9#9#:#<#<$='!=(!<' =( =(!=(!<' ;&:%:%:%;&<';&:%:%<'<';&;'<' <' =(!=(!<' ;&;&<' >)!<' :%:%:&;&<' =(!<' ;&;&;&;&<' <( <( <' ;&:%9$8$8#9%:&:&:%9$8#8#9%:&9$8#8#8$8#7#8#8$9$9$9$9%:&;&<%<%;&:&:&:&:&9%9%<' =)":&7$6#6#6#6#5#3"1!3 6 7!>$F+^B7w[OnRGI.#;":";#@( G/'L3+N4*P4)O4*N3*K2)H1'F/&D-%A+$=(!8$9%B*"A*"@+!=) ;':&:&;%;#;#9#8$:%<%<&<';':' 9'!8& 7% 5"4 <%E+#Q5+^@4[?3C-%10../0!;2';2'?5*90%90$   - - -:2&90%;2&>5)=4);3'<4(<4(-,.18">( ;&7"4 3!4"6"8#:$;& <& =&!>'!>(!>(!?("@)#>("=(!=(!=)">)">*#?+#@,#A.#B-#D,#C*"A' =& @)!D,$G-%J.'M1)O3+R5-P3+O2*P3*P4+O4+K2)D+"@(<$:#6"4!2!0!1 2!2 211101233 5!6"6#7#6"5 56 7!7"6!7"9$:&9%8$7#6"6"7$8$8$8%8$7#7#9%:&:&:&:%9%:&:%;&:%:%9%9$9%:&;&8#5!6"7"8#9%:&:&;&<' >)!=(!=( <' ;';&=( =(!;&9$9$8$:%9$9$8#7"7"8#:%;&<':%9$;&=(!=(!<' <' =( =(!=( <' =&=%<$;%:&;';'<( =(!<(!;' :&8$7#7#7#7#7#7#6"5 5 5!31.*3!17 =%>&;$:%=(!?*$>*#=*#>*#>*#?+$A,%B-&B-%B-$C-#C.#E.$F-%G-&H.&H.'I.'I/'I/'H.'H.'H.'G.&G.'G.'G-&F-&F-&F-&F-&F.%E.$D-$C-$A,#?,#<+":) 8(7%6#4"3!2!2!1 /.-,  -#'+/234 6 8!9#:%:$9$:$;&<&>(!>(!>(!=(!=' <&<&<'<' =' =(!?)">)!=( =( ?*"@+#?*">)!?' ?' @("A)#B)#B*#C*$C*$B*#B)#B*#B*#B*#B*#B)#D,%G.'F,&E+%E*%C(#C)#E,$G.&K2*L4+J1)I0'K1(L1'K/&K.$K.$K-#G+"C*#?(!:$7"5!34 6!6!5!7#9%;&;&<&=%>%?& ?' @'!@(!B)#B*#A("@(!A("A)"A)"A)"A("A("A)"A("A("A("A("A)"A)"A)"A)"@(!?' @(!B)"A)"@' ?' A("A)"A("B)#A("@("@(!@' ?' ?' @'!@(!A("B)#A("@' ?' A("B*#B)#A)">';&:%:$9$8#5!22331134 338">%"?&"A(#C*$E,$H/&J1(M5*L4)J1&H/&G.&F-&D+%B)$A'$?'"='!=( >)!>)!>)">)!;&9$<&>(!=( <';&;%;&<&=' >)">(!=' <'=( >)!>)!>)!>(!=( =( >(!=( <&;%;&<&<%<$9#6!6!7!8"8#6"5!5!4!3!21.,)%# !      .02;$G/&S:1X?5U;1D+!76 5!5"4"4"5"6#8#:$:&:' <)">*#@+$B+%B+%A*#A)#B*#C+#D,$E-%F-%G.&G-&F,%F,$G-$H.%F-%D,&C+&A+&@+&A,&A+$A*!C+ L3(W=2X?5U>6H2+:& 3 00,./135!6"6"6"8$9%;& <'!='!;% ;% <&!;% ;% <&!=&!=% >$ <%;&;&<'<'<'<' =(!=)!<' ;&:%:%:%:%:%;&=(!=(!<' <' <' <( =(!=(!<( <' <(!<(!<(!;&:&;&;&;&;&;&:%:&:%:%:%9%9$9$9$:&;&:&:%:%9$9$:%:%9$8#9$:&:%8#7"7"7"7#8$9$:%9%7"6!8#9%:%;%;$:%:& :%:%:% :& 9% 8$6#4!3 4!4!5"5#4#1"0!3!5!8!;!G,"gLAqVKX>4=%9"8";$B*$I0(M3)P3(Q4*P4+M3*J1(F/&D-%A*$='!9$6"A(!B*"A+"@+">*"<)!<( ;' <&>&?&=&<&>&?' >)">+#<*#9'"7%!6$ 4"4 4<#C(U7+hH9`C7H1*7% 3!////!<3(?6+90%8/$  - - -;4(91%:1%>4)<3(<3(>7+.,.0@(!S;4T<5I2+>(!7#13 4"6#8%:& ;& <'!='!?("?("?)#>'!<&<%=' ?("@*#B+$A+$@,#A,#C,#C+#B)!A& <&B*"E,$G,%J.&L0(N2*O2*M0(O2*N2)L1(J1(D-%='<'9%6"5"4"3"0 //00011121124!6"6"6"4 346 8"8#9#8$7#7$7$7$7#7$8$8$8$8$8$8$7$8$8$9%9%9%8$9$9%:&;&:&;&:&:&:%9%8$7"6"7"7#9$:%;&;&;&;'<( <' ;'<' =( <' <' ;&:%:%;&<';&:%9$9$8#8#8#9$:%:%:%;&;&<';&:%:%;&<'<' =( =' >& =& <' ;&:%9$9$9$9%:&:&9%7#6"6"6"6"5!5!5!5!4 1/+(3 6 H,!V7,P3+F,%?& =% =% >&!?'"@(#@)#@)#A*$C+%D,%E-$E-$F-#F-#G-%G-&G-&G-&H.'I/(I/'H.'H.'H.'H/'H/'H/(G.&E,%D,%D+$D+$D+#D*"C*#A)#@)#@)#>(";&9$8#7!6!5 ;(C0&?+!4 0.,   #'+/23 5!7!8"9#:$;%;&;%;%;&>(!>(!=( <'=' =' <&<&=( >)">(!=(!=( <' =( ?)"?*"@+#A+$A)#A)"C*$D+%C*$B*#B)#B)#B)#D+%D,%B)#B)#C*$C+$E,&F-'E+%D*$E*%D)$D*$D,#F-%I1(J1(K2(K1&L2'N3(M1&L0$K."J, F+!A("=' 9$6!6!5!5 5!6"6"8#:%:&;&<%>&?& >%?& @'!@(!A("B*#B)#@(!A("B*#A)"@(!@'!@'!A("@'"A("@'!@(!A("A("A("A("@' ?& A("B)#A(">&>%>%>%>&?' @(!@'!@'!@'!@(!?' >%=$>%>&>&=%=$?' A)"B)#B*#A*"?* >( <' :%7#5!21/.--.0238!>#"@%#@&#B(#D,$F.%D-#C-"D.#D/#E/%F.&E,%B)$A'#@%#?$">(!>(!?*"?)">(!=' :%9$;%;&<&<' <':%:$;%<&<&<';&;&<'=( =( =' =' <'<' =( >(!;%:%;&<&;$;":#9$8#9#8"7"6"7#7#6#4"3 2/-)&$#   -  - )./5!C.'Q:3S;4Q91C,#7 44!4"4"4"4"4"7#:$9$9%9&;(!=)"@)#A*$A)#@)"B*#C,$D-$E-%F-%G-&G-&F,%D+#G,$I.%H-%F,&D,&B,&A,&@,&@-&@*#?( A*!D,"F.%E.'@+%8$2 0/2!,.035!6"7#7#7#7#7#8#9#:$<& <&!;% ;% ='">(#>&!>$ =$;%;&;&<'<' <' =(!>)">)"=(!<' :%8$9$;&=( >*">)!=( <' <' <' =( >)">)"=(!<' <' =(!<' :%:%;&;&:%9%:%:&:&9$9$9$9$9%:%:%9%:%;&<' :&9%9%:&:%9%9$9$9%8$7"7"7"7#9%:&9%9%9$8#8#9$8$9$9$9$:$:$9#9$9$8%7#6"5"5!4!4!4!4"4#3"2!2!4!6"6 7A) J2*B+$7#4!5!7#;'"D,$I0(M2&P3&P4)N3*J1(G/&E.$B*#?(";&7#8%A("B)"A+"@+"?+#?+#?+#?+#@*"A(!A(!@(!@)!@)!@*"?)">)!:' 7% 6% 6%!6$ 5"6 8 ; M0$^?0T9.C-'8$ 3 0///!?6*:1%  - - -91%:1&>5)<4(:2&/+/2@' S92Y?9M4.B)$;%4!3 3 4!6#8%:' <)">)#?)#?)#>(">'!>'!>'!?(!@("A)#B*$A+$@+"@,"B,#C+#C)"B(!:'?)!C,$F-%H.&K0(M1)N2*M0(L.&K/&L0'J/&F.&@)!>(;'9%5"5"5#3"1/./001122223 5"5"5!4!4 45 7!7"7"8#7#7$7#6#7#7#7$7$7$6#6"7#7$7$6"6#8$9%8$9$:%9%;&:&:&:&:&;&;' <' :%9$9$9$9$9%9%:&:%9%9$;&=(!=)!=)!=(!<( <';&:%;&<' <' ;&;&;&:%9%9$:&=(!>)"=(!<';&<' ;&:%:%:%:%;&=( >(!=& >& >' =( ;&9$8$8#7#8$7#7#7#6"5"6"5!4 4 5!4 31/,)%6"D*c?0qI8d>/V2%H*!?' <'"<'$=(%>)%?)$A)$A(#C)$E*$G,$I-$J.$I.%H.&H.'H.'H.'I.'I/(I/(I/(I/(I/(I/(H.'G.'E,%D+$C+$C*#B*#B)"B("B)#C*$A)$?("=& ;%9#9!8 8!8"J3+\E&>%=$>%?' @'!A("B)#A)"@(!A("A)"@(!@(!@'!A("A)"A("A)#A("A)"A("@'!?& >%>%?& @(!@(!?' @(!A("?& >%?& ?& @(!A)"A("@("@'!?' >& >%>&?' =%:":!<$>&>%>%>'>) <&9#8#7#6"4 2.,,./1236 ;">#!>$!A(#C+$F.%C,"A+A+ A+ C,"E-$E,$E+%C(%@%#@%#>'!=( >)!>(!<' ;&:%:%;%;%;%<&<' <';&;%:%;%;&;%:%:%;&;%:%;&=' =( <' <';&;&=' >(!<&;#;#:%9$9#8"8#7#7#6"6"5#3 1.,*'%$"  -  -+-.4";'!<' :%6!4 22 1 2!3!3!3!5"8"9#9%9& ;(!<)">)"?("@)#A)#B*$C+$D,$D,$D,$E,$F,%F,%E,$F,$G,$H-$F,%D,&B,&A,'A,'A-&@+$?)">'=%;#:#8"5!2 0//),.014!6#7$8$7#6"7"9#:$9#:$:$:%;% <&!=&!=$ =$ <& <' <' =(!<' 9$8#9%:%;&=(!<' 9%:%<' <( =(!=(!=)!>)">)"<' <' =)!>*"=(!<' <' =(!=(!:%7":%<' ;&:%:%;&;&9%8$8$9$9%9%9%8$7#7#7#7#7#6#6#6#7#7#8#8$8$7#7"7#6"7#8$8$8$9$9%9%9%9%9$9$9$9#9#8#8#8#7#6#5"5"5"5"4!3 3 4"4#4!4!5!6"5!5 33321 1 4!8% ?*#F.&J1'N2$O3%N3)L1(H0&F/%C,$A*#>(!;&8%9& @' @(!@*!@+"@+#@,$A,%A-%A+#B)"A)"A*#@)"?(!>' =&<&:&9& 8% 6% 6#6"6!55: >#8 2011000!<4(   - - -91&;2'>4*?7,/,/4?( O81ZC;J4-:%6"3"2!2 2 3!5"7$:' ;'!<(!=(!='!>'!?("?("?("@("@)#A*$A*#@+"?+!A+"C+"B)"A' 9&:%>( A*"C+"G.%J0'L1)K0'J-%J-%L0'J/&H/'E.&?( <'8$5"4!4!4"4"2 10002 2 21223 4!4!4!4!5!5"7#9%:%:%9$8$8$9$9$8$7#7#8$9%8$7#6"7#7#6"4!6"9%9&:%:&:%:&:%9$9$:%;&<' =(!=(!<' ;&:%9%:%:%:%:%9%9$9$9$9$9$9%:%:%:%:%:%;&;';&:%:%:&;':%9$:&>)!>)!;&;&<' <' ;&;&;&;&:%;&=( =' >& =&;&;' :&8$8$8$7#6"5!5!6"5"5!4!5"5!4 4 20/.*&7&?* U:.nL>lI;T3'D%?%;& ;'";)%;)&;)%<)$=)#?*#A*"C)"E*"H,#I-$H.%G.&H/'H/'I/'H.'H.'J0(J1)J0)I/(H/'G.&F,%D+$C*#C*#C*#B)#@("@(!@)"@)">("<&!:%9$9#8!668!L4-^G>Q:1?'51  - - !&)+,/3456 8#9$;&=' =' <' <'<'<'<&<'<' <' <&<&;&;%=' >(!=( =' =' <';&;&;%=%>& ?' @'!?' ?' @(!A("B*#D+%D+%D+%D+%D+$D+$E,%E,&D*%D)$D*$D*%F,&H.'I/(J0(K1'I/%J0%N2&P3'T6*aB6jJ?iH=R5,@'!<%:%7#5!4 5!7#7#7#9%;&:&:%;%=%=%=%=%?' A("A("A("B)#C*$B*#B*#A)#?& ?& A("@("?'!@(!?& >& ?& >&>%>%?& ?& ?' @'!@(!@'!?& ?' @'!?' ?& ?' @(!?' >%>&?& ?' ?& ?' >&>& =%=$<$=%@(!A)"?( >)<'9$7"7"5!20.,,-/0125 :">%!?'!A(#C)"D*"F,#I.$G,"D*E+!E,#E+#E,&D*%@'"@'">'!=' =' <&;&;&;%<&<';&;%;&;&<&<&<&;&:%9$9$9$:%;%;%:%;&=' =(!<';&;&;%;&;&;$:";#9#8#9$;% :%8$7#5!5!4"3!1/.-)&%$    - - ,,,-.0/01111 2!3"3#4"6"7"8"8$9%;(!=*#?+$@*$A*$B*$C*$D,$D-%D-%D-$E,$E,$E+$F,%F,%G,$G,#F,$D,&C,'A,'A,'A-&@,%@*#?( >%<#:"8!5 3 1/.2!()+.14!5"6"6"6"7#7"6 7!9#:$:$:$<&!<&!<% =$ =& <' ;';&;&;&:&8$6"8$:%;&8$7"9$:%:&;'<( <' <' <' <( <' ;&;&;&;'<' <(!;':%;&<'!<' :%8$9%9&9%7$7#7#7$7$7#6"6"5"6"6"6#6#6"5!5!7"7#7"7"7#7#7#6"6"7#8$8#7#8#9$9$:%;&:%:% 9$8#8"8#9#7#5"4!4!5!4 3 3 3 3 3"3"4"4!5"6"4 32210/ 2!4"8% B+#I0'L1%N0!L0$L1'I/&F.%E.$D-%C,%@*#<(!7$>%?&>'=(>)!>*#?+$@+$@+$@)"A(!@(#@)$?(#?'"?& >&>&=&<&:%8% 6$3!2 2 2210001000/   - - -:1&=4).++.27"='8$30/ /!2!4!5"5#6#7$8%8%9&<& >'!?("?("?("@)#A)#A*$B*$@*#?+!?*!@)!A( @' ?&4!:&@+"A+"A+!E-$J0'K0(M0(M0(K/&H-$L2)ZB9S<4@+"8$8$4!3 3!3!2 11112 3"3 22233 4!4!4!4 4 4 6!7"6"6"7#9$9%9%9%9$8$8$9%:%9%8$8#7"7"8#8$9%:&;&<' <' ;&:&:&:%:%:&;&<' <(!<' ;' ;&:%:&;';&;&:&9%9$9$9%9$8#8#9%:%:%:%:%;&;&;&:%:&:%:%;&:%:%:%:%:%;&<'<' ;&:&:%:%:&<' =(!<&<$;$:%:&:&:&:%8$8$7#7#8$6#7#5"6#6#5!4 20/.-(#5#>* M5*Z?4Q6,A'<#;%:& ;(#;)$;(#;(";'!=' ?( B*#E,%F,%G,%G,$F-%F.&G/&G/'G/'H0'H0(H0(H0(I0(H0(G.'E-%E,%D+$C*#C+$C+$@+#>+"<) <( ;'9&7$7$6$5#4!4 36!D0(O;2G1);%40  "&*-03 6"6!6 8";%<&;%:%:%;&=( >)"=(!<' ;&:%:%;&;&;&:%;%;&<'=' <' =' <';%<%?' @'!A("@("?' ?& ?' @'!@'!@("B)#C+$D+%D+%D,%E,&D,%D*$C(#C)#D)$F,%I.'J0'K1'K1'K0%L1%L0#P3'X9-fF:lK@kJ?T7.A("<%:%8$5!6"5!6#6"7#:&;' ;&;&<%=%=%>%>&@(!B)#A)#A)#C*$D,%C+$B*$A)"?& ?& A("A("?'!@(!?& >&>&>%>&?' ?' >&=%>%?& @'!A("B)#B)#A("@(!@(!@("@("@(!@(!@(!?& <$<#=$=%>&=%=%?& ?' @'!@)!>(<':$7"5!30..-.....0138#=&A)"D)!F)!V8/hH?bB8Q1(K,"H+"F*!E+$C*#<&8$;&=' =( =' <'<';%<&;&9$9#9$:%:%:%;%;%:%9$9$9$:$:%:%;%;&=( >)"=(!<' <' ;&<' =(!>(!<%;#9#8#9#:$9#7"7"7#6"4!21/.,*'%#    -  (,))///1231 3!2#3#4#7#9#9#:$8$9' ;)"=)"?)#@)#B*$C,%D,&F.&G/'F/&E.&E,%E,$E,%F,%F,%F+"H-#F,%D+&A*&?+&?+%>+$?*"?(?'>%>$=$=%8#4!2 01(*++-133 4 5"6#6!6 7!9$<&!=("?)$='";% ;$=$ =$ ;$:%:&:%9%8$7"6"6"7#:%8$6!5!7"8$:%<' <' ;%<%=& =& <%;$;%;&;' ;' ;' ;&:&;&;&:%9%9%:&:' 8%7#6#6#6#6"5"5"5!5"5"6"6"6"5"5"5"6"6"6"7"8#9$8#7"7#8$9$8#7#8#8$8$9%9$8#8"7"6!7"8#7"5!3 4 4!3 2223 2 1 3!5"5"5"7#5!222 3!0!0!3!5"=' G.&M2)O2"L0"M2)K1(H/&E.%D-%B+%@*#=(!:&3 <#=$='=(<( ;(!=)"?+$?*#?' ?& >(#?)&?(%@($A'!A'@&?%=%:$7$4#3"1!0"/!. ./11210//   - - -90%.+*,-021.--- / 2 4"6#7$7$7$7$8%:&='!>'!>'!?("@)#A*$B*$B)$A*#@+"@+"A+"B*"A(!@& 4!7#>*!B-$A,#C-#G/%J0'L0(M0(O2*P4+R7.`G?iRJWA9>) 8#5"4 3!3"3!2 222 2!2!3!3!4!4!4!4!4!4!6#6"5!4!7#:%:%9$8$9%:&:%9%9%:%9%8$8$9$8$8$8#7#6"6!7#9$:&;&<' ;' ;&:&:%9%:%:&;&<' ;&:&:&:&:%:%9%9%:%:&;&;&:&9%9$9$9$9%:&:&:%:%:%:%:%;&<' =(!;&:%9$8#8$:%;&;&;'<' >)!>)"=(!;&;&;&<&=%=& <' ;' ;' ;' ;';&:%:%8$9%:& :& 9%7#5"4 5!5!20/.,'4#34 8#<':%6"8#9% 9& ;("=)#>)"?(!@)!B*!C*#E*$F+&F,&F,&E,%E,$E-%F.%F.&F.&F.&G/&G/'G/'G0(G0'E.&D-$E-%F/'F/'D-%A+#>*";)!:( 9'7%5$4#3#2#2#2#2"2!3"6%9'7$30/   !$'*.2 5"7#8"9#:$;&;&9$;&=' =' =( =( =' <' ;%9#:%=' =' ;&:%9$9$<&<'<'<';&:%<&>&?& ?' ?& ?& ?& ?& ?& ?& ?'!A)"C*$C+$D+%D,%D+%C*$C)#C(#B("C(#G,&J/)K1(K2(L2'L0$N1%N0$O1%U5)cB6iH&>& ?' A("B)#B*#B*$C+$D+%C*$B)#A)"?'!?' A("@("?'!@'!?& ?& ?& ?& >& >& >&>%>&?' ?'!@'!@("B)#A)#A("A("A)"A("A)"A("A)"B*$A(">%=$>&?'!?& ?' @'!?' ?& ?& >'?) =(;%8#5!31/..//-+-.036"<%A(!C( E(V7.oMCmJ@Y6-N,#J,"H+"E*"C*">' :%:&;&;&:%:%;%9$<' =( <' ;&:$9#9$:%;%:%9$:%:%:%;%;%:%:%:%;&=(!=' <&<'<'=' =( =(!<&;%:%9%9$8#8#7#6"7#6"4!2 10.,*'$!  -  - - ,+,-/0124 42 2!2"3#4#6$8$9$:$8$8%:' <(!?)#A*$B+%E-'F.(G/'G0'G/'F.&E-%E,$E+$E+$E,$E+!F,#E-%D+&A*&?*%?+$>*$>)"?(B)>$>#B'D+!A) :$41,2!+../124 4 4 336!8"8#9#:$<&!<& 8#8";#<#;#;&:%:%9$8#7"7"7"8#9$7#6"6"7#9%;&<' ;&<%=%=& >& =%<$;$;&;' <' <' ;&9%9%:&;&:%9$8$8$6#5!4!5!6"6"6"5"5"5"5"5!5"5"5"5"6"6"7"6"6"7"8$8$8$9$9%9%9%8$8$8$7#8#8$8#7"7"7"7"7"7"6!4!3 5!4!3 1123 0/6#7$6"7#7#34 6$3 1 0 2"6$:' C,$J3-N2'N1&M2(M2)J1'F/%D-$B+$@)#=(!;' 5";#=%=%:%:%;&;' <(!>)">(!?' ?'"?)&?)(@)%A(#A(!A(?&=%;%8$5$5%4&2$1#0"/ /110.-,-0  - - -.-,,--//.-../12 4"6$7$7$8%9& :' ;' <& <& =& >'!@)#A*$B+$B*$A)#@)"?)"?*">)!=( <' 6";'?+"C.%F0&E.$K0(H.%O3+R5-P4+Q6-Y?6bKC[E'!<' ;'9&8$8$6#7#8$7$8$9%8$7#5!3 4 5!5!20//+'1 0012 3"4"6$8% 9& :' =( @) B* D*!E+"D*#D)$D*%D+&D+'D,&E-$D,$D,$E-$E-%E.%F.&F/&G/'G/'G/'F.&D-%D-%D-%C-%B+$@*"=(";'!9& 8%7$5#4#4#3#2"1!1"1"1"/!/ .--.  "',/24 4 5!6"7#:&=(!=(!<' ;'<'=' =&=&<&;&9$8#:%;&<' =(!=( ;&;&;&;&<'=' ;&:%<%=$=%=%>%>& ?' ?& ?& @'!A)"B*#B*$C*$C+$D+%D+%D*$D*$D)$E*$F+%H-'I/(J0(K2(L2'L0$L/$N1&O2&R4)U6+U6+Q2'F+#<%9#8$8$6"7#7#9%8$8$9$9%8$8$:$<$=%>%?'!@(!A("B)#C*$B*$C*$B*$B*#A)"@'!@(!A("@(!?& >& >& ?& ?' ?' >& =%=%=%>&@'!@(!@'!@'!@(!@("@(!@(!@(!@("@("@("B)#C+$C*$?' >%?'!?' A)#C*$@(">& >& >& >&;&;%;%:%8#6"4 100/.-+,-/37#;&@*"A*"B) P5,eI@hLCT7.H,#F+"F+"C+"@*"=( ;&;&<'=( 9$:%<'<&=(!=(!=' ;&;&<' <&;&<';&;&:%:%:%:%:%:%:$9$;&<' =(!<&;&<' =(!=' <';&:&9%8$7$7#7#7#6"6#6"4!2 21/-*'$ !  - - -  -))-00124343 2!3"3"4"5#6#9$9#8$8%9& ;(!>)"A*$C,&E.'F/(F.&E.&E.&E-%D,$D*#C*#C*"C*#C*!D,"E-$D,&B+&?+%?+$@*$?("?'@'>%B)S8-]D9X?4@+!31.0+-.01233 4 4 5!6"7"7"8"7"8#9#8"8"8"9#9$;&;&:%9%8#7"7#8$9$7#7"8#8$:%<( =(!<' ;&<&<%<$;$<$=%>& <&:%9%9%9%9$9$:%;&;&:%9%7#6"5"4!5!5"6#6"6"6"6"5"5!4!5!5"5"5"5"6"7"7#7#7#6#7#9%;&;&8$8$:%:&8$6"7"7"7!7"7"7!7!8"7"5"4!3 3 4!3 2000111236"49$E1*K70A.'3 3!7"8$B*#I0)M2)O2'O2'N3*L2)H0'E.$B+#?("=(!;' 6#7":$;&<&='>'='>'>' >' >' >'!>("?)#@)$A)#B*#A*"A+!>) ;':'9' 8'!7' 6&5$5"<'D.$F/%A*#;% 5"/.,-0  - - -,--.0256 30001 2!4!3"4"5#7%8&8& :' =(!>(">'!='!?("@)#A*$A*$A)#A)#@(#?(">(!>)!>*">)"7$8%?+"A,#E/&F/%H/&K1(K0'R5-O2*G,#U:1eKCaJBK4,8$>*!9%6#4"4#7&6$ 3 16$ 5$2!3!5"5"4!4!5"6#5"5"6"8$9%:&:&:&:&:&9%9$9%9%9$9%9%9%9$8$8$7#7"6"6"6"7"7#8$9%:%:%:&9%8#8#:%:%9%8$9%:%:%:&:%9$7#7#7#7#7#8#9$:%:%:%:%:&:&:%:&:%9%9$9$9%;&<' ;&:%9$9$:%;&<' ;&:%:%;&;&<' =(!<' ;&;&>(!?(!;%7#9$:&;&;' ;&9%8%9%:& :& 6#6"4 33210/.,&1"0/012!3"5#6$!7%!8%9%=&@'B(D)E) D)"C(#B)%A+(B,(D-&E-$D,$D,$D-$E-%E.%F.&F/&F/&F.&E.&D-%C,$C,$B,$B,$B+#@)#>'"<&!;% :$9#8"7"6"5!3!3!2!2!1!0!/-,+   -"&+/1235!6"6"8#:%;&;&;&<' =( >' >& =&<';&:$9$9$9$;&=( =(!=' <' <&;&<'<';&<&<%=$=%=%>&?' ?'!?& ?' @(!A("A)"A)#B*#C*$D+%D+%C+$D)#D*#E*#F,%I/'K1)J1)J1)I0(G/&I1)I1)K3+H0(G/(G.(E-'A*%<&!:$7"5!4 6!5!7#6"7#8$9%:&;&<&>&>& >&?' @'!@'!A)"B)#B)#B)#B)#B)#A("@'!@'!@("@(!>& >%?' ?' >&=%=%=%=$<$=$=%?' ?'!?'!@(!@("?'!>&?& ?'!@(!A("A("C*$A(">%<$=%@("@("@(!@("@'"?'!?'!=&9#8"9#9$9%9%7#4!0./0/+*-/5!9%<' >)"?)!?'D,#N6.R:2H0'A) A) B)!B+#A+$>(!;%;&=' =(!<' <' <';&;&;%;&<&<' ?*#>(!<'=( ;&:%:%:%:%9$:$:%:%:%<&>)"@+$?*"=' <' =( =( =( <( :&9%7#6"7#7#6!5!4 322 20/-,($ # "     .,-/3 ;$>( :#244!3!3!3"4"4"6#9#9#8$8%9&;(!>)#A*$D-'E.(E.(E.&E.%E.%D-%C+#C)"B)!C)"C*#B*!C+!D-#D-&C+'?+&?+%?+#@)#@&@%@$F+bG:pVKbH=F."6201 )+,./13 4!5!4!5"6"8%8$8#9#8#8"7"7"9#:$;% :%:%:&;&:%9$9$9$8$8$9%9$9%:&<' =(!<' :&:%:$;#<$=%>& ?'!='!;&9%;'<(!;' 9%8$9%:%:&:&9%7$6#5"5!5"6#6#6#6"5"4!4!6"6#6"5!6#4 7#8$7"6"7#7"7#8$9%;&:&8$:%<' :&7#7"6"6!6!7"7"5 7"7"6"5"4 24!5!4!3 112!1 /3!8$5!4<%P91fPHbLD7"6"7#9%?)"F/'K3+N3(O4*N3*L1)H0'E.$B+#?("=' ;' 8%17#:&<)!?)!B*"E-%@)!?( A*"A*$B+%A*$@*$@,&A,&@)"E+$C)!B+"?' ?'!@)#>($;&"8$9$:#8Q6-aE<]C;I2-5"1!0 ,./  - - ----05!='F/&L4*A* 6 2113!5#5#5#6$8&9& 9&9&=("@*$?)#>("?("@)#A*$A*$A*$@)#@("?'!>& =& =' =(!;& 9&=) C.%E.&I2)H.&L2)M3*N2*M0(I,$C'^B9dLCQ:2?) 9%;'9&8%5$5$4#3 115#4#3"4"5"6#5"6#9%7$4!3 5!9%=(!<(!;' ;' <( ;'9%8$;':&9%8$8$9$8#8#8#7#7"7"7"7"8#8$9$9$8$8#8$7#6"8$;&:&9%8$9$9$9%:&:&9$9$9$8$8#8#8#8#8$:%;';&:&:&:%:&:&:%9$8$9%:&;' ;&:%:%:&;&;&;'<' <' ;&:&;&<' <' ;&9%:&<' ;':&:&;&:&9%9$:%:&:%:&<(!:%7#7#5"5!3210.,*%-/6 7!8!6!6#6$6$8&:' ;'=&?%A&C'D(C( C)#B*&B+)B+(D,%D,$D,$D,$E-%F.&F.&G/'G0'G/'F/'E.&D-%C,$C,$C,$B,$B+$@)#>'"=%!<$ ;$;$;#:#9"7!56!6"9$8$5!10., - $),035!6"7#8$7#8$9%:%:%;&=( >)"?(!?'!=& ;&;&;&;&:%9$:%<'<' <'<&;&;&;&;&<'=' =&=%=%=%>&?' ?' >& ?' @'!@("A)"B)#C*$D+%C+%C*$C*#C)"D*#E+$G-&J/)K1*K0)K1)K1*L2+K0)G-&G-%G,%G,%F,%E+%@)#:& 9$9#7!4 6!5!7"8#9#;$=% =% >% >% ?&!?'!>& ?'!A)"A)"A("A)"B)#B*$@(!>&?'!@("@("A)"A(">%>&?& >& =%=%=%=$<#;#<$=$>& >%?' @("@(!>%<$?& A)#A)#A)#A)"?'!?& ?'!@("@("?'"@("@("?'!>%=%=%<$<$<$=%=%:$9$7#5!4 5!3/.,-.1 5"8$:%=' ?(!?'?'?'?'@'A( A) A)!B+#C,%?)";&:%<' ;&=(!=(!;&;&:%9$9$;&;&>)!<' ;&;&9$8#8#8#9$:%;&<'<&;&;&;&:%:%;&;&:%;%<'<' ;&9%8#6"6"7#5!311111/-,,)&$#    - -0--/9%S;4YB9M6/8#44!3!2!2!3!3!5"7#8#9$9&9' ;(!>*#A*$C,&E.(D-'D-&E.&F.&F.&D-$D*#C)"C)"D*#C*"B* D,#E-%D+'@,&?,%?,$?*#A(!B'A$@%bF9mSG^D8E,9 7,/()++,04!5!5"5"6"6#6#6"7"8#8"7"8"8#9#9$:$:$:%;'<' =)"<' 9$8#8$:&:%:%;'<( <( <( <(!<' <' ='!?("?'!>& =& >'!@(#>("<(!;( <(!<(!;' ;&;&:&9%=(!<( 9%7$7#6"6#6#6#6#6"5"4!4!6#7#6#6#5"4!7#9%8$7#8$8#8$9$:%;&:&8#8$:&:&8$8#7#6!5 7!7"5 5 6!5!4!4!3 4!4!4!5"4!3 2!02"0! 2 229 I0'mTJpVMK3+9#9":#=' E,%J1+M3(O4(M3)K0(H/&E.$C,#A*#?("<' 9%4!6":& >*"@+$?'D,$A*"?( @)!B+$C,&C-'C-'B/(D1+@-$B+$B)!C)!B)!?'!A)">'#>'#;$ :#=$>!N/)jJBjKDV=78"1 1!/ ..   - - -.,0;&G0)U=4aI?R90=%533 4"5#6$7%8&9& 9& :& ;%='!?)#@)#@)#@)#A*$A*$A*$A)#@("?' ?&>&>&=&<' ;&9%:&@+"C-$F.%I/'H.&N3+O4,M1)J-%D(B'K0'I2*=&9$8$8$8%7%5$3"3!212 3!4#3"4!5!5"7#8%9& 7#7$7$7$8%9%9%;' =)";' :&:%8$8#:%;&8$7#6"5!8#8$5!8#9$7#7"9%:&<' 8#6!6!7#8$8$7#8$9$9%9%9%9$9$:%:%:%;&;&9%8$8#8#8#8$9%:%9$9%;&;' ;' ;':&9%9$9$9$9%9%9%9%9%9%9%:%:%:%9%9$;&<( <' ;&:%:%:&:&:&:%9%9$9%:%:&;&:&:%:&:%:%:&;':&9%7"31.,(#+5"H1(W;0G+!;"7!7$8& 9& ;(!=+!>(?'A'C(C)B) B*#B+&B,(C,'E.&E-%E-%E.%F.&G/'G/'G0'G/'E.&E.&D-%C,$C,$C,$B,$A+#@*"?)"=("<&!;% <% <%<%<$;#:!8 <$A)#P81U>7Q;4>("0.,  $).14 7#7#8$8$8$8$8$9%:&;' <( >(!@)"B*#?(!<&<' =( <' ;&;&;&;&;&;&;&<' <' ;&<&=' =(!>& >& >&=%>%>& >& >&>& >& ?' @("B)#C*$C+%C*$B)#B*#C*$D,%E-&G.(J0*K1+K0*K0)K0(K/(K/'K/&J.%I-$H+#G+"E*!=&6"7#9#7!457!9#:$:$<$ =% =$ =#=$>$ ?%!>& ?'!@("@("@'!@(!@(!@'!>&<$>%?'!@("B*$C+$A("A("?& =%>%>& >& >& >& ?& ?'!>& @'!?& ?'!A)"@("?& >&@(!B*$A)#A("A("A)#B*#B*#B*#@("?'!?' >%=%=%;#9!;#@(!A)"@'!>& <&:%8$6!3110/,,/03!8#;&>& ?' @'@'B( D)"D*"E+#E+$E+#D+$D+%B*$>(!<' ;&9$;&<' ;&;&:%8"8#;&;&:%;&;&:%:%9$8#8#9$9$9$:%;&;&<';&9$:%<'<':%;&<' ;&9%8$8$9%7#5!5!4 2320//.,+))&#    -  /.07$\D>gOF`H@E/'422 21 2 3!4"5#7#9$9&9& ;(!=*#@*$A+%C,&D-'E-'F.&D-%E.%D-%D,$C*#C*#C*$C+#A+ C-!C,"B,$A-$A-#@+!?)>&>%B'?$`B8pSI]?6B#? 9..(*,-.1 4!5!5"6"7#7$7$7$7#6!46 8#9#8"8"9$;& ;& :%:&<' <( 9%7#9%;&:&:&;&<' =(!<(!<' <' <(!=(!>'!?'!?(!@)"A)#A*$@("=(!<(!:&<' <(!;&=(!<( ;&>)">)";'!9& 8%6#6#6#5"5!5"6#6#5"7#7$7#7$6#4!5!8$9%9$9%8$7#7#:&=)":&7#8$9%9%9%8$8$6"7"7"7!5 47"5 3 24!5"3 24!6#5"4#1 / /!4$;'7$9B'dI?uYP`D;>%;#9!;$A)"G/'J2)L4)L3)K0'I/&E.$C-#B+$@)#>(!;' 6#/;' >*#@,%@)!A)!A)!?( @) B+#A*$@)#C,&B.(C0*B/'@+#B)"A'D*"@' B)#?&!?%"?&#>$!="@#D"iHAnLE[@9B+&2 //-,,  - - --,+.;%V?6dLC\D9=%58"7#4"4"6$8%:& ;'!<("<'!='!='!>("?)#@*$B+%C,&C,&B*%B)$B)$>&<$>$?&='>)"=)"<(!6":%@+"A)!E+$F+#H,$L0(M1)N2*K.&M1(M2)J1(F/'A*";';'7$6#6$5$4#2 4!3!4!3"3"3"5"3 6"8%9& 9& 7$7$9&:' :' 9%:%<(!<(!7#:&;' 9$8#;' =)":&9$;' ;' :&:&7#9%9$6!7"8$:%=)!8$6"7#8$9$9$9%;' 9$9%<' :&7#8$;&:&;' ;&<' :%8$9$9$9$9%:%9%9$:&<' <(!<' ;' ;' :&9%9$9$9%:%:%9%9$9$8$8#8$8$8$9$:%;&;';&:%9%:%:&:%9%9$9%;&<' ;' ;':&9%:%;&:%8#8#8#8#6"4 1-*%!*A-#`F>lPGT7.>$8!8#9& 9& 9& :)!<)">( @(C*C*A)A*#B,&@+&C,&E-%E.%E-%F.&F/&G/'G/'F/'F.&E.%D-%D-%C,$B+#B+#@*"?(!=' <(!:'!9& 9& :&;&;%:#9"8!7 <%D,$Q:2ZC;W@9@)"0.  - - %*/235!7#8$8$9%:&:&<( =)!<( ;&=' @)"B*$@*#?*#=(!;&:%:%;%;&<'<';&;&=( >)!>)!=( <' <' >' ?& >&=%>%>& >&>&>& =%>& ?'!@("A)#B*#A)#@("@("A)$B*$C*%D+&G-(I.)J/(J/'K0(K/'J-%J-$L/&Q3+O1(J,"D';$4!5!6"6!456 8"9#:$;$<% ;$ ;#=$ ?%!?&!@'!@(!@'!?'!?' >& >&=%>&?' ?'!@("A)#C*$C*$@'!@(!?'!?&!?'!?'!>& =%>%>& >& ?' @("?'!?'!@("?'!?'!?'!@("A)"A)"A("A)#B*#B*#@("?' @("C+$A)#?' >& ?& =$:"<#=%?& ?' ?' =& ;&:&:%7"220/,,./3 7#;&?(!@("B(!C)!E*"G+$F*#E)"F*#F,$E,%C*$A*$?)#<(!;&;&;&:%:%;&:%7"7"9$:%:%;&;&9$8#:%9$9$9$8#8#9$:%:%:%:%;&:%;%:%:%<'=( <' 9$6"6"5"5"5!5!5!4 4 21000/,*'&$!  -  ./0/N72^F>bJ@O9/6!12211 2!3"5#8$:$:%;& ='!>)"@)#A*$B+%C,&D-&E-'D,&C,&D,&C,&C+%C+%C,&C,%@- @-?-@-A. B. B,@)>%<#A'A&V;1mOFbC;B#> 7.,1#% (+-0 13 4!5"7#6#7#7#7$8$:%;&!<&!;% 9$9$;&!<&!:$9$9$:&:&9%:&;&:&:%=)"<' :%:&;' <' >)">)"<( <&>& ?("@("?'!>'!=& <& <)!=)"<(!<(!;&<(!=)!<' <(!=(!;' ;("9& 7$7$7#5!4 5"7$7$6#7#7$7$8$8%7#6#9%:&:&:&:%8$8#<' @,%<' 8$9$:&:&9%8$:&9%8#7"7"5 37"7"5!23 6#3 13 5"5"3!1 0 /! )0-5>#V;0y]QpTHD)>%;":"=&C,$H1)J2(J2(K1(I/&E-$C,#C,$B+%@*$<(!9%4!<("?+$?+$@*#B*"@( @( @)!B+#B+$@)#A*$C-'@-&A.(=*!@)"A&C) B)!B)"B)#A'#A(%@&#<"=!B#[;5mLEbD=I2,8#.-,*,  - - -,*+.D-%\D;eMBV?3456!6#5#6$:& ='"=(">(#?*$@*$?)$?)#?)#A+%C,&B*%C+&F-(F-(D+&B)#F/&@)!C,#D,$@( ?( B+$>)"7#='A*"A( G,%F+$J.&L0(N2*N1)I-%L0'H-$B*"A*">( <(=) 8%6#7&6%4#3!5"4"4"3!2!4"6#6#7$5"4!6#8%9&:' 9&8$7#:%;' 9%6!<(!@,%<( 9%;&<' 9%6"8$8$:&:&9%:&:&6"9$9%:&:&8#7#9%:%:%:%:&:&9%9%=)!:%9%;' <' :&;' :&<(!:&:%;&:&8$<(!9%:%:&;' <(!;' :&:&:&:&:%:%:&:%:%:%:%:%9%9$8#8#9$:%:&:&:&9%9$9$9%:%:%:&;&;&;&<' <' ;':&9%8$8#8#9$9%9$8#7"5!4 0+'")*M7.nQGrPDY;.A&:!8"7#6$8& :)!;):&>(B*B*A)B*"C,$@*"C,#D,$D,$D,$E.%F/&G0'G0(G0(G0(G0(F/'E.%C-%A*"?( ?( ?(!=(!:'!8' 7&7&7&7&7%6#6"7"7":%?) N8/]F=W@7>'2.  !&+13 4 6":& ;'!:&;'=(!>)!=( <' <' =(!>(!=&>& ?)"?*#<' :%;&=( =(!=( ;&<';&;&=( =(!>)!=( <'<&?(!@(!>&=%>&>& >%=%=%=%>%>& ?'!@("@("@("@'"@'"@'#@'#@'#B($E+&G,'H,&I-%J.'L/(J-&H+#U7/gIA`B9L-#C&:$5"5"5"34546 8"9#:$;% ;% <% >&!?'"@'"@(!@'!?'!?' >& >& >& ?& @("A)#A)#B*#B)#B*$A)#?& ?'!?'!?'!@("?'!>& >&>& >& >&?& A("?'!?'!?'!?' ?'!?'!?'!?'!@(!A)"A)#A)#@("?'!>&?'!A)"@("?'!?& >& <$;#<#=$=%>& ?'!=& :&:&:&8$31.-,.003 7$:&>(!@("A(!A' N3,\?8S6/F*#D)!E*#E+$C+$A)"=' :%9$9$9$9$:%<'<';&<' :%9$9$:%:%:%:%8$8#:%:%9$9$9$9$9$9$9$9$9$:%:%9$9$9$8#7"7#7#7#6#6#6"6"5!5!5!3 10/.,+)'&$   - ,-10F.'Y@9aH?V>5<$73422 2 3!5#9$;&;%<& >'!?)#A*$A+%B+%C,&C,&C,%D-'D-'C,&C,&C,%B+%C,&C,&A-"A- A, A,!B-!C-"B,"A* >(<$=&=&D,$U<5S:3:!74/,0!# '*+,./3 3 5!4!5"7#6#9%<'">(#<&!:% <&!=(#='";&!8"9$:%8$9%=)!@+$:&9$=(!=(!:&9%;&;';' ?*#@+$<( :$=& @)#A)#?("?(!?'!='!=)"=*#<( =)":&<' =)!=(!;' <( ;' ;(":'!9& 8%7$6#7#9%9& 8$7$7$7$7$8$9%8%8%9%:&:&:%9%8#9%:&=)!<(!:%:&<(!;' :&9%:&:&9$8#6!5 6!9$9$7"4!4!8%4!123!3!2 1 02#!/ 1238@&nSHmSHO6,>%9"8!:$@)!G0(L1)K1(L1(K/'H.%G0&F0&B+$?(">(!<& 7"<(!>*#=)!;&A*"@( @)!A)!A*"C,%B+%?("D-'@*$A-'@*$A)"B(!C( E*#A("C*$D+'B)&@'$>$!=#?#N/*jJBhHAK1*<&"2 --,+/   - - -*)()0C.&S=4W@6G/&7 5!5#6%7$:% <'"=(">(#>)#?*$@*%@*$@*%A+%C+&D+&D,'E-(G.)G.)F-(E-&E-%D,$D,$C+#@) B+"A+#;&;$@) A*!D+#J/'I.&M1)N2*M0)M1)M1)M2)L1)G0(B+#>) <(<( :' 7$8'8' 6$4"4!4"2 3"4#7%7$7$7$6#5"8%7$6#7$8%8$8$;&;' :&9%<(!?+$<(!7#7#8$8$7#8$4 8$7#9%:&9%7#:&:&:&9$7#8#9%;' ;' :&7#8$9%9%<' 9$:&=(!;' :&:&:&<(!:%:&:&9%:%<(!:&;' :&;' <(!;' :%:&;' :&8$9$:&:%:%;' :&9%;&:%7#8$9%:&;&;&;&:&:%:%:%:&:&;' =(!<(!;' ;&;&<' ;':&:%:%:%9$9$9$9%7#5!3 0-'!*,WA7pQGkI' ='?(!>)";(!8& 7%7%7%7&6%5$4"3!3!4!8#D/&S>4M8.<'2.  "',25!7#7#7#8$9%9%9%;&:&;&;':&;%>& =&@*#>)"<' ;&<' <' ;&;&<' >)"=(!=(!>)">)">)">)!=(!>(!@("@(">&>& ?'!?'!>& >%=%=$=%?' @(!@(!@("@("@(!@("A(#A($A(#C)$F,&G,'G,%H,%J.'K.(J,%H+#]?7uWNgI@J+!A%<&8%5"5"3 1346 8"9#:#:$:$:$;% <&!='!?'!@("@("?'!>& >& @(!A)#A)#A)"A)#B*$A)#A)#A)"?'!A)#@'!?'!?'!>& =%>%>& >& <$>&?'!>& >&>& ?' >& ?'!>& =%?' A)"A)#@("?'!?'!?& =%;#;#>&?'!>& =%=%=$=%=%>& ?' >'!<( ;'9%6"0.,-.12 03!8%<(!>("@("A(!B'V:3nQJcF?J,%E'!F*#F+#D+$B*$>(!;&:%:%9$8#7"9$9$9$:%:%:%:%:%:%:%9$8#8#:%:%:%9$8#8$9$9$:%:%9%8#8#9$:%8#5 5!7#7#6"5"5!4!4!5!4 3 23 2 10.,*(%#    ,+.1=%R92fKB`E(!?)"5!221./ # &)*+/13 5!6"5"8$9& 8$8$<'"?*%>(#:$;&!='";% ;& :% 9$9%:%;';&;'<' ;' ;' <' :&:&;' <( <(!=)">*#<(!8#>'!A)#A*$@)#A)#A*$@)#<(!<)!<(!>*#=)"=(!>*">*#;' <(!=)!;(!:'!:'!:'!9& 8%7$8%8%8%9& 9& 9%8%7$7$7$7$8%;' :&8$8$8#9%:&;' ;' 9%:&<(!<(!:&8$9%9%8$7"8#7"6!7"9$9$7$4!6#5"4!3 3 2 3 2 3!1 / 0 028";$Q<5^JCO<58%4!4"7$>(!E.&K1)M1)L0(L0(H.%G0&G0'C-%@)#>'!<' 8#/;'!;(!;'?( A)!B+"C,$@( A*"D-'?("?("A)$C,'C-(A+#D*#D( F+#C)"B)"C*%B)%?'#?'#@($=%B'!R6.U90F,$9"4!-/ +), - - -  / .--07!>'C,!75 4!4"5#8$:% ;&!<'!<'!=("?)#@*$@*$A+%B*%C+&D+&D+&E,'E,'F-(H/*G0(H1)G/'D,$D,$G.&F-'A+$6 ;$@)!?'F,$H-&I.&L0(M0(K/'T80N3*K0'J0(G0(A+#A-$:&;(!:' 8&8'9(!8&"5"6$ 5# 4#5$7&6#5"6#6#5"5"9& 6#6"7$8$8$9%;' ;' :&9%:&<(!;' 5!8$8$;' ;' 9%7#:%7#:&:&8$8$:&;&;' 9%8#8$9%:&;&;'9%;' :&:&:%8$;' =)":&:%9%:&;'8$9%9%9$:&;&:%:%9%;&<(!;' :&;&<(!;' :&:&:%9%:%<' ;' :%<(!;' 9%9%9%:&:%;&<' <(!;' :&<(!<(!;':%;&<' <(!;' <( <' :%8$:%;' ;&8#9$:&;' 9%6#4"2!.(#/4]D+#=*!@+ C- B,B+ C,"D,"C,"F.&E-%D,$D,$E-%E.%E-%E.&E.&E-%D-%D-%D-%D-%B+#>( ='>(!?)#>)#;("9& 7%7%7%7$6$5#3!1 5"4!10/../ - - $(-14!6"6"6"9%;' 9%:&:%;&;':&:&;&=&?'!>(!>)!<' ;&;&;&<' <' <( >)">)">)">)">)">)">)">)"?)"A)#@(">& >& ?'!?'!?'!>& >& =%>& @(!@(!?'!?'!@(!@("@("A)"@("@("C*$G-(H.(G-&G,%G,%G+$G+#F*"]A8wZQfI@H*!@%9&6$4!332335 :$:$9#9#:$:$;% <& =& >& >& >& >& >&>& @(!@("@("@("A)"A)#B*$A)"@("B*$B*$A)"@("@("A)"@(!>& >& @(">& <$;#=%=%>& ?' >& =%>& =%>&A)"A)"@("@(">& <$;#:":";#=%?'!@'!>& =%=%?' @("@("@)"@+$=)!8$6!42322 3!1 03!7$;' <& ?'!A(!D(!V92rSMkLFN/)F'!F)"E)"B)"A)">(!:&9%9$8$7"7"7"8#8#8#9$:%:%:%:&:%9$9$9$:%:%9$9$8$8$9$9$:%8#7"7"6!7":%;&8$6"8#7$6"4!3 223 4!4 33 2 11/+)'&%#   *,,/5 D.'_H?^G=L5+8 211 1!2!3"4$7%8&:&<& ='!?("@)#A+%A+%C,&D-'E.(E.(E.(E.(F/(C,&B*$C,&D-'E.'E-&D,%C+$C*$B+$@*#>)!<( ;' ;' :'7#6#6$4$1#0"0"..# &'),/ 14 8%8$8$:& :& 9%9%;'!>(#>)$;& ;&!;&!:$;&!='";& :%:&:&;' <( :&8#8#:&<' ;' ;' =(!>)";' 8$;&<' ?("A*$A*$A*#A*$B+%@)#<' :' ;' <(!<' ;' @,%=)":&<(!>)"<)";("=)#=)#9& 9& :& 9& 8%7$:& 9& :'!:'!8%7$7$8%8%;' :%8$9%:&<' ;' 9%8$7#:&=)!=)";' 9%8$7#7#7#6"6"7#8$5"3 4!5"7$8%5"5"3 22220,.127!6 7!<)"8$8%6#5#7$=(!D-%J2*N2*K0'L0(I.&G/%F/&D-%@)#=' <' :%48$;(!>*"@+"B+"C,$G/'B*"@)!C,%A+%?("A*$C+&F-)C)#B("E*#G+$D*#@'!=(!:'!9&"8'!=,&<+"9%8#9#7 45 --*)+  / -,,./155 121 3"7$9$9$9$:% <&!>(#?)$?)$@*$B*%A)$B*%D+&C*%A(#B)$D+&F-'E.&E-%B+"B*"F,%G-&D+%B)#6!;&@( B)!E,$G.%J/'M1)O2*Q3*S5,L1&F* H/&D-#?) ?*!;&=*#;' 9'8&7%5#3 4"7%!5$6%5$214!6#6#7$7$6#6#6#8$7#8$:%<(!=)"<(!<(!=)">*#;' 8$7#:&:&9%:&;' ;&>*#=)!:&;' ;' ;' <(!:&9%:&;&:&;' =(!=)">*#:&;&9$8$<' >*#:&:&9%;' :&8$;&:%8$:&9%9%:%9%:&<(!:&;&<(!=)"=)";' =(!<' ;&;' <( ;'9%=(!=(!;' ;&;';&;' <( =)">)";' ;'=)";&9%<' =(!=(!=)!<(!:%8#7#:&8$;' =)":&9%=)!<' 8%6$3"/+&"-:!ZB9cMCR<3B+#;#:#:$='@)#>'!?)#A+$A+#B+"C-"C+"C+"D,"D,"C,"F.&E-%D-$D-%E.%F.&F.&E.&F.&D-%D-%D-%C,$B+#@*"?)!>( ?)!@*$@*$>)#<'!9%7$7$7#6"5!2/.21/..-   $)/234 6"8$:&;( <' <' :%;';&;'<' <&=%=' =(!<':&;&;&;&;' =(!=(!=( =(!=(!=(!=(!=( =(!>)!@)"A)#@(">& >&>& =%>& >& ?' @(!@("A)#A)#?'!?'!@("@(!B(!C)"B(!B("D*$G,'G-&F,%F+$F,%E+$F,%E+$O5.Z@9P60B(!=%6#3"3!223324 6!7"8#9#9#9#:$<&!=&!>& >& >& >& >& ?' ?'!@("@("@("@("A)#A)#@("?'!B*#B*$@("@("?'!?'!?'!?'!>& ?'!?'!=%=%?'!?'!>& >& =%;#<$>& @("A)#C*$B*#A)"@("?'!>& >& =%<$<$?'!@("?'!>& =%>& @(!@(">(!=(!:&6"4 3111110013 5":%?'!A(!E)"Q4-hICiIDP0+F& F("E)"C)"A)#>'!:%8$9$8#7"6"6!6!7"7"8#8#:%;&;&:%:&:&9%9%:%9$9$9$:%:%9$9$:%9%9$:%;';&:%8#7"7#8$6"5!4 223 5"5"5!4!2 10.,**(&%"  -+/ ./15 B+$B*"7431 11 3!4#6$8%8&:'<&!='!>("@)$A+%B,&C-'C-'D-'F/(E.(E.(E.(C,&A*$A*$C,&D-'D,'C+&C*%B)$A*$@)#>)#<)";(!8&:(!9'!6%5%5&3%/#0#.-3"&***/4#5"9& 7$6#8$8%8%:' <)#;% =(#:$;&!='"<'"<'">)$;&!:&=)">*#:&7":&=(!;' 9$;' <(!;' <(!?+$<(!7#<' >*#A+$B+%A*$@)#@)#B+$@)#='!;' ;' ;' <' =)"?+#=)":&;' >*#<(!<)#>+%=*$:'!9& ;(":'!8%7$;(";(";(":'!9&:& 9& :& 9&;' 9%9$9%9%:&9%;' 9%7#9%<(!;' :&<(!:&8$8$8%6#3 6#6#5"3 3 5"6#5"4!4!4!3 2201.-1 118!48$312 5"7%:& B+$H1)M1*K0'J/&J.&G.%E.%D-$A*#>(!<& :%6!:%;'!<' ;' >( @( D-%E.&B+#B+$E.(A*$B,&C+%E*'E)%C("C("E*"D)!A(!@*#>*$<)$:(#9("9(!6%8$9%6!6 6 0))(+-   / .-,-/04 20/1!6%!:% 8#8#9$;& >(#@*$@*%@*$A)$A)$B)$C+&D,'C*%@'"A(#D+&G/(E.&C+#D,$F.&F,%E+$D*#4 9%>( A)!C+#F-$H.&K/'N2*O1(O1'N1'N2'P5*ZB8I1'B+"?( =( =)"=)":' 9&7$5"6#7$3 2 5"6#6#6#6#9& 7$7$6#6#6#7#8$9%8$8$:&;' 8$7#6"<(!;' 9%:%:&:&9%;&:&=(!?+$=)"<(!?+$>*#=)";' :&;&=(!<(!;' ;' =)">*#=)";&=)"9%8$;' <(!:&:&9$<(!9%:%;' ;&:&:&8$:%;&:&;&;' :&<' <(!<(!<' <(!?*#?+#=)"=)"=(!:&:%=)!=(!:&:&;' ;' ;&<' <(!=(!;&=(!<(!9%9$=)"=(!:&<' =)!;' 9%<' @,$8$;' =)";' 9%;&>)"6"6"4#.'#",3A) I3*B+"<$:":#;%=' @*$?("@)#@*$A*#B+#B+#D+&D+$D+"C+ B) C*"E,%E,%F-%F.&F.&G/'F.'F.&G0(G0(E.&B+#@*"@*"A*#@*"?)!?(#?(#>'#<&!9#8"7"7"5!5!5"4!220/0-+ -  !%*02236"9$:%;&<& <' >(!=(!>)"<( :&=& >& <&:%;%;&;&=( >)!=(!<' <' <' =(!=( <' <( =(!>)"@*#?("?'!?'!?'!?'!?'!>& >& >& ?'!?'!@(!@("@("?'"?'!>& >&@' A' A' B' C)"D+$E+$E,$E,%E,$E,$E,$B*"D+$F-&C+$@("='!7$3"2!1 1233 3 35!7#8#8#9$:$:$ <% >' ?' >&=%>& ?'!?' ?'!?'!@("@)"A)#A)#?'!?'!A)#A)#@("@("@("@("@("@("?'!@("B*$>& =%@(!@)"?'!>& =%;$<$>& @("@("A)#@("?' @("B*$@("?'!?' >& >& ?'!@)"@)"@("@("A)"@(">& <%9$8$7$7#7#7#6"4 2/001 3!5";%A)#A("D)"F*#N/)P0+K+&H)#G*#G+$E+$C+%?)";&9%8#8#8#8#7#7"7"7"7"9$9$:%;'<' ;':%9$9%;&:%8$8#9$:&:%9%9$8#8#8#8#8#9$:%:%:$:#:#9$8#6 56!7#6"5"5"3!1/-,+++)'$   "%'.///4024!1!1 1!2!4#6%!8&!9& 9' <& ='!='!?)#@*$B+%C,&D-(E/)C,&E.(E.(D-'C,&B+$A*$A+$B+%C*%B*%A)$A)#@)#?)#?)#>)#>*#8&9' 9' 5#2!2!3"0!1".-1 %),.// 8%:& 7$6#8$9& 9%9%<("<'!=(#='"=(#?*%?*%>)$@+&;% <'!=(!;' ;' >*#@,%9%7#=(!>*#<(!;' <(!?+$<(!:&<(!>*#?*#C+%C+%@)#@("A*$@)#>("<(!=)";' =)"=)">*#>*#<(!9%=)"=)"=)">*#>*$=)"<("=)";'!:&;' <(!=(!<' ;' :&:&<(!<( :&:&<' ;' <(!=)"<(!:& <(!=)":&:&>*#>*#<(!;' ;' :&8$8%7$6#6#8%7$4!5"6#5"6#6#6#6#4!25"221!/!/ 3 .6534 4 25"6#7$>)!E.&J0)L0'I.&J-%H.%E-$C,#A*#?)"='!;%9$09$<' =)!>( ?'A)!F/'C,$B+#E.'C,&B,&C+&D)%E)&E)#D("C' B'B("@+#>+$<*$;)$;+$5&5%8(:(7$333+))*,  -++*+.032 0-/ 4"8$7"7"9$;&!=(">(#?)#?)$A)$A)%C*&D,'E,'D+&C*%D+&F-(G/'@)!C+#G0'G.'D*"E+$G-&5!;&A)"C+"E,$G.%I/'M1)P4,P2)O1'N1'X<1eJ@eMCL4*C,$=&;&;' :' 9&8%5"27$9& 6#6#7$7$7$8%8% 9& 9'!9& 8%9& 7$5#7$;("9& 5"9& 7$7$;("8$:'!7$:& :& 9&:' ;' :&:&=)">*#=)"=)">*#=)"=)";' :&<(!=)"=)"<(!<(!=)">*#<(!<(!?*#:&:&<( :&9%:&;' <(!9%;' ;' ;' <(!;' :%;' ;' ;' <' ;' ;' <' <' ;&<' =)">*#>*#=(!>*#=)";';' <(!;'9%:%<(!=)!=)!=)"<(!;&>)">)"=)!<(!<( <(!<' ;&<(!=(!<(!;' =)"@,%8#<(!>*"<' 9%:&<(!203#/ (%--/16 8!8!9!;$<&=&='!?("@)#@)$A*#B+#C,$E,&E,%F.$E-#C*"B)"D*#E+$F,%F,%F-&H.'I0)I/(F.&F-&D+$A)"@(!@)"A+#A*#>( <% <% <% ;$9"8!8"7"6!30-07#6#0/,+  -! %(,/135 7!9#:#<$=%?'!A)"A*#?("=(!<)!:':%<%=%=%=%>& ?'!?'!>' >& ?'!?(!@("A)#@)"?(!>' >'!@("A)#@(">& =%>&>& >& >' ?' ?'!?'!>' >& >' ?'!?'!?'!?& >%?&?& @' B)"C+$D+$D,%C,%B,$B,%A+#?*"@+#A+$@*#>)";& 7#4"3"2 /.24!5!4!5!5"7#8$9$8#7!:#>& >& <$<$>& >& =%>& ?' @("A)#B*$A*#@("?'!A)#@("@(!@("A)#B*$A)#?'!?'!B*$B*$@(">& @("@)"?'!>& >& =%=%?(!@("A)#@(">& <%>& @("@)"@("?'!?'!?'!@("@("?'!?' ?'!?'!>& <$:#9#8$8$8#8$7$5!30-./2 3!4#8&;(!>)#A*#D-&E,&F,'G-(G-(E,&C+%B*$@*$='":%9%9%;&:%8$8#8#8#9$8#:%9$9$;&<( =(!;&9$8$;&:&9$8#9$:%:%9$8$8$8$9$9$9$9%:%9%:$;$;$;&;' 9$8"6!5!5!5!6#3!2 10/-,-+(%! -  -)+-*.,/.05"1!1 1!2" 5# 7%"8&#:&!:& =' ='!=' >(!@*#B,%D-&D-&F/(D-%F/(F/'D-%D-%C,%B+#B+#B+#B*$B*%A*$@)#@)#?)#?)#@)$@*$;'!9' 8& 5"12 100 0 /1 &+...3$5#8$8%8%:& <)#;("9%<)#>)$?*%@*%>)$A+&?*%?*%@+&=("=(">*#<(!=(!@+$>*#>*#<( ;' <(!:&:&=)"=)"<(!=)"?+$>*#<' ?("A*$@)#?("@*#A+%@*#<(!=)"<(!<(!?*#@+$=)":&=)">*#?+$>*#>*#?+$>*#>*#=)"<(!;' :&:&;' <(!:&;' 9%8$9%:&;' =)"=)"=)">*#=)"<(!=)"@,%=)"9%8$;' <(!;' ;' <(!8$8$6#7$7$7$8%5"7$5#6#7$8%6#2 4"3 4!4!3 2!0!-3!047 7!8$7#5#4"3!4":& B+$G/'L/'I.%H,$H-$F-$C,#A+"A*#?)"<& 9$36"9%<' <(!>'?( C,$D-%C,$D-&D.(C,&D-(F,'D(%C(#C'"B' B'C)"A+$<*!;)#8(":*$8(!5&7'8(6$2/1/-+*),   -,**),./13#3$0# /"5#7"7"8#:%;& ;& <& >'"@(#B*%B*%C+&C+&D,'E-(F-(F-(F-'C+#?'C,$F.&A(!@'C)!A'6"<'B*"C+#F-%H/'L1)P4,Q5,O2(M0&J.$eI>oVL]F*#=(!;' <(!<' :&?+$=)!;' =)!>*#=)"=)"@,%;' ;' >*#?+$<(!;' =(!<( :&;' <(!;' 8$<(!=)!:&;' ;' 9%<' :&=)!=)"=(!<(!=(!>*#;' <(!>)">*#>*#=)">*#=)";' =(!<(!:&:%;' =(!>*#=)"<(!;&:&@+$<( ?+$B-&@,%>)"=)"=)"9%<' >*#;' :&<(!9%<(!;' ;&<(!>)";' 4 10 ,'#$ 15458!8!8!9#:$;%='!?)#@)#A*$B+$C,$E-&F-'G.&G/$G/$F,$E+$E,$F-&G.'G.'G.'G-&F,%F-&G.'F-&D+%B)"@(!@(!A)"@(">(!9) 9( =% ;$ 9#8"7"7#7"5 48$ E0,O;7F3/0,.,  $(+-/3 7#7#8#9#;#<$<%=%>' @(">(!;' :&8%;'=' ?'!@(!@("A)"A)#@("?'!?'!>' A)#B*$A)#@("@("@("@("?'!>' >& =%=%>& @("?'!?'!?'!?(!?'!>& =%>& ?'!?'!?'!?'!>& >& ?'!@("B*$D,&D,&C,%B+$@*#@*#A,$@+$@+$@+$>)!<' 9%5 42 1 .-034 5"5!6"7$8%8$7"7":$=& =%:";#=%=%<$=%>& ?(!A)#B*$B*$@("?'!A)#@(">' ?'!A)#C+%A)#>& @(!D,&C+%A)#?'!@("A)#?'!?'!?'!>& =%@("@("A)#@("=&<$>& ?'!A)#A)#?'!>& ?'!@("?'!=%;#<%>& <%;#:#9$9%9%8$8$7#3 1/,-03 5"7%:(!=)#>)$C,%D-&D+%D+$D+$D*$C*$C+$C,%A,%?*#;'!:& :&;&:&9%9$9$9$9$9$:%;':%9$:%<'!;' 9$9$:%:%9%9%9%9$8$8#7#9$9%9%9$9$8$8#8#8#;$:#8#8$9%:$8#6"6"7#8$4"0//.-+**('#   - (')-,-../12"2 2 3!6# 8% 9&!;&;&>(!>)!?)!?)!@*"C-%D-%B+#C-%G0(G0(F/'F/'F/'E/'D-%D-%D-%D,&D+&B*%A*$@)#?)#?)"?)"?)"=(!:&:%8"3>(!E/(?)"7!31.',0!1!1"2"6$:' :'!8%8%;(";(":& <)#>*$>)$@+&>(#=(#=(#<'"?*%@+&>)#<(!A-&@,%?+$;' ;' ?*#=)";&:%;' =)"=)">)"?+$>*"=)";' >)"A-&@,%=)"?+$@,%?+$=)"=)"<(!=)"?+$@,%@,%=)"<( >*#@,%?+$?+$?+$?+$>*#=)"<(!<(!;' :&<(!<(!:&;' <(!=)"<(!:&<(!=)"=)"=)"<)"<(!:&=)"=)"=)"<(!:&:&9%9%9&:&:&9%8$7$7$9& 4!5"7$7$6#7$6$7$:'!9'!4!1223 .+/2354;(!8$6#5"4!5"8%?)!C,$H-%H-%G,#G,$G.%D-#B+"B+$@*$='!:$6!29%;&:&<&?'@)!B+#B+#C,$D-'D-'E.)F/)D+'@&"A& B(!B' D*"C+$>(!;(!8'!7& :)#7&9&7#9#:#7 30/ ++)*  .++++.//01!2#2%!4% 7#8$;&!<'"<'!;& ;% =&!A)$A)$B*%B*%A)$A($C*%F-(F-(E,'C,%C,$D-%E-%C+#C)!D+!D+!28$>( B*"D,#F.%I0(M2*R6.O2)L/%I,"O4)qUJqYON7-C,#B+#@*";(!9&<*#9&6$8%;("9'!7%7%7%9'!9& 7$9'!6$9& :'!9& 8%9'!;(":("9& 7$5"6#:'!7$7$7$9& ;("<)#<)#7$:' <(!<(!;' <(!=)">*#>*"=)"?+$?+#<(!>*#>*#<(!=)"<(!:&;' @,%9%=)"@,%?*#<( :&<(!?+$<(!?+$<(!9%9%:&7#;' >*#;' 9%:&:&>*#>*#<(!;' ;' =)!;' <( >*#>*#>*#>*#>*#<(!:&<(!<' <' <(!<( <(!;' <' :&8$9%<(!;&?+$B-&@,$=)"=)"<(!8$:&=)"8#9$:&;' =(!8$;' =)!;&7#4!2.., $(16568":"9!8"9";%?)#A+%?)#@*$B+$D-&F.(G.(G.&G.$F.$D+#D+$E+$F-&H/(J1*J1*J0)H/(G.'G.'G.(F-&C+$B)#A)"@(!>&;&8(8(=$ ;$ 9#8"5"3"2#5#5 E*#V:3\B'!>&!>& >& =&=%>& ?'!?'!>&!>& =& =&>' @)"B*$C+%B+$B*$B*$C*$A)"B+#A)!A*!B+#@) <&9"4210//134 5!5!6"8$9%;&<& =& >'!?(!>& ;#:#:#;#>& ?'!>& >& >& ?'!@("?("?'!@("@("B*$B+$B+$C+%A*$?'!A)#D,&C+%@)">' @("A*#@)"@("?(!>& >& @("B*#A)#?(!?'!?'!?'!?(!A)#=%>' ?'!?(!>& <$=%>& =& <' ;'<' <' :&9%9$8#6"5!4!4!3/.13 6"9$<& >'!?'"C)$E*$H-%J.&F+#D)!C)"C*#C+$A,%?+#<(!9&:&;&;&:&:&:%9%:%:%;&<' ;&8#8$;';&8$8#9$9%9%9%9$8#8#7"7"9$;&:&9%8$8#8#8#8#:$;#8"6"7#:$:$7#6#8$9%6$3!2 10/.,,)&#   ()&().11023!2 2 3"5$ 8&!9'!<&<&>(!?)"@)"@)#A*$E.'E-'B+$D,&G/)G/)F.(E-'E-'C+%C+%B*$B*$A*#?+ =)@,"B/$A+"?) ?(>'>&>%;!:4L1*^D(#A,'A,';' ?+$A-&@,%>*#>)"?+$8$>*#>*";' <(!?*#@+$@,$>*"=)">*#@,%@,$<(!:&<(!@,%=)"=)">*#>)"<(!>*#?+$?+$>*#>*#?+$?+$<(!?+$>*#=)"=)">*#<(!;' =)";' :&;' ;(!;' ;' <(!?+$;' :&<(!=*#=)"<(!=)"<(!>*#=)"<(!<(!<(!=)"@,%=)":&9%8$7$9%8%9& :'!5"4!6#7$5"7$8& 8& 7$6#6#2 3 3 1/,-2 149"K6/S@9I6/9& 6#5#6$;&@*"E,$G+#F+"F*"H.%E.$C,#C,$B+%?)#;%8#1:& ;' :&:&?( @( @)!A*"B+#B+%D-'E.(E.)C-'>'#?(!A)"B(!B) B*"@)"<' 9(!4#7& 7&9&8#<%J2(N5,E.%4.++++.    0!!,),/1148 599 8!7"7#9$9$8#:$='"@)$B*%A*$@("B*$B*$A(#B(#D*%F,&F,&C)$A)"F.&E-%B*"B)!D+#E,"B)5!;&A)"C+#E,$G.&J0(M2*Q5-O2)M/&H,![?4oUJfNEB+!@*"A+#?*#<)":& 8%6$8%9& 9'!8& 7$9& 8%:'!7$6#7%8& :'!;(":(":'!7$4!5":'!9'!9& 9'!9& 7$8% :'!<)#<)#=*$;("8%9&9&:&8$9%<(!>*#=)">*#@-&@,%@,%?+$>*#;' >*#>*#<(!>*#@,$=)"?+$B.'=(!=)"<(!<(!>*#:&>*#>*#>*#>*#=)";' >*#?+$;' 9%:&<(!=)"=)";' <(!=)"<(!;' =)"A-&>)"<(!>*#>)";' :&<(!<(!=)"?+$>*#;' :&;&9%:&:&:&;' >*"?*#?+$<(!<' <(!<(!;' <(!8$<' <(!>*#>*#;' >*#?+$=)"9&7$3!..-" #-/6657 ;#=% ;%;%='!?)#@)#>("@)#B+#D.&G/)G.(G.&F.$F.$D+$E,%E,%F-%G.'H/(H.'I0)F,%G.'G/(G.'E-&D+$C+$B*#@(!=%:%9(8'<#:#9"8!5!2"1!02O3,aC;_C;K1*0(*/ #').4"7#8$9%:& <&!<% <%<%=%>& @("?'!<' <' <(!<'!=(!A)#A)#A)#@("@("@("@("A)#A)#@)"B*$B*$A)#A)#A)#A)#@("?'!>'!>&!=& =&>& ?'!?'!>&!>& =%=%<$<$=& >&!=% <%<%<%=& >' @("B*#B*$B*#B*"C+#E+$C*"B) @'A'B(A&@&=$8#41001234!5"5"5"6#8$:&<&?'!>& =%>& =%=%>& >& ?'!?'!?'!?'!?'!?'!@("@("?'"@("?'!?'!?'!@("A*#@)#?'!?(!@)"@("@(">'!@("A)#@("@("@("?'"?'"?'!@("A)#A)#A)#A)#?(!=%>& =%>& =%=&?'!?'!?'!?'!=& <' <' <(!<(!<' ;':%8#7#8$6"3 1/.14!7":#<#?% @%D'!H+$T70_B:U90G+"D) B* B*"@+">*";( 9&:&<' <' :&;&:&:%;&;';&;&;&9%9%;&:&9%9%:%9%:%:%9%9$8#8#8$8$8$9%;&;&;&;&;';&;%:#9#7#7#8#9$8$6#7#7$6#4"3!2 10/.-*''! ')'+--.00434 5!5"7#:$9#;">%>%=&!?(#A)$C+&E-'F-(F-(G.(H/)H0*I0*I0*G.(D+%D+%C*$C*$B+#?+ <(?,!B.#B-#A*!@) ?(=&;"="; 9P4-jMFfJCI-%8024!/ 2#1"0!1"3#9& ;("8%;("?+&?+%;("9%;'!;&!?*%?*%>)$>)$?)$>)$@+&@+&>)#>*#?+$@,%@,$=)"A-&=)"=)"A-&B.'>*#=)"A-&>*#?+$?+$?+$@,%>*#A-&A-&>*#@,%@,%?+$>*#>*#>*#@,%?+$?+$>+#=)"?+$<(!<(!>+$?+$>*#=)">*#>*#<(!<)"<(!<(!<(!<(!<(!?+$=)"=)"=)":&:&?+$;(!<(!;(!>+$?,%?+$>*#<)"<(!?+$>*#<(!;'!;' :& >*#=)"9& 8& 8& 7$4"7$6$5#7$8%6#4!3!3 0023 4"2$!0"2 219"N91hUNeQK>,%8%6$6$:&@)!C,$G+#D*!F*"H-%G.%D-$C,$C,&A*$<& 9$5 ;& <("<(!:&>' @( >'?( A*"A*"@)#D-'C-'?+%>*$?*$A*#A)"A) @'?(!>(!;& 7#7"7"8";#7T7/bD'='>*#>+$<)":' 9' ;("9& :'!9&!:'!:'!9& ;)#8%8%;(":'!6#6#8%;("9& 9& :'!9& 9& <)$;("8%8%9& :'!=*$;)#<)#:' 9&9&:&9%:&;' =)"?+$?+$<(!?+$?+$A-&@,%=)"<(!?+$@,%@,%A-&@,%@,%A.'A-&;' A-&=)">*#>*#=)"?+$>*#;' ?+$?+$=)"=)">*#;' :&=(!=)";' 9%;' =)"=)"<(!=)"?+$A-&=)"=(!A-&>*#;' ;' ;' ;' <(!?+$@,$=)!:&:&:&>*#?*$<(!<'!=(">*#A-&=)"=)!@+$>*#:&:&:&@,%<' =)">*#>*#>)":%9$6"7#3"/ /!,!$/5B*!@) 8!7 ;$>'!=( >( >("='!>'">("?)"A*"C,$F-(G.'G/&G/%G/%H/(I0)I0)H/'G.'G.'G.'H/(E,%G.'H/(F.'D,%C+$C+$C+$A)#?'!;'8'8&<"9"9!7 3 1!0 /1\@:gKDZ?7A(!.)(3   %(+1!7$9%9& :& :% ;% <& >'!?'!>& >& >' >'!=(!<(!;' ;' >(!?(!@("@("@("?("?'!?'!@("@("@("A)#A)#A)#A)#A)#A)#A)#@(">& >' ?'!?'!?'!?'!?'!>& =%=%=%=%=%>& >'!=& =%<&<&=' >(!@)"A*"B*"B*"B)"D*"F+#I.%L0&V:0]A6W;/L0$D(>%7!4 100124 5!5"5"5"6#8%9%;$<%=&>'!?'!=& =&>& ?'!@)"@("?(!@("@)"@)#A)#?(">& @("@("@("@("@("@)"@("@("@("@)#@)">& =%@("B*$@)"?'!?'!>'!?'"?("?'!?("?(!@("A)#@("=&=&=& ?(!@("@("?'!>& >& ?(!?(!<' <' <(!<(!;&9$9%:%9%9%7#4 1/.13 5!:!7@% >"?#H*"_A9wYPbE' @("A)"B+$D,%E-&G/(H0)I0)L3,I0)K2,H/(F-&E,%D+%D+$C+$>,;)>+@. @- ?*?)@)=';!?%>#< L0'mOGmOGJ-$<010.2#3$3#4#6$ 9%<'">)#>(#>)$?*%=(#<'">)$='"=(">)$?*%?*%A,'?*%=(#;&!>)#?*#=)"?+$@,%>)"@,%A-&@,%@,%B.'E1*>*#B.'@,%?+$?+$?+$A-&@,%?+$A-&A-&@,%@,%C/(@,%;' ?+$A-&?+$=)"A-&;' <)"=)"@,&A-&@,%@,%?+%>*#>*#>*#>*#=*#<(!;' =*#<(!=)"<(!<(!<(!:&:&>*#=)";' :' =)"?+$>*#?+$=)"=)">*#=)";(!9%8$9%9&;' :' 8%8& :'!7$8%8%7%8& 9& 7$6#6#4!2015"6#0!0" 2!3 12D.&kWPo[TQ>7;)"6#5#8%?)!D.&I/'I.&J/&K0(I0'F/&E.%B,%@*#='!:%6!2<)#>*#<)!=' ?'?'=%@)!A*">(!A*$A*$?*$>+%?,&>+#?)!A*!?) ='=& <% 9":#7 695I,%dE=fIAT>52/./ --  ,),00;"X=5fMD]D=?& :!:"9#9% ;&!:& 9$:$=&"@)$@)$?(#A*#B*#D,%H/(K0*K0)J/(H-&G,%F,%E+$E,%F-&F-%C+#B*"A*!4 8$='A)!D,$G/&J1)M2*P4,O3*N1'J-#F+ X<2T<2K3*C,#@*"@*#>+$;' ;(!;(!<)#<)#:'!9& =*$<)#:'!:'!9'!7$8%9&!:(":'!:'!<)#?,&6$7$;(#;("9& 9& 8%7$7%7$9'!<)$=*$;)#9' 8%9&;(!<(!9&<(!=)"=)">+$?+$?+$B.'B/(?+$>*#>*#>*#?+$A-&?,%@,%A-&B.'@,%=)"D0):&@,%@,%@,%@,%?,%>*#?+$<(!;' <(!>*#=)"=)":&>*#>*#?+$A-&=)"@,%>*#?+$B.'@,%;' >*#C/(@,%=)">*#@,%?+$=)"9%=)"<' <' =)">)"?+$B-'<'"9$9$;&!>)$?*%;& <'";'!:&:& <(!>*$:& ;' <(!;' 9%:%:&5!7$5% 1"/"-! /2D,#X@8S=3A+!:#:#:$:$<&@*$='!?)#@)#?)"@)!A*#D+&F-&G/%G/%G/&G.'I/(J1*I0)H/(I0)J1*J1*I0)H/(H/(F.'D,%B*#B*$C+$B+$@)";(8'9%;!9!9 62 0 0 2 8$`E>aF>M2+8 -*( #&(-3"7$8%:' ;(!='"='">'!>& =%>'!A)#?(!:">*"B.'=*"<( >(!@("@("A)#@("@("A*$A*#>& =%@("C+%A)#?'!B*$B*$@("@("?("?(!@("?'!?(!?("?'!?'!?'!=& =%>& =%=%?(!?(">' >' <&:%<( >)"?(!@( B)"C)"B(!D)!F*!C'D(lPC}`TZ>2F*B&=$5 21//025!5"6"7#6"6#9%:&;%=%>'!@("@(">'!?'!@("?("@)"?("?("@("@("@("A)#@)#?("C+%?'!@("A*#A)#@("?'!?'!@("?("@("=%<%@("B*$A)#?(!@(">' @)#A*$?'!>& >& ?'!A*$D,&@)"A)#?("@("?'!?("?(!>'!?'!@("?(!=(!<' <' <' :&:%;&<(!;' 8%6#5!3 1.14!4!:!:!A& @%@#G*"^@8xZRfI@E)E) A(A*@,"=*!;&:';( <(!>)"<(!;&9%9%;&=(!<( <(!;' :&;&;' :&:%:&;&;&9$<( ;':%:&:&;&=(!;' >)"9%9%=(!<(!;' <' ;&=%;#8#8%;& ;% 9%8$7#6"6#6$5$4"4!2110,**$! )(*)/C.$O8/I3*9$3345 5!6"9$:#;#>$@'?(!A)#C+$C+%D,%G/(I0*H/(I0*L4-I0)J1+I0)F.'E,%D,%D,%D+%?,<*<*>,?,>)=(>'<%9 =#=#; E*!nQIjMEJ.&:40+0!3$5&!6'"8&":($=($?*%@+&?*%<'"<'!>(#>(#?*%>)$='"=(#>)$@*%?*%>)$A,'C.)B-'?+$?*#A-&@,%B.'C/(B.'@,%?+$>*#?+$A-&E1+D0)@,%?,$@,%@,%?+$>*#@,%A.'?+$B.'B.'?+$<("<)">+$@,%=)"C0)?+$?+$>*#;(!<(!>*#A.'>*#<)"<(!=)"?+$?+$=)"<(!<(!;' :' <(!>*#?+$8$=)">*#=)"<(!;'!:& ?,%>*#>*$=)"=)"=)"<)">*#<(!:&:' :& :&:& 7$9'!7$;)#;("8%7$9& :'!8%7$5"3 3 5#2 5#3!1!1# 2#2 21<&^IBq]VaNG@-'4"3!5";&B,$H0(K/'I/&L0(I/'F/%D.$C-%A+$>(";& 8#0<'">*$>*"<( =&?( ;$?( A*"?(!>'!@)#='!@-&?-'<*";'?) A+"?)!<%<& :#:$8"7 87<^A9fIA_G=B,#1.-*,0  1!..020F.%[B:bIAW=79 ;#8!9$:% :% 9$8#:%>'"?(#>&"A)$E-&C+$C+$F.'H.'H.'H-&J/(L1*F-&D+$E,$F-%E,%C,$C+#A)!4 9$>'B*"F.&J1)M3+P5-R6/N1(Q4*N2'O3)P6+H1'G0&>'?)!>)"<)";(!;)";)"=*$;)#:'!;(">+%9& 8%9'!:(";(#<*$<)#9& 6#8%:'!9'!8%;("=*$:'!9& 8%8% :'":'!9& ;(";(";("=*$>+$9&:' ;' =)">*#>*#>*#@,%@-&B.'B.'A.'A-&@,%?,%?+$>*#=*#>+$?+$?+$@,%=)"=)"@,%B.'>*#>+$?+$?+$B.'@-&>*#=)";' ;' <(!>*#?+$<(!7#8$:&=)"=)"=)"@,%@,%>*#D0)?+$;' =)"@,%B.'B.'=)">*#>*#;' 9%=)"<( ?+$A-&@,%>*#?*%=(#@*%='":% <'">)$<'"<'";'":'!:'!:'!:'!<)#=*$9& :'!=)#>+$=*#7&5#4% 1"/"-! 0 6 R91fOF_I@H2)=& :#9"8"<&B,&<& @)#@)#?)"?( @)!B)$D+$F.$G/%G.&F-&G.'H/(H/(H/(I0)J1*J1*I0)I0)H/(F-'D+%B*#B*#C+$B*$@(";(8(9$;!:!8 5 1 . -/8$S83M3,=#2,**'*,0#6$8%8%:& <("?*%@+&B+%B*$@("@)#C+%B*$=& ?*#B/'<)":&@*$B+%?'!@("B*$@("=& >& ?'!A)#B+%B+%B*$B+$C+%@(">& ?'!@)"A)#A)#>& @)"A)#>& ?(!@)#@("?'!?'!=& =%>'!>& >& >' >(!=(!<' <' @("C+#D*#B)"A(!B( D(D(K/$qUJ{_SY<0H, D(=%41000.03 4!6#;' 8$4 :&<' <%>' ?'!?'!>& =%@)#B*$?(!@("?'!?(!@("?'!@("C+%A*$?("B+%A)#B*$C,&C,%B*$A)#A)#A*$A)#A)#@(">& ?(!A)#@)"@)#B+$@)"A*$B+%?'!>& >'!@("B+$E.(A)#@)#?(!@("=%>& @)"@)"@("A)#>'!>*#<' ;&;&;'<( >)"?*#=)!5"5"6"4 1/14!5":"=$A' B'A%G*"]?7xZRkNEI-#F+"A)B*!A-#>*!:&:&:&=(!<(!<(!;&9$9$:&:&:&;' :%9$9%:&:&:&;&<(!;&9$;';&:%:%9%8$;'<( =(!;&<( =(!;';&<(!:%>& ;$8#8$9%:$9$8%8$6"5"6$5$5#4!3 2 3!2 .,+'$"&(*1N8/\D;YA8@(456!7!6"7#9$:$;#=$A(?(!A)#B*$C+$D,%F.'H0)G/(J2+K3,L3,K3,K2,H0)D+$D+$D+%D+%@+!=*<)>*?)='<&=';&:$;%;%7!B*!gOFeMDL3,9 53))5&7(#8)$9(#;)%?+&@+&?*%>)$>)$;&!>)$?*%@+&A,'A,'?*%?*%B-(B-(B-(C.)A,'>)#@,%?+$B.'B.'B.'C/(C/(C/(B/(>*#A-&C/(@,%@-&C/(@,%A.'B.'@,%>*#?,%A-&<(!=)"A-&B.'@,%?+$=)"A-&@-&A-&@,%@,%A-'=)";' >*#>*#<(!;' ;' ;'!>+$@,%>*#=*#<)";' <(!>*#<(!=*#?+$>*#<)";(!;(!>+$:' <(!?+$?+$>*#=*#=)"=*#>+$=)">*#?+$<(!8$:' 9& ;("=*$=+%;("7$5"7$7%7$6#4!113!23!3!0/!4&#.127!M81o\Uo\UE3,7%5#6$8%>( F/'J.&H-%J/'J/'G/&E.%C-$B,%@*$<'!9$44 =)#<(!<(!;%=%=&=%?'!A)#A)#@*$@*$@,$=,#;*!;) >(!>'!<'!<'"='#<'!:%7"7":#9 :P4,`D<`F>P9/6!02!.. 1!   /,-038!K3*]E'"?'#=&!C+%D,%B*$B*#C+$E*#D*#E+$I.'I/(F-&D+#D+$E,%D,$C,$C+#@) 5";%A*"F.&I1)L3*N3+O4,O3*O2(X;1O3(O4)K2(F/%A*!@)">( =)"<("<)"<)"<*#=*%<)#<*$>+%;)#8%9& 7%;)#<)#:'!:'!;)#:'"<*$:'!:'"<)$=*$:("8& :'!;("<)#>+%?,&;("=*$7$=+%@-':(!4":&;(!<)">*#?+$>+$>*#?+$B.(C/(A-&A-&A-&?+$>*#?+$=*#=)">+$A-&A-&=)"=)"B/(@,%>*#B.'D0)A.'B.(A-&>*#=)">*#=)";' @,%=)";' ?+$>*#=)";' <(!=)"?+$@,%>*#E1*A-&A-&A-&?+$=)"?+$@,%B.'?+$>*#?+$>*#>)"A-&B.'A-&>*#<'"=(#@+&>)$;&!;&!<&!<'"=(#>+%;("9& 9& :'!;'!9%8%:'!;'!=*#>+$:)"7&6'"4% 0$!.#!.9![C;jSJ\F=D-%=%;$:$9#=' @*$;%?(">(">( ?( @)"B)$D+$G/%H0&G.&G.'H/(I0)K2+K2+J1*K2+J1*H0)H/(F.'E-&C+$B*#B*#B*#A)#?(!;)8(:$;!:!9!6 0 . ,-4@% 9 2/)',!),.!1$7%9%9&:& <("=(#='">'!=& A*$@(">& @("C,%C.'<(!6#?+#B,%A)#?("A*$C,&?(!:#<$?("A*$A)#@)#B+%D,&A*$@)#A)#?("?(!@)#@)">'!A)#A*$>' @)"A)#@("@("?'!=&=%>'!=& =& ?'!=' ;'<' ?'!A)#B+"B*"B)!B)"E+"G,"F+"O3*sWL{_TV:/F*D(;#20/01.0326"<(!9&5":'<(!:#:"<%>'!=%:#?("@)#<$?'!>'!>' ?("A)#B+%C,&@)#>& B+%C+%B*$A*$A*$A*#@)#@("@("?'!?'!A)#?("?'!@("@("@("B*$B*$@)#C+%@("?'!@)"@)#A)#D,&A*$>'!=& >'!?'!@("@(">& >& B+$B+%?*#<' :&;&<( =(!>)"=(!<' 6#6#5"3 1/24!7$<%<#@& B(!A&E( V91rTLgJBK/&H,#C+!B+"B-#>+":&9&8%<(!;' <' ;&9%9%:&:&8$:%8#8#9$;&<( <' :&<' :&8$:&;&:&;&:&8$:%<(!<' ;&<(!<(!:&:%=(!9$=& <$9$8$8$9$9$8%8$8$6#6$6$5#4!4!5"6$ 2!0/-*&%!(*+.L6.\C:]E(='<&>'>(9#>(P;2R<4E.&8"41,+7(!7(#7(#8'":($>+&A,'?)$>)$@+&>)#=(#>(#<'"<'"C.)@+&@+&B-(B-(A,'C.)C.);&!B.'=)"?+$D0)B/'C/(D0)B.'B.'A-&@,%?+$?+$E1*?+$B.'C/(C0)C/)A-&?+$@,%@,%@,%@,&A-&B.'C/(?+$@,%@,&@,%@,%A.'>*#B/(B.(D0)B.'=)";' =*#;' =)"?,%?+$>*#>*#>*#=)"A-'>*#>*#?,%?+$=)">+$>+$=)":&;' =*#?+$?,%<)";(!=)#=*#=)">*#A-&?+$9%;' :'!8% 6$7%8% :(";)#8& 6$6#5"3 13!3 22 3!2 / 1# 4#3 28"@*"dPIiVOO=6;("6#7%6$;%B,$F,$F+#G,$J/'H/&F0&E.%C,%@*$='!;% 8#1:'!:& :' :&:#>&!>&!=% @'"A)$A*$@*$@+$=,":) :)=( >("='"<'!<'"<&"9$5!6"8"8!9 B' U:2]C;P9/8"0/.,.0    1-+/04>'O7-aH>bIBC,%56 8#8$8$8#8#9$<&!>(#?(#?("?' A)"B*#C+$D,%D,%D+$E*#E*#I/(G-&D+$D+$D+#B*"B+"A*"4!8$>( C,$G/'I0(K1)M2*O3,O2)Q3*R5+N2(Q6+I1'A* @) @)">)!=*#<("<)#=*#<*#<*$=+%>+&<*$<)#;)#<)#>+%=+%;)#:'!:'!:(";)#<)#7$<)#>+%<)#:'!:'!:'!=+%=*$>+%<)$:'!;("=+%A/)9' :(!<)"<("<(!;' =*#@-&@,%>*#?+$C0)D0)B.'B.'B.'A-&@,%A.'?+$<(!@,%E1*C/(=)"?+$B.'A-&B/(E1*E1*B.'A.'A-&@,%>*#>*#@,%=)"A-&=)"<(!>*#@,%>*#<(!>*#?+$?+$@,%B.'D1*@,%C/(E1*>*#<(!B.'A-&C/(@,%A-&@,%>*#?+$>*#B.'C/(>*$=(#@+&A,'>)$=(#?*%>)$=(#=(#=*$;("<)#<)":'!9& ;("?,&>+%:' =)">,%=,$:*#8)$8)$2'$0&$.=%cKClULT>5=':#9"8"9#=' ='!;%>("?("?(!@)!B*$C+%E,%G/%H0&G.&G.'I0)J1*L3,H/(L3,L3,L3,J1*F.'E,&D+%C+$B*$B*$B*#@)"?(!;+8(;#;!:!9!6!0!.,,0410/(&,$)-.!0#5#7#8%;'!=(#>)$?*$C,%E.(B+$?("?(!@("?)">*#<(!9%B.'>'!=& @)#C+%B*$?(!>' ?'!>& B*$B+%B*$C+%C,&A*$@)#A*$?(!?'!@("@("?("B*$A*$?'!A*$@)#@("@("?("=&<%=& =& =& ?'!<& ;%=& @("A*#A*#A*"A*"C*#E,$E,#C* L3)jQFqUJQ6+D)D):#2111.03 225"7#6#7$:' ;' <&>'!>'!?'!?("?("@("@(">'!>& @("B+$@)#>'!@)"@(">' A)#D,&B+%C,&B+%A*$B*$?'!>& @)#?'!=& A)#@)"?'!A*$C,&@("?("D-&?'!B+$?'!?(!C+%B*$?'!C+%F/)>'!B*$>'!=& ?'!?'!>& @)"C,&B*$<' ;' ;' <' =(!<(!<' :&:%8%8%6#20.13 9& ='!;$=% @'!@& A%H-$^A9T8/I-$H-$E,#C+#B,$>+";' :' 8%<(!<' <' ;' ;&:&;&;'7#:%9%9%:&;&;' ;' ;&<(!;'9%;' =(!<(!=(!<(!9$9$;' ;' :&;' ;' 9%:&>*#8$<%<$8#7#8$:$;&!8%7$7$7$7%7&6$5"6#5#7$ 3"2!1!/ -)'#'*)) B,%V>6^F>O7.7 8"6"5#5#4#5$7&7$9%>)>( ?(!A)#B*$B+$D,%F.'H0)H0)I1*L3,L4-H0)I0*G.'E,&E,&D,%C,%A,$@*"A*#?)"=' =' =(!<)!9&5#7%5#2 3#4$/ / /..,7(!9*$:+&;*&;)%=+&B-(A,'C.)B-(@+&@+&A,'?*%:% A,'B-(?*%?*%?*%=(#B-(D/*D/*D0*B.'B.'F2+E1*H4-F2+A.'A-&C/(B.'D0)B/(C/(C/)C0)C/(C/(D0)D0)A-&B/(@-&?+$B.'=)"C/(D0)B.'A.'A-&?+$@-&C0)A-&>*#=)#@-&C/(A.'=)">+$:&<(!@,%?+$>*$@-&B.(?+$?,%@,%@,%B.'@-&>+$?+$>+$>+$?,%@-&A-&:&A.'=*#:& ;'!=)":' ;' >*#?+%;(!;' <)"8%9& ;("8%6$7$7$6#7$4"4!4"5"4!2 23 2 -*.5"7%9#<&N92XE>O<5;)"5#7%6#:%@*"E,%G+#F+#I.&J0'I1(G0'D.&@*$>(!<'!;& 39& 9& 8%:' :#=& >'!>&!?'"A)$@*$?)#A+%?*"<( <'<&>& ?%!>$ =$ <% 7$4#5$6&5#6!5@) I2)E.$9"/./,-0   -+,//3<'N7-X@8O718#.6"7"7#8$9$:%;& ='">)#?*$@)#@("A)#B*$C+$D+$E,%F-&F,%F,%G.'D*#C*#D*#B*"A*"B*"@)!5!:&A*#E-%G/'I0(K1)N2+P4,Q4+Q4*Q4*P5*M3)G0&G0&C-%A+#@+$>*#<(">,%=+$9' :'!;)#<*$?,&>,&;)#;(";)#;)#;)#;)#9&!6#8%:'!:'!<*$=*$;("<*$<*$<)#?,&A/)<*$=*$<)#:'":(";("9& =*#=*#;' ;' >*$>+$@-&A.'@,%B.(E1*C/(A-&C/(F2+F2+B.'?+$@,%>+$?+$D0)D0)A.'A-&C/(>*#C0)E1*D0)C/(B.'@,%D0)?+$:&9&;' <)"B.'?+$@,%B.'@-&=)">*#@,%@,%A-&A-&?+$>*#?+$C/(;' :&>*#?+$?+$>*#?+$>*#?+$?+$<(!@,%?+$;'!=(#?*%?*%>)$?*%C.)@+%=(#<'";(";("?,&<)#<(">+%>+%>+%@-&;(!=*#=+$=,$:*$8)$7)$1&$/%#0D,$gOGjTKK5,;$8!7 5 8#;%<& <&!>("?)#@*"A+#C+%D+%D,#E-#G/%F-&G.'H/(I0*K2+I0)O6/K2+J2+I0*F.'D,%B*#C+$B*$@(!>' ?'!>( :*9(<$;":!8!5!/!-.-/21/,'%)'+- /"0"4!5"7$9& :% :% <&!@("A)#9"A*$F/)?("7!9%B/(@,%<(!;$<%@("B*$A*#@)"A)#@)#<%A)#D-'C,&A*$A*$B+%?("<%=%=%>'!?'!@("B+$A)#>'!B+$@("@)"A)#@("=& <%=& =& =& ?(">'!>' >'!@)"A*$A*#B*$B+#C+#C*#D*#E*"M2*cI?fKBP5+G,#F+!;$312 1-/24!3 5!8%8%:&=*"=(!>'!@(">& =& ?("A)#A*$A*$@(">'!?'!C+%A*$?'!@)#A)#=& @("B+$B+%D-'C,&B+%B+%?(">'!A*$?("=& @)#A*$@("?("@)#>'!>& B*$@)#A*$@)"@)#A*$?'!;$>'!C+%A*$B+%@("@("B*$B+%@(">'!?("?'!<' ;' ;' =)"?+$?+$?+$=)";&8%9%6#21//2:'!;& ;%=&!?'"@'"A&!=#I-%B'D*!H.&G.&C,$B,$?+$<(!<)"9&<(!<(!<(!<(!<' ;' <(!;' 8$:&:&9%9%:&<' <(!;&=(!=)"<' =(!>)"<(!=)"=)"9%9%:&;' ;' ;' <(!:%:%<(!9%;%<%;%9%8%:% ;&!8%7#7#7$7%8&8' 8&"7$ 6$ 5#3!3"3#1!. , *%!%'&+:&Q:2^G>T>59#534 3 2 3"5$4$6$9'<' >' @("B+$B+$E-'I2+H0)F.'I1*J2+K2+G/'G/(F.&E-%D,$C+#C+#B+&@)$A)$?(#<& ;& =("<)#9& 7$8&8& 5#1 0!0 4$/20+;-&=.(=.)>/*>,(>,(B.)B-(C.)B-(?*%A,'B-(B-(@+&B-(B-(@+&@+&@+&@+&?*%@+&A,'C/)E1*A-&F2+D0)C/(B/(B.'B.'E1*B.'C/(C/(D0)E1*E1*E1*C/(C/(C/(C/(E1*E1*@-&@,%?,%B.'B/(?+$>*#E1*A-&A-&B/(E1*B.(>*#@-&@,%@-&<)";'!:' ;' A.'@,%>*$C/(D0)@,%=*#?+$?+$?,%?+$>*$?+%?+%<("9&:&@,%@-&=*#;(!<(!=)"?,%;' :&<)"?+%>+$<(!>*#;(";(#:'!9& 8& 6$3!7$6$5#6$7%7%4"4"3 2 4!4#0"+9'!5#7#8!7":' :' 6$5#7%7%9%?)!E/'I.&I.&I.&J/'J1(H2(F/&A+$>(!<& ;& 7"5!9& 7$8%:%<%='!>'!?("A*$?)#?("@*$@*#>' =%>%<% >$ ># <#:#8$7%6$8&4"1/.16 7 10/-+,  ++.//17!B+"D-'8$114!5!7"9$:& ;& :% ;% <'!>(#B+$@("?' ?' @'!A)"C+$F-&H/(F-&C*#B)"C*#D+$B+#B+#C+#A*"6"<'B+#E-%G/'I1(M2+P4-Q5-P3*P3)N2'N3(I0&H0'I2)C-%A+#@,%=*#=*#?,&=*#5#<)#<*$;)#<)$>+%:(";(":(";)#<*$;)#8%8%;(":(";("<)$=*$;("<)#>,&>,&=+%=*$=+%?,&<*$?-'A.(?,&<)">,%=)">*$>*#>+$?+%>*#?,%@,%D1*F2+C0)A-&D0)@-&C/(A-&A-&B.'C/(D0)D1*D0)B/(@,&>+$?,%F3,E1+C0)C/(B.'A.'E2+C/(>+$=)"<)"=)">*#>*#A-&@,%A-&@,%>+$@,%A-&B.'D0)A-&=)"=)"?+$<(!A-&B.'A-&?+$=)"@,%?+$?+$?+$<(!:&<(!@+&?*%@+&@+&@+&A,'B-(>)$>)$=)#?,&@-'=*$;("A.(B/)>+%=*$>+%=*#>+$<+$=,$9*$9*%8*'3)',0D,#ZB:^H??) :#9"7!7!9#:$;% ='"?)#@*$A+#B,$D+&C*$B*"B+!D,#G.'G/(F.'I0)J1+I0)J1*F-'G/(G/(F.'D,%B*#A)"@("?' ?' >'!=( :)9( =$ ;"9 62/ / ./021.*'%+)-/"0#1#9& ;("=)#=*$=)#='">(#A)#A*$;$>'!C+%A*$='!<(!>+#;( :&A*$>' =& @("A*$@)#?("?'!>'!>& B+%A)#>& @)"D-'A)#;$A*$=& >'!?("A)#B*$@(">'!B+%?'!A*$B+%A)#>& <%=& =&<%>'!@)"@)"?("@("A*#B*$B+%B*$A*#A*"B*"@( @( G/'I1(@( B*"B+#:$3112.224!3 5"8%8%8%:' ;' =& ?'!=%<%>'!@)#A*$A*$@)#@("?'!A)#@)#@("B*$A*$@)#B+%E.(C,&C,&A*$A*$B*$@)"@("B+$?("=& >& A*$A)#?'!@)#>'!>'!>'!?("@("@)#A*$B*$?("=& >& @("B+%D-'B+%A*$B*$A*$?(!=& >'!?("@+$>*"<(!=)"?+$A-&>*#=)!9$8$:'!8$4 3 /.09& 5"5"8$:% ='"E.'?(!D+$C+"C*#G-'G.'D-&C-'@,%=)"=*#:'!<("=)!<(!<(!=(!<' =)!=(!:&<' <' :&:&;' <(!;&:&<(!<(!;';' <( :%;&<' :&<(!<' <' <' :&<(!;' :&:&:&;%<%=' <( :&:$;% 9%7$7$8%8%7&9(!:($8%!8%!7$ 5$6%7& 2#. ,!+ (%&&&+5!F0*U?6P:17"201 0 /!/"1%0#2#5%9'='?( A*!C-$F0&G0&F/&I2)J3)E.$J3*J3)I1(E.$C,"C,"B+"B+"A)#@("?'!>'!<&:&;'!;(!9' 8& 7&7%6#27"5 5 2/.+*@1*@1,@1,A/+@.*B.*C.)C.)B-(@+&B-(A,'?*%@+&D/*F1,A,'>)$B-(D/*>)$;&!@+&F2,D0)D0)D1*D0)D1*D0)B/(B.'E1*D0)C0)D0)D0)C/(E1*C/(C/(A-&A.'C0)D1*D0)C0)=)"?,%A.'B.'E1*C/(K71I5/F3,E1*E1*E2+B.(A-&>*#@,&@-&>+$?+%=)"D1*C0)C/(B/(A-&?+%>*$>+$>*$<(!;(!<(!=*#A-&<)":& >*$@,%>*#;(!<)">+$>+$>*$>*#=)"=)"?+%?+$>*#<(!:'!:(";(#:(":("8% 7%9&!7%6$9& 6$9& 6$6$5#4"5#5#7(%0"8(#9'!5!8!8"4 7$6#5#8% 9'!7%>)!E.'I0(K0(J0'J/'J1(H2(F0'B,%?)"<& :%8#29& 8%8%:&=& =& <& >("@)$?)#>'!>("A*$>'>%>%>$ >$ >$ ># ;#8#4#3"3#2"0!/.* .1320 .+*.  .!++.0-/121/4"3!3 4 7#9%;& :%8#8#9$='!@("<$<$?' A(!@(!A(!D+%I0*D+$B*#D+$F-&E-%B+#B+#C+#4!8%?)!C,$F.%G/'J1)N3,Q5.Q4+P3)N1'J.$V;0P8.J3)E/&B,$A+#?,%?+%:'!;)"<*#;(">+&A/)=+%=*$<*$<)$?,&>+%<*$>+%<)$:(";)#<)#9& ;)#=+%>+%<*$:'"8& =+%;)#:("<*$>,&<)#?,&@.(?-&?,%>+$;' A.'=*#>+$>*#=*#>*#>*#E2+D1*D1*F2,E1+?,%D0)G3,E2+C/)C/(D0)C/(A-&C0)@-&@,&A-&B/(F2+D0)A.'A-&B.(D0)D0)?,%:& >+$@,%?+$?,%B.'>+$D0)B.'@,&A.'B.(D1*C/(?+$@,&A-&>*#<(!>+$B.'D0*B.'@,%B.'@,%>*#A.'>*#>*#A,&@+&A,'C.)A,'@+&A-(B-(@+&A,'B/)B/)=*$;("A.(B/):'!;("=*$=*$?,%@.'>-&=,$:+%=.)=0-;0.(-:!D,$B-$16 8 8"9$9$:$;%='"@*$A+$B,$C-%D,'C*#A) A) C+"F.'H0)K2+I0)H/(I0)J1*I0)F.'F-&E-&D,%B*$@)"@(!@("@)"?(!=) :* :( =# :"8 62. .,,.11-*$$,*.!1$2%3$6"8$9& ;'!=(#>(#?)#@)#B*$C+%;$?(!D-'C.'>*#9&8%@+$F/)?("=& ?("A)#?("=& >'!A)#?'!B+%?("=%@("D-'B*$=& B+%>'!?'!@("A*$A*$>'!>& D,&?("A*$C+%A*$?'!=%=%<%;$=& A)#@)#?("?("A)#B+%B+%B+%A*$A)#C,%B+$?(!@)"@)#?(!A*#>'!6!421104 3 6#6#6#7$8$8%9%;&=& <%=& ?'!?'!?'!?(!?'!?("A)#@("?(">'!?("@("=& >& @)#C,%@("A*$B*$B+%B+%A*$B*$C,&B+%B*$=& ?("@)#>' ?'!?(";$<%A*$=& =& @("A)#A*$A*$@)#?'!A*$E-'C,&B*$A*$@)#?(!?("@)#A*$?*#=)"<(!=)">*#?*#;&9$:&9&;(!9%4!4!0.06#7$9& ;("<(#;& C-'@)#C*#D+%D+%F-(G.)D-'E.(B.'>*#?+%<)#=)#=)"<(!<(!=)"=(!<' >*#<(!=(!<(!9%8$:&<(!;&;' <' ;&:&<(!>*#<(!<(!<( :%<(!<(!<(!=)"9%;' <(!;' :&;' ;&;$<&;' 9&:% =(#<(#:' 8%8%9& 7&:(!8&"8% 8&!9'"8&!7&8'!3$1".#."-"*(''*-5 A,$?+#2100 0!/!/"1$0"1"4#8%<&=(@*"B,$E0(H2*H2*J4,F0(D.&K4-J4,G1)E/'D.&D-&B,$B+$@)"?' >' ='<'<';( :(!9' 8&6%7% 8%!2356!400-,?0)<-(?0,B1-B0,D1,F1,E0+C.)C.)B-(B-(@+&?*%B-(C.);'"<'"@+&B.)>)$9$?*%E0+E1+D1*B.'B.'D0)A-'C/(F2+C0)E1*F3,F2+H4-F2+E2+B/(B.'E1+G4-F2,E1+D1*F2+B/(C/(F3,C0)D1*F3,J6/J60H5.E2+C/(C/(C/(B.'@-&B.(D1*?+$@,%?+%C/(A.'?,%@,%<)"?+$@,%>+$>*#<)";'!<(!:' B.';'!9&<("?+$@,%;'!?,%B/(@-&<(!;(!>+$=)";(!<)"=*#=)";(!9'!;("<)#;)#:("8& 6$5"8% 7$4"6#6$6$7$4"7%5"7'#5'$4%!8% 5#='7!6"7$6#5#7%:("8% <' C-%H0(J/'I/&K0(J0(H0'E/&C-%A*$>(":%7#27$8%7$9&<& =& =& ='!?)#@)#>'!<& @)#?' ?%?$?$ >$ ?$ ?%!>$!;$ 7$4#3"1!2#0!0!11135 0.-+- - - -   ,)*-,*/1,.1#/05"6"7#7#8#9$9$:%<& =' =' =&?'!B*#C+$B)"A)"C*%E,&D+$F-&G.'H/(D,%B*"A)!?( 7#<( B+#D,$E-%G.&J1)N3+O4,R6,Q4+K/$S8-dJ@^G>K4*F0'C-%@,$?+%?,%<)"9& :'!>+%?-'>+%>,&<*$;(#=*%?-'?,&<*$?,';)#:(":(":("<)$?,&>+&>,&=+%<)#:'"5#=+%<)$=*$<)$:'"<*$?,&@-&>,%<)"<)"?+%?+$>+$=)#B.(D1*B/(C0)D0)F3,D1*B.'B/(E1*C/)A-&@,%A.'A.'@-&@,&>+$=*#F2+D1*C/(D0)C/(@,%B.'@-&B.'C0)B/(C/(@,%A-&?+$?,%B.(B/(E1*C/(@-&@,%@,&A-&@,%C/(A-&>*#?,%?+$;' B.'E1+A.'A-&@-&>*#@,%@,%A-&A-&B.(A,'@+&C/*A,'@+&C.)E0+B-(?*%B0*=*$A/)C0*A.(>+%;(";("=*$=*#@-&A/(?.'=,%>/*A2-?30<20&-1431669#:$:%;% ;% >("@*$A+$C,%D-&E-'D+$C+"C+!D,#F-'H/(J1*H/(I0)H/(H/(I0)H/(F.'E-&E-&C+$A*#B*#C+%B+$@)"=* :* :' =# :!8 51 . -,*5<#9!1*#!+- 1#3&3& 5& ;(";(";'!;("@+&@+&?)$?'!?(!@)"A*$D-'?("<& =)"?+$?+$A,%C,&A*$A)#@)#@("?("?("?("?'!@)#B+%@(">& @("B*$@)"<%=& >' ?("A)#B+%A)#>& >'!C,&>'!@)#A*$A)#?'!>'!>'!<%;$=& @)#@)#@)"@)"A)#B*$B+%C+%B*$?)#B,&B-&@+$@*$?*#>)">)":%4 44 2025"4!7#8%7$6#6#9%:' <(!=' ;$?'!@)#?'!?'!@("?(!@)#B+$A*$@)#@)"?("?("@("?'!A)#A*$@("A)#A)#A*$B+%A*$A*$A*$>'!?'!=%@("?("<%A*#D-'B+%@)"D-'@("?'!?(">'!@)#B+%@)#>'!A)#B+%B+%B+%C+%B+%@("@("A*$@)#@+$>*#=)"=)"<(!<(!;&9%=)!<(";(!9& 6#4 0.13 4#6%7%<)#9&>*#>*#D,&E,'C*%D+&E-'D-'G0*D0)?*%?+%=*$>*#>)";' <(!>)"<(!<( <(!<(!=(!=)"<' 9%:&;' ;' =(!=)!<(!<(!<(!?+#=)"?+$?+#<(!<(!<' <' >*#:&<' =)"<(!;' <' <'!;&;&:&;' <(!;(!8%7$:' ;("<)#=*$=*$;(":'!:(!9( 8&7&5$4% 6'"3&"0%!0&".#!((*+,21-110 0 0!1"3"5"9";";#:%<' ?)"A+$C-&F0)G1)L6.K5-L6.P92O91L5-I3+E/'C-%B+#A+#A*#@("?(!>( =' >( <( ;( :' 9' 9' 8%9$9$7!5443.-,A2,@1,A2-D3/F40F3/G2-G2-E0+C.)A,'B-(B-(?*%B-(A-(A,'?*%B.)D/*<'":&!A,'@+&F1+E2+@,&?+$?+$<(!F2+J6/F2+E1*I5.E1*D0*D1*D0)B.(D0)H4->*#@-&C/(H5.K70H4-C0)B/(?+$D0)D0*A.'@-&C0)C/(B/(A.'A.'B/(C/(A-'F2,@,&@-&@,%@,%?,%=*#F2+C/(:' ;'!>+$?+%=)"=)#>+$;(!>*#=)#<)"?+$:&>*#?,%>+$=*#<(!:&:' <(!=*#;(!<)">*$=*#>+$:(";("<)$;)#9'!7%5#3 6$8& 6$5#7%9'!9& 5"6$6$6% 4%"4"6$;&9#6!:' 6#8%7%:'"8& 7$=( D/'H.%H.%J/'I/'G.%D.%C-$A+$>(";& 9$4 27$6#7$:&=& >'!=& >'!?(#>'"=& ='!>'!?%?% ?%!># ># ?$!>%!<% 9$6% 6% 1!3#0 ,-/+.2.)*,+. - - -  .!)'****++(-*,1 5"7"7#7#8$9$:% ;& <& =' >( @)"B*#C+$D,%D,%C+$B)"B*#E,%G/(G/(G/'B*"C,$@)!9&:&?*"C+$C,$D,$G.&J0(L1)O3+U8.P3*J.$eJ@mUJ_H>I2)C-&D.&A-&>+$>+$?-&@.'?,&=*%;)#;)#<*$<)$;)#=+%?-'=+%<)#=*%9'!;(">,&=*$=+%@-(>,&?-'<*$:("9&!9& ;(#<*$=*$:'!;("=*$=*$>+$>,%?,%?,%?,%?,%@,%@,%?,%C0)E2+F2,F2+>+$C/(C0)A.'B/(C0)A.'A-'B/(A-'A-&?,%>*#B/(J70F3,D1*B.'B/(E2+B/(>+$A-'C/(C/(C0)C0)B.'?,%A-&B/(C/(C0)G3,C0)?,%@-&?+%=)"@,&;(!;(!@,%>*#<)"C/(B.'<)"?+$A-&=)":&B.'F2+B.'A,&?*%>)$A,'B-(A,'C/*E0+B-(?*%?,&A.(@-'@-'?,&>,&?,&?,&>+%@-&?,%A0)C2*A0)@1,A2-?31=20)1236 9#9"6:$9#:$<&!<& ='!>("@*#B,$D-&E,'E,%E-$E.$G.&I0)K2+K2+H/(I0*K2,J1*H0)I0)H0)F-'E-'D,%C+%C,%D-'C,%?("<* 9):& <#9!8 50 .,,1L2-V<6K3.:$-'&, 0#4& 5' 6'8(!:)!9( ?+$=*#?+$?+$A,%B+%A)#A)#?("A*$@)!?)!@*#B,$B,%B+$A*#B+$B+%A*$@)#@)#A)#@("=& >'!@)#@("?("@)#A*$A*$?("=& >'!?("A*#C,&A*$>'!@("D,&>& ?'!@("?("?(!?'!>'!=& <%>'!?'!?("@("@)#@)#A*$A*$B+%B+%@+$@,%@,%?+$?+$=)";' ;' ;' 6"5 4!3 103 5"8%:' 8%5"5"8%<)!?*#>'!=& @)#@)#?'!@)"B+%A*#?("@)#>'!@)#B*$A)#@)#A*$@)"@)#@)#>'!@)#@)#@)#B+%C+%B*$A*$>& =& ?'!@)#?("<%?'!D-'?("@)#A*$A*$A*$A)#?("?("@)#>'!>& ?("@)#A*$B+%C,&B+%?("?("@("@)#A,%@+$@,%A-&<' ;' ;' <' ;' ;(!<)#;("8%8$003 13"6&6$@-'?,%>("?("D,'B)%A($D+&E,'C,&H1+F1+?)$>*$=*$>*$=)";' =)"=)"<' <(!<' <(!<(!<(!=)":&:&<(!;' <(!=)!=)"=)"?+$>*#>*#>)"@,%@+$<(!;' =)!<(!:&;&<( <(!<(!=)!=)"<(!=)";' ;' <(!<)";(!;(!<)":& :'!<)#<)#<)"<)#<*#;*#:)":)"8' 6'"7(#4'#1&"1'#0&$+" ''(*+,+./--/0 2!3"6#9";#;#;&<' >)!?*#B,%E0(E/'G2*G1)G1)J3,J4,G1*I2+F0(D.&B,$B+$A*$A)$@(">( >( =( <( ;':&9&;)"7%5 6"6"57!40/,*E70F71D50C3/F40H62I50F1,G2-D/*B-(E0+B-(B-(D/*B-(@+&?+&A-(C.):&!?*%B-(B-(D0*E2+A-'A-&<)"@,%E1*F2+C0)C/(G4-F3,B.'@,%A-'E1*E1*C/(B.'F3,H5.H4-G3,F2,A-&@,%?,%@-&A.'B/(>+$C0)C/(C0)C0)B/(B.(E1+A.'D1*A.'@,%A.'A-&A.'<)"C0)B.(>+$=)">*#>+$=)#?,%?+$<)"<(!<)"=*#>+$=*#<)"<(!=*#>+$:' <(!>+$?,%A-&A-'@-&A-&<)"<(!:'!9'!9'!:'!9&!6$4"5#7%8& 8& 9&!6#7%6#4"5#7%7% 2$!2$!2!4#7%6"3 4#5#5$5$5$5$8(!7&@/&E1%J3'J2(G+$E+#C-#C-#A+#>(!;%9$8#26#6#6#9%;%>(">'!<& <& ='!<& ;%<& >& ?'">&!=$ ="="=$ :%8#4"3#1!1"6'.0 9%7!57 5!,+0!. .  -!+*,*-*+-/. $+0 3!5"6#7$9$:% ;& ;& <& =( ?)!B*#C+$C+$C+$C+$D+$C+$D+$D,%H/(F-&E-%E/'B+#D-%8$<( @*"B+#C+#E-$H/'L1)L1)O3*P3*N1'R7,qVLkSIQ:0B+#B,$D.&@-&9&>+$>+%:("8& 9'!:(";("<)#<*$;)#:'">+&:("<)#=+%;)#9'!A/);)#B0*D1,A.)@.(?,'8%7%9& :'!:'":(":("?,&>,&=+$>,%A/(B.(@,%@-&@-&A-&B/(A-'A-&C0)F3,H5.F2+?,%@-&@,&A.'C/(B/(@-&@,&C/(>*#=)#A.'F2+F2+@-&H4-H4.F3,C/(?+%@,%>*$C0)D1*D0)D0)C0)A-&E1*C/(B.'?,%=)"A-&:&B.'>*#:& :' 9%>+$>+$;'!=)"@-&@,%?+$@-&=*#<(!@,%F3,F2+A.'A,'@+&?+&@,'B-(B.)>*%A,'?*%A-'A/)>+%>,&>+%?,&A.(A.(?-'?,&D1*<)"C2+E4-D4-C4/A3.?42=31*.302 5"5"7"9$7"9$;& ;% <&!='"?)!A*#B+%C+&D,$E-$F/%H0(J1*K2+J2+M4-M5.O6/K3,H0)H0)G/(E-&D,%D,&D,%D-&D,&A*#>'!;) 9):%:"7!750 .-.8$[@;dKEQ949#*%'.#2%6)#8)"8)"<,%=,$;)!<)":' ?+$?,%@*$@)#@)#@)#?'!@)#B+#B+#B+#B+#B+#A*#?("@)#A*#@)#@)#A*$A*$@)#@("?("@)#A*$A*$B*$B+%B+%@)#=& >& :#>'!A*$@)#?("@)#A*$>& >'!A*$@(">& =& >'!>' =%?'!>' >' >(!?)"@*#A+#A+#B+#B+#C,$A)"C*"D*#D*#C*#=%>'>& 6!5 3 20/3 7$<)#:' 7$6#7#8%=)"?+$>'!>'!A*$?("=& >'!@)#?(">'!@(">'!>'!?("?(">'!=& >'!>& @)#>'!C,&C,%A)#B+%A*$A*#A*$@)#A*$@)#?("?'!>' ?("C,&@)#A*$@)#@)#?("?'!?'!?(">'!=%>'!?("A*$B+%A*$@)#>'!<%>'!A*$C,&D.(A-&?+$?+$>*#=)!D0)A-&>*#=*#=*$;("9%;("214!14!6 9">&@(!C)!>#N3)[@5W;0J.#C'E*!H-$F-&D+$@("@("?)#=)">*#?+$<(!<(!;' <' =)"=)";' >*#;&;' <(!<(!=)">*#=)";' ;' >*#=)"=)"<(!=)"=)";' =)"=)";' ;&;' <(!<(!=(!=)"=)">*#=)";' <(!=)"<)"<)"?,%<)#<)#>+%?,&>+%=*$<)#;*#9(!>-&<+$:+%9*%6)$3($4)%3)'0&$(%&),,,//-..01!3"6#9";#9";&=( =(!?)"A,$E/'D/'F0)G1)F0)F0(F0(B,$E/'E.'C-%B+$B+$A+#A)%@(#?(!>( >( =' <&;%8%:&;' :%8"8">& R;4N60<$3.*+I:4H:5G83J84G62G3/F1-I4/H4/D0+K61@,'C.)B-(@,'@+&A-(C/*F1-H3.G2-C.)B-(E0+F2+B.'D0)A-&D0)I5.I5.E2+H5.D0)E1*D1*C/(B.'G3,F3,C/(F2+I5.I6/I5.A.'I6/D0)C0)C0)B/(B.'C/(A-&D0)D0*D0*E2+G4-D1*E2+C/(C/)B.(>+$A.'?,%@-&>+$B/(D1*@,&=)"?,%D0)?,%?+$?,%=)#<)"<)"<)":' =)#?+%>+$=*#C/);(!@-&?,%>*$A-'@-&>+$=*#?,%:' 7$7$7$7$:'!7$5#6$7$9&!7%9'!6$4!3!4"9& 7%6$5&"3"2!6& 1 3":)A0'B1(8( 5$5' 5& 8( >-$B0&F1#G2&F+#D*"C+"B,#A+#?(";&:$8$4 9% 7$6#9&:%>'!?)#='!;$<& =&!;%:$>& @'!>&"=% <";!:"8#6#3!01 -3#2 249"D,$;%, *+*(*/  +(*,,,(,.0!,(- 02 3!5#6$9%;& ;&!<'!<&=' @)"B+$D+%C+$B*#C+$E,%F-&F-&F-&I0)C+$E.&C,$A*"@)!9$=( A*#B+#D,$G.&J0(L1*L1)P3*P4*S7-_D9jPE^G=H1'D.&D.'C.'?,%>+$@.';(":(":(":'";)#9& 9'!<*$:'!7%<)$<)$>,&=+%=*%<*$:("9'!@-'@-(A/)A/)@.(?-':(">,&<*$;)#=*$?,&B/)?,'?-&@.'@.'@,%;(!?,%@-&>*#C0)G3-?,%B/(D0)C/)A.'?,%?,%B.'B.(A.'@-&>*$>+$A-&;' ?+%?,%B/(D0*B/(F2+K70G3,C/)@-&@-&B.(D1*G4-E1+B.'A.'C/(I5.D0*F2+B.'<(!;' ?+$C/(?,%>+$<)";(!?+%=)#;'!9%=*#?+$=)"C0)E1*=*#A-'D1*C/(A-'E0+C/*C.)C.)D/*C.)?*%@+&@+&=*$?,&A.(A/)@-'A/)>,&A.(B/)B/)C0);(!E4-C2+@1*D50F84?53,,.201 3"6$9&9$8#9$<&=' =' =' >(!@*"B*$B*$C+#D,"D-#F.&H0)J1+J2+L4-P70M4.G/(H0)I1*G/(D,%D,%E.'E-'C,&B*$?("=' :) 8(9#9!7!7 5 0 //1A+"^C.'=,$=+#>+$:' ;' =*#B,&B+%A*$@)#?("A*#B+#C,$C,#A*"A*"@)"?("?("@("?("@)#B+%B+%A*$?("=& ?(!@)#A*$B+%B+%@)#=& <%A*$B+%>'!=& @)#A*$?(">'!@)#>'!A*$@)#=& =& >'!>'!=& >'!>'=&=(>) ?+"A-#A-#B+!@)G+"E( I*"R1*Y:2U7/C&E)!A$6 43 0.04!9& <)#:& 8%9&9&8%:' >*#?("@)#A*$?("<%<%>'!=& >'!A)#?("@)#A*$A*$@)#@)#@)#?("A*$A*$C,&B+%@)#B+%B+%@)#A*$B+%B+%A*$A*$C,&C,&A*$B+%>'!C,&C,%A*$?(">'!@("A*$>'!<%?("?(">'!?("B*$B+%A*$B+%D-'C,&A*$@+$@,%?+$?+$?+$?+$@,%>*#>*#A.'@-'<)#<)#:'!12 3"4#3 57 7;"B(B(Z?5pTIhLAO3(F* H-$H-$F,%D+$B*$B+%B,%<(!=)">*#<(!;' :&;' >*#>*#<(!?+#;' ;' =)!<(!<(!<(!;' <( <(!?+$=)"=)"=)"<(!<(!;' ;' <(!<(!<(!=)"=)"=)"=)">*#=)">*#?+$=)"=)"?+$=*#=)">+$>*$=*$>+%?,&?,&>+%=+$=,%<+$>-&<+$;+%;,'9+&6+'7,(6+)4*()&&(,--..-./01!3"5"8"9"9":%<'<' =(!@+#C.&E/(F1)G2*G1)F0)F0(B,%C-&C-&C-%B,$B,$B,$A*$@)"?)!?)!>)!>(!=( <&:%9$<' >)";$7!B)!_G?aHAJ1+5.*(J;4G83F72H72F40H51J50I4/H4/E0+K61C/*B.)B-(B.)H4/E0+G2.J50G3.D0+C/*C.)B-(I5.A.'B.'E1*F2+G4-J70I5.H5.H4-D0*B.'F2,F2+I5.I6/G4-G3,H5.K81P<6E2+J6/J70F2,B/(D1*E2+C0)D1*D1*D1*G3-D0*F2+E2+C0)@,%?+%B/(>+$@-&?,%@,&@,&@-&E1+A.'@-&>+$?,%>+$>+$B/(<("=*#=)#=*#<)"<)">+$A.'?+%C0)?,%?+%A.'?+%A-'<)"8%9&:' :' ;(";)#9'!9'!;("8& 4"6$6$7$6$7% 7$4"4"6#7%9&!7%5% 4($1&"4#5%2"5#B0'XF=\JAB0)7%4$5&8( >,#C2(E/#E."D+"D)!B*!A+"A+"?)"<& ;%9$5!35"7#9&:&<$>(":&<& :$8"9$;'!7%7$7'9' ;& :% 8$5#4"4#3#1!//247 B)"U=6T=4A*!0**)+.  ,)'*,-,-/+-,-/01 2 4"5#8%:& <'!='!:%=' @*#C,%D,%C+$B*#D,%G.(E,%F-'F-'E,%E,%@*"B+#>':%;%@*"D-%E.&G/'I0(J1(K1)M3*P5+L2(V>3cLA`J@Q;3B,%B.(>+$?-&?,&=*$;)#9' <)$;)#;)#:("7%6$=*%<)$=*%>+&=+%=+%9'!:("?,'>,&<*$A/)@.(A/)@.(B/)B/*>,&B0*?-'?,&?-'@.(A.(>+%@.'@-&>+$<)";(!=*#I5.@-&A.'B/(B.'B/(A.'C0)A.'@-&D0)F2+A-&>+$=*#>+$@,%A-'C/)F3,B/(D1*G4-H5.G4-I6/I6/C0)B.(C0)C/(@-&D0*C0)@,%@,%C0)F3,K70I5.D1*C0)E2+F2+B.'D0)D1*B/(?,%=)";(!<(!;' ;(!:' =)"A.'C/(@-&E1+C/(B.'C/)E0+D/*E0+H3/K61F2-?*%@+&F1,B/)@.(C0*D1+A.(@-'9'!D1+E2,E2,E2,D1+G6/E4,D5/I;6I<8C97,.26 5#02!6$9%:$:%=' <&;%<&='>( @)"A)"B*#B*"B+!C+"D,%I0)K2+L3,L3-L4-N5.F.'H0)I1*G/(D,%D-&G/(F.(C,%@)#>(!=(!9) 6'9#8!7!6 4 0 ..5"K4-cHB`E>D*#1)(+5)$8+#;-';,%<-&?.'<+#;)!;(!<(!=)"=*#C,&B+%A*$@)#@)#A*$B+#C,$B+#A*"?( @(!@)#@)#@)#?("@)#C,&C,&A*$@)#?("@)"@)#@)#A*$A*$@)#=& <%@)#B+%>'!=%>'!>'!;$<%@)#?("A*$@(">'!>'!>'!>'!=& >'!=&>&=(=* ?,"@-$A-#A*!@) E)!G+#H)#_?8rTLfIAG*"H,$A%7"5 4 2 /27$:'!:'!:' 9&:' :' 8%8%=(!>'!A*$D-'@)#=& =& =& =& >'!B+%?("@)#A*$@)#@)#B+%A*$@)#A*$C,&B+%>'!>'!B+%A*$=& @)#C,&C,&B+%C,&E.(E.(@)#>'!=& B+%A*$?("?("?(">'!?("?("<%;$<%>'!>'!>'!=& A*$C,&D-'D-'@)#>'!?)"A+$A+%A+%?+$?,%A-&A-&@-&?,&=*#<)#<*$2 02!1!2 9$<'":#=& D*"D+"\B8uZOoSIT9.H-"G.$H-$E-&C,%@*#>)$?*$?+$>*#A-&<(!:&;' =)"?+$<(!;' >*#;' ;' =)"=)"=)"=)"<(!?+$9%;& @,%@,%=)">*#?+$@,%:&<(!=)"=)"=)"=)">*#?+$A-&>*#?+$@,%>*#>*#A-&?,%>+$>+$>+%?,&@-'B/)A.(A.(>+%=,%=,%@/(?.'=-'>/*=/*:/+:/+7-*7-+*(&(+,--+/./0 1!2"3!5 7!8":$;&<&<' ?*"C-&E0(G1)F0)D.&E/'G1)D.'E/'E/'D.&C-&C-%C-%A+$@*#@*"?*"?)"?)"?)"=( <&:%:$:%:"7 E,$^E=gNEU;48,))M>8I;6G83F61K96O<8L72H3/G2-G2-G3.E0+C/*D0+C.)F1,D0+E1,E0+C.)B-)E1,I50C.)I5/D1*B.'H4-I6/E1+H5.I6/J6/K70J60B.'D0)E1+H5.K81L81H5.F2,K70M:3J6/G3,E1+B.(A-&E2+F2+D1*E2+E2+@-&L92G3-D1*F3,F3,A.'=*#B/(@-&@-&?,%@,&B/(?,%C0)@-&>+$>+$@-&B.(=*#?,%@,&C/)B.(>+$=*#<)"?,%?+%?+%@-&?,%>*$@-&<)"9& ;(!;'!:' >+$5":' ;("8& :'"<*$9'!5#4"7%6#4"4"3!4"4"6$5#3!2 00".!3"4#3!6!>*"fQJkVOS?8=)"5"7$8% ?)"C.'G/'G-#D+!D)!C)!A+!A+"@*">("<& :%8#05 5!:&9&:#<& ;% ;& <& 8#5":' 6$5$4%5&7&8$7"5323!3!0/236H.)[@;aG@U>59$,+))+  ,))+.6#<'?) 4++/0 1 1!1 1 3!4"6$:% <'!<& ;&>)!B,$D.&C-&B+$B+#D,%E,&@' D,%C+$E,%B*#?( A*"=&8#>( C,%E.&G/'H0(I1(J0(J1(L2(L2'M4)U>3_H=U?6G1)@+$@-&@.(@.(=+%<*$9'!8& :'"<*$:("9&!8& 9&!9'!=+%:(":'!;(#<*$=+%?-'<*$?,'@.(?-'=+%=+%?,'B0*A.)@-'@.(@.'=+%=*$A/)B/*@-'@-'@.'=)#>*$>*$=)#>*#@-&C/)D0*E2+C0)B.(E1+C0)A-&F3,E1+A-&?,%:' A.'D1*C/)@,%A.'I5.F2,C/)G4-I5/G3-C0)@-&I6/H5.E1+B/(A.'A.'I5.C/)E1*F2+D1*E2+G3-C0)B.'C0)E1+F2+D1*G3,B.'>+$<(":' ;(!C0)<)";' >*$B.(E1*H4-@-&E1*D0*B-(E0+H3.E0+F1,H3.J50I40E1,E2,A.(B/)A.(@.(?-'<)#A.(A.(A/(E2+E3,C2+I81@1,I:5H;8F;9.7"C,&I4.C1+1 2!5#7#7":$<'7"9#;%=' >( >( @(!B*#B+"C+!D-$F.'J2+J1*K3,K3,K2,N6/G.(G/(F.'E-'E-&E.'F.(E.'C+%@)"?(!=(!9) 6'9"7"6!5 3 / --7#P7/`D0*?0)?0)@0)>-%?,%@-&>+$;' <)"H1+B+%B+%A*$@)#@)#A*"A*"A*"@)!?( @)"A*$B+%B+%@)#A*$B+%A*$@)#@)#B+%A*$A*$>'!?("?("@)#@)#?("=& =& B+%C,&>'!:#<%>'!?("?("@)#?(">'!>'!>'!>'!=& >& >%>%=( =*!>,#@.$@-$A*"A)"E*#E*#C& aC=x[SiMEH,#E*!@%8"5!3 202 8%:'!:'!:' 8%7$8%8%9&>*#<%?("D-'@)#>'!>'!>'!?(">'!A*$>'!=& >'!?("?)#?("@)#@)#A*$C,&A*$>'!>'!B+%A*$=& B+%D-'D-'B+%A*$B+%A*$>'!<%?("B+%@)#=& >'!@)#?("@)#@)#=& ;$=' ?(">'!>'!=& A+%B+%@)#C,&A*$A*$B+%A*$A+%D-'@+%<)"?,%C/(B/(?-'>+%>+%?,&2!/0 0 2 5 =(#;$>("B+"B)!X>6uZQqVMW<2H-#F-%F-$E.&D-'A+%=(#<("=)"?+$@-&>*#<(!<(!>*#=)"9%9%<(!;' <(!=)">*#?+$@,%<(!=)"<(!;' >*#?+$>*#@,%<(!>*#;' =)"@,%@,%?+$>+$>*#@,%A-&A-&@,%@,%?+$?+$C/(?,%=*#>+$?,%?,&A.(D1+D1+F3-A/)A0)A0)A0)?.'>.'@1,A3.?40>3/;0.:0.+(((+.00)/./0 1"1"1 3 6 8":$;&;&;&>)"B-&E0(F1)E0(C-&D/'I3,I3+G1)G1)E/'C-&C-%C-&A+$@*"@*"?*"@*#@*#?*">)!<' <'='8":":!F,$ZA8hOE^D;<"-)*M?8M>9K<7I84J84M:6M83H4/M94M94J50E1,C/*D/+B.)A,'D/+F1-D0+B-)E0,E1,I4/I4/I5/I5/H5.I5.J6/C/)E1*G3-H5.M93N:3?+$G4-I5.G4-H4.I5/G3,G3,I6/L81J70G4-L92H5.H5.F2,E1*D1*C0)C0)A.'J70I6/F2,E2+C0)C/)A-'D0*C0)@-&@,&?+%B/(@-&A.'@-&=)#:' ;(!?,%;(!=)#>+$>*$;(!:' B/(<)">+$>+$>+$=*#:' ?,%A.'>+$:& 9&<)":& <)"9& :' 9& 7% 9'!:("6$8% 7%7$7%6$8& 13 4"4"4"6$8& 8& 6%!4#!4"4!239!\D>qYSdMFC.(7 8"7!:#A)#G/)J.$E+ E*"E+#C,#B,#A+#@*#>("<& :%5!9%4 8$8$8#:#;% ;%='!:& 7#7$7$3#1$2%3%5$4"3 1110.0233="V:5cGB^G>F/&3 ,+*)-   -*,.;&K5-S<4R;2;%0011 2!2!1!1 2!4"6#:%;& <' >( @*#B,%C-&B,$?)!?)!B+#A*#A)"D,%F.'C*#A*"?( ?( ?( ;%A+$E.'F/'H0(I0(I0(J0(J0(N3)J0&F.#I2'N7,G1*B,%?+$>+%>,%=+%=+%<*$9'!9&!9'!9'":("8& :("8& 6$8% 9&!4":'"=*%>,&?-'>,&@.(<*$<*$<*$<)$<*$A/)>,&?,%@-&@-&@,&C0)G3-A.'A.'B/(@,&<)"<)"@-&?,%@-&A.'?,%D1*D1*B/(B.'C0)D0*?,%C/)B/(C/)?,%:' ?,%E2+A.'=*#?+%F3,J70@,&I6/H5.G3-D1*D0)K81K81I5/I6/G4-E1*G4-C0)G3-D1*D1*E1*B/(D1*>*$E2+G3,C/(@,%C0)@-&?,%<(!=)"A.'D0)C/)C0)D1*E1*F2,H4.B/(G3-F2-C/*B-(E1,K61L72G2-G2.F1,C/*D1+C1+<)#<*$@.(B/)@-'D1+?,&?,&C1*F4-H80L;4G83E61F:8I?=-A)"V=7[F@L:43"2 6$8$9$<'!?)":%9$='?)!?)!>( @(!C+$D-$D,#E-%G/(I1*G/(I0)J2+J1+H0)H0)G/(H0)G/(F.'E.'E-'C,&A*$?(">'!<& ;%:$9$4#3"3"2!/ --4 I/(R5/E)"1/((-=1*?2+A3-A2+B3,?/(A0(?-&@-&?,%;' 9%B+%@)#B+%A*$@)#?(!?( @)!A*"@)!?( @)"@)#A*$B+%@)#@)#A*$@)#>'!@)#A+%@*$@)#>'!>'!>'!?("@)#@)#>'!>'!C,&E.(?("=& ?("A*$@)#?(">'!=& >'!>'!>'!=& =& =& ?& ?&=)"=*#=+$>,$@,#B+#B+$I.'D*#F)#cF?vYQhLDJ/'@&@%6!4 3 1/27$<)#:'!;(!8%6#6#9&<)"?*$>'!<%>'!?(">'!>'!>'!?("@)#?(">("<%>'!@)#?("=& ?("B+%A*$A+%B,&C,&B+%C,&B+%C,&E.(D-'D-'B+%A*$A*$?("?("?("@)#B,&B+%?("?("@)#A*$C,&B+%?(">'!A*$?("=& ?("@)#C,&A*$>'!A*$B+%B+%C,&B+%C,&D.(A-&?,%@-&C0)A.'>+%@.(@-'<)#2 ./1 2!3 <)$:%<'!@(!?&S:2u[Ru[RY?6I/&F-&E,%D-'D/)D/)A.(B.(E1*<(!;' :&=)">*#<(!=*#9%:&<(!<(!<)">*#>*#?+$?+$;(!=)"<(!?+$A-&?+$>*#>*#>*#:' ;' >*#A-&C/(B.'A-&?+$?+$?+$A-&@,%?+$@-&B.'B.'@-&>+$>+$?,&@-'@-'B/)A.(E2-B0*C1+D3,C2+A0)@0)C4/C4/?40>3/<2/;1/ (()09% ?*$?)$---.0 1"1"0 2 5 8"9$:&:&;&=(!@+$C.&F0)G1*F0)E/(I4,K6.H2+G1)D.'C-&B-%B,%A+$?)"?)!>)!?)"?*"?)">(!<' ;&;%7":#9!@(U<2iPGcIA?%0*)M?8O@:N?;K;7L;7K95N:5L83M94P;6O:5H3.J51D0+A-(B.)E0+F2-J50H3/I50H4/I50I4/E1+D1*L92E1+G4-D0*C0)H4-B/(B/(H4-C/(B/(F3,J60J70C0)E2+F3,G4.J70J70H4.H4-E1*G4-I6/G4-C0)C/)?,%C0)I5.I5/D1*B/(@,&G3-J70G4-A.'?+%B/(>+$?,%@,&?,%@-&A.(?,%=*#>+$>*$>*$>+$=)#@-&C0)B/)A.(?+%=*#A.';'!9& ?,%A.'A.'?,%:' <)#8%9&9&9& =*#:("<*$9'!7%7% 8& 8& :(";)#<*%5#2 5#6$4"6$5#5#5#3 4! 6436K2,qZSr[TL71<&!8!7!9"<$F.)J0&H-#G,#G-%F-%D.$B,#A+$?)#=(":% 6"4 5!6!7#7!7!:$;$<& ;'!9&7$6$5#0"0#1$2$3"3 3 22 0012 4 32D*&W<8_F?T>4<( -+,+,     /-,-0L5,ZC:_G>V=4B*"7432 1 1 0 1 3!4"7#:$<& ?)">)!@*"A,$A,$@*">( ?)!A+$C+$D,%F.'D,%@(!@)";%>( ;%='C,%F/'G0(I1)J1)J1(J0(K1(M3)K2'F/#F0$F/&C-%B,%;("<*#<*$<*$<*$:("<*$;)#9'"9'!8& 6#6$;)#7%4"5#8% 9'!<*$<*$;)#>+&A/);)#?,'>,&9'!9&!=+%:'!B/(=*#>+$B/(C0)D1*B/)<("=)#A-'B/(A.'C0)?,%A.'?,%@,&D1*A.'B/(@,&@,%@,&?,%?+%>*$;(!>+$A.'B.(C/)G3-D1*E2+G4-D1*C0)M93M82J5.H3-H3-H4-G3-D0*H5.H5.D0*?,%B.(H4.H5.H4.D1*@,&?,%?,%G4-E1+@-&=*#@-&F3,F2+<)"<)">+$B/(I6/H4-H4.F3,G3,H4.F3,D0)I50L72I50E1,D0+H4/E0+E1,B.)@-'C1+E3-9& >,&>,&C0+E3-E2-H5/C0)L92I81J92J:4I:5J;7J?=LB@-F,%[B;_KEH70005#:%:$='!?*"<' ;%?)!@+#@*"?(!A)#F.'F/%C,#E-%G/(H0)H/)G/(L4-I1*H0)J2+H0)H0)H0)F/(E.'D-&B+$?(">' =& ;%:$9#7#2!1!1!0 .,+''*,++&'-B5/C6/C5/B3,B2,B1*B1)?-%?,&?+$;(!9%<& >'!B+&A*$?("=' >'?( @)!@)!?( >'!?("A*$A*$?("?("@)#@)#>'!='!>'!@*$B,&A*$?("=& =& >'!?("?(">'!<%=& @)#@)#?)#@)#@*$?("=& <%>'!>'!>'!=& <& ;$;#=$<(!=)"=*#>,%@,%A-&@,%?' @' F+$eICuZSeKDG.'9"8 6!5 3 1/2:'!@.(8%;(!:' :' 8%:' @-&;' @*$>'!@)#@)#>'!>'!?("<% @*$A+%B+%>'!?("@)#=& <%?("A*%A+%C,&E.(E.(C,&C,&C,&E.(E/)B+%B+%B+%C,&C,&B+%C,&C,&@*$A*$A*$@)#?("@)#C,&E.(B+%?("?)#B+%@)#='!@)#?("A+%A*$?)#B+&C,&A*$A*$C,&D-'@*$@,%B/(@.'?,%>*$=*$@.(=*$;("3"-01 2!2 8&!9&;&!?("?'!O6/rWPv\TZ@8K0(F.'E-&F/)G2,F3,A.*@-'C0)>*#<(!>*#@,%@,%@,%=*#:&;(!=)"<(!<(!=)"=)"=)">+$;' <(!=)"A-&B.'=)"@,%B.'@,%>*#>+$A-&C/(B/(A-&?+$@,%?,%?+$>*#?+$A-&C/(D0)@,%A.'@-&>+$@-&A.(?-'B/)A.(G4.D1,C2+D3-C2,B1*C2+E61E61B51A62A63@64 '')3 D/*S<7R=78"--./0!0!1!4!7#9$9%:%:%;&=( @+#B-%D/'C.&B,$C-%G1*M7/H2+F0(E/'B-%A+$@+#@*#?)!>( >(!?)"?*">)!<';&;&9$7!9"9!;#M4*gNE\B9A'1+(*PBM>:Q@*$C0)>*$?,%A.'=*#=)#>+$=*#>+$A.'B/(?,%=)#<)"=*#>+$<)"A.'@-&<)"9& <)":' >+%?,%>*$>+$?,&>+$?,%<)">+$<)#9& 7$8%=*#8& ;)#9'!4"5"9'!8& 8& <*%;)#5#5#6$:'"9'!7%4"13!24! 53246cMFmWPVB;?+%7"7!9#:#B+%H/(J/%H.$I.'H/'F/&D.%B,$@*$>)#<&!8#16"5 8"6 7!9#;$;$;% :' 7%5#6$3"1"2"3"3"4 43210/ -..06D,'[C=aJAH2(2 +++*-  -+,.:"R;2^G?]D;P7.@( 6 22 /001 2!4"5#9$;% >(!>)!=' >( @*#@*#>(!?)!A+#C,%D+%E,&C+$A)"?' =&<&=&7!=' B,$E.&G/'I1)J1)I0(J0(J0'K1'M3)H2&I2&D.&C-%?*#;(!>,&<*$;)#:(";)#<*%:(":("7%7%9'!;)#:(":'"8& <)$=+%;)#:(";)$:("?-'A/)?-'>,&:(":("@.(A/)A.(D1*>+$>+$A.'@-&?,%@-&:' @-&?+%@-&A.(A.'>+$B/(=*#A.'B/(@-&B/(@-&?,%;(!;(!>+$@,&;(!?,%9& =)#B/(E2+F3,F2,H5.I5/E2+F1+L50J4.H2,H2,E/)A*%B,&F2,@.'C0)B/(D1*J70H4-I5/C0)=*#=*#C0)F2,D1*H4.A-&?+%B/(>+$:' @,%A.'D1*F3,C0)G4-H5.G3,B.'=)">+$J61H4/F1,D0+G2.I50F1,F2-C/*@-(A.)B/)@-'C0*E3-J82I60D1+D1+J70I70H71H80K<5M?:OA=ODB4"5L1)^B;\HB>-'./4!:% 7":%<' <'<'@*"A+#@*"@)"B*#E-&E.$C,"E-%F-'G/(I0*H0)N60L3-M5.N6/J2+G/)F/(F.(E.'D,&A*#>'!=& <& 9#8"7"4!0 / / .,++)+*++)%'C84E81E92E71D5.D5.F5.B1)A.'A.'?,%>*#=)">'!@)#C,&@)#='!=&>'@)!@*"?( =&?("@)#B+%B+%@)#?("@)#@)#>'!>'!>'!?("@)#@)#?(">'!<%=& ='!?(">'!:#:#@)#?("<%<% ?("?("<%<%>'!='!=& =& <%;$=$>% <(!=)">*#?,%@-&@-&@,%B)"G/(F*$gKEw[UcIBG.'?( =%7"6"3 1/3 :'!?,&<)#:' :(!9&9&<)"A.'=)">'!?("B,&B+%@)#A*$B+%=& ?("A*$D-'C,&B+%@)#=&!>'!A*$@*$B+%F/)F/)B+%@)#C,&E.(B+%A+%A+%<& ?("C,&B+%@)#B+%E.(A*$?("?("?(">'!?("D-'G0*A+%='!?("A+%A*$?("@)#='!>("?("A*$D.(D.(B+%A*$B+%C,&>("?*$B/(?,%<)"=*#>,&@-'=*$=*$6%.0//13!9% ;'!>("?("G/)aGAgMFX>7I/(D-&D,&E/)G2-F2,@-)=*%@-&?+$>+$<(!;'!?+$?+$A-&:&;' ;'!;' ;' <(!<(!=)"?+$=)"=)">*#@,%?+$<(!>*#C/(>*#>*#?+$@,%A.'B.'A-&A-&A-&?,%<)">*#A-'A-&B/(E1*@,%?,%>,%>+$@-&C0*B/)B/)@-'C0*D1+C1+E4-F5.H70G6/E60E61B51B74F<8E;9C97(')2H4-[E?ZE?>*#...../ 1"5#9% :% :% :%:%;&=( ?*"A+$A,$B-%C.&C-&E0(N80I3+E/(E/'C.&B,$@+#@*#?)">(!>(!?)"?*">(!;&:%:%:%9#9#:"7A'O6-L3*>$2.+(RC=SE@QB>P?;O=9N;6O:5Q=8N:5K72O;6J50I50J61F2-B.)F2-I50E0+A-(B.)I40H4/H4/K82E2+B/(D2+E2,I70E3,F4-G5.F4-C1*B/)G5.@.'@-'C0*G5.I70I70K81M93J70H5.G4-F3,D1+D1*D1*C/)B/(D1*@-&>*$B.(@,&A.'D1+A.'C/)B/)C0)A.(>+$=*#B/(=*#=*#>+$?,%>+$=*#=*$=*#?,%?,%?+%@-&A.(:' :'!?,%>+$>+$=*$9&?,%>+$=*$<)"=*#?,&@-&8%9&9& 9& 8& 7% 5#7%;)#;)#;)#:(#7% /5#6$:(";)#7%4"3!1 011.037!R<5gQI^JB?,%4!6"5"8">'!E.'K0&H/$J/'J0(H0(E/&C-%A+%?*$<'!9$35!4 7"8"8"9#;% ;%8#8%8&5#4"6#2!3!3!3!3 320./.,+,.20G0+O90G0'6#+**&* - /+).2>$T92bH@^C;S81>%8!2//0 1 1 2!4"6#7$7#<' <& =)">)"?)#A+$@)#B,%C-&C,%D,%D,%A)"A)"<&>'=&;%7!>( B+$D-%F/'H0(I1(I0(J1(H.$J0&I1&H1&H1'B,%B,%=)#;)":("7%7% 5#7% :("8&!5#:("9'!8% 9'!9'!7% 8& ;)#<*$:(":'"<*$>,&<*$;)$;(#:'";)#>,&D1,:(";("?,&?,%?,%@-&=)#=*#=*#<)"@-&?,%@-&?,%?,%A.'B/(9&>+%?,%@-&D0*G4-G4-?,%@-&A.(?,%<)#D1*H5.A.'D1*I6/J70E2+D1*G3-D1*F1+K4/J4.A*%@*$F0*D.(>)#@-&B/(H5.F3,E2+H4.J60H5.?+%<)"A.'H4-J60D1*L81>+$<(">*#=)#;(!D0)F2,G3,E1+D0)G4-I5/K81L82D1*C/)J61J61I4/C/*D0+F2-G3.H3/B.)D1+;(";)#@-'?-'=+%P=7A/)@-(D1+H6/J81I81N>6PA;QB=QD@QGE.<#U80_D' ?( @)!@)!>'<%A*$C,&D-'C,&B+%@*$@)#?)#>("@*$@)#?("?("?(">'!=& =& ?("?("?("@)#A*$A*$?("<%;$:#>'!@)#<%<%>'!=& =& =& =& =% ?'#?'#>)$>*%?+%@-&@-&?,%?*#@("H/*A&"W=7^E>O70>( 9%9%6"5!4!1.4!>+%>+%=*$9&5"8%5"4!;(!6">(">'!B+%D-'B+&@)#@)#@*$='!='!A*$>'!:$9#<%?("@)#B+%F/)J3-H1+F/)D-'B+&B,&C,&@)#?)#>("@*$B,&@)$='!@)#C,&@)#?)#A+%B+%@)#='!A+%H1+E.(C,&B,&A*$?(">'!@*$>'!?("?("@*$D-'D-'C,&C-'@*$A+%@)#?+$@-&>+$>+$A-'>+%@-'?,&>+%8' //.0 5"2 :&"<(#>)$A*$B+$N6/Q81M4.D+$D-'G0*H2,H3.D/*>+'>+'@-&@,%@,%?+$=)#>*#;' >*#A-&A-&@,%>+$=)"=*#=)"=)"?+$>*#?+$?+$=)"?+$@,%>*#A-&@-&>*#=)"@,%C/(A-&D0)E1+B.'?+$?+$>*$=*#@,%A-&@-&B.'A.'B/(B/(?-&D1+D1+C0*A/)B/)D1+E3-E4-H71I81H81G72I:5I<8F<8E:7I?=F<:('(.D2*XCB.'/1/..0!2#5$8% 9$9$:%;&<' =(!>)!@+#A,%D/'E0(F0)M80B-%H2+E/(D/'D/'B-%B,$A,$@+#?)">)!>)!>)"=(!;&9$9$9$8#8#:#56:"9!520-)SD>RD?RD?N?:L=8N=9O;6I50L83J51N94P;6K72F1-F2-E0,F2-H4/J61I50C.*H3/I40H4/J71L:3K92F4-B0)G5.F4-H5.H5/D2+>,%<*#A/(=+$;)"B0)G4.@.'=*$G4-J70H5.H5.D1*A.(H5.A.'=*#A.'>+$C0*A-'A.'@-'>+$?+%C0)C0*D1+D1+B/(=*#9&;(!F3,D1*@-&@-'A.'>+$?,&A.'?,%@-&A.'@,&?,&D1*A.'A.'?+%<)">+$>+$<)"=*#@-&<)"8%;(!6#=*#;(!9&8%8&8& 9'!9'!:(":("9'!7%4"8& 7%6$8& ;)#8&!3!3"4"3!0/3" .011:#N91S=6?,&3!3 5"7#;$A+&I/&J0&J0'K0)I1(E/&B,#@*#>(";& 8#5 05!6":$8";%<& ;% 7"5"7$5#/5#5"4 5 43331.---,,/ /.2!6$6 3++*''- - - .+,05@&Z?8aG?ZA8G.&335 001 1 1 2!4#5#5#6#:%;& >*$=("@)$B*%C+&D-(A+%C-%E-&E-&C+$@)!>' <&:$7"8">( B+#C,$F.&H/'I0(I0(J1(I/$H/$E.#G0%E/%?)"B-%>+$:(!<*$=+%:("8& 5$7%7& 7% 7%5#7%8& 7%6$7%:(#<*$8& :(";)$:(#7% 5#9'!:(";)#=+%?-'@.(>+$A.(@-'=*#=*$>+$:' ;(!<(">+%C0)C0)A.'A-'@-'=*#9& A.'@-'@-&A.'B/(B/)?,%7$8%;(!>+$C0)I5/>+$@-'B/(D1*E2+E2+E2+J71K5/J4/H2,B,'C-(C-'F0*D0)C0)C0*@-&@-&D1*E1+F3,E2+>*$<)"C/)F2,G3-F3,E1*?,%@-&?,%<)">+$H5.J70F3,I5/I5/F3,D1*B/(J60B.(@-'G3.J61@,';'"E0+D0+F2-F2-@,'H60?,'A/)E2,E3-C1+F3.H60K93K92N;4N=6L;4TC;O@;RC>SFCRHF/@&U80[A:I8202!028#7";&=( >)!>)!?*"@*#@+#A*#B*#B*"B+!C,"F.'E-&G/(H0)F.(I1*O70I1*H0)F.'D-&E-'E.'D-'B+%?("=& <%;%9#8"6"3!0!/ /.,-///-,+)'*LA6J=7I:4H:3I92H70F4-C0)E2+?+$;(!>)"@)#@)#B+%?(#>'!?(!A*"A*"?)!>'<%:#9#:#:#:$=& A*$B,&?("A*$@)#?(#@*$B+%A+%?(">'!>'!?("@)#A+%C,&A*$=& ='!?("<%>'!@)#=& <%>'!<%<% ='!='!?'"A)%?'#=(#=)$?*%?+%>+$=*#=)#C*&I1,A&"G,(D+%B+$=( 6#9%4 320.2 9& <)#?,&;)";(!?-&@-&;(!9&@+%E.(A*%>'!A+%F/)F/)A+%;%:$;$?("A+%@*$@)#A*$@)$=&!A*$F/*F/)G0*G0*F/*F0*G0+B+%?)#B,&A*$A*$C,&D-(C-'E.)D-'@)#A*$C,&D-'A+%<& >'!E/)H1+G1+E/)A+%<& <& A+%A+%A,%@*#>("@+$B,&A+$A+%B+%B+%A*$?*#=*#>+$@-&A-'=*$A/)>+%<*$9(!0 /.3"7% 4":&"=(#?*%D.(D-'I0)H/)D,%?&F/(M71M72K72C.)>+'>+'>+%>*#@,%A-&=*#:& 9%>*#<(!;' =)"=)"<)">*$?+$=)"?+$?+$?+$>*#;'!@,%C0)A-&@,%@-&@,%@,&E1+H4-B/(C/)E1*C/)B.(D0)E1*A-'C/(A-&?+$B.'D1*E2+F3,B0)D1+B/)D2,F3-E3-E2,E3-G6/I81K:3I81I:4J<7I<7J?;J?;KA?KA?('')=+$R>6WB;E1*/0-/2"3$3$4$6%8$8$9%:%;&<( >)"@+$A,%D/'F1*E0(M80H2+I4,H2+F1)E0(A+$A,$A,$A+$@*#?)!>(!>(!<' ;&9$9$9$8#8#9#6 65325/-+XHASD>RC>QC>NA+$H4.B/)A-'@-&=*#8%?,&@,&@-&A.(B/(>+$<)":'!<)"B/)E2+C0)B/)>+%?+%?,%?,%>+$>+%@-'>+$A.(B/)B/)B/(>+$7$8%:' 8%:'!=*$=*$@-&>+$9' 6#6#8%7$:' 7% ;)#:("9'":("6$;)#5#9'!:("7%6%<*%3"3!5#4"12 /1"2 0---6"8%6$3#2"4$3$7%=+#E/'I1&H1&I/'J1(E.%A+"?)!='!;%8#6"06"6":$9#8#9$9$5"16#7$12 6"7 7765530-.- , + --,1!*23.+,,',)'+-2A*$W@:^F@T=6;%013 /0 0 1 1 3"4#6#5"8#:%;& <'!<& >'"@($A*%A*%A)$B*#B*$A*#@(!>' >' >' ='4:$?(!B+#C,$F.&H/'H0'J1(K1(J0&H/%F/$L5*C-$>(!>)"=+$>,%7& 9'!9'!8& 6$4"7%7%6$6$6$4"8& 8& ;)#?-'>,'5#;)#=+%9'!5#6$9'!;)#;)#=+%>,&=+%@-'B/(>+$;(!=)#?,%8%;(!;(!>+%C0)E2+D1+?,&9&<)"D1+I6/B/(?,%C0*@-'@-&B/(A.(>+$?,&A.'D0*F3,D1+?,%=)#B/(F3,G3-G4-J60H2-D.(J4/K50F0*G1,J3.E1+B/(A.(A.'C0)G4-@-&B/(D1*D1+F3,F2,B/(I6/G3-@-&?,%?,%B/(>*$@-&G4-G4-?+%B/(I6/K81G3-@,&?,%G4-C/*E0+E0+A-(B-)P<7C/*G2-F1-A-(A/)K93M:5D1+C1+G4/J71M:4P>8L94N<7O=8O>8QA;L?9RD?THEQGE.8H+#J1*<+%1 1 035 6!;&:%=( ?)"?*"@+#A+$C+%B*$B+#C,"D-$G/(E-&F.'G/(G/(H0)J2,H0)J2+F/(D-&D,&D-&C,&B+$@)#>'!<&<%;%9#6"3!0 .---10./-,,)')NC>NB:NA;L=6J;4I92H70D3+?,%@-&?+$=*#?*#@*$A*%A+%?)#>'!>( @)!@*"@)!=&;%;$8":#<%=& >'"@)#@*$?("@)#A+%B+%@*$?("?("@*$A+%?(">("?("@)#?(";%<%B+%C,&>'!<%='!?(">'!@)#@*$?("<%<%=&!?($>'#<'#=(#>)$>*$?+$?+$@+%D,(B)%D($C($@'!@*">*"8'6#230.-4"A/)D1+?,&>,%=*#=*#;(!;(!=*$?+$E/)?(">("?("C-'J3-H2,=& ?(#@)$>'"@*$?)#?("@)#>("<% A+%F/)A+%B,&E.)E.(B,&B,&?)#=& A*$B,&D.(D.(B+%A*$D.(F0*D.(B+&>("<& ;' :& >*$B.'@,%?,%A-&B/(A.'?,%A-'?,%@-&?,%;(!<)"@-&@,&>("D-'C-'A+%=)";(!=*#?,%<)":'!C1+A.(=*$8' 0.0 3#4"7%!8% :% =(#B,&D-'G/(F.'G/(D+$H1+L5/J4.P;6D/+?,(=+'<)#<(!?,%B.(?,%?,%?+$@-&=*#;(!=)"?+$>+$@,&A-&?+$?+$?+$?+$>*$9%=*#B.'@,%@,%A-&B.'B.'B.'F3,@-&@,%B/(B/(A-&B.(D0)@,%C/(B/(A-&C/(E2+C1*F4-H5.G4.D1+E2,G4.F3.E2,F4.E5.J93N=6L<5K<5L>9L>:LA=J?;LB@MCA)&# & 6#K80S?8G2+1.+-/ 2#3#4$6%8$8$8$9%;&<( ?*#@+$@+#A,%E0)C-&K5.H2+F1)G1*F1)G1*B-%@+#?)"?)#@)$?("=( =( <' ;%9$9$8%8%9&8$6"6!7!4 330,*.YIDVGCVHCQD?OB+%@-'C0)>+%B0):'!>+$@-&>+$=*$?,&@-'<)"=*$@-&B/(E2+A.(:'!9&:'!:' 7$8%>+%<*#=*#<)":'!;(!;(!6#9&9'!;)#:(#5#9'!:("9'!7& 9'!;)#9'!3!5#5#3!3!7%3!10".!/!3#*/./01 3#0!3#2"4":( ?,%D."B."G-%I/'F/&B-$@*!>("<& 9$8#336#8#9$7!67!5"/26#3!.6$6!5 654320.-.-+*)(/--0/(+*$',)(+-1<% C,'D-'>(#/..//000 2!3"5#5#5#8#:% :%;& <&!>'"B*&B*&C+&E.(G/)F.(C,%@)"=' ='<%;$5 ;%@)"B+#D-%F.&H/'H0(J1)M3*F-">%=&F0%B,%<'=)";)"8& :("9'!9'!6%4"3!5#6$7%7%5#5#;)#:(#:(":(";)#;)#6$<*$:("9'!:(";)$;)#:("9'!:(";)#=*#>+$;(";(!?,%>+$:' :' ?,&>+$?,%>+%<)";(!?,&D1*G4-G4-E2+C0*E2,>+$?,%B/(B/(?,&A.'D1+E2,I6/I5/C0*B/(D1+C0)E2+D1*C/)H2-L60K5/I3-G1,I3.L60?+%B0)E2+F2,F3-F3,A.(B/(D1*G4-J60I6/G4-K81B/(@-&A.'?,%@-&>+$>+$?+%A-'C/)B/)P=6P<6G4-@-&B/(K71D0+@+&C/*F2-J61P<7D/+O;6I50B.)C1+J82I71J72I71M:5K93J82P>9I62K85M;7O>:QA=QE?VJDSHDTIE,. 32//3"3!5!6!8#;&7!;&>(!@*#A+$A+$A)#A*#C,#E.$F/&G0)F.'G/(I1*J2,I1*F.'H0)H1*F.'D-&C+%B+$B+$A+$A*$?("=& <%;%8"6"3!0 -++,0..1/**)(+QE@PD'<%<&>( ?(!=& 9";$?("A*$@)#?(">(">("?("B+%C-'A+%>'!=& @)$C-'?("='!<%<& >'!?("?("A*$@)$>'!='!?("@)#>(">("?)#>'!<%<% >'"?'#=%!<'"@+&B.(@-&?,%@,%A,&E,(@(#D($C)#@(!?(!=( 9&7#34 0--7%>+%;(">+%:(!?-&:'!:' >+$=*$:%<& B,&D.(E.(D-'I2,K5/A*$D-'@)$K4/D.(?("@)$D-'E/)D-'D.(C-'>("@*$B,&C,&F/)H2,?)#=& C-'C,&C,'D.(B,&A*$D-(C,&B+%C-'A*$>)#?,%?,%@.'@-&=*#=+$B/(F4-E3,?-&@-&>,%E2+F4-A.'=+$?,%@,&?)#B,&@*$D-'B-'?,%A.'D1*B/(@.(>+%=+%=*$8' -.1!1 4"8&"8% 8$=(#?(">("A)"F.'E-&N6/S;5I2,C,&P;7D0*@-)?,(>*$>*#@,%@,%=*#A-&@,%@-&@,%=)";(!<(!9&:' ;(!;'!<(!=)"=*#=)"8%=)#=*#=*#?,%@-&@-&D0)?+$F2+C/(A.'C/(B/(?+$@,%B/(C0)@-&<)">*#E2+K81D2+B0)D1+G4.F3.G5/H60F3-H5/K82G6/J92M=6O?8O?8M>9O@;MB>OD@PECNDB+,'(0A-&K6/C.(0+)+.0"1"3#4$6$7#7#9$9%:%<' >)!>)"@+$E0(D/'J5-I3,E/(D/'K6.G1*C-&@+#>(!='!?(#>'"=' =( <' ;&9%8%8&8&9' 7$6!6"7!5 62/-))WGAYKFRD?I=7NB,%J81M;4G4.B0)B0)D2+=+$A/(C1+B0)A/(C1+D2+?,%9& <)#D1*G4-B/)F3-@-'@-&B/(B/(@-&9&A.(@-';(!:'!=*$6$?,%>+%>+$<)";(!?,&D1*;)"?,%@-&A.'B/)A.(B0)B/)B/)?,%;(!;("?,&E2+D1+?,%;(!;(!<)"7$8%9& <)#?,%=*$8%9&8%6#6#9& 9'"9("5$5#;)#9'"2 8'!9'!6$2 3!6$4#16$5#5#3#0# - 4$,./-/.2"0 1!3#5%9(<,%B.#A/"C-#G-%G/&D.%A+"?)"='!:%9$7#15#6#8%8$8$6"3 115"6$4"3!3!3!3!3!0.,,--+.++)(,/,/1,*(&&-*'(*,,0./.--*-./0 1 2!3"4"4"5"7#9$7"=("<% @)$B+&B+&D-(D+$D,%C+%A*#?)">(!>(!=' 239%>*!@+#D/&G1)G1(F0'F/%J0&K1'M6+W@5YC9M70=( ;(!9' 8'!9'!8& 7%5#5#5#5#5#6$7% 6%7& :(":)#5#9'!:)#9'!8&!<*$8&!?-'=+%:(#:(":("5#;)#9& :'!<)";("?,&@-&<)#:(!<)#?,%=*#@-&?,%;(!:'!?,%B0)B/(G4-G4.B/(>+$B/(E2+?,%=*#?,%A.'C0)H5.I6/H5.G4-E2,A.(=*#A.'E2+H4.J4/I3.D.(A+%H2,J4.H3-C1*J81H5.C0*E2+E2+=*$@-&K71I6/K81K82F3-B/(=)#A.'E2+B/)=*$@-&@-&?+%@,&?,%>+$C0)B/(E2,C0)D1*G3-B.)@,'B.)E1,I40I50F2-M94P<7J71I61N<6R?9L:4L:4I60J82L:4M:5H62J73J84L;7N?:QD?VIDSIE3"../*+/2!5#6!8#;&;&:$=( ?*"A+$A,$B+$A*#A*#D-$F/%F/'G/)G0)H0*N6/R:4O70H0*F/(G/(E-&C,%B+$B+$B+$C,%B+%@*#>(!<&:$7"5"2!0 -,-,0/9%B-&>(!/**),SGARE>QD>PA:M?8J93J91G6.D1*B/(A.'D1*F0*G0*D.(A+%@)#>'!=&>( >( >'<&=&>'!;%=& @*$A*$@)$?(">'!='!A*$?)#A+%B,&@)#='!?)#C,&?("<& 9"9#='!A*$@)#>'!=& =& >("@*$@)$>(">("='!<& ;%<& ?'">&!<$ <'!@,&B/(@-&?,%?,%A,%D+%A(#A& C("@' <%;%:'8%4 4 1./8% :("@-(@-'9& =*#>+$<*#:(!;(!?+$@*$H1,D-'B+%D-'K5/K5/>("D.(B+%@*$>("@*$?)#>("C,&F/)D.(A+%@)#>("A+%D-'C,&F/*?("?("='!>'!B,&F0*F/*D-'A+%F0*H1+F0*@)#;& =*#@-&B/(E1+E2+D0*D1*G4-I6/G4-E2+I5/E1*A.'B/(D0)D0*D0)<& A+%<& A+%A,&?,&?-&@-&G4-A.(<*$@-'<)#7%-.1!/14"7$:'!@+&E-&?)#=$G-&J0)N4-Q82O82M5/D/*;(!B/*@-(?,&@-&>+$=*#:' >*#=*#@,%@-&>*$>*#>+$<(";'!:' :&:' <(!=)#?+$>*#<)":&=)#@-&>*$;(!E2+C0)H4-E1*D0*H5.L92H4.B/(=*#A-&A-&@,%A.'E2+G4-<)"<*#C0)B/)A.(C1+G5/J72I60K93N=6K:3J:3O>7QA:O@;PA)!?)">'"=& <&<' <' ;'8&7%7%7%7&6$4!6#5 35 3/.+)YIBUGBSD?OB+%?-&F4-A/(C1*D2,C0*B0)B0)>,%<*#=*#@-'G4-F3-A.'@-&?,%>+$>+%@-'A.'>+$>+%A.'C0)@-'B/(8%;(!>+%>+$:' 9& <*#C0)=+$;(!>+%>+%@-'@-&@.'@.'@-&@-&A.'<)#<)">,%A.'?,&;(!:' <)#:'!;(";(!:' >,%9& 9' 9& ;(":' 6$>,%6$6$8& 6$7%;)#/6$8& 6$4"3!5$4"2 4"3"10/"/"0!+*.*.01!0 0 4$3#6%<,$A/&D0#D/$E+#G.%E.%B-$@+#>(";& 9$9%4 8%4"5#7$7%6$5"3!3 3!3!3"4#3"0000/-,,-,-+*++,0 ,.0/-,))-+'%'*))*),,-+*..01!3"4#4#4"3!3!5#6"8#<'":% @*%?)$A+%A*$@("@)"@(">(!=( =' ='<&06#;'=) @+"C.%F1(F0'F0'H0&J0&K2(XB6dMBWA9F1)=)"=*$:("8& 8&!7%5#5#6%8& 6$5#5#5#6%5#6$6$4"5#:("9("9'"9'!:("@/)<*$9'!:("9'!7% =+%8%<)"=*$>+$?,%;("<)"=*$?,%@-&@-&>+%B/)?,%9& <)"A/(B/)C0*G4-?-&?,&D1+D1*>+$@-&@-&?,%A.'G4.E2,E2+C0)@-&>+$?,%>+$A.'G2,K5/H2-C-'C.(F0*E/)E1+G4.H60F3,D1*F3-D1+E2+K81I60K81F3-C0)A.'@-&@-&B/)L92J70C0*?,%;(!<)"D1*?,%?,%E2+=*#<)#D0*D1*C/*B.)B.)@+'H4/M94M94N:5R>:O;6Q?9N<6O=7Q?9M;5E3-H60L:4L94J83K84K85J95L;7L>9SGAYMHWMI/.240/.05#6"9$9%;&<' >)!@+#A,$A,$B,$B+$C+$C-#E.$F/'H0*J2,K3,M5.P81M5/H1*F.(F/(E-'C,&B+%B+$A*$A*#?)">(!<& ;%9$7"5!2"0 ../144H3*U?7N708#-,(,UICTH@SF@QB;N@9I92H70G5.D2+@.'=)#@.'B+%?)#>'!?("A*$A+%?(!<%9#;$=&>'!?("?("?)#?(">("@)#@*$>'"='!B,&='!?("B,&A+%>("?("C-'B,&='!9#:#=& @)#@)#=& ='!?)#?)#B+%@*$>("?)#=& <% ;$='!?'"=% ;$;(!>+$?,%>,%?,%?,%@+$C*#B)"?%D*#B)">$<%;'8#4 4 1./8%<)$?,&@.(=*$;(!?,%=*#8%:(!C/(?)#F0*@*$?)#A+%G0*F/)<% E.(C-'?)#D.(G0+D-(?)#='!?(#C,'>("?(">'!?("A*%B,&H2,A*$B,&G1+C-'G1+L60H1+F/)B,&E.)E/)F0*C-'@+%B/(E1*G3-G4-C0)@-&B.'F2,I6/J70K70L92E2+A-&C0)F2+A.'=)#B,&C-'<% <& <(!;(!;(!?-&F2+C0*B0*@.(>,&;)#,----16#:'!?*%E-'B*#H.&Z@7`F=X>5N5-N6/P71>*%>*#=*$<)#?,%A.'<)"=)":' ;(!;(!=*#=*#<(!=)#?+$?,%?,%=*#;(!:' :& :' ?,%?,%?,%<(!<)"@-&@-&>*#H4.F3,G3,D1*D0*I6/N;4K81H5.F2+F3,E2+C/)A.'A.'F2+?-&@-&@-&B0*D2,F3-N<6M:4K93P>8Q@9N=6K:4M=6QA:QB=RC?PD@QGCSIFSIGSJH'&'((*-,+*,. 0"0!0!1!3!6"6"9$9$8$:%=(!?*#B-&D.'G2*G2+D.'D/'F0)C.&A+$B,%A,$?*"@+#>'!=%<&<' <' <' 8&7%6$6$5$4#4"8%!5!248#2.,*\LETE@SE@UHBTGBPA,&@.'=*$=+$B0)A/(E3,C0*@-'?-&B/)H5/E2+E2+A.(@-&@-'?,&<)#@-'B/(@.'>,%>+%@-'?,&=*#<)"=*#>,%A.'=+$>+%=*$?,&?,%:' <)"=+$?,&@-'A.(@.'=*$:'!;(";(!;(!:(!:'!=*#:(!:'!<)#<)#;)";)"8%:'!:(!<)"=*#<*#:'!7$9& 5#5$7% 5#9("8& 6%6$7% 7% 6%4"3!2!2!3!4#1 0/ .!. +)1 +.1 0 /-2"2"3#8'?-%D/#D/#E,#F,$E.%C.%B,$@*$='!;& :& 7#4 3!4"5#6$6#5#5"4!3 2 2!4"5$1 000 1 0...,++),.....2...+*-0+''()'),//--,-./0 3"4#4#4"4"4"4#5#6#:% ;& ;'!=)#=(#?*%@*#A*#@)#?)!=( <'<&:$7!3 9%<( =( ?*!B-$E0'G1(H2(H0&E,!N6,aK@gQFJ4-=( =)"<*#8' 8& 9'!6%4"3!5#8'!8&!6%6$4#2 4"112 5#9'!9'":(":(";)$=+%<*$:("9'"8&!9'";(#9& 9& <)"<)"<)#=*#=*#@-&@-&=*$;("<)#?,&=*#:'!:' @-'C0)?,%D2+@-'?,&@.'A/(C0)G4-@-'@-'B/)E2,G4.D1+H5/G4-@.'?,%A.'?,%>)#G1+H3-E/*B-'B,&C.(D0*A.(@-'C0)A/(A.(H5.I60H5/F3,C0*>+$@-&D1*G4-H5.F3,O<5J71D1*=*#;(!@,&B/(@-'F3,G4-?,%=)#F3,@-'@-'@,'@,'D0+?+'>*%9% @,'I50I50G5/P>9P=8L:4H60F4.L:4J82J72N<7O<8K95L;7UD@TGAVICVJEWLH-.231 1 .05"7":% 7";&>)!>)!?*"@*#A+$B+$C,%D,%D-$D.$F.'G0)J2+J2,J2+K3-J2,G0)F.(F.(F/(F/(E.(E.'C-&B+$@)#>("=& ;&:%8#5!1 /01236 6!P;2[DPA;Q@:M=5J81H5.F3,E2+H5/D.(>("@)$?)#>'">'!='=&<%<%;%=&?("@*$@)#<& <% @*$A+%>'"='!C,&?)#?)#A+%@*$>(">(">("<& ?("<& <& ='!>("?(#?)#A*$@*$?("@*$?(#>'!>("=&!<% ;$>'!>'!=$;$;(!=*#=*#>,$A-%@+$A*#D*$D+$C("O4-O5.E*#?&<$8!5!31..8% ?-'>,&A/)?,%7$;(!:(!9&<)"A-'=& M60A*%B,&E.(F0*D.(?)#B,&?)#='!E/)G1+E/)B,&>'">'!G1+A+%=&!>'!A+%A+%?)#G1+D.(@*$I2,H1,L5/N82E/)E/)E/)E/)B,&D-'C-'B-&C/)@-&A-'A.'>*$=*#A-&D0)E2+J60J60H4-G3-E2+D0)C/(A-'>*$D-(B,&;$:$<' :' :'!C1*H4-B/)G4.A/)>+%<*$/,/,/37"9$<& B+"B*#R90jOGrXOfLDT;2O70K3*?("L60G2->)$=)#@-&<(":' 8%:' ;(!;' :' :&:' <("@,%@,&=*#;'!:' :' =*#?,%A.'=)"=)#D1*I5/B.'?,%L92E1*C/(C0)C0)G3-H4-E2+H5.I6/I6/I5/G4-F3,D0)E1*A/(D2+G4.E3-G4.UBSGBTJFUJGULJTKI*(&&&&())),-/!/!/!0!3!6"7#8$8$9$:%<' >*"A,%B-&C.'F1*J4-P:3F1)B,%A,$A,$@+$?)">)!=' =%<%<'=(!;( 9&7%6$5$5$ 5$7$9% 8";#F,$S7-N1'4 +),XICVHCTFAOBL94M94N:5K72G3.I50C/*E1-G3/J61K72I50H4/I50G3.F2-D0+@,'>*%I70K82J81D1+A.(C1*B/)E2,F3,G4-F3-B/(>+%A.'>+$C1*D2+B/)@.'?,%E2+D1*B0)B/(B/(?,%A.'>,%@-&@-'?,&>,%@-&@-&>+$<)"<)"=+$=*$>+%A.'A.'?,&?,%>+%?,&;(!=*#?,&@-'A.'@.'@-'@-&>+%<)#=*$A.';(!<*#<)";("<)"<*#:'!;(!8%7$9' <*#<)#>,%;("9& 7$5"3!4"3!2!6$6$4"7%4"6$5#2 12 2 3!2 1/,--*0.*2//,.1 2!7#=+$C-#E-#F-#F,%F.&D.%C-$A+$?)#<'!;'!;'!22!3!4"5#6#5#4"3!2 3 3!2!2!1 1001 1 0..-***,./.0 5%;&!3-,+),/*'()((),*)), /".-.02!2"2!3!4"5#5$6#8$:% ;&!;'!<(">)#?)#>(!?(!>)!>(!=( =' ;&8#4!6";'=) <(?)!B-$E0'H2)I2)H.$@'W@5gQF]G=A+$9$;(!8&6$7%7& 7% 5#5#7% 8&!6$02 114"5#2 5#7% 9'!9'"9'"9'!:(";)$<*$;)#7% 7%:(":'!8%8%:'!<)"=+$=*#<)#=*#=*#=*$<)";(!=*$@.'?,&:' A.(@.'?,%A.'B/(>+$A.(@-'A.(E2,F3,C0*A.(C0*D1*D2+H6/F3-=*#?,%A.(B/(E/)H2,H2-G1,D.(C-(F1+G4-D2+A.'E2+K81F4-F3-G4-E2+F3,E2+<)"B0)I6/J71J70I6/H5/>+$>+$E2+B/(<)"?,%@-'C0*B/(?,%@-&C0)<)#=)$D0+C/*A-(H4/G3.8$ A-(E1,G4/L94M;5I71C1+F4.I71G50J82J72K95K95K95M<8P@)!>)!?)"?*"A*$C+%D-%D.$D.$D-&G/(H0*H0*H0*I1+J2,H0*F.'C,%B*$A*$A*$@)#@)"?(">("='!=' ='<&:$7#3"1 22126 9$V@8ZD;H2*5!-,+ZOKYLFWKDWICVG@TE>Q@9QA9P>7K92F3-E2+F2,B+%@*$A*$@)#?)#?(!>( ='=&<&;%<&>("?(#>("<% <%@*$A+%='!='!B,&B+%A*%>("<& >'!A*$@*$<& ?(">(">(">'!=& >'!@*$@*$>(">'">(">("='!=& ='!<& ;$>(">' =$;%;( =+#=*#>-#A,$@*"C*#E*$E*$L0*eHAfJCP3,A&<"9!6"20/.8% C1+F4.I71A/(5#7%8%7%:(!?*$=&!M71A+%B,&E/)D.(D-(F/)C-'@*$?(#A*%D.(E.)B,&?)#=& E/)D.(>("?)#D.(E/)@*$@*$G1+>'"A+%E.(G1+F0*A+%C,'C-'G0+D.(C-'B+&B-'D1*=)"<)">+$<("=*#B.'C0)B/(K81K71F3,G4-H4-E1*C0)F2,E1+D.(C,&<% ;$>)#=*#9&C1*D1*F4.G4.A/)A/)@.(.-../28#<& <& D+#A*!S90nTIz`VoTJU;1M5,O5,B+%M6/P;5J61C/*D0*A.'=*#9&=*#>*#:' 9&;(!:&:& >+$>*#;'!:' ;(!;(!@,&B.(D1*B.'@,%?+$9&8%?,%<)">+$@,&@,%A-'F2,E1*B.(F3,G4-I5/J70H5.I5.I6/K70G5.I60L:3K92I71R@:N<6O=7O=7O<6P?9SCQC>REAUJFVKHVLJXNM)%$%('&(+,*,. . / 0 3!6"7"7"7#8$:%;&=)!A,%B-&B-&H3,I3,K5.E0)A,%@+$@*#@*#?)"?("?( >(='='>) >) =(!:'!8&!7%$6%"9&!9#9 B&Z:-jH8eA0B*!.--XHCWIDTFAL@:I<7K94L83L84M94F2-J62H4/G3/H40L83O;6J61C/*G3.A-(=)%C/+J62I50J71K92I6/D2+B0)C0)@-'>+%A/(E2,C1+>,%C1*E3,@.(A/(C1+@.'E2,?,%B0)D1*A.'>+$A.'@-&@-&?,%=*$<)"<*#=+$>,%>+%=+$=*$;("7$@-&>+%<)";)"<)"A.(>+$A.(>+$<*#@-'@.'A.(?,%?-&A/(A.(=*$;(!@.'=*$=+$?,&=+$;(":'!8&;("9&5"7%=+$;(!;(!9' 9& 8%5#4#6$6%5#5#6$06$4"4"4#3!02 111 2 1 --,++-( ?*"E2*>,%2 ,017"=)"C-%G-#G.$G-&G.&E.%C.%B-%@+%>)#<'!<'"5"6#3!3"4"5#6$3!112 2!1 /.1 0//0/.--,,.01117#C/(K6/F/(4+**+-+'&'(*,--+,,,----/0 0 1 2!4"4#3"6"7"8#;& 9$<'">)#<'!;&<'=' =( >(!>)!<(!8%27$<(=) =( ?*!C-$F0'H2)I1'F,"C* _H=eNCO90>)!:&8& 7&3"3!4"4"3"4#5$7%6$3!2 003!5$5#8& 9'"9("8'!7% 7%8'!:(#9'"7%6$8'!>-';("9& 9&9& 9' <)";("<)#<)#:(!:' ;)"9&<)#?,&?,%=*#?,%@.'>+$?,&C0*F3,G4-B/(<*#=*#@.'A/(A.'E3,=*#:(!?,&C0)>+$B/)C0)F1+H3-G1,D.)K60F0+D/)D/)>+%C1*B/)G4.I70E3,@.'E2+D1*I60H5/A.(B0)I6/D1*D1*B/)A.(D1+A.'?,%?,%<)"<)"?,%=*#>+$<)#?,%C0*B/(H4/Q=9M95J61I50G3/D0+B.)H4/G4/E3-C1+?-(@.)E3-G5/D2,B0*L:4P=9O<9N=9P?;RB>QE?WJEUJFWMI&-44 1 1 3"3!4 7#<'!;&8#<'=(!>)!>)!>)!@)"B*$C,$D.$E.%F.(G/)H0)G0)G0)I1*J2,H1*F.(C,%B*$A*$A*#@)#?("?(">(!='!<& =%<$:#7#3#1!11027"A,$]G?YC:A,#/*+,\QMWKDUIBVIBXJCWHARB;RB:N;4H6/F3,F3,D1*@)#B+&D-'A*$>(">(!?( ?(!>( =';%=& <& <& ='!='!='!?)#@)$=& >'!A+%B,&A+%@)$=&!=& >(">("<& @*$='!='!='!=& =&!>(">("='!>("='!A*$>("<& >("<% ;%>("?(!=&;%;(<+!<*!<+!?*"A+#D+$D("C'!P2-tVOwZST80@$("@*$?)#A+%G1+C-'E.)C-'A+%F0*E/)A+%A*%=&!?)#D.(A+%?)#C,'G1+F0*<& J3.C-'@*$A+%?)#>'!@*$A+%='!E.)E.)C-'@*$A,&F2,>+$?,%A.'=*#>+$C0)F3,D1*H4.M:3J6/E2+C/)B/(E2+H5.C0)@*$@*$<& <% ?*$?,%8&C1*C/)D2,D1+B/*C1+B0*0 -,,.28"?(!=%F-$D+"R8.nSI~dYuZPW=2I0'Q7.P81Q92M60E/)@+%E2+C0)=*#9&:' :' 9%9&>+$:& 9%;(!;(!9&9&:' 9&<)":' ?,%A-'>+$>*$;(!A-&M93D0*?,%>+$;'!;(!B/(C0)B/(C0)D1*F3,I6/D1*E2,J81N<5P=7O=7N;5N;5N;6Q?9L:4K:4O>8Q@

:O>:P?;OA(>(=(!;'"9'!8'#6%!5$ 6% 8$9!>#W9-iH9gE4J1%--*WGAUGBRD?OB+$@-&D1+D2+@-&>+$>+$=*#<)#<)";(";(!;)"<)#=+$<*#=*$@.';("?,%=+$=+$?,%=+$=*$?,%?-&=*$;("=*$?,%;(!:'!:' :'!<)#>,%;("9& :(!:'!:'!:'!4!6#<)#;("9& 8%7$6$6#4"4"5#5#4#9'!4"5$6$3!3!3!/01 102 2 .,++,/3M70cLF^IB;)#0115 <%B,&G.$H.$I.&H/'F.&C.%B-$B,&?*$=("<("8$23!2!3"5"5#3!2 100/.,/0.-......./1 2228$G3-[H@[D=E.(2!,--,/*''(,9%C-&A+#4 ,,-+,-..///1 3"4#4"3!6"5!8#9$9$<'"=(#;&<'<' <' =' >'!<' 7$7$29%<( =) ?*!A,#D.%E0'F0'G.$C)H0%U?3U?4?)"=( :&7%7%4#3"3"3!3"5#4#6$5#3"2 113"6%8& 8&!:)#9'"7& ;)#:(#5#6$:(#6$5#5#5#;(!;("<)":' 8&9& :'!<)#:(!:' :' 9' 6$<)#:(!;("<)#=*#@-';)"?,%@-'C0*I6/E2+D1+@.'@-'B/)D1*E2+@-&=*$>+%@-'B/(E3,D1+E0*E/*C.(B,'G1+A,&G1+E1+A/(C1*K81G4.F3,B/)@.'C0*B/(E2,I6/H5.E2+E2+:'!A.'E2+D1*B/(@.'8%9' :' =*#?,%=*#B0)@-'@-'G4-J71D0,H4/L83L83K72L83K72C/+D0+A.)@-(?-'>,&D2,F3.G5/H61G5/D2,D2.J84M;8O>:PA(!>)!>(!?("A)#B+#C-$E.&F.(G/)H0*G0)G/)G0)G0)G/)G0)E.(D-&C,%B+%A*$@*#@*#@*#?)#?)"<%<$9#6#3#2"1 214 9$D/'XCQB;TC(">(">("<& >("A+%A+%@*$D.(A+%;%:$<& @*$B+&<& <& >(">("='!='!>'!='!?)#='!E/)@*$>("@*$;%<& >("?)">( <';'<) =*!=+!@+!B,"E,#D( E(!U5/yZS{^WT80@%>"<#5!1.-.;(#C1+F4.@-'8&9& ;(">,%B0)B/)=)#9#>("A+%='!@*$A+%A+%D-(>("C-'C-'F/*G1,D.(A+%D.(D.(F/*C-'C-'?)#B,&G0+C,'A+%N82H2,='!>("B,&C-'E/*D.(<% ?)#@*$B+&A+%@+%C0)?,%B/(C0)?,%?,%D1*H5.F2,B/(L81J70C0)?,%@-&D1*G4-@-&B,&A+%?)#>("?*#=*$8&@.'?+%B/)@.(B0*G5/G5/1!+-,058"=%<$C*"C)!O5+kQF~dYw\RY>4N4,P6.P80N5/G/)A+%B,&@,%>+$@-&?,%<)":&8$:' ?+$9%8$9%:%:%9%9$8$:%9$;& =("<)"<*#?-&C0)B.(@-&B0)C0)<)#=+$A/(@.'A/(?-&?,%C1*F3-B0)C1*H6/K93M;5P>8P>8M;5R?:L:4K:4O>8Q@;Q@SE@TFAVICWJEWMIYNJ[QOZQO+%$#&&&'%')+-. / 1!3!4!5!7"8#:$;&>(!@)#A+$B+%E.(I2,K4-J3-H1+C,%C,&B+$?("?("@)"@) >(='='=(=(;' 9'8'!7&!5$4#7%6!9"P6,dG;hJ;S8,-*(XHBSD@RC?RE@PB=M>9N;6E1,F2-B.)@,'C/*G3.G3.G3/D0+H4/H40G3.G3.B/*B.)B/*C/*F2-J71H5.B/(D1+@.'?-&A.'?,&@-';("@-'B/)@-&=*#=*#?,%<)#@-'E2,F3,?,&E2+A/(>+%>+$>,%>+%?,%C0*?,&;(":(!<)";(":' :'!:'!9' ;)"@-';(";)">,%>+%<)">,%<)#9' ;("=*$<)#9& :(!<*#;(":(!:'!9&:'!;)"9& 9' :(!9' 6$:'!4!6$9& 9& 8%9& 8&6#5#4"2!4"3"4#6%5$3"4"1 1 3"0.1 2!/01/++-.-/A*$fNGpWQI4.5 0137!?)$D-$F.$H/&I/(G/'D.%C-%A+%?)#=("<'!;'"16#3!3!4"3!2 3!3!1/,,-.0.-----.0 //12234@*"XB:`H@V=6B+$0/1 /0,)&'*9$K5-T>7N903 ,+++,./0///1!3#4"4#5#6"6"8#:% ;&!:& 9$9$;&;&;%<'"=(";& 6#3!4!9&=) >) @+"C-$D.%D.%D.$E+!A(E.#G1&B,"6!:$5"5#5#4"4"4#3!4"4#4"4"2 2 2 3!4#6$7& 8& 7% 7% 7& 8'!:(#9'"6%4#5#5$7% 6$6$8&:'!<*#:' 8&9& :'!<)#9' ;)";)"9' 9' ?-&9' :' 7$9& ?-&?,&@-'?,&@.'C0)C0*@-'@-&B/(B/)C1*D1+@-&@-'@-'A.(D1+E3,B/(B,'@*%?*$C.(J4/J5/M82G3-E3,E3,D1+?,&?,%@-&B/(A/(>+%B/(F3,F3-B/)?,&?,%;)"?,%@-'?,%<)#;(!=*$>,%A.(B/(A.'?,%;(";(!@-'F3-H4/G3.M94N:6M94K72H4/B.)<(#@.(B0*A/*=+%<*$D2-D2,C1+C0+H61N<8N<8P?;SA>RD?UICYMHYNK3:!V8/cF=WB(!?*"?)"@("A*#B+"C-#E.&F.(H0*I1+H1*G0)F/(F.(F/(G0)D-'C,%B+%B+%A*$@*#@)#@)#?)#?(!>'>&:$6$4$3#3!3!3!6"8#>) G2)B-$3.,+*[PL[OIZMHYLEVJBQC;M<5K;4N<6J82I71G4/C1*@-&>+%>,%:' ;& ='!@*$B,&A+%?)#B,&=&!<& =&!<& ='!>(">("=&!;%B,&K5/J4.='!9";$<% >("@*$?)#='!='!;%?)#>("='!@*$B+&>(">(">("J3.E.)B,&B,&<& ='!?(#>(!B,$C.&A.%>+">+"?,"A,"C-#@(B'I,$W71vWPx\TQ5.C' ?#:!4 0/-.<*$?-'=+%B/)A/(9' =+$I70K92B0);' =&!C-'C-'='!@*$A+&C-'F/*C-'F0+A+%D.(B+&?)$A+%C-'E/)I3.A+%G1+I3-I3.H2,C-'H2,WA;C-'<& A+&H2,G1+D.(E/)@*$>(#@*$F0*H2,E/)A.'>+$?,%A.'@-&A.'D1*E2+B/(A.'F3,G3-E1+B/(A.'A.'C/)C0)F0*D.(B,&A+%>)#<)"<*#=+$=*$@-'>,&B/*H60I822"**,/4 7#;&9$@)!A)"K2+eLC{aYu\SX?6Q81P80O70I2+B,%A+%H2,D.(D.(D/)?*$='!?)#>("@)$?(#<& ;%;%;%;%9#9#:$<& <& <& ;& ;'!:(!;)">+$>+$?,&C0*D0*9' :'!F4-=+$?-&D1+A/(C0*G5.E3-E3,H5/J71K93O<7P>8M;5O<6J72K:3P?9Q@;Q@Q@^A38'!/+0 SE@RC?QB>N@;J;6I51G4/P<7M95H4/H4/D0+D0,D1,F3.G3.E1,C/+G3/B/*@,(?,'@-(C0+D1*@-&@.'E2+C0*@-'B/)=+$<)#9' =*$B/)B0)B0*?-'>,%@.(C2+E3-I70@.'A/(@-&>+%?,%=+$:'!=*$@.'@-&<)#;)"<)#;(":(!;(";(":'!=+$>,%=*$=+$=+$<)#=+$7%5"8&<)#<*#<*#:'!;(";)";(":(!:'!7%9' ;("9' 8%9& :'!6#8%7%6$5#4!8%6#9' 9& 6$5"4#4#3"3"4#5#3!3!4"1 1 2!.2 3"/.0/**-../0]C'!//11:(@/%B0#D2%G/'G/'F.&D,%A*$>(";& ;& :& 4!5!3!2!3"3!13!3!3!1.,-.//..--,-////00327 G1([C;`F?O6/3!+,,,2-+**.F0'W@9[D*!A,#C.%C-$B-$D-#F-#F.#D-"D.#=(9$:&9& 7%4#3"3"3!14#3"2!1/1 2 4"4#4"3"6$4"7& 8&!6$;)$6$5#5#5#4#7% 7% 7%7$8&;("9' 9&8%:' <)";)":'!>,%>+%:' 9' A.(<*#7%=+$?,&=+$@-&B0)A.(B/)@-'=*$>+%A.(C1*A/(?-&>,%@-&?-&A.(E2,C0*?+%A,&B-'D/)G1,I3.K5/M72G4.F4.D2+@-&:(!9' >+$B/)C0*E2,I6/H5/H5/F3,D1+B/(>+$=*$>+%:'!:'!?,&D1*@-'E2,F3-?,&9&:'!@-'>+$A-(B/*E1,J61J62K73J61E1,@-(@,'>,&=+&E3->,&A0*Q?:K93K93K93M;6O=:O>:N=:UD@UHCVJDVKFUKG4D&a>2hF:WB<>*%5!5!6"8#:& 8$9$9$8#;&>(!?*#@*#A*#A*#B,#D-$E.&F.(G0)I1+J2,K4-L4.J3,H1*F/)E.'D-'D-&C,%A+$@*#?(">'!<& =&>'=%:#4"2"2!2!3"3#5"224 3,,+))^SN\OJYLFXLDWKCRC;M<5K:4L:4J82F3-D2,@-'=*#<)"<)#;'!='!>("='!='!='!A+%I3.='!<& ;%;$<& >("?)#='!<& ;%='!='!;$<& ?)#='!<& :$?)#D.(@*$:$?)#?)#>("C,'D.(='!='!>(#I3.I3-C-'?)#?)#@)$P:4@*$@*$='!<& ?)#@*$?)"?)">( ?'!A)"E,%P70rYRsZTJ1+A)"<$6"2!00/-8& @-(B0*G5/L:3C0*7%9' C1*M:3L81?(#:$A+%B,&D.(B,&A+%D-(E/)G1+D.(I3-D.)@*$A+%D.(E/)L60H2,L60J4.H2,F0*B,'H2,>("D.(H2,C-'D.(H2,B,&D.(B,&B,&B,&F0*H2,F1+H5.C/)@,&@-&A.'B/(A.'?,%=)#E2+C0)F2,F3,D1*A.'=*#=*#D1*D.(A+&A+%A+%>)#:'!B0)<*#?,%>+%?-'B0*F3.H605%(*+-/3!:' 8&?*%A,&H1,\D?r[ToWPX@9P83O70N70K5-F0)D.(E/)@*$A+%B,&?)#='!@*$A+%B,&>("='"=&!;%:$:$9#8":$='!='"='!=(";(!:'!9& 9&9&:' <*#?,%=+$>,%A/(C1+G5.G5.@.'A/(H6/E3,G4.I70J81M;5R?:L:4K93I71H60L:4P?9P@9RA=VD@TB?UC@TD@QC>RD?WKEXKEYNIXNJZPM\RP -$&'.:$C,&H0)-)((,1234 4"2#3#8#9#9$;%='!>("@*#@*$D-'H1+K5.O82F/)G0*D.'B+%@)#?(!?(!@*"?*!>(!>'!>( >'<%:$9$9& 8&!5#7&!6%6#?)!R;2_H>X@75#)'*WGBRC>N=9K=8H:5H61J61N:6M94F2-K73D1,B.*E2-G3/E1,C0+?,'C/+?,'=)$>*&A-)B.*C1*>,%B0)C1+;)#>,&@.'>-&<*#;)#=+$=+$B1*E3,D3,E3-F4.D3,E3,E3,@.'?-&@-'>+%@.'?,&<)#:(!9' 8&<)#=+$9& 7$8%:(!=*$<)#?,&>,%<)#:(!;("7%9& 9' 8&8& <*#<*#:(!9' 9' 9' 9' 9' 8& 6$7$9& :'!7%8&:'!6$5#6$6#4"7%7$6#6$7%7$3!5#5#4"3!4"4"2!3!3"2!02 -.//2!0 -((*,.30N4,iNGfLEH0)21115#?,$@/"B1$E/%F.&F.&E-%D,&@+%>)#<'!9%6"22!2!2!3"2!2 2 2 2 2!1 /--/.--,++,..-002335P:2_E>Y?8A+$.0-.2,++,8#N80^G?]F=C-%3-+.,.0 1!1!1!0012 3"5#5#4"4"5#6$6$6#7"8$8#7#8#8%7%5#6$17$;'<(?*!A,$C.%B-$A,#C+!G.#G/$C-"E/$;&7"8$8&5$3"3!3!2 1 4#2 1//2!1 5#4"5#6%6$2 3"5$6%6%4"3"5#4"4#5$6%7%5"6$8&8&7%4"8%<)#=*#;)"<)#;(":'!:'!;)"<)#9' <*#;(";)"=+$?-&?-&?-&>+%=*$>+$@.'B/)?,&=*$=+$>+%>+%A.(D2+B/)@,&@+%A+&D/)F0+H2-H3-G2-D2+E3-C1*A.(=*$:(!<)#@.'>+%B/)F3-F3-F3-F4-D1+B/)@.'>+%:(!8%8%9' :' 9& ?,&B/)=*#<*#@.'C0*>+%@,'?+'A.)C0+C0+H40K72D1,C/+D1,B0+A0*I72H60I71L:4L:4L:4P>8M;7O=:P>:N=:SB>THBSGAUJEVKH3L.#cA5cE:N;68% 4 5!7"8$=(#9$9%:$;$=& ?("A*#A*#A*#A+#C-$E.%F.&F.'G/(G/(H1*L4.N60J3,F/(C,&C,&D-&D-&C-&C,&B,%A+$@*#>(">'>&<$9"3!0 001 2"6!2/.-*))'(\QL\OJ[OIZMFVIBTE=N>7L;5N;6K93C1+=+%:(";)"<)#;(!;' >(">(">(">("='!;%9#;% <% ;%:$;%='!='"='!<&!@*$?(#;%8";$?)#>("='!<& ?)#B,&?)#;%@)$?)$>("@*$A+%>("='";%?)#@*$?)#='"<% :$>(":$>("A+%@*$?)$B,&>("@*"A+#A*$C+%E.'P81jRKiQJF/(=&:#5!1!/.0.@.(H60D2,B0*?-&:'!;(":'!7%;(!>*$<& C-(:$B,&E/)C-(C-(G1+G1,@*$9#:$='!?)#D.)K5/D.(F0*K5/K50I3-H2,H2-H2,D.(@*$J4/F0*C-'D.)E/)A+&?)$:$@*$B,'D.(E/)C.(C0)C0)@-&?,%?,%?,&?,%>+$?,%C0)C/)F3,D1*>+$9& 9%8%;(!?*$>("=(">)#;' 7$C0*;)#?,%?-'A/)C1,C1+F4.5%(**+-17%:'!A,&B-'E.)Q:4aIB_GAR:3M50L4.N70O91M70I3-D.(A+%@*$@*$='";%='!='!='";% <&!='!:$9#;%9#9#:$<& ='!<& >(";(";("9'!9&9&:(!;(!?,%?,&?-&@.'D2+I70J81D2+>+%G5.A/(F4-J82E3,I71Q?9L:4K94I71I71M<6M=6O?8P?:Q?;SB>UD@SC?PB=SE@THBWJEVKFXMIYPLXPNZSP&%)4F-%T:3W=56")'),13455!3$4#8#9$:$;%=' >("?)"@*$D-'I2,J4-C,&G0*G0*C,&@)#@)#>' >(!?*#?*$>)#>)#>(!?'>&<$;$:& 7%6$7& 8' 6%8$C,$J3)F.$9&0 ,*QA:M?:H95K94L94L84K72E2-G3/G3.E1-G4/L84D0,A-)A-(C/*@,(<($=)%>*%?,'B/)@.(>-&?-&;)":(!;)":(!:(!=+$C1*<)#=+$@.'C1+E2,B0)G4.E3,E2,C0*A/(C1*@-'B/(A.(>+$:(!:'!7%:'!;(":(!:'!9' 7%8& ;(">+%>+%;(";)":("7%7%9& :'!<)#7$9'!:'!9& 8%6$7%9' 9& 6$5"6$8& 7%7%8%7%6#6#5#6#4!3!5#6$6#5#2 2 4"5"4!5"3!2 2!2!2 0/./0-3".,+)',-02@'bHAmTLP829!1211:*!?."A0#C0$F-$E-%E-%E-&C,&@+%=("9%6"26#1!1 1 2 1/--//.-,....-,,,./.03 06 50@*!T<4Y?8K3,-0--16"-+*+,@*"T=5^G?X@8:#2.//,/1!2"2"1!1 1 1 2!3"5#5#4#4"5#6$7%7$7#9$7$6#7%7%5#3!2 16#9&<(!?+"@+#A,#B,$A+#C)H/%E.$D.$B,#:%47$6$4"2!2!3"2!3!3!10/00011 3!4#4#3!3"4"5#4"3!3!4#4"4"3"5#7$3!5"6$7%6$4"9& ?,&;)"8%7%9' :(!=+$<*#;)";)";)";)"9& :'!;(";)">,%>,%=*$<)";)"<*#@-'<)#>,%B0)B0)?,&>+%=+$=("@+%D/)E0*@*%E0*F1+D0*A/(A/)B/)F3-D2+@.'>+%@.'@-'C0*B/(B0)F3,D2+A.(@-'?,&=*#9& 8&7$6#8&;(";(";("=*$>+$=*$<)#;(">+&A.)C0+B.)@,(B.*F2-B/*F3.G5/H60I71B0*C1+I71H61G50J82N<7M;7N<8N=9O>:P@'!?("?("?("A*"C-#D.%G.%H/&I/'J1)N5-K2*J1)J1)H/(F.&E-&D,%C,%D,&C,%B+%A*$?)#>(">(>'<%8"4 10//0 3 30.-*((()[PK\OI\OIXLDQE=VG?N>7J93K93J82E3-;(#9' <)"?,&>,%;'!>("='"?)#?)#='!;%:$;% <& ;% ;%;%;% <& ='!>("='";%:$<% >("@*$@*$='"='!<&!<& ;% <& @*$?)#;% ='!B,&E0*D.(='"='!C-(H2,G1+A+%<& ='!@*$D.(?)#?)#A+%A+%@*$A+$A+$A*%B*$A*#F/(R:4P82A)#;$:#5"1!/.,0B0*C1+D2-J82@.'A/)9' 7%7$8%;'!>+$<(":& H4.N;4Q=7K71B/(E2+D1*4 <("F2,B/(B.(K71C0)N:4>*$B/(E2+C0)C/(F2+B.'=)#@,&?+$A-'D0)C/)D0*@,&B/(@,&H4.H4.@-&?,%A.';(!A.'E2+D1*@-&;(!9& A.(:'!8%?,%A.'>+$:'!:' 8%8%<)";)"9' 8%7$5!>*%?,'D2,D2-D2-C1+?-(F4.5#*+*,.3!:'!>,%B.(B,&A*%F.)K3-L4-F.(G/*K3-N70O92N81M72H2,E/)B,&@*$>("='"B,&='!;% ;%='!?)#?)#?)#A+%@*$>(#='"='!<'!;%?)#=)#=*$<*#:(!:'!=*#:("@-'H5/B0)>,&B0*H6/M;4A/(G5/C1*C1*A/)>,%F4.VD>L:4L:4M;5K93K93O=7F60K;4N=8N<8P>:Q@TFAWJDWKEYNI[QM\RNZSPXPN)&(2G.'Y@9Y@9<( *(*+03466 3$4$7$9#9$:$<& >(!?("@*#C,&F/)G1*G0)E/(F/)E.(A*$@*#>'!?(!>)#=)#=(#=)"@("@( ?&=%<$<%8$6$6%7& 6& 5#6$7$5!0+#" TB=P?;J96J;6I;6I94J72K72J72L84I51D1,?,'=*%G3.@-(D1,C0+C/*D1,B/*@,'<($=)%>+&@.'B0*>+%A.(?,&?,%?-&=*$:'!A.(?,&=*$?+%A-'C/)@,&?*%B.(D0*A.(C0*@.'<*#@.'A/(=+$:(!;("9' :'!;(";(";)";("9& 8%9' <*#=*$9' 9'!9'!9& 8&8&8%8&:'!:(!:'!:(!8&6#6$7$7%7%5"6$7%8&7%6$6$8%5#5"5#4"3!4!5#6$6$5"3!5#6#5#5"3!2 2!2!2!0/.-1 -00 .+)&*,-14N60]E=P93;$/1217%>+#B.#C/%D,"D,"E-%F.&E.&A,&>)#:& 7#211 1 0 1 1 /-,,--,,,---,+++,-.,1/2413C.%J1*B*$3 -.--1,+*+/E0(WA:\E=J3,5,'+,./0 1!0 0 001 1 1!3"3"3!2!3"5$6%6#7#8%7%7%9' 7%4"2!05#7$9&<(!>*!=) @+"A+#B+"E,"F.$B,"A+"?)!9$5 8%4#3!2 2!3"3!10//0./1 2 2 4"3"3!3"4#4#4"3"3!3!3"3!4"04"6$4"5#7%7%5"5"9& <*#9'!:'!9' 9& ;("=*$;)"<)#<*#<)#:'!7$:(!8%8& <)#<*#;)"5#6#9& =*$@-'A/(?-&<*#9' 9& <)#?*$@+%C-(A+&=("E0*D/)C/)?-'>-&D2+F3-@-'?,%@.'@.'=+$B0)A/(D1+E3,B/)=+$<*#<*#<)":'!8%8%8%<)#;)"8&8%<*#=+$:' 9& :'!>*%F2-H50F3.@,(=)%A-(C0+=)%<*$A0*D2-@/)?.(I71F4/D2,G5/K94J84H62F41H73L=8MA;L@;MB>1!4S7*aC7S:2=)$4 5!6"7#8$9$7#9%;%<& >' >'!>' =& >'!@)!B,#D-$G.&H/'H/'J1)O6-N5-H/'G.&H/'H/&F-%E,$D,$F-%F-%E-%C+#B+#B+$=':%8$5"3!1!1 1 0 0 14 1/-+''']RO]QL\PJZNGUIAOB;WG?M=6F5/F4.F4.C1+G4/@.(A.(>,%<)">*#A+&>(";%<& <& :$9#:$;% ;%;%;%;% <& <& >("='!;%<& ='!='!>("?)$<& :$='!='!;%<&!?)$A+%?)#@*$?)#>(">("='!9#B,&E/)A+&='!<& <& ?)#B,&A,&@*$A,&C-(B,&@*#C-&B+%A*$?(!@(!A*#?(!=&:#;%7$1!/.-.@.(F4/E3-E3-@.'?,&;)#:' 8%9&:' :' =*#:' @-&E2+Q>7M:3?,%D1*@-&H5.J70H5.E2+D1*F3,I6/H5.H5.D1*B/)B/)C0)B0)@-&>+$?,&@-'@-&@-&B/(E2+>+$B/(?,%B/)A.(>+$?,%A.(A.(F3,C0*@-'@-&?,%;(!;(!;(!7$9&9& 8%8%8%7$:'!9&:(!=*$?,&B/(D0+G3.B0*E3-F4.>+&5#;)#E3-6$ ,++--3!8&;)"=)#@+%F0*N61L5.T<6J2,C+&E.(L5.P:3N81M71G1+E/)C.(B,'@*%?)#G1+?)$<& ;% ='!?)#@+%A+%>(#<&!;% ;%;%<&!B,'F0*B.(@.'>,%;(":' =*#9'!>,%D2+@.(>,%@.(>,%C1+C1*C0*B0)A/(A/(E3->,%E3-D2,E3-E3.D2,F4.O=7B2+F6/N=8O>:N<9O>:O>:QA=TD@VGCVIDVJEULGYOKXPMVNK(&(0D,%W>8W?8@+#+)**/2567 3#3$6#8#9$;%<& ='!>("?)#B,&E.(F/)G0*E.(D-'F/(D.'A*#?)"?(">)#;(#;(#=)"@)"A(!@'>%<$<$9#6#5$5%6&"6& 4#10/.+)/ N=9L;7J:6I;6H94F3.F2-H40K73J61E2-B/*A-(@,(@-(A-(@,'A.)H50E1,A.)?+&>*&>+%=)#@,&@+%A-'B.(A,&<'!A,&@+&A,'@*%A,&G2,A,&B-'A,'?*$@+%C/)B/)@-'=+$<*#=+$=+%;(";)";(":(!;(";("9& 9& 8&8&9& :'!=+$;)"8&6$6$8&9'!:'!8& 7$8&;("9& 8& 7%6$6$7$7%:(!6$5#6$7%7%5#6#7%6#5"5#5"4"3 4"6#6$5#4"4"4"4"4!3!11 1 2!1 00-/--1 -,*&)/-,/9"C-&D.(7!-.024"<)#B-$C-$C,"D,"E-$F.&F.&B,%>)#;'!9%6"10 0 1 2!2 1 /.,,++,,./.--,-...--/032/4!3/-+-. - /.,,,/8#E/)P93Q:2>'"40///0 0 0 0 //000//01 1 0 2!4#5$4 6$7%8& 9'!:("7& 3"4"17$8%;'!=)!=)!=( @*!?) C+!C* A* @+!@*!;&8$6#4"2!3"1 1 2 1 00.--..//1 4#3"2 3!4#4"2!4#4"1 03!6%/3"3"4#5#5#7%5$5$8& ;)":("9' 9' :(";)#:(":'!;(";'!:'!9'!9' ;)"8%5#5#8%:(!:'!8%9' :(!;("<*#=+$;)":(!;)">*$@+&?*$B-(>)#@*%E0*A,&A.(C1+B0)A/(B/)>+%=+$?,&=*$<)"?-&=*$B/)C1*?,&9' ;("<)#9' :'!:'!9' =*$;(":(!9' 8%9& ;)":(!:'!:'!>*&D1,D1,G4/D0+>*&@-(G3.A.)A/)H60B1+?-(B1+C1,D2-B0*D2-F4/D2.F41I84I84I;6K?:NB=ND@*/D,!I2&=(!4 13 6"7#8$8#7"8$<%=& =' =' =& =& >'!A*"C,#D-$F-%H/'I0'J1)N5,O6.K2*I0'G.&G.&E-$D+#C+#D,$D,$C+#B*"A*"A*":(8&4$1#1"2"1"1!0!0 1//.-+(&$]SO^RM\PJXLESG?PC(#='!>(#B,&@*%9#9#<'!<& ;% >(#C-'?)$B,'A,&=("='!>("<&!>("?)#A+&D.(E/*E/)C.(E/(A+$C,&B+%B*$A)#=&;#>' ;$;%6#1!0 /-/<*$E3-F4/B0*=+$9' :(!7$7%<)#>,%<)">+%A/(>+$C0)G4.D1+>+%>+$>+$E2+H5/C0)C0)E2,E2,L92C0*O<6A.':'!>+%B/)A.'A.'A.(A.(C0*A.'@.'E2,D1*@-&?,%E2,A.(@-&B/(?,&>+$?,%A.(>,%;(";(!<)#<)"?,%B/(@-'?,%=*#=+$A.'B/)=*#;(!?,%>+%?-&G4.K82D0+E1-C0+>,'B0*F4/D2,@.(6$6$ ,+,--2!7%:("=*#@*%C-'I1,G/)O70I2+C,&C+%E.'F0(D.'F0*D/)F0*I3-I3-C-'<& D.(A+%?)#>(#@*%C.(D.(C-(?)#<&!<& <'!='"='!='"C-(A.'A/(?-&:(!8%<)#7%;(!>,%?-&?-'B0)@.(?-'C1*C1+C1+C1+B0)D2,A/(J82G50F4.F4.A/)?-'J83C2,D3-J:4N=9M;7N=9R@=P?;SB>VFBWIDUHCQFCVKHXPMVOL'%'.A)#T<5V>7C.'+()(,14663"2#5#8"9#;%<& >(!?("?)#C,&E/(F0)H1+F0)D-'D-'D-'B,%?)"?("@*$;)$;($=)#@*"A)!@'=$;":"9#7"6#4#4$ 6% 4#1 0/.+)+N<8L;7I95F83D51A.*A.)C0+E2-F2.F2.E2-E1-A.)@,(?,'?+'>*%C/+B/*@-(?+&?+&?+'=(#;& =("B,'C.)=(#B-'?*$A,&C.(A,&>)$B-(@+%A+&A,'A,'@+%A,'B/(?-&;)":'!=+$<*$=+$;(";("<)#;(";("8%7$6$7$8&7%:'!7%6#6#6$7$8&:'!:'!8& 7$9'!7%6$5#6$7%6$5#7%5#4"7$8&7%5#5"5#6$5#5#4"4"3!3 5"6$4"3!3!3!3!3!2 10/01 00//.+0-+*)(/.,,-.2.*+/13 :'!A+$D,$C,#C+!E-#F.%E.&B,$>*"<'!:& 9%4 7$01 2!3!1 0/-,++,,...-,,++++*)*-....,/*-++--2 ,,,-/047!6 201-/1 1 1!0 0 /0 1 1 0/./0001!3#4!3 5#6%8& :)"9("6%3"117$:' >*$@,#?*!>) >(='D+!=$B+"E/&@+"7"9$4!3"3"1 /00//0/---..-2 4"2!013!2!3"4#4#2 14"3"04#2!2!2 4"7&6$5$8& 9'!8& 7%8& :("9(!8& 9& ;& 7";(!:(!9& 8&9' ;("4"4!7%8& 7&=*$;'";'!=)#?+%<("<(">*$?+%@+%A,&C.)>)#C.(C.(=)#=+$A/)>,&>+%=*$;)"<*#=+$<)#>+%=+$8&A.(A.(;("8&;("<*#9& <*#:(!:'!;(!7$:'!:(!7$6$:'!=*$8%9% A.)E1-@,(?+'>*&<)$@-(B/*?,'@/)E3->,'@.(B0+@.)E3-C1+@.(B0,D3/C2.D40G63J=8MAMB?)-7721135!7#8$8$8$:%:$=& =' =& =& >'!@)"B,#C-$D-$G.%J1(K2*J1)N5-P7/M4+I0(F-%G.&F-%E,$D+#D,$D,$C+#B*"@)!?)!;'9&5%2#1"1!0!0!/!1 1.0.,+(&&[QM\PKZNHVJCQE=M@8L<4J:3J82H60A/)<*%>,&<*#C0*A/);(":%<& ;%:$>(#='":$8#9#9$8"7":$<& <& <& <& >("A+%>(#;% :$;%:$:$8":%8"='!C-(A+%9#;% ='";% ;%?)$E/*B,&@*$?)$<'!='">(#='"@*%?)#='!E/*F1+D/)F1+H2+<&F.)C,&B+$A)#=&;$>' <%:#4"0 0/.1;)#B1+G5/C1+>,&:(!7%5"8%=*#>+%=*$>+$B/(>+$B/(@-&?,%@-&<*#@-'?,%C0)B/(A.(C0*F3-I6/F3-O<6B/(:' <)"@-&?,%B/)E2+B/)B/(@-&?,&B/(>+%?,&?,&F3-@-&>+%D1*@-&>+%>+$>+%>,%>+%>+%?,%=*$>+$>+$?,&>+%<)#>+$E2,J70C1*=*#=*$@.'B0)C1*F3-H4/H4/C0+E3.H60D2-@.)G5/<*$3!++,.03!6$:("?,&D/)D.)H0,I2+K4-J3,H1+F.)D-&F1)G1)F0*B,&D.(J4.L71G1,<'!B-'B,&@+%?)#?*$F0*C-'@*$>("<'!;% :%;%<& <& A,&A-'A.'?-&9' 6#;("7%9' =+$>,%<*#@.(A/(@.'A/(B0*D2+D2,C1*A/)?-&C1+C1+I71R@;E3-I71G50D4-D4-D4.D3/F40L;8P?;N=9Q@;VFAXJEUIDRHDTJFUMJUNK"#%+<&!O93U?:G3.+%''*/3663!2#4#7"9#;%<& ='!>("?)#A+%D-'F0)H2+G1*D.(C-&B+%@)#?("@*#C,&=*$<)$=)$@)"A)!A(?&=$;"8"6"7$5$3#3#3"1 3 1.*(*N<8K;7J:6I;7G94D2.B/*C/*D0,F2.B/*B/*B/*B.*A.)?+&?,'?,'B.*?,';(#<)$>+&;(#<("<&!<&!@+%D/*9#?*%B-'B-(B-'A+&A,&D/)B,'?*$@*%B-'?*%@+%?+%>+%=+$<*#?,&<*#;(":'!9' ;(":'!9' 7$6#5#6#7%6$6$6$6#8%9' 8&7%8&9& 9& 7$7%6$5#5#5#7%6$4"7$8& 5#7%6$6$6$6$6$6$3!4"4!3!3!2 3!5#4"3!3!3!4!3!3!2 101 2 0//-0,..,++),/.+0++,,-01 4!9%@*#F,&D*%C+"E-#F.$E.%C,$?+"=(";& 9% 5!2./1 3!0/.----,,----,+*)((((')++,.*0.,+%)(,*+-01.311001)/000 0 // 0 1 1 0 /./01 1 2!4"3 4!5#6$7& 9("7& 3"1 -3!7$;' >+#@,#?*!?*!>( ?(?&8 Q;2R<3C-%5 4 2 4#2!0/00////.,.//.2!1 //02!2 1 2 3!2!/2 02 3"2!1 03"5#4"3"8%7%6$6#6$7& 7%7%:& ;& 9%:'!9& 9& 9' 9' 9& 5#7%:("9(!8& ;)"8$;& >)$>)#;&!<'"?*%>)$?*%A,'A+&='"?*%?*$?)$@+%B-(@,&?+%<(":& ;'!=)#=)#@-'>+%>+%D2+@.'@.(=*$;)"<*#=*$:'!;)";("9& 7%:(!;)"6#6$;(!=*$9& :'">*%>*%=*%?,'@-(>+&>*%<)$=*%@/)A0*?-'?-(A/)D3-H60?.(>-'?-)C1-E40E41D40F:4K?9LA'<&;%7$5"3 2131135!9&4!-**(&YOK[OIZNHVJCOC;L>7N>7J:3J82F4/B0*>,'=+%?-&D1+H6/?,%>*$@*%>(";%>("=("9$8"8#9#8"7!9#:%;%;%;% >("E/*?*$='">(#>(#<& :$6 <&!9#='"C-'B-'>(#@*%='"<& <'!@+%D.)@*%>("?)#=("='"='!='"A+&>)#<&!@*$A+&D/)G2+C.&?)"G0+C+%>' <%=&=%;$8!:#3!//.-1 <+%C1,E3-A/)>,&=+$7%5"8%:' ;(!=*$=*#=*$;(!@-&>+$?,%C0)A/(E2+C1*C0*F3,E2+C0*E2+E2,I6/K81F3-?,&<*#>+$>+%B/)E3,B/(>+$<)#;(!9&8%>+$B0)B0)=*#=*#A.'?,%@-&A.(A.(@-&?,%@-'C0)B/(>+$=*$@-'@-'>+%A.'I70N;5J70D1+?,%?,&A0)A/)D2+G3.F2-=+%@.(C2,@.(>,'@.)8& 4"++-/.05"8&=*$C.(C-(H1,X@:[C=V?8P82G0*?(!@+#A+$>(":$=("E/*J4.N82I4.H3-D.(@*%>("='"E/)?)#<& =("?)$>(":$:$<& <& @*%?+%=+$=+$8& 6#>,%>+%<*#=+$<*$6$>,&;)#?.'?-&?-'D2+C2+A/)C1*D2,E3-F4/F4/F4/C1+G5/F4/C2,C3,H71J95D2/K:6N=9K;5M=6SC=SE@RF@QHDRIERJFSLJ "#)4B,'H2,>)#*'''(-2564 1"2"7"8#:%<& ='!='!?)"@*$C,&D.'E.(F/)D.'D-'A+$?)"?("?("<&<)"<)$=(#?("@(!@'?&=%<$:#5!6$7& 7&!5$2 2 5"4 /*(*K95I85I95F83C50D3.E1-C0+>+&C0+=)%=*%?,'@-(D1,?,'=+%@-(@.(=+%:("?,&=+$;(">*$@+&>)#>)#@+%;&!<'!>)#?*$B,'<'"='"?*$>)$='"B-'A,'A+&@+%?+%=*$>,&=+$=+%<*#;)";("8&6$9' 9& 6$5#5#5#7%6$6#6$6#6$7%8%6$5#6$7%7$7%6$4"6$6#6$6$5#5#:'!5#5#5#5#5#5#6$5#2 2 4"4"2 2 3!4"4"3!2 2 2 2 2 2 2 1000..+.../,,,++-0+/-+,+,-.1!5#;)"F-(F,'D,$D,"E-#E-$C,$A,#>*#<'!9%7#/6$-/1!2 0.-.///-,-----+*('((()+,-0 ./2.1"-. . -/+*,/0..00100-+//////0 0 00 /.-./001 2!4 6"5#5$5%6%3"/6%1 7%7$8%;'='!>("A+%A+%C*">%F.%`JA]G>>*"5 4 3!4"1 0000//..--./////00.-0/01 2 1 1 2 2!2!1 1 03"3!2 3!7$6%5#5#6$6%6%7%:% :%9% :(!9' 8%6$6#6$6$5#8%7%8' 9& 7";& >)#<'!:% ;&!='">)#>)#@+%@+&?*%A,'?*$@+&B-(C.(B,'@+%<&!:%;% <'!='"<'!?*$@-'B0)C1+@.'<*#<*#=+$=+$;("<)#<)#8& 8%:'!;("7%9& <)#>+%>+%?+';'#=*%>*%=*%?+'@-(=)%;(#=+&@.(@.)@.(=,&?.(=+&:(";)$<*%=,(C2.F51F51E61E93H<6I?:I?;*00/25!4 3 5!6"6"7#8#8#:$<& =' =& =' ?("A+$B,#A+"D,$G.&H0'J1)J2)M5,K3*H/'G.&G.&E-$C+#C*"C*"C+#C+#B+#@)!>'=&;%9%5$3!2001117"B-%K6.D/'0*)'&YNJ\PJXLGUHAPD,&;)$>,&?-&A.'D2+C0*C.(A,&@+%@*$<&!;& 8"9$:$:$:$:$9#9#:%;& ;% ;%@+%8#7!:$<& <& <&!:%='!7":%=("<&!;%<'!:%@*$?)#>(#>(#;& ;% >(#='";& ;% <&!=(">)#>(">(#@+%@*%C-'I4,C.&>'"D-'E.'B*$>' >'!@)#:#7 2 /..-/:("C1,B0+;)#8&;)#9' 4!5"9& <)#=*#=+$?,&=*$C0*B0)D1+H5.E2,H5.D1+A.(E2+H5/F4-C1*E2+C0*A/(?,&<)#:(!=*#A.(?-&>+%=*#:'!<)#@-'?-&<)"E2,C1*D1+B0)A.'@-'=+$<*#B/)A/(=*$;(!=*$C0*E2,?-&A.'C0)B/)B/)F4-L92L93I60E3,@.'<*#<*$@.'D1+<)$=)$;)#=+%>,'<*%<*$9'!8& 7%!-,,/.16$8&:(!A,'B-'K4/fOIkTM`HBR;5H1,A)#B-%A,$='!;% ='!=(">("J5/N82L71F1+C-'C-(B-'E0*>(":%='"@+%@*%<'!:%<& <'!@*%@,%<)#9'!7%:'!7$8& =+$@-'A/(<*$>,&9'!>,&?.'>,%B0*B0*@.'C1+E3-E3-D2,C1,A/*B0+G50E3-A0*A1+C3-L<8O=:I84H73J94M=5O?9OA=PB=ND?NFAPHDRJH #$(-47!1(')(',256 4 0!1"6"8#:%<& ='!='!?)"@*$B+%D-'E/)E.(D-'D.'B+%@)#?("?("<&<("=*%=($='!>& >%>%=%<%<%6#5$7& 8(!6%08"<%8!0*(*2"F51H83D50B4/C4.D3-F60E3.A/)?.(?.(?-(>-&D2,?.'=+%>-&?-';*#9' <*#=+$>+%=*$;&!:% <'!='"=(#=(#?*$>)$?*$<&!;&!>(#?*$A,&?*$?*$>)#>)$@,&>,&>+%<)#:("9'!8&9'!8%6#7$7%5#5#5#5#7$8%5#6$6#5#6#7$7%6$6$7%7%7%7%3!6$6$5#5#5#2 8& 6$4"4"5#6$5#6$7%5#2 4"5#3!3!3!3!4"3!112 102 2 1///0/--.+0-,++-+0-,.+,+,,,-3 :& C,&H.(F-&D,#D,"C,"C+"A,#@+$>)#:& 8%3 7$-.1 3"2!0/./0 0 /,./...-+)((((()*+-.,/,+)')),*+,..-.00/.. ,-..../0 1 0/0 /...001 1 235 7#7#5"3 112 3"7%7$:&=(!='!?)#A+&B+$F-$@(V?6cMDU@75 5!6#3!01 00///.--,,--,.00/1/00//1 1002!2!1 1 1 1 3"2!2!4#6$5$4"4"6$7& 8& 8%:% :% 9& 9& 8&6$6#6#8%8%6#6$6%:(":& 8#:% <'!:% ;&!;& ;&!@+&?*%?*%B-'B-'@+%@+&@+&A,'B-'A,&?*$;& :% <'!=(#=("=("?*$=*$=,%<+$;)#?-&?-'=+$<*#;)"9'!<*$7%7$9& ;(";)":'!;)"?-'?-&<+#=,$@.&?,%=*$=+$>+&<)$;(#<*$9("8& ;*$?.(;)$=,&=+&=+%>,'=,(E3/E40E51E62C72C71F<8."-.024 5"3 34!7#8$9%:&;%<& ='!='!<& =' @)#B+$B,#A+"D-$F/&H1(I1)H0'H0(G/&F.%F.&G.&E-%D+#C+#C+#B*"B*"A*"@(!>'=%<$;#7"4 211211<&L7/VB9M80/(('(VKGYLGTHBRE>OB;M?8J:2E4.G50H60A/)>,&>-&>+%<)"B0)B/)C.(?*$?)#?*$<'!<&!8#>("='!<& >(#@*%<&!;% ='"?)$?*$A,&F1+?*$='"<& :%:%:%7!='"8":$;% :$9#9#9$?)#=(";& :$8#9$<'!;%9#9$;& >(#B-'>("@*%D.)F0+C.(@*#@*#A*%=&=%>& <%;$<%7 :$4"/ ..,/;)#B0+@/)=+%=+%7%;)#5"9&?-&>+%8&=*#B0)I70F3-L92P=6I60?-&C1*8%9& ;)">,%?,&=*$>+%>+%>+%?,&A/(A.(@.'B0)<)#:(!?,&>+%>+$>,%>+$?-&9& >+%A.(H6/G5.>+%?-&:(!<)"9' 9& ;("=+$?,&@-'=*$@-&A.'A.'C1*I70K92H5/E2+A/(?,%;)"8' >,%B0)7#8$ :("<*%=+%;)#9("9'"=+&9'#-++..17%9' 9& A,&B-'L61jSMs\UdMFQ:4L50G0)J4-G1*@*$<'!=("@*%<&!A+&G2,K50J5/H2,E/*D.)F0*@*%<&!<'!?)#?)$>(#<'!<&!;& =("=)#9& 8& 5#8&6#8%=+$@-'C1*>,&>,&9(!;)#@.'A/(@.(B0*@/(B0*C1+C1+B0+C1+A0*A0*C1+C1+C2,E5/E5.E40D3/I84K:6K:5L<5O?9PB=PB>MC>ME@OGCNGDMEC#$')+,+(())(,15 6 40!1"5"8#:%<& ='!=(!?)#@*#A*$B,&C,&B,%C-'C-&A+$@*$@)#?(">'!=("=*$=(#='!>& =%=%<%<%;& 7%5$5$6&4#1?*#H2)B+!3+(*/ D4.F60C5.A3,A3,?/)A0+@.)=,&=+&>-'>-'=,%<+$<+%=,%=+%<*$<+$<*#=+$?,&?,&;(">)#=(#:% 9$9$:% B.(@+%=(#;&!:% ;&!>)#>)#=("=(#>)#=("=("<)#;)#:(!9' 8&6$6#6$6#6#7%5#5#6#5#5#8&4"5#5#4"4"4"6$6$7%7$5#3!6$3!5#7%5#5#6#3!5#6$4"3!6$7%5#4"5#6$2 4"5#4"3!2 3!3!3!1 12 1012 1 /////.-0-/.+)(.,..*+*+++,--19$B+&G-'F,%D,"D-"E."D-#C,#@,#>*"=)!;( 5#1,-/2!2"1!0.-...-,++**))(&&&&&&&(+**++)&%''*+*++-./23 .,,-- //////0 /-/1 0 0/00 1 000257!7"5!311 .4"7%9&=)!?*$>)$@*&@*%B+#F-#F.$_I@]H?H3+5 6!6$//10/...--.,,---..--/.00//0/.01 1 01 2 2!2!2!3"3"4"4"3!3!6%7& 7%8%:% ;& 7%8& 8& 7%8&7$8& 7%6$6$6%;)";'!9$8#8#:% ?*$?*$=(#=("=("<'"A,&?*%?*$@+%>)#=(#?*%?*%>)#;& :%=("=(#<'"<'!=)#>,&;)#;)#<+%>,&=+%;)#<*$;*#9(!9("7& 7& 7&7& 8' 8' 7&:(";*"<+"=,#>+#<)!<)!<)";("9'!:("7& =+%:("8& =,&@.(@.)A/*>-'=+&>,'B0+B2-E50D61B50@4/C96/"+,04!5!3 4 4 7$:&!:& 9%;' <& ='!>(!>'!<& >'!A*$C-%C-$B,#E0&F0'G2)I3*H2)F1(H2)G1(H2)G1(D.%D-%D.%C-$B,#A+#A+"@)!?( =&<$:#7"5 4 22333?)!O91U@8H4-+)*()UJEVIDQE?OB;M@9L>6J:3G60G50E3-C1+B0*A/)>+%<)#A/(;(!A,&='";& ='!=("=(":%@+%>(#<'!>)#A,&D.)C.(@+%>(">)#A+&B,&;% =("9$8#9$9$7!;& 8"9$;%:%9$9#:$;& <'!<'!;& :$:$:$:$;& ;& <'!>(#<'!?)$C-(C-(E/*D.(?*">)"@)$>' C,%P93W@:N71<%9"8"2!/ .-,/8&!?-(9'"6%<*$:("<*$4!;(!F3,E3,>+%=+$<)#:(!J71@-&9&;(":'!=*$;(";("<*#:(!:'!=*#;(!?,&>+%A/(F3-G4.F4-H5/D1+=*$=*$?,%>,%;("8%>+%;("9&=+$A.'>+%;("<)#8%9& :(!@-&C0*@-'9' 9& 9' ;("=*$?,&B0)H5.H5/E2,C0*>+%;(!9& 8& <*#?-&8% 9%!8&!9'!;)#:(#8& :(">,&7%!+)*.,/5#8& 7%A,&@+&K40fOIs\VfOHP82O73I2+L6/I3,C-'@*$@*%@+%?*$>)#A,&F0+I3.H2-F0+H3-A,&@+%@+%@*%>)#<&!='"<'!<&!:$:$:& 8%:(!6%9' 7%6#9' =+$>-&8' 7%5#7%>,&F4.B1*C2+@.(@.'@.(@.(@.)A0*@/)@/)?-(@.(D3-E5/E5/C2.@/+F51L<8L;7L<5J:4I;6M?:NC>NEANFAKDAJB@##&*+--*(')),14541!2#5"8#9$;%;& <& ='!?)"@)#A+%A+%B,%C-&C,&B+%A+$A*$>(">(!=("<)#<("='"='!=&=%<%:$9%8%6%4#6% 4"5 G0&]C7[?0G)1*)+B2,C3-A2,>0*=0)?/)A0*?.(=+&<+%<+%=+&@/)@/(?-'?-'<*$9'!<+$=,%<*#:'!;)";("<("<'!<'"=(#>)$@+%=(#:% :% <'"=(#;&!=(#>)$>)$>)#=(#?*%>*$=*$<*#:(":("9' 6$5#6#7$6$7$6$6$7%5#4"6$4"4"5#4"4"4"5#6$7%6$4"3!5#5#4"6$5#6$6$4"4"6$3!4"5#5#5#4"4#6$4"3!3!4"3!1 2 3!3!3!11 0002 2 0/....,-,-.-,**-/),*)+,+*--/5 ?($D*%E+$D+#D-"D."D.#D-#A,#?+"=)!;( 9&18&,-01!1 /-,++,,-,++*))((''&%&%'**+2!5!.('())/*++,1//1212 1!/ ....--..,+/0///0 0 0./035 6!6!5"4!1 4"/5#6#:&=)"?*$@*%B,'A+%B*"F.$P9/]H?S>5<( 5 4 3!01 0/..//.,,-*+--+,--./0/////.00002!2!1 01 3!2 1 113!5$5$4"6"8#8$6$8& 7%8& 9' 7%7%6$6$6$6%9& ;& 8#7"8#;& =(#<("=("<'"<'"=("=("=(#>)$>)$=(";& =("=(#<'!:%:%<'!;&!:% ;& <("=,%<*#=+%<+$;)#9(!;*#?-'@/)<*$7&9'!;*#8'!7& 8' 9("9(!9(";*!=+"<*":( 8&:(:(!:'!;("=+$:("7%;*#;)#<*$?-'=+&<+%=+&>,&?.'?.(@1*D5-C50A3/@40C97.,34 3 014!5"6"7$7#7#:&=' ='!='!=& <&=& ?("A+#C-$C-$D/%E0'G2(H3*H3*G1(F1(E0'G2)C.%@+"A,$C.%B-$A,#@,#@,#@,#?+">( <%:#7#6"5!4!3322A*#R<5V@9F0**)*()SHCSGAOB6I:2H81G60D2,A/*A/*B1+A0)?,&>,&?-&7$@+&=(";& ;& <&!;% :%?*$<&!;& =("?)#?)$>)#>)#='">(#>)#=("='!>)#?)$:$:%:%7"8#7"9#:%:$9$9#:$<'!?)$?*$=(";& ;& <'!<&!<'!;% >(#@+%='">)#C-(C-(F0+D/(@+$A,%E.)<%B+%ZC-'=+&9'!4#8& 7%4"6#9& :'!9' ;(":'!8%<)#@-&>+%<*#>+%>+%<*#=+$?,&:(!7%;)"?-&=*$=+$@.'@-'=*$;("=*$C0*=+$:'!=+$=+$9' 9' @.';(!;(">,%?,&=+$=*$9&8%;(":(!;)"=*$=*#<)#?-&<)#<)">,%A.(B/)C0)A.(@.'A.(;("7%6#3!9'!=+$7$7$8% 6%6$8& 7% 6%8&!3")((,-/3"7%8&?*$=("H2-cLFrZTgPIO71N62H1+I4,H2+D.(B,'C-(A,'@+%@+%B,'C.(E0*G2,I3.F1+E0*E/*D/)A,&>(#:%:%:%;% ;& <'!;& 7$:)"7&9'!9& 5#5$7%8&7&9'!;)#=,%?-'D2,B0*@.'<*$;*#=+%=+%=+&>-'?.(A/*?.(=+%A0*C3-A1+B2-C2.D3/G62K:6I92L<6K<7H:5F:6F=9H?;G@=H@>#"%),+,*&')(+/3541!1#5#8#9$:$:%;%<& ='!?)#A+%B,%B,&C,&C,&@)#@)#?(">'!>(!>(!;'!;'!<'!='!='<%;%9$7$6$ 4$3#7& 6#6 E-$dJ?gJ=W9+;&+()B1+?0)=.'-'<+%;*$=,%=+%:(";)#<*$:'!3!7$:("<)#=(#=("=(#:%;& <'"=(#=)#>)$@+&>)$>)#>)$?*$;&!;'!?*$>)$=)#=+$7%6$6$6$6$6$7%5#6$6$6$7%5#4"6$5#4"6$5#4"4"5#5#6$5#4"4"5#5#4"4"3!4"5#4"3!5$3!3!4"3"4"4"4"5#4"2 2 3"3!3!3!3!3!10112 2 2 1 0..----,+-.,+++*,*-..2"3#/++..2;% A)#D*$E+$E-#E.#D.#D-#B,#@,#=*"<( 9&4"4"+,-//.-,+,,,,--,++*)'&&%$'((*-+@,'L2*B&1()*+/*,../..1//0.+./ //....--0/./0 2!2!/.034 5!4!5!5#3"0114"6$;'>)"?)#A+%C-'C-&A(H/%S=3T?6G2)4 32 3!3"2!1 /.....-,,*+-,+,-.//../.--.0..02!1 /02!3"2!2 2 3 4"4#3"2 5!6"6#6$7%6$8& 8& 7%6$7%7%6%5$7$:% 9$7"9$;&!=("=)#:%;& <'"<'":& >)$=(#>)$>)#<("=(">)#<'";&!;'!=("<'":% ;&!=)#>*$=*$<)#<)";(";("=+%?-&9'!:(";)":("9'!6$7%9'!;)":(":("<*"=*"<*!:) 8(:) 9' 5#8&:(!9("=+%:)":)";)#<*$;)$9'"<+%?.'@.(@/(?0)@1)<.)>0,?30?54-5 E-"G/&:&!214!6"4 5!5!6":%=' >(!>'!=' =& =& >(!A+"C-$C-$C-$E/&H2)G1(H2)I3*H2)H2)E0'B-$@*!@+"B-$A,#@+"?+"?+">+">*"=' <%:#7#6"5#4"3 212B-$T?7VA9B.'*''&ND@OD?OC>M@:K>7H<4F7/E6/E4.A/*=+&A/*@.(?.'>+%=+%=+$:'!A,&?)$<'!;& <'!;& 6!:$8#;% ?*$B-'C-(B-'C-(B,'?*$=("<'!=("A+&?)$:$:%9$6!6!7"8#:$:$9#8#9$<&!>(#>(#<'!;& <'!='"='"='"<&!?)$A+&>)#>(#@+%A,&F1+E0*A,%@+$A*%=& E.'_HBmVO[E><%8!:$0-..+-B0*B1+C1+>,&8& :("3!4!8%5#7%=*$=*$8&;(":'!<)#=+$=+$=+$>+%=+$:'!>,%?,&<)#;("?,&>,%:'!<*#<)#>,%A/(<)#A.(=*$9' ;)":(!8& <*#>+%<)#<)"?,&>,%;(";(";(!8&7%;("<*#;)";(":'!9' ;("9& :(!>+%>,%=*$@-'A.(>,%8&7$7%4"5$5#6#9&!:'"8&!6$4"8& 8&!;)$:(#-('+-/3!8& 9'!=(#:% F0+`ICoXQfOHM60K3/G0*I3,G2+D.(C-(E0*C-(?*$@+%B-'B,'A+&E/*I3.F1+D/)A,'@*%@+&B-'>)#:$:%;& ?*$B-'<'!6#9'!7&9' :(!8&8&7%5$6%8&:(!=,%=+%=+$@/(=+%9(!:)">,&=+%<*$=+&>-'@.)@.)>,'<+%=-'=.'@0+C2/D3/E40E40B2+F6/G93G95G:6G=9E=8D<9E><%!$'*++*'(''*.2442 2#5$8#8#9$:$:%;%<' >("@*$A+%A+%B,%C-'A*$@*#?("='!=& =& ;&;'<'<' <&;%9%8%7%5$3#4$7'!7$7 ?&dH>hI;`@0F-",((=,&;,&:*$;-&;.'>.(>-(<+%<+%9(#9(";*$<+%;*#9(!8' 5$6%:)#<+$8& 3!5#9& <(";&!;&!<'!<'";'!;&!<'":% 8#;&!=(#=(#<'"=(";& ;& =("=)#<'"<*$6$5#5#5#4"4"6$4"4"6$6$7%5#4"5#6$2 6$5#4"4"4"4"4"3!3!4"4"6$2!4"5#5#4"3"14#4"3!6$4"5#5#4"3!4"1 2 3!3"3!2!3!3!100110000...---,+--,+****+,,+A0&M;2C2*1 ,/039#?("D+$F,%F/%F/$E.#D-#C,#@,#>+"<)!:'7$4!--,,./-,------.-,,+*)('''')+,/0@.(S<6T9/C( +(')-0**-.19$@+%C.'A,$31/../..----..//..0 2"3#2"0 /25!5"4 23 4#3"/03 6$:'=)!@*%A*$A*$B+%C+#B* D,"P:1I3*;&27"2 3"3"2!/.--..-,++*+,+,-./.../0--./0..00//03"3!2 2!3!4"4#3"2!3!6"7"6$6$6$6$7%8& 8&7%8&8& 5$3!8%<(":& 6"8#8#;&!<'"9$<'!<("<'!<'!>)#=("=(#<'"<'"=(#=(#<'";'!=("=(#<'";& <'"=(#=("<'!;&!=("=(#<'!;& ;'!;'!<'"<'";'!9% 7#8$;'!;(";(";(!<*";) 9'8'9) :*!:("9& ;)#8' 9'!=,&;)#8' 9'!9(":)#:)#;)$>-'<+$<+%>/(@1*;-(=0+<1.;10.E.%YA7YA9E2-5"124 3 5"6"6"9$<' ='!=& <& <& =& >(!@+"C-$B,#B-#D/%G1(H3)H3*H2)G1(F0'D.%C-$@+"@*"A,#@+"@+"@,#@+"?+"@,$<(!;&9% 7% 6$5$3#2 016!B-$N:1O;3<(!)'&&I?;K@;L@:K?8J>6H;4H81E5.D3-?-(<*%B0+=,&?.'<)#9'!<*#?+%<&!<'!G2,B,';& >)$D/):$8#:%=("@*%@+%@+%@*%?*$=("<'!<'!>(#B,'<'!:% :$7"6 6!7"8#9$:$9$8"8#:% ;& ;& :% :%;& <&!<&!=(#=("?*$?*$='"='"?*$@+&E/*C.'@+#?)">'#>'!E.'`IClUOZC<<&:#8"/-..*/B0+=+%>-'=,&:("9(!3"8%;("5#6$<)#;)":(!;)"7%8%<)#>+%=*$;)"8& :(">,%@.'>,%;)">+%?,&;("@-'A/(A/(A/(=+$@-':'!:(!@-'>+%9& <)#9& :'!9& <)#;)"7%8%9'!?,&;)"<*#<*#:(!:'!9' ;)"<*#:'!7%7%9' ;(">,%:(!:'!<*#<)#7%7&8& 8%9& 9&!8&!7% 7& 4"7% 7% 8'!8'".('+++05#7%=(#=("G1,[D?gQJ`ICI2,E.)B+%E/(E0)C-'D.)F1+B-'?)$?*$@*%?*$>)#>)$?*%C.(E0*C.(@+%?*%A+&>(#:$:%='">)$>)#9#6#:(!9'!9' ;)"9' 9' ;("8& 7&8' :(">,&?-'<*#@/(C1+B0*@.(?.'>-&=,&=+&<*%:)#;*$C1+;*$:*#<-&?/)@/+A/,H73B2.B2+D4.E60C50B50D96F=9D=9B;9!$&(,/-&'&&).2443 2$5%7"8#9$9$:%;& <' >("?)#?)#@*#A+%C-'C-&A+$>("<& <& <& =' <' ;&;%:%9%9%8%6%4$ 4$ 4$ 6% 7$7 8]?3fF7cA1Q4'-((-;,&<-&:,&8+$8)#:)#;*$9'"7&!8'!:)#;*$:)#8' 9("9(!7&6%7& 7&6$5#5#9' 8$9$:% 9$9%=(#:& 9$<'!<'"9$9$;&!:& ;&!<'!;'!;& <'!:("6$4"5#6$5#5#6$5#3!7%6$6$4"4"6$7%2 3"4"4"3"4"5#4"3!3!4"3!5#3!3!6$5#2!3!12 4"2!7%3"4#5$5#3!4"2!2 2 3!2!2 2!2 1 001 10/./....---,---+*)))+-,,C/%]I@`LC>*#1135 8"?)"C,$F-%G0&H1%F/$D-#C,#A,"?+"=*!;' 8%6$1,-./20-----..,+++++*)(()'')++-3"Q=8Z@9T82;'''$*+**+,1E0)Q;5Q;4C.'1-,.-,+++++,-.-,-.01!2!0 ..13 4 0/02!1 8&3!8%;( =*!?+$A,&C+%B*$B+%D,#@':#<'9$5!6!6"1 00/.---.-,****+,+-..-+0/..-*,...02!0002!3"1 2 3!3"4"4"2!2!5"8#7#6$5#6$7%6$7%6$6$7&8' 6%19% ;'!9%8#:% 7":% ;&!;& <(";'!<'"<'"=(#>)#;'!;&!;&!;'!<'!;& :% <'"<'";&!;& <'!:& ;'!=(#=(#:% <'"?*%=(#<'"<("<'!;&!;&!:%8#9$;&!;&!=(#<(!:&9'<*!<*"9( 7&7%9' =+%7%8& :)"9(!6$8' 7& 8'!:(#<*%>-&=+%=-&=-&<-';-(8+&7,*9$ 4U9.eG;]B:E2-4 0124 8$8$6#8#;%;%<%;%<%=& >'!?*!A+"A+"B,#D.%G1(E/&H3*G2)F0'E0'C-$C.%@*"?*!@*">) >) ?+">)!>)!>*";'!:& 8'!6&!5% 3$2#0!/0//9':(0)('&D:6H<7I=7H<6H<5H;4J:3E6/A0+>,'=+&>-'>-'?-'>,%=+%;)#:'!;% :$:$;% =("?)$?*%>)#<&!<&!='"=(#=(#=("<'!<'!<'!;& ;& <'!>)#='"<'!;& 8#7"8#8#9$9$:%:%9#8";% <'!=("<&!:%:$:%:% <&!<&!='"=("<'!<'">)#?)$B-(@+$>)!>("?(#>'!B+%_HAiRLU>89#9#9$/---*/=,&8'!<*%<*$9'!8& 6$9' :(!5#6$9'!9' :(!:'!7$8&<)#=+$;)":'!8%<*$>,%>,%=+$;)#<*#<*#;("A/(D1+@.'<)#>,%<*#9' <)#@.'>,%8&9' 8%8&8%8&9& 8& 8&8&<*#;)#<)#;("9& 7%9' =*$;)#:("9& 7%7%7%<)#9& 8& ;(";("8& 9(!:)"8%5"4!2 1 2!4"5#6$6%5$.)),-2!7% 9'!7& ;&!;& @*%J3.S=6T>7G0*D-)@)#A+$A+$>(">)#>)#@+%B-'@+%=("=("?*$;& 9$?*%A,&?*$@+%@+%?*$>)$>)$?*%A,&A,'=("<'!=*$@.(=,%:(!;)"8%8& =*$;)#8& 7%8& 9(!<*$;)#>-&A0)?.';)#9'!9'!:(#<*$;*$9(":(#@.)=,&=,&>/(?/*>-)=,(E40C2/B2,B3,C4.A3/@2.?40A73A85?86 - "&'(/6!4 ('''*03543 2$5%6"8#9$:%;%<& ='!>(">)"?)#@*$A+$B,&B+%@*$>("<&<& <& =' =';&9$9$9%:&9&!6% 3# 5%"4#!2!4 58U8,cD8bC6V9..*),:*$;,%:,%8+$9+%<+%:)#6% 4#5$9(":)#:("9'!:(":)"8& 8& 8&6$5#4#4#5$8$9$9$7#7">)$<'"8$8#8$7"8#=(#=(#;& ;&!=(":% ;'!:'!7%5#3!4"4"4"4"4"17%7%4"2!3!5#6$4"3!4#4"4"4#4#3"3!3!3"3!4"4"2!6$4#2!2 2 1 3!2!5$4#4"5$6$3!4#4"2 12!1 1 2 2 1 002 2 0../////-------+*))()-./:%]F*!<( 9&8%3!+,./1 0 /......-+*++++*)),+)(*+*,A.)S<6Y>8O70)((+.0*)++,9$O:2ZD=S>6;&/,+,++*****+-.,,-.///-,,.0 2!0 0 1 0 .5#5#:( =*">+"@+%C,&D,&C,&C,%F.%C+!A*!?*!<&5 3100...-...,*)(),-----,,-0-..-,-../1 1 ./1 2!2!1 2!4"4"2!2!2!2 4 6!6"4"6$7%7%7%7%6$8&6$5$4#3!8#:% :% 9%9$8$:% :% ;&!:& 9%:% ;&!=(#=(#<'";& ;&!;'!;&!:% :% ;&!;& :%:%:& 9%=(#=(#<'";&!;&!;'!<'"=(#<'";&!<'!;'!:% 9$9$:% ;& >)#>)"<' ;( <*">,$=+":(!9' 9'!;)"6$7&6%5$5$7& 6% 7& 9(#;*$<*$;)#:*#9*#9*$8*&7*%7-+8#;"_A6gG=V<5>+&3 0124!8%8$5!9#;%;%;%<%<& ='!>(!?*!@*!@*!@+"B,#D.%E/&G1(G1(G1(F0'C-$B-$?) >) =(<'<(>)!<';';( :' 8&6& 5& 4% 3$2#0!/ /,)-)&%%%"B84G;6F:4E92E91E81E6.A2+>-'B1+@.)<*%>,&:)";("?.';)"9%;& 9$7":% >)#?*$>(#<'!<&!<'"=(#=(#<'"<&!<&!=("<'!;& 9$8#8#:%:%9$6!6 7!7!8#7"8#:%:$9#;&!<'"=(#<&!:%9$9$:%:% :% ;& <'"=("=("='"<'!@+%?*#>)">)"?(#=' B+$]F@eOHQ;49"8!7".,-,*.8&!8&!;*$:)#9'!:)"9'!8%9' 6#6#8&9' 9& 8& 7$9& ;)";)":(!;)"<*#=+$=*$<*$<)#:(":("9& 8%;)#>+%;)"9'!>,%7$:(";)#9'!8%8%7%9'!8& 9' 7$8%<)#:("9& 9' :(!:'!9'!9' 7$9& <*#:(!9'!:'!:'!9& 6$:'!8%7%8&8&7%:(":)"7%5"4 203!5$7% 8'!8'!6% /+)+.05#7%5$:& <("?)$A+%C-&C,&B+%D-(@)$@+$B-%@+$@+&<&!<'"?*%@*%?*$@+%A,&<'!;% =(#<'";&!@+%@+&=(#=(">)#?*%A,'C-(?*$?*$>*$>,&<+$9'!=*$:(!<*#=+$<*$9'!6%:("7&:(":)";)#<*$<*$9(!:)":("7& 5$5#6%:)#<*%=,&>.(>.(=-(?.*@.*?.*A0,@0*?0(A1+A3/?2.=2/=30=41>42?43!%(*4B-'A,'0+))*034321#4%6"7"9$:%<& <'!='!=(">(">)"?)#@*$B,&B,&A+%?)#='!='!='!=';&:%8$9%:&;( :)#6& 4#6$!5# 3 5!46G0)XB;]G@Q:42!+**7'!8("8)"4'!4'!9(#;)$9("6% 7&!9("8'"9(":(":("9'!:(!:("9' 6$4#4#5$5$7$9$8$7"8#<'"<(";&!9%:& 7#8#9$9$8$9$<'"<'"<'":'!7%8& 5#4"3"3!3!7%7%8& 6$3!2 2!3!4#4"2!4"4"3!4"4"3!2!3!3!3!3!5#2 5#4"2 2 3!2 2!3!5#5$2!4#6%4"3"4"3!12 1 12 3!2 101 2 0../00/..--...-,**+)*,/11R:1dKB[B:C+%5356 :%A,#D/%D/%G1&G1&F/%E.$C-#@,">+!=)!;( 9'6$-*,-./..../.-,...---,++,,+'()))0D/*W=8Z?::*#(%')+*+,,.D0(T?7WA9K5-341...--//..0 2"0!0 1!1!1!1!0 0/.-.0 1 1!1!0 .8&06#;( <)!=)!A*%D-'D-'D-&D,%E,"G/%C.%@+";&6"210/..-----,*()+-.-,,--,..-.-,,..-.0/..01 1 2 2!4"4"3"2!2!2 5!7#5"4"6$5$6$7%7%7%8& 3!3!4"5"6":% ;&!7#8#:& 9%9% <'"<'";'!<'"<'"<'"<'!;'!:& 9$;'!;&!;&!;&!;'!:& :% ;&!=)#>)$:% 9%9%;&!<'"=("<'"=(#;&!;&!<'"<'":% 8#6"6!8$<'":%:%;'<(!<(!;' 9' 8&8& 8& 7%8&6$4#5$6%:)#8'!8'"9(":(":)#7'!8)!7)#7)$6*&6,*;"I+"hE:jF-&@.(;*#7%8$:%7"7"<&!=(#>)#=(#;&!:%:% <'!=("=("<'"<'"=(#;& ;&!9$9$:% 9$='"8#8#8#7"7"7!6!7":% ;& ;& <&!;& <&!:%9$9$:$:% ;& :% <'!=("=("=(">)$<'">(#>)"@+#A+%>(#;$?("T=7YB-&;*#7$:'!7%6$8%9'!;("7%5#7%9' :(!:(!;)#=+$=+$<*$<)#;(":'!:'!9& 7%6$8%7%6#8%5#6$7$:(!=*$;)#7%6$7%8&7%7%:(";)#9'!=+$<*$9'!9'!;("8&8%:(!9& 8&9' 9'!9' 7%:(!8& 7$7$7$6$:)":("6$4!3 2 1 4"6%7& 8&!8&!6$ /*)+-/3"5#5$9& <("=(#>'">'!<%?("A+&?(#?)"@+$=(!@+%<'">)#?*$?*%B-'C.(?*%=("=("=("<'!<'!A,&?*%<&!<'!=(">(#>)$B-'>)$=(#<)"=+$<+%:("?-&;)#;*#<*$=+%=+%:("?.'<*$;)#<*$;*#:(";)#:)#<*%;*$8'!6$5#4"7% 8'!:(#9("8'!;*$:)#<*%<+%=,&=-'=/'?.(@2/>0-<0.;1/;1/<10("?)#?)#A+%A+%@*$@*#>("='!>("=' :$:$:$;$<%=' <'!;& :%8#6!5 8#6!6 ;$C-&E/(?(!1,,)6% 5& 6' 3%3%5& 7& 7&!8'"8'"8'!8'!9'!9'!:)"8& 9'!9(!8& 7%:'!8$7#9%;&!:% 6!7#9%;&!<'"<'"<'";'":% 9%9%8#8#9$:& 9% 9$9% 8& 9'!7&5$5#4"4#8& 8' 8& 7%1 4"2!2 3"5#2 2 3!3!3!3"3"3!3!3!2!3!5#3!5#5#2 13!2!2!3!4"6$2 3"5$5#3!4"3!2 2 2!1 12!3!2 1 1 10///00/../.../.-++**,.-02F-$_D+!<) ;( :' 7%/)*++,,,,,-.-,-.-,,+**))&*'&&'('2G0+S:6I4/-#%((*+,--3M80VB:Q;3>(!2421.--./.--/0 .// ///.../////0 /-,4"07$;( ;'=(!A*$D-'E-'D-'D,#E-#F/&B-$>) :%6"4!3!.-..-**+,-,**+,+++,-.,/-,,,*-.--.//../1 2!2 2!4"4#4#2"2!4!6"8#4!4#5#3"5#6$6$7%6%2 2!5#6#8#:% :% 6!9$:% 9$:& <'"<'"<'"<'";'":% :& ;&!9$7#;&!:& :% ;&!;&!:% 9$<'"<'";&!:% :% :% ;'!=(#<(";&!<'";&!;&!;'!;&!9$8#8#8#:% <(";&;&;';&;&:%7%5#7%8& 7%7%<*$5$3"6%9("6% 7&!7& 8'!9("7'!8)"6(#4'"3'#0'%@&S3)iC9iB8>'!3 4!5"5!4!7#7$7$9%;& <& <' ='!>("?)#@*#@+#A+"A,"B,#A,#B,#C-$D/&D/&C.%B,#B-$@+"=';&=( <';&;&<':&;':&8%5$3#2#3$2#1#0!- ,,*('"%#!$>31?20B52C61A3.@1+@1*@0*?.)?-(<+%=+&=+%:)":)"5$9'!:(!9% 7$;'!>*$=)#;'!;'";'!9$7#8$;'!=(#<(";&!;& >)#?*$?*%<'";& ;&!9$7";% ;&!:%8#7"6!7";& =("=(#<'!9$9$8#8#9$:$:% ;&!:% :% ;&!<'"<'"=("<'"?*%?*#A,$@*$?)$D.';%=& <& :$;%<&4-*++*/8&!9(#8'"3"4"9'!8'!6$:'!9'!9' 9& 9'!>+%9'!7%8&9& 9' 9' :(!;)#;)#;("9' 8&8&9& 9' :(!9& 8& 6#3 7%:(!6$;)"<*#;("9' 6$6#5#>+%>+%;)":(!6$8& ;)"=+$;)":(!:(!6$7%8& 7%7%7%6$5#6$:("9' 7%6$5#6#:(":("6$3 211 3"6$7% 6% 6%5$-((+.2!4#4"6%9& ;'!<&!<% >'!=& >'!>("?("@*$A,%:%;& :%<'!>)$?*$>)#<'!<'!<'!<'">)#>)$<'"@+&=(";& <'">)#=(#=("@+&<(#;("<)#<*$<*$9'!>+%;)#<)#>,%>,&;)"<)#<*$<*$:(";)#>+%<*$;*%;*$;*%;*$;)$9'"8&!;)$:(#8'!9(":)#7% 8'!<*%>,'=,'=+&<+&<-&=,%=.+<.+:.,8.-8/-:/-8+*%$'0@)#V>8U>7=*#+)*+.110// 2#5#7"9$:%;& <'!<'!='!=(">("?)#@*$@*$A+%@*#?)#>(">(!<& 9#<$=$=$=$=$=%=& ;%:%:$9$ 46"8#7"45 6"6"1,-)1!4$5&2$2%4%5$9("7& 5$6$7% 8&!7%6%7&7&7%7%6$<(":% 6"5 7":% 8#9$:& ;&!;&!<'"<'";'!:% 9%8$8$8#9$:% 9% :% 9%6#7%7&6$7%6%6$7%8& 6$9'!3!2 1 02 6$2 2 3!3"3!3!3!3!3!3!3!3!3"3!4"7%2!01 2 2!3"3!5#2!3!5#6$3!3!2!2!2!2!2 1 2!3!2 12 2 100000///0 /..//.-,*), 3"./2<#V:2iMEO4-=#679 6!='B.#E1%F1&H1&G1&F/%D-$B,#?+!=) <)!;( 7$0()))*+*))*+,,,+*)))(((((+,)))+*+4B)&E-)1$'')),,+,-*;'O;3U@8J4-1120/---,,++,-.--../.../0 / /..-,+*3 3!9&;( :'=(!A*$C,&D-'E.'F.$E.$C-#@*"<'6"4 4"2!.--,+**++,,*++**++,---.*+,,+--,,./.,-/1!2!1 2 4"4#4#3"3"4!6!6"2 5$4"2 3!4"5#7%5#2 1 5#6"9$:&!9%5!9%9%9%:% ;'"<'";&!:&!:% 9%9%9% 8$9$:& 9$8$:& ;&!:% 9%;'!;&!;&!:& :% :& ;'!<'";&!:& :& <'":% :% 9%9$9%9%9%;'!=("<' :%;';&;&:&8%5"5#6%9' 9'!7%6%5$5$6% 5$5$6%7& 7'!7'!6' 3% 1$0$!/&$8"K0(Z:1S3+3 13 3 24!7$7#7$:%;& <& <& ='!>("?)#@*$@+"@+"@+"A,#A,#A,#B-$C.%D/&C-$C.%B-$@*!=(=(@+">) <'<'<':&<( ;%8#6"3!3 2!1!0 .-,*)(&$% $:/-;/,0,<.)<-'=-'>-(>-'=+&:)$8'"7% 6$6$4#:("9'!7&9' <*#<)#:("8&8& 9& 8& 8& 8& :(";)";("9' 8%8%8%9& 9' 9& 8%5"5"6#9$8"6!7"7"7":% =(#=(#;& 8#9$7"7"8#9$9$9$9$9$9$:% <'!>)#=(#?*$=("@+$@+$>'"=& ;$<&<%:$9#8"5!.+*))07&!4#:(#9("6%6$6$9' :("8&9'!:(!9'!<*#9' 9& 9' 9'!:(":("9'!9'!9& 9& 7%7%8& 8& 7%8& :(!7%5#7%5#;)#9'!9' 7%7%7%8& 7$8& 7%6$6$8%9' 6$=+%<*#7%6$9'!7%7%6#7%5#4"6$5#3!6$7$6$4"3!5#7&8& 5$3 1001 5$6% 5$4#5$-'(-1!3"5$4#7& 9% 9$:$;$>'!@("?'!<% =& @*#A,%:&7$8%:& <'"=(#=(#>)#>)$<'"<'!=(#?*$>)$?*$;& :% =(">*$=(#=(#>)$<)#;)#;)":(!9' 8& ;)#:'!:(!=*$>,%=*$;("<*$<*$:("9'!9'!=+$;*$;*$9(#9(":)#9'"8'"=+&;)$9(":(#9(#8'!5$;)$:(#9'":)$:)#;+%<+%9*&9+)7+)3)(6-+8,+5('(#&/B+%S;5T<5>)"))*+.00/// 2$5$7#8$9%:& ;& ;' <(!=)">*#?)#@*$A+%A+%@*$>(">(">("<& 9$=%>%=%=$=$<%<% :%9$8$6"23 6#7$3 /120+,).4$4%1#1#4%5$7& 5$4"3!4!7$ 7%8& 8'!8'!7&5#6$:&!;&!7"47#7#6"8#:&!;'!:% 9% :& :& 9$8#6"7#8#8$9$8$:% 9%5"4"6$5$6$7%6$6$8& 4#7%5#2!1 /14"3!1 2 3"3!2!3!3!3!3!3"3"3!3"3"7& 4"002 2!4"3"4#3"2 5#7%3"2 2 2 3!3!2 2 2!3"3!1 2!2!1 1 110//./1 0..///-,+)*1!/.47J-%Y=5N2+<"4685:#@* D/$E0%G1&G1&F0%E.%C-$@,">*!=)!;( 7%1,))((*)(''(+++++******)((+()('))))-)""%(***++,<( E0)D.':$.0//.--,,++++,---./0 0 0 1!1!. /!0!/ -,..:'2 7$;( ;( <' >("@)$B+%E.(G0(H0&A)?*!>) :%4 22 2!/-..,++,++**++*+,,,+,-,)+,+,-,,-./.,-/2!2!02!3"4"3"3"3"4!5!4!2!7%3!2 2 2 5#8' 6$3!3"6$6"9$:% 9$8$;&!9%9% :% ;&!;'!:% 9$9%9$8$8$:& ;'!;&!9%8$:% :% :% :& ;'";'!;'!;&!:&!:&!;&!;'!;&!:&!:% 9$8#9$:% :% 9$8$9$;&!<'!;' :%<' ;':%9%9%8#;&!4"6$7%5#4"5#4#4"4"4#6%6%6& 4%1#2$ 1$.#!/.:%='!4 0 0 2!4#4#5#5#6#8%:& :%;%;&<& >'!?)"?)#?)!?) ?*!@+"@+"A,#A,#B-$C.%C.%A-$A-$?+">) >) @+#>)!<(<(;':&=) 8$6#5"3!1 0 / .--.*,*'&!7-+9.,:-+:-*)$<'!?*$>*$;("9& ;("9& 8&8&6#4!4!.,*)(/7& 5$6% 6%4#2!2!7%7%4"9' ;)"7%5"6$:("9'!8%7%8& 9' :("8& 9'!9& 8&9' 9'!7$7%8& 6$4"7$9'!=+%9'!8& 7%7$8& ;)"6$5#6$7%7%6$8& :("8& 7%5#5#8&6#9'!6$5#6$8%:("8& 4!7%:("9'!6$4!8%4#4#5#5"3 101 4#6%4#3!5#,&)--.5$4#8' 8$7!9"<#>& @(!@'!=&=& >(!=( <' :' 8' 9& <'!=("=(#>)$>)$<'!;&!<'">)#?*%>)$<'";&!;&!;&!;&!=("<'"<)#<)#:(!7%7$8& ;("9& 8&9'!:(!=+%<*$;)"9'!:("=+$9' 9& 8'!8'"8&!7& 8&!6% 8&!:(#8'!7& 9("9("8'!7% 7&!9(";*$;*%8&!8'!:(#8(%7)'6*(0'%3*(4)'2%$ %&-C,%P81R:3A+$(,++.01//03!6#7$7$8%9&9&:&;'!<)">*#>*#?)#@+%A+%@*$>(">(">("='!;%<&='<&;%;%:%:% 8% 7$6#4!3 4!4!4 1012/*+),1!1"/!.!1$4#5#5$5#4!5"6#4"4"5#6$3!4"6#:& ;&!6"47"7"6"6"9$8$8#8$9%8#4 6"5!5!6"7#8$9% :% 9% 7$4#7%3"3"4"4#5#7& 5$5$5#3!2!113!3"012!3!2!2 2!2!3!3"3"3!4#3"6$5#2 02!2!3"4#5#5#2 5#7%4#1 1 13!3"2!1 2!4"3"2 2 3!2 2!1 0//../1 0 /.///.--++/ 0.33<$D+$A*#6 034 5"7$<( E0(C/'G0'H0'G/&E.$C-$C-%A,$?+#;( 7%3!-(*)&()('&'*+**++++++*)(')())'*++,-,%$%)+-+*+,,/5!9$6!1..//,,,,,+***+---.// 0 0!2"1!1!1!0!.+,-+7$5#9'<)!<)!=(!>'!?)#B+%F/)G/'A):#>)!=( 7#6"7$3"0////--,,*)*+,,+,--+*,-*(*,++,,-///.--03!2!1 2!3!3"2!2!3!4 4 23!6$4"3!003!6$5$2!4#6#7"9% :% 8$9% :&!9%9% 9% :&!;&!:% 9%9%8$8#9%;'!;'!9%8#8$9% :& :% :& ;'!;'!;&!;'!;&!:&!:&!:& ;&!;'!:% 9$9% 9$:% 9% 8$7#8$9% ;' ;&;&<' ;&9%9$8$8$9%2 5#6$4"3"4"3!2 4!4"4#4#4$1"1"2$ /!-#!,1-33 .0 3"4#4#4#4#5$9("9' 9%9%:&;' =(!=)">)"=(!=( >( >)!?*"@+#?*"B-$A-$@+"@,#@,#?+">)!=) >*!<(;';':&9%:&9!8!7!4 10.-,,.)+(''"  5+*8-+9-*:-)<.*)$<("?*%=*$:("9'!;)#:("9'!8& 5$3"3!.,*((.5$8&!5$4"4#4#4"7%7%3!9& ;)"7%4"6$:(!8& 7%8&9'!9' 8& 7%9'!8& 7%7%9& 7%7%7%5#3!4":(!<*#9'!7%7$6$6$9' 4"4"4"6$7%7%9& 9'!9'!8& 7%7%8& 5#:("7%6#6$6$7%5#4"7%8&6$4"5#;)"4"2!4"6#5"1..3!5$4#2!4#,&()*(1 14"7#:$ ?($?'!?' >& =%?("A+$='!6":&>+$:("9& ;&!<'!<("=)#=(#;&!:% ;& <'"<'"<'";'!:% 9$9$:%<'";&!;'":("9' 6$7$8& ;)"9'!7%7$6$9' 9' 9' 9' :(!<*$9' :'!:("8'"7& 7& 5$5$7& 6% 5$5$7& 8'!7&!8'!9(":)#;*%;*%8&!7& 8&!8($5(&4'$2(&0&%2&$0$! -$$+B+$L6/N71A,&*,**,.0!/ /14 6"5"5"6#7$8$9%:& ;(!=)">)#?)#@+%@*$?)#>(">("?)#>(";& <&<';&;%:%:%9% 8$7#5"3 4!4"3 4 323 3 .,+*+--+*- 1 4"6$7$ 3 4!5#5#5#7%5#7%9% ;&!<'"9% 335!7"6"5!6"6"6!6!6"6!25 6!5 4 6!7#9% :& 9%8$4"5$4"3"5#6%5$7%5$4"4#3!3!1 02 4"112 2!2 1 1 2 3!3"2!2!5#4"5#5$3!02!2 2!4"5$5$2 4#6%5$1 1 12!3!2!1 2 3"3"2 2 3"2!2!1 0/./00001 0///..1 .-./1 0-././-01 3"6%7%B/(C/(E/'H0'G/&E.$C-$C-%B,%?+#;( 7&3".'**'''(('(**)(******)'&'(((+')+,-./'%%(+,)*+,./11/0///-*+,,+*))(+-,,-.../ 1!1 1 10-*--*5"6#9'<)!;( <' ='!?("C,&H1+E-$A) F0&N90E0(4 5!6#3"0 1 0 0.--,,***,-,,+--++,-)*,-+-,-.///...1 4"2!1 2 3!2!1!1 2 3313"4#3!2!0/2 5#5$2!5$6#7#9% 9% 8$:% 9% 9$9%9% :&!:& 9% 9$9%8$8$9% ;'":% 8$8#8$9% :&!:% 9% :&!;'!:&!:% 9%9% :% :& ;&!;&!9% 9%9$8#8$9$8#7#8#9%9%9$9%:%:%9$9$9%:% 9%3!6$5#4"3"3!1 23!3!2!4$6& 0!0!0"- +! -2+ /.-1 3"3"3"3#5$6%7& 7$8$9%:&;' <(!<(!<(!<(!;' <& ='!>("?)#@)#A+$@*#?)"?)"=(!>)!<' <';':&9%:&8%7$8$8 9!7!5 20//....2.)&$!3)'6+(7+(8+(:,(;-);*%;*$:)#9("8'!8'!6%6%6%8' ;)#9("3"1 5#8&8& 9' 8&9'!8& 7%8&9'!9' 7%7&9(!9(!7%4#4#6$7%7&6%4#2!6"5!6!6!6!:% ;'!6!7"8#7"8#5!6"7"8#7#7"8#:&<' <' <' =(">)#>)#=(">*$=)#;(!;'!:' ;(!9' 7%5$4"2!.,+)(.3"8'!3"2!3"4#4"6%7& 5#8%9& 6#5"7$:'!9& 8%9& ;(":'!8$7$9& 9%7$8$9& 8$7$6#4"3!3!7%9' 7%6$5#5#3!5#4"4"3!4"5#6$8&7%9'!9' 7%7%7%5#7%8&6$5#5#3!4"9' 9'!8& 7%6$4!9% 7#6$6%5#3 101 1 001".-%')))0 01 4 7!<% :"8 :">& A)#@*$='!;&:%;("9(!8& 9%:% :& ;'!;'!;& :% :%;& 9%;&!;&!9$8#9$:% :% :%9% 8& 8& 7%8& 8& :(!:("8&6$8& 8& 8& 8& 8&9'!:("9'!:(!9'"8'"9("8'"6$5$5$5$4#6%6% 7&!7& 8'!8'!8'!:(#9("8'!7& 7& 7&"4'$2$ 2'%0&$/$".! - #"&8("F50G628'#-+**,-/ / 024 6"3 4!5"6#7#7$9%:' <(!=)">)#?*$?*#>("=(!=(">)"=(!;&;&<';& :%9%9% 8% 6$5#3"2 3"4#3 4!5!4!4!4!-,***++,+- 1!3 24!13 4"5"4#5$6#8%:&!;&!:% 6"4 35!8$7#5!6!6!5!5!6"6"45!8$5!35 6"8$9% 8$7#4"4"4"3"7%8'!7& 7%5#1 4"2 2!1 01 4"2 11 2!1 1 1 2 3!3"2!2 4#4"3"5#3"1 2 2 2 3"5$5$3!3!5#5#2 222 2!2!3!1 2!3!2 2!2!2 0/00.02 1/.2 2 0/0/.10/.-/.-,-,../004"6#?+$C/(D/'G/&G/%E.$C-#B,$A,$?*#;( 8&4#/&))(''((()*+*())**+*)((()')*)***-./)%%(++')+-/110011/.,+,,,+****-,,,----./000/-,..*4"7%:' <)!;( <' >'!@*#D-'G0)B*!F.%T>5WA9F1)04 5"3"2!3"2!0-,+,,++,..,++,-,,,-)*--,-,.../.../2!4#1!2 2!2!2!1 12221 3"3!3!3"1 .1 4"4#4#7& 6#8#8$8$8$:&!8$8$9% 9% :& :& :& :% 9%8$8$:&!;'!9% 9$8$9$9% :& :& 9$;% ;%!<&!<&"<&";&!:% :$ :% :% :% 8#8#8#8#8$8#8#8$9$9#9$9$9%9%9$9$:% :&!8$5"4#4"3"3"3"3!3!4!2!2!3"4%./!- +)+012--0 2"2!2!3#5$6%4#6#8$9%:&;' ;' ;' ;' <' <' <& ='!?)"?)#?)#?)"='!>(!='!<& <& ;%;%;%:%:$9$7#6"6!8 8 6 4 20..//5!?+$G3-=*#-%#!/%$3'%4(%5(%7)%7)%9(#:)$:)#9("7& 5$6% 5$5$5$2!02!6%7%7%7%7%6$9& 8$8$8%9& 9& 8$7$8%8%6#4!5"6$7$7%7%5#3!9%6!5!5 5 6!7#4 6!7"7"7"7"8#8#8#7"7"7#:%;&;&<' =(!>)"=(!<' >)"='!=' ='!9$9%7$6#6#5#1/-,*)-2!6% 1 1 2!2!2!4#6%6$7$8#7"6!8#;& 9%9$:& <'";&!8#:% :% 9$8$9$9% 8#6"6!4!3!3!6$7%5#4"4#4"3!3!4"4"4"3!3!5#6%6$6$7%6$5#6$6$6$7%6$5#5#2 4"8& 8& 6%6$5#4"8#8#7$6%4"2//00/.0!--&'((,1 013 6 9#6>& @("@("@("@*$B,%E0)B-&8%3!6$;&!9%:% :& :% :& ;& :% :% 9%;'!;'!9$8#9$:% :% 8#8$:(":(":("9'!7%7%9' 9' 6$:(":("9'!7%5#8& 8& 8&8& 8& 7& 9("5$4#6%7%6%6%7& 4#9("8'!7%6%4#8' 8& 7& 7& 6%5%0$!0"/#!/#"." ,+##$-4$4"*(*,,,-./ 1 3 4!5!3 3 4!5"6#6#8%9&;' <("=(">(">("=("<'!='!>("='!;& :&:'9&8&6%6& 6& 5%3#1"1!1!2!/5"7$5"3 5"/,+*)(+-,,/ //25"6$6#4"4#4#6#7#8$7#8$7#6"6"8$:& 9% 7#7#7"6"5!5!5!5 6!9% 6"5!5!6"7#8$7#6"3!3!4"2!6%8'!7& 6%6$2!3"2 2 1 /14"2!11 2!1 1 1 2!3"3"2 2!3"3"2!4#3"2!1 1 2!5$5#6#5"4!4 4 3333 2!0 3"1 2 3"1 3"2 2 10//.0110.110/10./11!0,,--,,,,-/2!04!6#<)"C/(C/(F.%F.%E.$D-$B,#A+$?)";( 8&5$2 .&'(('(())*+*)))**+*))(()')*)*+),-/-&'')*''*,-010///-*+-.-,+*+,---,-...--.///0/--.-06$9&!;(!=*"=)!>(!A*#C,%D-%D,$E-$M4+ZA:S:3A+$447%2!1 2!0.-,,++++,--,++,--,,,*+..--,......./2!4"1!2!3!2!1 0 12222!3"2!3"4"2 .13!4#5%8& 6"7#7#7#8$:& 8$8$9%9% :&!:&!:&!:% 9% 9%9$;'!:&!:% :& :% 9$9% ;'!;'":&!<&"<&!<&!<&!<&";%!:$ :$ :$ :$ ;% 7!8"9#9#8":$:$ 9#:$<& ;&:%9%9%9$9$:& :% 8#5"3!3!3"3"2"2!3 3 1 1 2"2#-. *(&*.13--0 2"2"2"3#4$5$4#6#7#8$9%:& :&;' ;' ;' ;' <& ='!>("?)#?)#>("<& ='!='!<& ='!<'!<& ;& :%9$8#8#6"7!8 7 4 3 2220009$H4-S>7K70/$#"!," 0$!2%"3'"5'"8'"8'!8'!7&!6% 5$7&!5#6%6%5$2!1 6$9'!8' 7%6$5#7"8#8$9$:%:% 9%9$8#7#7"6"7"7"6!7"8#7"5!7"7"8#7"6!6!7#6!5!7"7#7#7#8#8#7"6"6"7"9$8$9$;&=(!=)!<' ;&=)!;&<' <' 8$;&:$6 8"8"2/.,+*-1 4#1 2!2!2!1 2!2!6$7$9$8$7"8$9%8#8#9%:& 9$8#;'!9% 8#8#9$9%8#6"5 4!4"4"6$7%6$5$5#4"3!4"3"3!2 1 2 5#6$4"4"5#5#5#6$7%6$6$6$6$5#3!4"5$5$5#4#5#5#7"7#7$6$4"1//.//-0 -,%&''+.02!5"7!8"8 L4.V>7P82D-&>(!@)#;&:&:' :)";*#?*%<("<'";&!:& ;&!<'";&!;&!:& ;'!;'!:% 8$8$9% :& 9$7#9'!9'!9'!9'!6$4"5#7%3"6$8& 8&6$4"8& 7%6$6%6%6%9("5$4#6%7& 6%7& 8'!5$5$5$5$6%7& 7&7& 6%5$6%3#.!. - - , *)&&$&**(*-.. -,-/ 1!3!4 4 3 3!4"5"5"6#7$9%:' ;'!<'!='!='!<'!<& <'!=("='!<& :&9' 8'7&6%6& 6& 5%3#1!0!1!0 .5"7#5 29$6 /+*)'*,,+-10122 3 5"6$7%7$7#7#6!7"7#6"6"8$8$9% 8$7#8$8$6"4 4 5!6"9% 7#6"6"6"7#7#7#7#5#3"3"13"5$5$5$7%4"4"2 12 012 2 2112!3!2!3!4#3"1 2!3!2!2!3"3"2!1 02!5$5#6"6"5!33 3 333 1!0 2"2!13"12!2!2 2 2 /-.0001/01/.11/...-,,./.,++,.4"24 7#;' B/(C0)E.&E.$E-$D-$C,#A+#>)";' 8&6%3"-%&''''(''(**))**++*))(()((*))+*+,/2&''(),'(+-.10/000,+,-.-+)*,-.--,-/ / /.-.../00---+06#8% ;(!<)!>*"@*#C-%E.&C-%C,#I0'U;3_F?O6/='!44 7& 1!1 1 .---,+*,+**+---,,+++,,-----,....-.-.0 1 1 2!2!1 1 0 12223!3"1 4#4#1 .01 3#6%7%6"7#7#7#8$:% 8$8$8$9% :&!:&!:&!9% 9% 9% 9% ;'!9% 9% :& 9% 8$9% ;'!;&!:% <&";%!;%!;%!;%!:$ :$:$ :$ ;% ;% 7!:$;% :$9#:$ ;% :$:$;%;%:%9$9%9$9$9% 9% 8#6"5!3!2!2!4"4"3 01 0 1"0!,-(&$+, - 2--/1 2"2"2"3"3"4"5"6"6"7#9%:&;' ;' ;' ;& <& ='!='!>("?)#>("=' ='!<& ='!>("='!<'!;& :%9$8#8#7"8"8!7 4 2 332001='L6/S>6Q<4-& &%$)-!0#!2%!3&!5&!8'"6% 6% 8'!8'"8'"8'!6$7&6%6$7%8& :(":)"9'!8& 7%6$5!8#8$9$9%:% :& :& 9%9$8#7"7"6"5 6!7"7#7"8#6!7"7"7"7#6"4 6!7"7#7#7#7"7"6!5!5!5!7"6!7#:&<( <' :%9%<' ;$=%>'!?)#K5/G1+8"7!7!2/.-+*-2!3"2!3"3"1!1 0 2!6$7#8$:% :% :% 9% 8#8$8$8#7#8#9$8$8#8$8$8#7#7#6!3 2 2!4"4"2!3!4"4#4"4"2!3!3!2!2 4"5#3"4"3!3!5#6$6$6$6$7%6$3!3!4"3"3!4"4"5#6$6"6"6#5#3"10/...-/ +*%$&&)+.3!6$8"7!;#U=7eMG]E?H0*=' ?(";& =(!;(!9'!;)#>)$;&!:% 9$9%:& <'";'!;'!:&!:% :% :% 9% 8#9$:& :& 8$9'!8& 8& :(!9'!6$7%8& 5#7%8&7%5$6$9'!7&6$6$6$5$8'!6%5$6%7&6%4#6%7&6%6%8'!7& 4#4#6%6%4#3#1 . - ,++*'$&&')(*-... -,-. 0!2 333 3!4"5"5#6#7$8%9&:' <'!<'!<'!;& ;& ='!>("=("='!;& 9( 8' 7& 6& 7& 6& 5%3$1!0!2"1/5 8"55B,#E/&:' ++*((*++*11122 2 5#6%6%7%:& 8$8$7#6"6"6"7#7#8$8$7#8$9% 7#4 4 5!6"7$7#6"6"7#7#6"6"6#6#4!4"4"6#7$8%9& 7#4!5!5!2231112201 3!2!2!4#3"1 1 2!2 2!2!2!2!1/1 3"5"5"6"5"3 3 4 3 331 0 1!2!03"1 1 2 1 13!/--01/0//0/.01/-,---,-.,**++-3!3 37"9%@,%B/(D.&E-$D-$D-$C-#A+#>(!;'9&7&4#/%%&&&&'&&'(*))**+++*)(()((*))+++-/4(%''(,'(*,-1/./00 ,. -+,+('(+--,,,./ / .--.00120--,(15"7$:( <)!?*#B,%E/'F/'C-%C*"N4+\B:_F@I0):#44 5$2"1 /.---,+*++**+---,+++*,..,--,,....--,,,.//01 1 1 2 2 110113!3"0.02!3#6%7$6"7#6"7#8%9% 8$8$8$9% :&!:&!:&!:& 9% 9% 9% :&!8$9% 9% 8$7#8$;&!:&!:% <&!;% ;%!;% 9$8#9#9#:$:$ :$ 8":$ ;%!9#9#:$ ;%!:$:$:$:$:$8$9$8$9$9%8$7#6"5"3"3!2 3!2 1/1 01".,+'%*.011-,-/1!2!0 1 2!4"5!4 4 5!7$:&;' :&:&;& ='!='!='!='!>(">(">("='!<& ='!>("=("<'!;& :%9$8$8#7"7#6"4!2!0 110001@*#M80Q<5J5.-(&%&'*.!1$ 2% 4% 6% 5$5$8'!9("6% 3"4"6$6$6$7%9'!;)#9("7& 8'!9("8& 7#9$9$9$9$9%;&!<'";'!:% 8$7#7"6!5 6"7#7#7"8#5 6!6"8#8$6!37#7#7#7#6"6!5!5 4 4 5 5!6!7"9%;&;&9%9%=(!='!<%<& F0)`IB[C==%79 6..-+*-1 1 1 0 /1 3"1 0 3"6"7"8$:% 8#8#7#7#7#7#8#9%5 6"7#7"6!5!7"6"4 3 3!3!3!3!2 2 4"5#4"2!1 2 3!2 11 3!3"4#4"4"4"4"4"4#5#5$5#2 3!4"2 1 3!5#5$6$5!5!4!3"3"3 1/.---/ +)$$''(*.2!6#7!6 :#V>8iQKcKEK4.<&<& >)"@+$<)"6%:)#:& 8$9$8$8$8$;&!:& :& :% 9% :% :&!:&!8#8#:% ;'!:& 9'!6$5#8& 9(!8& 7%8& 7%7%7%7%5#6$7%8& 8& 7%6$6%7& 5$4#5$5$5%3"4#5$5$5%8'!6&5$5$5$5$4#/ 0 0!/!-***'%%&&'(+.-+----. 0 1244 3!4!4"5#6#6#7$8%9& ;'!<'!;& ;& <'!=(">)#>)#=(";& :("8("7&!6& 6&!6& 5& 4$1"0 2#1 14!9$7"='P:1WA8H4,,,+*'*-- ,.02 3!3 2 4"6$6$5$8$9% 9% 9%7#6"6"9%8$8$7#6"9% 9& 7$5!3 4!5"5"5#5#5"4"4"3"3!3!4"25!9% 9& 8$8%:&!6#4 4 6"22210021002!2!2!3"3!1 1 2!1 2 2!2!1 0/02!4"5!6"5"4 3 3 3 3 31 0 0 3"/2!1 01 0010.-01////0...//-,/10.,,+))/.-13 137"=("@,&B-&D-#D-#D-$C-#A+#?)"<'9&8&6%1 2 %%%%%%%%%'))(***++*))(((')))***09!>$ 2%('(+&&')((/.)))'&)**+*''(*+++,,-./---/113 3 0.,*02 5"7$:( =*"A,$D.'F0(E/'C,$@'P7.[B:V=6?'!5 322!1!0.----,+++***+,-,++**),--,,.,-...--,,,-../01 1 1 2 1 1///01 2!0 /14#2"5$7$7#6"5!6"9%9%8$9%9%9%9%:& 9%9%9%9%9%9%8$9%8$6"5!7#:&!9% :%!;%!:$ :$ 9#8#8"9#:$ :$ :$ 9#8#:$ ;%!9#9#;% <&":$:$;%;%:%8$8$9%9%8$8#7#6"6"5#3"2 2 1/01 /0!-,+&$,19 : 5.,,.00./1!4"5"4 3 4!7#9&;' 9&8$:&='!<' ='!='!='!='!='!='!<& ='!=("='!<'!;& :%9$8$8#7"6#5"3"0!. ..---,C/'Q=5O;4A-&)'%$'(*+- /!3$5$4#6% 9("7% 3!13!6$5$4"4"5#7%8' 7& 8'!9'!9'!:& 9% 8$9$9$8$8#8$9%9%8#7"6"5!5!7"9$9$9$9%45 6!7"8#7"4 8$7#7"7"6"6!6"5 5!6!5"5#7$8$:%:&:&:%:%=( >' <%<%K3,jRKeLE?%89 5..-+*,/00/./1 1 2"4"6"7"8$9% 7#7#8#7#6"7#8$9$5!7#7#6"5!6"7#5!22 3"3!3!2!2 2 3"4#3"1 1 3!4"3!1 1 2 3!4"4"4"4"2 3!4"3"4#5#3!2!3"3!3!4#6$6$4"5!6!5"3"1 11/,,,-0!+)$%(()+/2!4"6 6 8!R:4gPIcKEK4.<& ;$<'!?+$=*#6%8' 8$8#:% :&!9% 8$:% :% :% 9% 9% ;&!<'";'!9$8#9$:&!:&!9'!5#4"5$8& 9'!8& 8& 8' 8' 8& 7%5$6%7%6%5#5#5$7& 9("5$4#6%4#7&5$5$5$5$6%7& 5$4#4"4"4#6$0 10!/!/ +*(%*%&%&(,-,*,,,-. /0244 2 3!4!4"5"5#6#7$9&:& ;& :%:%;& =(">)#>)#=(";& :)#9)#7'!6& 7& 6& 6% 4$2"0 1"1!2 5!8#6 >(P:1ZD+#B,%E/'F/(E.&B*#?&R80W>7J1*9!42000 .----,,++++**++,+****)+,,,-.------,,,--../1 2!1 1 1 1 0///01 2!/.1 3"3"6%7$7#7#5!5!9%8$8$9%8$8$8%8%8$8$8%8%8$9%9&9&7#6"6"7#8$6"9$:% :% 9$ 8#8"7"8#:% :% :$ 8"8":$ ;%!8"9$<&"<&"9$:%;%;%:%8$8$9%8$8$7#6"6"7#6#4"2!3!2 /02!/0!,+)$".4I0(N3,A+$/ .--.../1!4#6#5"4!6"8$:& ;' :&9%;& ='!<' ='!='!<' <& <& <'!<& <& <&!<'!<'!;& :%9$8$7#7"6#4"2!/ --,,,,+F2*Q>6K808&%%##'(+, - .!2"4#4#6% 9(#6$3 2 4"8& 4#4#5$6$6$9%9%:% 9% :% 9% 7"8#9% 8$8$9%9%8#9% 7"8#9%8#7#9% 9% 9% :& :% 5 5!5!6!7"6"5 8#7#7#7#7#6"7#6"7"7#6#5#7%7%8$9%9%9%:%<'=&=%>%M4-jQJfLE>%9 83/.-+),./././1 2!2"5#7$7#7#8#6"8#8$7#7#8$9% 9% 7"8#8$7#7"7#7#5!34!5#3!2 2!2!2!3"4"3"2 2 3"4"3"2 2 2 2!3!3!3"3"2!3"5#5$6$7%5#3!3"4"5#6%7%6$4"4!6"5"3!1 2 1.----0!*)&%(((,03!3!6 8":#Q93eMG^F@D,&='!<& 9%;' >*#8'!5$6#9$;&!;'";'!9$7"9% :&!:% 9% :&!<'":% 9%8$7#6"9% 9'!7&5$5#6$8& 8' 8& 8& 7& 6%6$6$6%7& 7%6$6$5#7%8& 6$5$8' 5$9'!8' 7&7%6%7%7%6$5#4"3"3"4#2!2!2!0 .*(&$ -$&''*-,+++,-..!/ 025 5!1 3 3!4!4!4"5"6#8%9%:%9$9$:%<'">)#=("<'!:% ;(#:)$8("7& 7& 7& 6%5#3!1 14!6"5 7 5>&N70\E=V@81---,'***,/11 111 3!6%3"3"4"6#7$8% 9% 7$6#7$9% 6$2!4#5$5$4#5$3"3"3"3"3"3"3"3"3"2!1 2!1124!3 3!4"3!004"1 0//.-.//01 1 1 2!2!2!1 1 1 2!2!2!1 0//02!4!5!5!4!3 233 3 10 /1 00 1!.0 /.-.///00/-./.-,,,-----..-.-0@-(F2-<)$/30/16!>)#A,&D-%D-#D,#D-$C-$@+#=( :&8&6%1 *#%&%$$$$$%&''()()**))((('')*+))0@+&S82R5/0!))+--)*+-1!A1*I81A0)1!0",, + *+--+**,,+-..-..-,,-1223 3 0/-).4!6#9' =*"?+#B,%D.'E/'D-%A)!B) O6-O6/>%532...-,,--,+*******+*)))*))*++,-------,,,,--../1 2!1 1 1 0////01 1!//1 3"3#6%7$8$7#5!5!8%7#7#7#7#7#7$7$7#7#7#7#7$8%:&9%6#6"7#7#6"3 7$9% 9% :&!9% 7#6"7#8$8#8#7"7#8$9$7"9$;&!;&!9$:$;% ;% :%9$8$8$8$7#6"5!5!6"7#4"3!3"2 /1 1 ..**'" 0=&U;3X>6E/)1!0 .--..02!5#7$7#6#7$9%:' ;' :' 9&;& ='!<'!<& <& <& <& ;& <& ;& ;%;& ;& ;& ;& :% 9$8#7"6"4"2!/!-,++**+,F2+N;3D1)3 &&$#"',- .!.!1!3"4#5$7% 6#4"4"6$8& 5$6%5#5$6$6"9$7#8#9%8$6"8#9% 9$9% :& :& 8$:% 6"9$;'!9% 9%<("8$9%9% 8$7#6"7#8#8$7#6"7#8#7#7"6"6!7"6"7#7#6#5$6%7%8$8$9$9%:%;&<%=%>&M4-gNGbHA=$:!72..-+)+-.-///0 2!2!5#7$7#6"6"6"8#8#7"7#9% :& 9%7#7#8#8#7#7#6"5!4 5#6$3!1 2!2!3!3"3"3"3"2!3!3"3!2 2 2 2!2 2 3!3"3!4"5$6%7%7%5$3!3"5#6%6%5$4#3!4!6"6#3"0 11/---,.*)&%('(+./1 48"9#O82fOIaICD-':$:$8#7#9%7%7& 4!:% <'":&!<(#:% 4 9% ;&!9% 9% ;&!:& 9$9$8$7#6"9% 8& 6%5$5#4"6$7& 6%6$5$4"5$6$6%7%7&6%6$5#6%7& 6$4"8& 6$9'!8' 8& 7%5$7%7& 7%6%5$4"3!3!3"4"2"/ ,'&%" - $&()+-,+0++-. .!/ 025 6"2 3!3!3!4!4!5"5#6#8$9$8#7#9$;&!=("=("<'!;& ;'";(#9&!7% 8% 8% 7$5"3!3 13 5!56 5<%K4,\E=ZC:7$---+&)()+03"03!5$5#2!6$3"2"3"4"6"8$9% 7$6"7#8%6%3"4#5$4#4#4#3"3"4#3"2!2!2!3"3"2!1 1 1 0/1 001 1 //2!1 /..--../01 1 1 1 2!2!1 1 1 2!2!2!1!0//01 3!4 4 4 4 222 1 00/0 0 /1!-/.--,./../0.....,++,-.-,,+)-.4!G3/WB>L94231004=)#A,&C-%D-#C,#C,#B,#A+#>(!:&8%7&5$/"$%&%$%%$$%&''(())*)(''((&()+)(-<)$R81S81<)!+)*,-)+-/7"L8/O;3D0(6#./.,,,--,,,--,./../ /-,,-002320/ -*/4"6$;(!=*"?+#A+$C-%D.&D-%B*"E+#I0(H0)8 542..-,,,-,+*))))))**))()**))*++,-,,,,,++,,--..02!2!1 1 1 0//0000 1 0/1 2!3#5$7#8%7#4!4 7#6"6#6#7#7$7$7#6#6"6"6"6#8%9&9%7#6#7$8$6"4!9% 8% 9% 9% 9% 7#7#7$7$7#7#6#7#7#7#6"7#9% 9% 9$9#;% 9$9$9$8#7"8$7#6"5!4!5!6"4"3"3"3!/0 /-,'($ 3 C-$]C;^D'M5.eME^E><#;"82/.-+)*,-,///01 1!4#6"7#6"6"6"7#7#6"7#8$9% 7#6"6"6"7#7#7#5!5!5!7$7%3"2 3!2!2!3!3"3!3!1 1 2!2!1 2 2 2 2 2!3!4"4"4#5$6%7%6$5#2!3"5$6%5$4"3"3"4!7#6#3"011/-,,+-('%$'''*-,136!8!I2,_HB]F@C,&9#9#8#7#7#5$7& 5":% ;'"9% <(#:&!6":& :&!8$9%:&!8$8$8$8$7#6"8$7%6$5#4"3!5#6$6$5$5#4"5#5$6$6$6%6%6%4#5#7%5$2!7%5$7& 7& 6%6%3"6%6%7& 7& 6%4#3"2!4#4#3"/*&$#!!"%((,.-(-+,--.!. 024 6"3!3!4"4"4"4"4"4"5"6#8$8#8#9%;'!=("=("=("<'!<'";'"9% 8$ 8% 7% 6$5"4!3!224 46 6 ;$I1*ZD)";&7%7%7&2!3!#$%%%%%$$%&&&()))))(''''&'(**'(8&!K3,S81G0(/"))++.)*--0='O:0R<3G1(5/0--,,,,,--.../..///-,-./0 2 0///+/15"7%;)!=*"?*"@+#B,%D.&D.&D,$E+#E+$A)"6531//-,,,,,+)(()((())((()+**)*+++,,,,,++++,,--.02!1 1 1 1 0//0000 0 0002!3#5#7#9&7#4 4 6#6"6"6#7#7$7$6"5"5"5"5"5"8$9%8%7#6"7$7$6"5"9&!8$8$8% 8%8$8$8% 7$7#7#6"7#7#7#6"6#8$8%8#8#:$ 8"9#9$8"6!8$7#8$7#5!34 5!5"4!4!1/-,*'&# 6"F0'^C<^C<>+%/.-,,.0 2"3#4"6#7$8%8$7$7#7$8%9&=("=("<'!<& ;& :%:%:%;% :%:%:%:%:%9$9$8#6"5!4 3!0!- ,+*(('(*)('&# #%(+- 023!4!4!3!4!5$6$6$7& 6%6$6#6"4 25!7#9%8$6"8$;&!9% 9% :& ;'!;'!:& 9$8$9%9% 8$9% 9% 8#7#7#6"5!5!5!6"6"6"5!8$7"5!4 5!5!6"6"6"6#5$6$9&:&9%:&;&;&:%>':#;$K3+]E>W>7;"8 84/-,+)*+,,/0/000 3!6"8$7#6"7#8$6"5!6"8$8$5!6"5!5!6"7#6"5!4 5!6$6%3!1 2!2!2 2 2!2!2!101 2!2!2 1 2 2!2!3"3"3"3"4"4#4#3"3"1 2!5#5$4#2!3"5$5"7#6#2!/11.,,*)+'&$#'('),.3"25 5=& N60R;5?("8"9#9$8$7$5#6%6#9% ;'!8$;'":'!7#:& :&!7#9% :&!8$8$9% 9%7#5!6"6$6%5$3"2 4#5$5$5$4#3!4#5$5$5$5$6$6$4#3"4$4#05$3#5$5%5$5$3#5%6%6%6%5$3#3#3#4#3"2 .*%#" -%&%% *01',++,,--/14 6!3!3!4"4"4"3!3 2 3 5"8#8#9$:%;& <'!<'!;& :%:% <'#:%!8$ 7$ 7$6#5"4!4!33457 7 ;#E.&U>6Q:3<(",++*$'()+,0/03"4#2!4#3"2"3"3"5"7#7$7#5"4!5"5#4#4#6% 5$3"2!2!2!4#2!1 1 2!3"1!0001 2".////0 ./ 0 0 .------/0 0 0 1 1 1 1 1!1!1 1!2!2!2!0 //00 2 3 23 3 211 2!0///0 -0 .-.,.--.-+-//....-,+,./11/1./..8% ZGB_JFD/+.03039$?)$@*$D-$C+"A*!A+"A+#?*"<&8%6%5$2!-"$%%%%%%$$&&&')))))('''''''(*((1 D.(V:1S809* -+++**+-,0@*!N8/O90E/&2/../++,,,--....--...-,--.0 1../.).2 4"8%;( =*"?)"@+#C-%E.'E.&E,$B)!B)">&630..-++++++*)''((((((('')++*)****+++,,+**+,+-..01 0 001 0//01 0/0 0 0/1!3"4"7#9&6#3 4!6#6"5"6#7$7$7#6#5"5"5"5!4 7#8$7$6#6"7$7$6#6#9% 7#7#7$8$8%9% 9% 7$7#6#6"6#7#6#6"6"7$7$7"8"9#7!8#8#7"7"8$7#7#6"4!4 5!6"5"5!4 2.,+*($# 6"I2)]C;^D<9'!.-,-./0 1!3#3 5"6#7#6#5"5"6"7#8%<'!='!<'!;& :%:%:%:%:%:%:% :& :%9%8$8#7#5!4 3 2!/!- ,+*)(&(*%$ %&%" !#%),/13!3!3!2 3!5#4#5#7& 6%8%8$6"5!4 6"9% 9% 7#6"7#:&!9% 8$9% ;'!;'"9% :& 7#8$9% 8$8$:&!7#7#7#6"4 4 4 5!5"5!5!7#6"5!4 5!6"6"6"6"6#6$6$:&:&:&:&:&:&9$?(!7!9"E.'Q92L4-;"58 5.-*)()*+,/////1 2!5"7#7#6"7#8$6"5!5"7#7#35!4 3 5!6"5"5!4 5!5#4#1 02 1 1 1 003!001 2!2!1 1 2!3!3"3"3"2!2!3"3"3!2!3!1 2!4#5#4"2!2!4#5"7#6$3!/11/-,*(**'##&(()*.2"05 7!:#B+%E.(;$8"8#9$8$7#4"5%6$9% :&!6#9% :&!8$9% 9& 6"8%:&!8$8$9% 9% 6"5!6"7$6%5$4"2!4#5$5$5$3"2!4#5$5#4#5$5$5$4#3"3#4#/4#2!2"3#4#4#7& 7& 6& 4$2"2!2"3#4$3"2 1.+&#!  &&%(4!B.)C/*1-++++,-/024 11 3!4"4"3!2 2 3!5#8$9$9%:%:& :& :& 9%8$9$='";% 9#8#8#7#6"5!5!4 4457!7!7 ?( K4,H1*9%,++*"%&&(,/01 3"5$3#4#4#3"3#3"4"6"6#6#5!5"5"5#4#3"7& 5%3"1 1 03"1!001!3"1 /./0 3#///..0 ./0 0/---....00 00 1 0 0 1!2!0 1 2!2!1!0///01 3 133 201 2!0 //.0 .//,.,-...,,-----...-,-//02-/...,2 R@;`KGN84+,1127">)#>("C,#C,#B+"A+"A+"?*#<' 9%7%5$3", #$%%%%&%$%&&&((())((((''('%()(,;'!U90V90A/$0")+,)')*),C/&L80I5-<( -.---++,,,,--...-,,,--,-,-/0...,(/3 4"7$:'=)!?)"A+$C-&D.&D-%D+#@'A)!;#50--,+*******(&'(''(((''')++******+++,,+**++*-../1 //01 1 /01 1 0/0 0 0/0 2!3!6#8%6#3 5"6#6"6"6#7$7#6#6"5"5"5"4!35"7#6#5"5"6#6#6"7#7$6"6#7#7$8$8% 9% 7#6#6#5"6"6#6"6"6"7#6#5 6!7"6!8"7"6!7"8$7#5"4!4 4!6"6#5"4 21/-+*'#",7"K3*[A9Y@94$....///1!3"2 5"6#5"4!4!5"6#6#7#9$:%;% :%:%9$:$9$9$9%;& :& :%9$8#7#6"5!4 3 1 .!-,+*)(&&'&%%%#"!  "%(+.03!3!2 22 4"4#5#7%7$8%9% 7#6"5!7#:'!9$6"5!7"9% 8$7#8$:&!;'"8$:&!6"8$:&!9% 8$<(#8$7#6#5!4 4 4!5!5!5!5!6#6"5!4!5!6"6#6#6"6#7#7#9%:' :':':&9%8$:$8"9#:$9#8!:#8!61-,)('()*+-.///1!3"4 4!6"6"5!8$8$5"5!6"5!14!3233 3 5!6"4!3!2!1 01 01 2!2 1 1 1 2!1 1 1 01 3"3"3!2!2!2!2!3"3"2!1 3"3"3!3"4"4#3"2!3"5"7#6#3"/10.-,)())&##%(***.1 /49#:#:#;$8!7!7"8#7#6#3"5$6$8$8% 5"8$9% 7#8$9% 6"7#8$8$7$8%9% 6"5!6#7$6%6$4#3!3"4#5$4#3"3"4#5#4#3"4#5#4#4#4#4#4$/3#1!1 3"3#3#6% 6& 6%4$3"2!2!2!3"2!//.,($   $%&,:&!L82M:56$.,,**,.//02012 3!3!3!2 3 4"6#8$9%9%:% :& :& :& 9%8$8$='!;% :#9#8"7#6"6"5!5 6!457!7!37">(!;&2-,,+! #%$&+/1 1 3"5$4#3#3"2!3#2"3 4!5"5"4!5"5"5"4#2"6% 6%3"00/1 0 //1!3"0 .-.02!0 /0 ../..///.-.0/../0 /00 0 01 2!001 2!1 0../00 2 223 3 /0 2!0 ././../,-,,-/.,-.-+,--..-,-...2//.-0,0H50]HDV@<1,-/13?*%?)#A+#C,#C,#B,#A+#?*"=' :&7%5$4$/"$%%$%&%%%&&&'''()))()'&)(%&))(1K1)R6-F0&2$&),*,(%'''.D3*J80A.'3 *-,+++,,-,,,-.//.-,-....-/ 0 0.-,)%/3!4!6#9&=)!@*#B,%C-&C,%C+#B)!?&@(!8 2/,++)))*))))(&''''()((''(*++*+**)+*+,,+*+++*.../0./01 1 /01 1 0./1 0 00 1!3 6#7$6#4 6#6#5"6"6"6#6#5"5!4!4!5!3 35!6"5"4!5"6#6#6"7#6#5"5"6"6#6#7$8$6#7#6"5!5!6"5"6"6#6#5!46!6!6 7"6!5 6"8$6#2223 4!4!310/.,+)&"!+7"I1+U<5O70.--.//./0 2!3!5#6#6#5"5"6"6#6#7#8#9$:%:%:%9$:%:%:& ;& :& :& :%9$7#6"5!4 3 2 0 . -,+)('&%&'&%"   $&(*.02 3!2 113!3"5"7#7#9% 9% 8$7#6"8$;'"8#6!6 6!8#9#7"7":% ;&!8#:%!6!8$:&!:% 8$=)$8$7#6"5!4 4!5!5!5!4 4 6"5"5!4!5!6"6#6#6"7#7#6#8%:& :' :& :&9%7$7"9$9#8"6 69":#50-+)''())*-./..1 2!3 4 5!4!3 6"6#4!4 5"5"24!323324!6"3 2 2!1 1 001 2!2!0 02!2!2!1 1 01 4#3"2!2!2!2!2!3"3"2!1 2!2!1 2!3"3"2!1 3"4"6"5#2!/00-,+))(&%#"#(+,*.0 /38#;$9"68!7!6!6!6"5!3!5$6$7#8$5!7#7$6#7#8$6"7#7#7#7#8$9% 6"5!7#7%6%5$5$3"3"4#4#4#3"4#5$4#3"3"3"4"4#4#4#5$6% 1 4#2!1 3"3"4#5#5$5$5#4#4"3!3!3!2 /.-,($!  -*%&,9& L94O<78& .,,**+,--.0001 3!3!2 2 2 4!6#8%9%9%9%9%9%9%9%8$7#;& ;%:$9#7#6"6"6"5"4!6#3 3 4!4!025 3..--++"$"%+01 1!3"4#3#2"1 1 3#2!2 34 4 4!5"6"4"4#2"5%6%3"//.00 /.1 3"0 -,./0 0/1 ....-../.-.0 /.-/0 ./0 0 /0 1!0/0 1!1 /.../02223 4!00 1!1!././/-/ ,-,+,.---.,+-.--/.,+++*010/,0-.<*%UA=WA>:%!.-/01;'!?*$@*#C,"B+"B+"A+"@*">(!;&8&6%4#01!#%&#$%&%%%&&&&&(())))(&)(&%'('*3!9&5#)%%)**'%'&'1@-%B/(8$+*,+*+,,,-,,,-..-,++,...../1 0/-*'014!3!5#9&>)"A+$C-%C,%@*#C+#B)!@( >' 420.,*(((('())(&'''()*)((''*++*+*)*+),-,+++,++.-.//./01 0//1 1 /./1 1 0 0 1 26#6#5"5"7$6#5"5"5"5!4!4!4 3 3 4!3 3 4!5!4!4!5"6#6#6"6#6"5"5"6"5"5"6#7#6"7#5"4!4!5"5"6"6#5"4 46!5 5 6!5 4 5"6#5"233 4!5!4 2/---+*(%" (/=&D,$?(",,,-./../1 3 4!5"5"5"4!5"6#6#7#9$9%:% :%9%9$9%:%;& ;& :& :% 9%8$7#5"4 4 321/-,+)('&%&'$$$#  !$'(*..13!2 001 2!4!5"6#8% 9% 8$7#6#7#8$7"7!6!6!7"8#7!7!9$:% 8#:$ 6!9#;%!:$ 9#=($8#6"5"5!5!6"6"5!4!4 3 5"5!4!4!5!5"6"6"6"7$7$6#8$:&:&:&9&9%7$6!:%9$:$;%:#7!;%50-+(''(())-//..0 1 2 3 4!4 3 5!5!3 3 5!6"3 5!333 324 4!212!1 00/01 1 002!2!2!1 1 0 1 4#3"2!1 1 2!2!2!2!2!1 1 1 1 1 2!2!1!1 2!4!5"5"2!0 10.,+(*'$####'+,+.1 1258!6 48!7!5 5!6"5!3"4#5#6#8$6#6#6"5"6"7#6"6#6#6"6"7#9% 6#5!7#6$4#4#4#2!2!3"4#3"2!5$5$3"3"3"3"3"3"3"4"5#7%24!3 13 4!5"4!4!5"7#7$7#5"4!4 3 //-+(#!  *&',7$L94M:49& ,,-****+,-../12!2 1 112 4"6#8$8$8$8$9$9$8$8#7#:$:$9#8#6"6"6#6#4"3!5#3!3 5!5!2221-.-,+)"&$'*-./0 1 2!1 //2"1!01323 5!5"3!3"1!4#5%3#//./1 0.02!1 -,.////2!/-..,,-.-,-0 0 .-.0 ../0 ./0 0 /00 0 /.-///1 101 2 001!2"-...//.-,,++++,..,,..--..-++,+-01/,//-1D1,K72<(#0/1118#>)$?*$B+"B+"B+"A+"@+#?)"<' 9&7%5$1 .!#%#$%&%$$%&&&&''(((((((('&%&&&&&'$$$&)*&%&&'17%6$0(++**,,,,,-,,,,++)((*,-,,,-///-*(-1 3!4"7$9&=)!@+$B,%B,$@*"D+#@'=&:#111.+*''(''())(''''(**)(('&*++++*)*+),-,+,,,++--.//./00 /..0 1 .-.1 1!0 0 1 25"5"5"6#7$4!5"5"4!3 3 3 3 3 3 3 3 4!4!4!4 4!5"6#6#6#6#5"5"6"5"4!4!5"6#6"6#4!4!4!5"5"6#6#5!4 5 7"5 5 5 5 25!5"4!4 4!5"6#6#5"3 0/-,+*(%" &(11-**+-.////023 4!4!3 3 4!5"5"6#9$9%:% :%9$9$9$:%;& :& 9%9$8$7$6#5!4 4 3210.-,*(('&''%%%$!!!$&(*-,02!3!101 2!3!5!6#8$8$7#7#6#5"5!6!7"7!6!7"8#7"7!8#9$ 9#8#6!9$:% 9$ 9#:%!6!6"5"5!5!6"6"5"4!3 35!5!4!4!5!5!5"6"5"7$8$6#7$9%9%9%9%8%8$5!9%7#7#7#5!37#30.+('''(()-//.-/0225!6#5"6"5"323 4!3 4 3 332233 111!1 0001 1 0 /02!2!1!1 1 0 1 3"3"1 1 1 3"3"2!1!2!1!01 0 01 2!1 0 1 3!5"5"2"0 1 0.,+)*'###"#&)++/1 2127!8!47!6!5 6!7#5"4"3#4#6#8% 8$7$6#5!5"6#7#6"6#5"4!6"8$6#5!6#6#3"4#3"1!1 2!3"3"1!4#4#2!1!3"4#3"2!2!3!4 7#23 3 13 4!5"4!4 5!6"6#6"5"5"6"6#1 /-*&"!  -')-4"I61K83:'",+++*)()+,,-/01 1 11013 5"6"6"7#7#7#8$7#7#6"8#9$9#8"6"6"6"6#4"2 4"4!3 4"5!3 210/.,,+(!%&'*+,./01 2!/0 2"1!/02124!4!21 0 2!5$3#0//02!2!./1 1!.-...-.1!0 -,.++,--+-/ 0 .-.0/./0//0/-.0///,///0 1!.//./1!2".--./0 .-,+*++++-.,,-.-,-..,,-,,.1.,..,,5";($7#-/1225!=(#=)#A*"A+"A*!A+"@+"@*#=(!:' 8&6%3"- ###%%%$$$&&&&''''''(''''&%%%%%$%$%%%&)* \ No newline at end of file diff --git a/tests/OpenGL/README.md b/tests/OpenGL/README.md deleted file mode 100644 index 36883ed9..00000000 --- a/tests/OpenGL/README.md +++ /dev/null @@ -1,149 +0,0 @@ -# OpenGL 测试文档 - -> **版本**: 1.0 -> **日期**: 2026-03-16 - ---- - -## 1. 概述 - -OpenGL 测试是 XCEngine 渲染硬件接口 (RHI) 的集成测试,用于验证 OpenGL 渲染管线的正确性。 - ---- - -## 2. 测试内容 - -### 2.1 渲染管线测试 - -| 测试项 | 说明 | -|--------|------| -| 窗口初始化 | GLFW 窗口、OpenGL 上下文创建 | -| GLAD 初始化 | OpenGL 函数加载 | -| 着色器编译 | 顶点着色器、片段着色器编译 | -| 模型加载 | 使用 Assimp 加载背包模型 | -| 纹理加载 | 加载 diffuse/specular 纹理 | -| 渲染输出 | PBR 渲染到屏幕 | - -### 2.2 截图测试 - -程序在第 30 帧自动截图,并与基准图 `GT.ppm` 进行像素级对比。 - ---- - -## 3. 构建与运行 - -### 3.1 构建 - -```bash -# 创建构建目录 -mkdir build && cd build - -# 配置 CMake -cmake .. -A x64 - -# 编译 -cmake --build . --config Debug --target XCRender -``` - -### 3.2 运行 - -```bash -# 方式一:直接运行可执行文件 -./build/tests/OpenGL/Debug/XCRender.exe - -# 方式二:运行测试脚本(自动截图并对比) -./build/tests/OpenGL/Debug/run.bat -``` - ---- - -## 4. 测试流程 - -``` -1. 初始化 GLFW - ├── 创建窗口 - └── 创建 OpenGL 上下文 - -2. 初始化 GLAD - └── 加载 OpenGL 函数 - -3. 加载资源 - ├── 编译着色器 - ├── 加载模型 (Assimp) - └── 加载纹理 (stb_image) - -4. 渲染循环 - ├── 清空帧缓冲 - ├── 设置 Uniforms - ├── 绘制模型 - └── 交换缓冲区 - -5. 截图验证 (第 30 帧) - ├── 读取帧缓冲 (glReadPixels) - ├── 保存为 PPM 格式 - └── 与 GT.ppm 对比 -``` - ---- - -## 5. 文件结构 - -``` -tests/OpenGL/ -├── CMakeLists.txt # 构建配置 -├── main.cpp # 测试程序入口 -├── run.bat # 运行脚本 -├── compare_ppm.py # 图片对比脚本 -├── Res/ # 资源目录 -│ ├── models/ # 模型文件 (backpack) -│ └── shaders/ # 着色器 -└── package/ # 第三方库 - ├── include/ # 头文件 (GLFW, GLAD, Assimp, GLM, stb_image) - └── lib/ # 库文件 -``` - ---- - -## 6. 基准图 - -- **GT.ppm**: 正确渲染的参考截图 (1280x720) -- **screenshot.ppm**: 程序渲染的实际截图 -- **对比阈值**: 5 (像素差异容忍度) - ---- - -## 7. 调试 - -### 7.1 日志输出 - -程序使用 XCEngine Logger 系统,日志输出到: -- 控制台 (ConsoleLogSink) -- 文件 (FileLogSink): `OpenGL_engine_log.txt` - -### 7.2 常见问题 - -| 问题 | 原因 | 解决方案 | -|------|------|----------| -| 黑色画面 | 着色器编译失败 | 检查着色器错误日志 | -| 无纹理 | 纹理路径错误 | 确认 res/models/ 目录 | -| 模型未显示 | Assimp 加载失败 | 检查模型文件是否存在 | - ---- - -## 8. 技术细节 - -- **分辨率**: 1280x720 -- **OpenGL 版本**: 3.3 Core Profile -- **依赖库**: GLFW, GLAD, Assimp, GLM, stb_image -- **平台**: Windows - ---- - -## 9. 与 D3D12 测试对比 - -| 特性 | D3D12 | OpenGL | -|------|-------|--------| -| 分辨率 | 1280x720 | 1280x720 | -| 截图帧 | 30 | 30 | -| 模型 | Sphere.lhsm | backpack.obj | -| 日志系统 | XCEngine Logger | XCEngine Logger | diff --git a/tests/OpenGL/Shaders/fragmentshader.glsl b/tests/OpenGL/Shaders/fragmentshader.glsl deleted file mode 100644 index 538b2c76..00000000 --- a/tests/OpenGL/Shaders/fragmentshader.glsl +++ /dev/null @@ -1,114 +0,0 @@ -#version 330 core -out vec4 FragColor; - -struct Material { - sampler2D texture_diffuse1; - sampler2D texture_diffuse2; - sampler2D texture_diffuse3; - sampler2D texture_specular1; - sampler2D texture_specular2; - - float shininess; -}; - -struct DirLight { - vec3 direction; - - vec3 ambient; - vec3 diffuse; - vec3 specular; -}; - -struct PointLight { - vec3 position; - - float constant; - float linear; - float quadratic; - - vec3 ambient; - vec3 diffuse; - vec3 specular; -}; - -#define NR_POINT_LIGHTS 10 - -in vec3 FragPos; -in vec3 Normal; -in vec2 TexCoords; - -uniform int PointLightNum; -uniform vec3 viewPos; -uniform DirLight dirLight; -uniform PointLight pointLights[NR_POINT_LIGHTS]; - -uniform Material material; - -// function prototypes -vec3 CalcDirLight(DirLight light, vec3 normal, vec3 viewDir); -vec3 CalcPointLight(PointLight light, vec3 normal, vec3 fragPos, vec3 viewDir); - -void main() -{ - // properties - vec3 norm = normalize(Normal); - vec3 viewDir = normalize(viewPos - FragPos); - - // == ===================================================== - // Our lighting is set up in 3 phases: directional, point lights and an optional flashlight - // For each phase, a calculate function is defined that calculates the corresponding color - // per lamp. In the main() function we take all the calculated colors and sum them up for - // this fragment's final color. - // == ===================================================== - // phase 1: directional lighting - vec3 result = CalcDirLight(dirLight, norm, viewDir); - // phase 2: point lights - for(int i = 0; i < PointLightNum; i++) - { - result += CalcPointLight(pointLights[i], norm, FragPos, viewDir); - } - - // phase 3: spot light - - FragColor = vec4(result, 1.0); -} - -// calculates the color when using a directional light. -vec3 CalcDirLight(DirLight light, vec3 normal, vec3 viewDir) -{ - vec3 lightDir = normalize(-light.direction); - // diffuse shading - float diff = max(dot(normal, lightDir), 0.0); - // specular shading - vec3 reflectDir = reflect(-lightDir, normal); - float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess); - // combine results - vec3 ambient = light.ambient * vec3(texture(material.texture_diffuse1, TexCoords)); - vec3 diffuse = light.diffuse * diff * vec3(texture(material.texture_diffuse1, TexCoords)); - vec3 specular = light.specular * spec * vec3(texture(material.texture_specular1, TexCoords)); - return (ambient + diffuse + specular); -} - -// calculates the color when using a point light. -vec3 CalcPointLight(PointLight light, vec3 normal, vec3 fragPos, vec3 viewDir) -{ - vec3 lightDir = normalize(light.position - fragPos); - // diffuse shading - float diff = max(dot(normal, lightDir), 0.0); - // specular shading - vec3 reflectDir = reflect(-lightDir, normal); - float spec = pow(max(dot(viewDir, reflectDir), 0.0), material.shininess); - // attenuation - float distance = length(light.position - fragPos); - float attenuation = 1.0 / (light.constant + light.linear * distance + light.quadratic * (distance * distance)); - attenuation = min(attenuation, 1.0f); - // combine results - vec3 ambient = light.ambient * vec3(texture(material.texture_diffuse1, TexCoords)); - vec3 diffuse = light.diffuse * diff * vec3(texture(material.texture_diffuse1, TexCoords)); - vec3 specular = light.specular * spec * vec3(texture(material.texture_specular1, TexCoords)); - - ambient *= attenuation; - diffuse *= attenuation; - specular *= attenuation; - return (ambient + diffuse + specular); -} diff --git a/tests/OpenGL/Shaders/vertexshader.glsl b/tests/OpenGL/Shaders/vertexshader.glsl deleted file mode 100644 index 1364f293..00000000 --- a/tests/OpenGL/Shaders/vertexshader.glsl +++ /dev/null @@ -1,21 +0,0 @@ -#version 330 core -layout (location = 0) in vec3 inPos; -layout (location = 1) in vec3 inNormal; -layout (location = 2) in vec2 inTexCoords; - - -out vec2 TexCoords; -out vec3 FragPos; -out vec3 Normal; - -uniform mat4 model; -uniform mat4 view; -uniform mat4 projection; - -void main() -{ - FragPos = vec3(model * vec4(inPos ,1.0f)); - Normal = mat3(transpose(inverse(model))) * inNormal; - gl_Position = projection * view * vec4(FragPos,1.0); - TexCoords = inTexCoords; -} \ No newline at end of file diff --git a/tests/OpenGL/compare_ppm.py b/tests/OpenGL/compare_ppm.py deleted file mode 100644 index dcf5de98..00000000 --- a/tests/OpenGL/compare_ppm.py +++ /dev/null @@ -1,75 +0,0 @@ -import sys -import os - - -def read_ppm(filename): - with open(filename, "rb") as f: - header = f.readline() - if header != b"P6\n": - raise ValueError(f"Not a P6 PPM file: {filename}") - - while True: - line = f.readline() - if not line.startswith(b"#"): - break - - dims = line.split() - width, height = int(dims[0]), int(dims[1]) - - line = f.readline() - maxval = int(line.strip()) - - data = f.read() - return width, height, data - - -def compare_ppm(file1, file2, threshold): - w1, h1, d1 = read_ppm(file1) - w2, h2, d2 = read_ppm(file2) - - if w1 != w2 or h1 != h2: - print(f"ERROR: Size mismatch - {file1}: {w1}x{h1}, {file2}: {w2}x{h2}") - return False - - total_pixels = w1 * h1 - diff_count = 0 - - for i in range(len(d1)): - diff = abs(d1[i] - d2[i]) - if diff > threshold: - diff_count += 1 - - diff_percent = (diff_count / (total_pixels * 3)) * 100 - - print(f"Image 1: {file1} ({w1}x{h1})") - print(f"Image 2: {file2} ({w2}x{h2})") - print(f"Threshold: {threshold}") - print(f"Different pixels: {diff_count} / {total_pixels * 3} ({diff_percent:.2f}%)") - - if diff_percent <= 1.0: - print("PASS: Images match!") - return True - else: - print("FAIL: Images differ!") - return False - - -if __name__ == "__main__": - if len(sys.argv) != 4: - print("Usage: python compare_ppm.py ") - sys.exit(1) - - file1 = sys.argv[1] - file2 = sys.argv[2] - threshold = int(sys.argv[3]) - - if not os.path.exists(file1): - print(f"ERROR: File not found: {file1}") - sys.exit(1) - - if not os.path.exists(file2): - print(f"ERROR: File not found: {file2}") - sys.exit(1) - - result = compare_ppm(file1, file2, threshold) - sys.exit(0 if result else 1) diff --git a/tests/OpenGL/main.cpp b/tests/OpenGL/main.cpp deleted file mode 100644 index 0059fa75..00000000 --- a/tests/OpenGL/main.cpp +++ /dev/null @@ -1,415 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "XCEngine/Debug/Logger.h" -#include "XCEngine/Debug/ConsoleLogSink.h" -#include "XCEngine/Debug/FileLogSink.h" -#include "XCEngine/RHI/OpenGL/OpenGLShader.h" -#include "XCEngine/RHI/OpenGL/OpenGLDevice.h" -#include "XCEngine/RHI/OpenGL/OpenGLPipelineState.h" -#include "XCEngine/RHI/OpenGL/OpenGLCommandList.h" - -using namespace XCEngine::Debug; -using namespace XCEngine::RHI; - -#pragma comment(lib, "opengl32.lib") -#pragma comment(lib, "gdi32.lib") - -const unsigned int SCR_WIDTH = 1280; -const unsigned int SCR_HEIGHT = 720; - -void Log(const char* format, ...) { - char buffer[1024]; - va_list args; - va_start(args, format); - vsnprintf(buffer, sizeof(buffer), format, args); - va_end(args); - - Logger::Get().Debug(LogCategory::Rendering, buffer); -} - -struct Vertex -{ - glm::vec3 Position; - glm::vec3 Normal; - glm::vec2 TexCoords; -}; - -struct Texture -{ - unsigned int id; - std::string type; - std::string path; -}; - -class Mesh -{ -public: - std::vector vertices; - std::vector indices; - std::vector textures; - unsigned int VAO; - - Mesh(std::vector _vertices, std::vector _indices, std::vector _textures) - { - vertices = _vertices; - indices = _indices; - textures = _textures; - setupMesh(); - } - - void Draw(OpenGLShader* shader) - { - unsigned int diffuseNr = 1; - unsigned int specularNr = 1; - - for (unsigned int i = 0; i < textures.size(); i++) - { - glActiveTexture(GL_TEXTURE0 + i); - std::string number; - std::string name = textures[i].type; - if (name == "texture_diffuse") - number = std::to_string(diffuseNr++); - else if (name == "texture_specular") - number = std::to_string(specularNr++); - - glUniform1i(glGetUniformLocation(shader->GetID(), ("material." + name + number).c_str()), i); - glBindTexture(GL_TEXTURE_2D, textures[i].id); - } - - glBindVertexArray(VAO); - glDrawElements(GL_TRIANGLES, static_cast(indices.size()), GL_UNSIGNED_INT, 0); - glActiveTexture(GL_TEXTURE0); - } - -private: - unsigned int VBO, EBO; - - void setupMesh() - { - glGenVertexArrays(1, &VAO); - glGenBuffers(1, &VBO); - glGenBuffers(1, &EBO); - - glBindVertexArray(VAO); - glBindBuffer(GL_ARRAY_BUFFER, VBO); - glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(Vertex), &vertices[0], GL_STATIC_DRAW); - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices.size() * sizeof(unsigned int), &indices[0], GL_STATIC_DRAW); - - glEnableVertexAttribArray(0); - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)0); - glEnableVertexAttribArray(1); - glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)offsetof(Vertex, Normal)); - glEnableVertexAttribArray(2); - glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)offsetof(Vertex, TexCoords)); - - glBindVertexArray(0); - } -}; - -unsigned int TextureFromFile(const char* path, const std::string& directory) -{ - std::string filename = directory + '/' + std::string(path); - unsigned int textureID; - glGenTextures(1, &textureID); - - int width, height, nrComponents; - stbi_set_flip_vertically_on_load(true); - unsigned char* data = stbi_load(filename.c_str(), &width, &height, &nrComponents, 0); - if (data) - { - GLenum format = (nrComponents == 4) ? GL_RGBA : GL_RGB; - glBindTexture(GL_TEXTURE_2D, textureID); - glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, format, GL_UNSIGNED_BYTE, data); - glGenerateMipmap(GL_TEXTURE_2D); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - Log("Texture loaded: %s (%dx%d)", filename.c_str(), width, height); - stbi_image_free(data); - } - else - { - Log("Failed to load texture: %s", filename.c_str()); - stbi_image_free(data); - } - return textureID; -} - -class Model -{ -public: - std::vector textures_loaded; - std::vector meshes; - std::string directory; - - Model(std::string const& path) - { - loadModel(path); - } - - void Draw(OpenGLShader* shader) - { - for (auto& mesh : meshes) - mesh.Draw(shader); - } - -private: - void loadModel(std::string const& path) - { - Assimp::Importer importer; - const aiScene* scene = importer.ReadFile(path, aiProcess_Triangulate | aiProcess_GenSmoothNormals | aiProcess_FlipUVs); - if (!scene || scene->mFlags & AI_SCENE_FLAGS_INCOMPLETE || !scene->mRootNode) - { - Log("Failed to load model: %s", path.c_str()); - return; - } - Log("Model loaded: %s", path.c_str()); - directory = path.substr(0, path.find_last_of('/')); - processNode(scene->mRootNode, scene); - } - - void processNode(aiNode* node, const aiScene* scene) - { - for (unsigned int i = 0; i < node->mNumMeshes; i++) - { - aiMesh* mesh = scene->mMeshes[node->mMeshes[i]]; - meshes.push_back(processMesh(mesh, scene)); - } - for (unsigned int i = 0; i < node->mNumChildren; i++) - processNode(node->mChildren[i], scene); - } - - Mesh processMesh(aiMesh* mesh, const aiScene* scene) - { - std::vector vertices; - std::vector indices; - std::vector textures; - - for (unsigned int i = 0; i < mesh->mNumVertices; i++) - { - Vertex vertex; - vertex.Position = glm::vec3(mesh->mVertices[i].x, mesh->mVertices[i].y, mesh->mVertices[i].z); - vertex.Normal = glm::vec3(mesh->mNormals[i].x, mesh->mNormals[i].y, mesh->mNormals[i].z); - if (mesh->mTextureCoords[0]) - vertex.TexCoords = glm::vec2(mesh->mTextureCoords[0][i].x, mesh->mTextureCoords[0][i].y); - else - vertex.TexCoords = glm::vec2(0.0f, 0.0f); - vertices.push_back(vertex); - } - - for (unsigned int i = 0; i < mesh->mNumFaces; i++) - { - aiFace face = mesh->mFaces[i]; - for (unsigned int j = 0; j < face.mNumIndices; j++) - indices.push_back(face.mIndices[j]); - } - - aiMaterial* material = scene->mMaterials[mesh->mMaterialIndex]; - std::vector diffuseMaps = loadMaterialTextures(material, aiTextureType_DIFFUSE, "texture_diffuse"); - textures.insert(textures.end(), diffuseMaps.begin(), diffuseMaps.end()); - std::vector specularMaps = loadMaterialTextures(material, aiTextureType_SPECULAR, "texture_specular"); - textures.insert(textures.end(), specularMaps.begin(), specularMaps.end()); - - return Mesh(vertices, indices, textures); - } - - std::vector loadMaterialTextures(aiMaterial* mat, aiTextureType type, std::string typeName) - { - std::vector textures; - for (unsigned int i = 0; i < mat->GetTextureCount(type); i++) - { - aiString str; - mat->GetTexture(type, i, &str); - bool skip = false; - for (auto& tex : textures_loaded) - { - if (tex.path == str.C_Str()) - { - textures.push_back(tex); - skip = true; - break; - } - } - if (!skip) - { - Texture texture; - texture.id = TextureFromFile(str.C_Str(), directory); - texture.type = typeName; - texture.path = str.C_Str(); - textures.push_back(texture); - textures_loaded.push_back(texture); - } - } - return textures; - } -}; - -Model* model = nullptr; -OpenGLShader* shader = nullptr; -OpenGLDevice* device = nullptr; -OpenGLPipelineState* pipeline = nullptr; -OpenGLCommandList* cmdList = nullptr; -int frameCount = 0; - -void Initialize() -{ - char exePath[MAX_PATH]; - GetModuleFileNameA(NULL, exePath, MAX_PATH); - std::string exeDir = std::string(exePath); - exeDir = exeDir.substr(0, exeDir.find_last_of("\\/")); - SetCurrentDirectoryA(exeDir.c_str()); - - Log("OpenGL Test Application Started"); - - pipeline = new OpenGLPipelineState(); - ViewportState viewport; - viewport.width = SCR_WIDTH; - viewport.height = SCR_HEIGHT; - pipeline->SetViewport(viewport); - pipeline->SetClearColor(0.1f, 0.1f, 0.1f, 1.0f); - pipeline->Apply(); - - model = new Model("res/models/backpack/backpack.obj"); - shader = new OpenGLShader(); - shader->CompileFromFile("Shaders/vertexshader.glsl", "Shaders/fragmentshader.glsl"); - - cmdList = new OpenGLCommandList(); - - Log("Initialization complete"); -} - -bool SaveScreenshot(const char* filename) -{ - Log("Saving screenshot: %s", filename); - - int width = SCR_WIDTH; - int height = SCR_HEIGHT; - - std::vector pixels(width * height * 3); - glReadPixels(0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, pixels.data()); - - FILE* fp = fopen(filename, "wb"); - if (!fp) { - Log("Failed to open file for screenshot: %s", filename); - return false; - } - - fprintf(fp, "P6\n%d %d\n255\n", width, height); - - std::vector flippedPixels(width * height * 3); - for (int y = 0; y < height; y++) { - memcpy(&flippedPixels[y * width * 3], &pixels[(height - 1 - y) * width * 3], width * 3); - } - - fwrite(flippedPixels.data(), 1, width * height * 3, fp); - fclose(fp); - - Log("Screenshot saved successfully"); - return true; -} - -void Render() -{ - pipeline->Clear(3); // COLOR_BUFFER_BIT | DEPTH_BUFFER_BIT - - shader->Use(); - - glm::mat4 projection = glm::perspective(glm::radians(45.0f), (float)SCR_WIDTH / (float)SCR_HEIGHT, 0.1f, 100.0f); - glm::mat4 modelMat = glm::mat4(1.0f); - glm::mat4 view = glm::lookAt(glm::vec3(0, 0, 3), glm::vec3(0, 0, 0), glm::vec3(0, 1, 0)); - - cmdList->SetShader(shader); - cmdList->SetUniformMat4("view", &view[0][0]); - cmdList->SetUniformMat4("model", &modelMat[0][0]); - cmdList->SetUniformMat4("projection", &projection[0][0]); - cmdList->SetUniformVec3("viewPos", 0.0f, 0.0f, 3.0f); - cmdList->SetUniformFloat("material.shininess", 32.0f); - cmdList->SetUniformVec3("dirLight.direction", 0.0f, -1.0f, 0.0f); - cmdList->SetUniformVec3("dirLight.ambient", 0.3f, 0.3f, 0.3f); - cmdList->SetUniformVec3("dirLight.diffuse", 0.8f, 0.8f, 0.8f); - cmdList->SetUniformVec3("dirLight.specular", 0.5f, 0.5f, 0.5f); - - model->Draw(shader); -} - -int main() -{ - Logger::Get().AddSink(std::make_unique("OpenGL_engine_log.txt")); - Logger::Get().SetMinimumLevel(LogLevel::Debug); - - AllocConsole(); - freopen("CONOUT$", "w", stdout); - - device = new OpenGLDevice(); - if (!device->CreateRenderWindow(SCR_WIDTH, SCR_HEIGHT, "XCRender", false)) - { - Log("Failed to create window"); - return -1; - } - - const RHIDeviceInfo& info = device->GetDeviceInfo(); - Log("OpenGL Version: %ls", info.version.c_str()); - Log("Renderer: %ls", info.renderer.c_str()); - - Initialize(); - - device->PollEvents(); - - MSG msg = {}; - bool shouldClose = false; - while (!shouldClose) - { - while (PeekMessageW(&msg, NULL, 0, 0, PM_REMOVE)) - { - if (msg.message == WM_QUIT) - { - shouldClose = true; - break; - } - TranslateMessage(&msg); - DispatchMessageW(&msg); - } - - if (shouldClose) - break; - - Render(); - device->SwapBuffers(); - device->PollEvents(); - - frameCount++; - - if (frameCount == 30) { - Log("Saving screenshot at frame %d", frameCount); - SaveScreenshot("screenshot.ppm"); - PostMessageW(device->GetWindow(), WM_CLOSE, 0, 0); - } - } - - Log("Application closed"); - - delete cmdList; - delete pipeline; - delete device; - delete shader; - delete model; - - Logger::Get().Shutdown(); - return 0; -} diff --git a/tests/OpenGL/package/README.txt b/tests/OpenGL/package/README.txt deleted file mode 100644 index fd192f6c..00000000 --- a/tests/OpenGL/package/README.txt +++ /dev/null @@ -1,55 +0,0 @@ -这个package文件夹主要是装一些OpenGL的第三方库 -主要包括: -GLAD:用于链接OpenGL函数指针到GPU硬件驱动上 -GLFW:用于跨平台的窗口创建和事件处理 -GLM:OpenGL的第三方数学库 - - - -在配置项目的时候主要是用CMake来配置 -需要做以下几件事: -1),需要定位头文件的查询地址: -方便后期头文件导入,需要用到的头文件有: - -package/include/glad/glad.h -package/include/GLFW/glfw3.h -package/glm/glm/glm.hpp - -2),需要加载静态库glfw3.lib - -3),需要将glad.c文件添加到项目的可执行文件里 - -4),需要将Shader资源文件复制到exe所在目录下 - - -示例: -CMakeLists.txt -#需求的最低cmake程序版本 -cmake_minimum_required(VERSION 3.12) - -#项目名称 -project("XCRender") - -#本工程支持的C++版本 -set(CMAKE_CXX_STANDARD 17) - -#定位头文件查询位置 -include_directories(../package/include/) -include_directories(../package/glm/) - -#加载lib静态库 -link_directories(../package/lib/) - -#把shaders资源文件拷贝到exe所在目录下 -file(GLOB copyResources "./Shaders") -file(COPY ${copyResources} DESTINATION ${CMAKE_BINARY_DIR}) - -#将源代码添加到此项目的可执行文件 -add_executable( -XCRender -"main.cpp" -"../package/src/glad.c" -) - -#从第11行的路径下加载静态库 -target_link_libraries(XCRender glfw3.lib) diff --git a/tests/OpenGL/package/dll/assimp-vc143-mt.dll b/tests/OpenGL/package/dll/assimp-vc143-mt.dll deleted file mode 100644 index 007e6e7d..00000000 Binary files a/tests/OpenGL/package/dll/assimp-vc143-mt.dll and /dev/null differ diff --git a/tests/OpenGL/package/glm/.appveyor.yml b/tests/OpenGL/package/glm/.appveyor.yml deleted file mode 100644 index f82b848e..00000000 --- a/tests/OpenGL/package/glm/.appveyor.yml +++ /dev/null @@ -1,87 +0,0 @@ -shallow_clone: true - -platform: - - x86 - - x64 - -configuration: - - Debug - - Release - -image: - - Visual Studio 2013 - - Visual Studio 2015 - - Visual Studio 2017 - - Visual Studio 2019 - -environment: - matrix: - - GLM_ARGUMENTS: -DGLM_TEST_FORCE_PURE=ON - - GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_SSE2=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON - - GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON - - GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_14=ON - - GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_17=ON - -matrix: - exclude: - - image: Visual Studio 2013 - GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON - - image: Visual Studio 2013 - GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_14=ON - - image: Visual Studio 2013 - GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_17=ON - - image: Visual Studio 2013 - configuration: Debug - - image: Visual Studio 2015 - GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_SSE2=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON - - image: Visual Studio 2015 - GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_14=ON - - image: Visual Studio 2015 - GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_17=ON - - image: Visual Studio 2015 - platform: x86 - - image: Visual Studio 2015 - configuration: Debug - - image: Visual Studio 2017 - platform: x86 - - image: Visual Studio 2017 - configuration: Debug - - image: Visual Studio 2019 - platform: x64 - -before_build: - - ps: | - mkdir build - cd build - - if ("$env:APPVEYOR_JOB_NAME" -match "Image: Visual Studio 2013") { - $env:generator="Visual Studio 12 2013" - } - if ("$env:APPVEYOR_JOB_NAME" -match "Image: Visual Studio 2015") { - $env:generator="Visual Studio 14 2015" - } - if ("$env:APPVEYOR_JOB_NAME" -match "Image: Visual Studio 2017") { - $env:generator="Visual Studio 15 2017" - } - if ("$env:APPVEYOR_JOB_NAME" -match "Image: Visual Studio 2019") { - $env:generator="Visual Studio 16 2019" - } - if ($env:PLATFORM -eq "x64") { - $env:generator="$env:generator Win64" - } - echo generator="$env:generator" - cmake .. -G "$env:generator" -DGLM_QUIET=ON -DGLM_TEST_ENABLE=ON "$env:GLM_ARGUMENTS" - -build_script: - - cmake --build . --config %CONFIGURATION% -- /m /v:minimal - -test_script: - - ctest -j4 -C %CONFIGURATION% - - cd .. - - ps: | - mkdir build_test_cmake - cd build_test_cmake - cmake ..\test\cmake\ -G "$env:generator" -Dglm_DIR="$env:APPVEYOR_BUILD_FOLDER/cmake/glm/" - - cmake --build . --config %CONFIGURATION% -- /m /v:minimal - -deploy: off diff --git a/tests/OpenGL/package/glm/.gitignore b/tests/OpenGL/package/glm/.gitignore deleted file mode 100644 index 9dbd6d8c..00000000 --- a/tests/OpenGL/package/glm/.gitignore +++ /dev/null @@ -1,61 +0,0 @@ -# Compiled Object files -*.slo -*.lo -*.o -*.obj - -# Precompiled Headers -*.gch -*.pch - -# Compiled Dynamic libraries -*.so -*.dylib -*.dll - -# Fortran module files -*.mod - -# Compiled Static libraries -*.lai -*.la -*.a -*.lib - -# Executables -*.exe -*.out -*.app - -# CMake -CMakeCache.txt -CMakeFiles -cmake_install.cmake -install_manifest.txt -*.cmake -!glmConfig.cmake -!glmConfig-version.cmake -# ^ May need to add future .cmake files as exceptions - -# Test logs -Testing/* - -# Test input -test/gtc/*.dds - -# Project Files -Makefile -*.cbp -*.user - -# Misc. -*.log - -# local build(s) -build* - -/.vs -/.vscode -/CMakeSettings.json -.DS_Store -*.swp diff --git a/tests/OpenGL/package/glm/.travis.yml b/tests/OpenGL/package/glm/.travis.yml deleted file mode 100644 index 8eae8f73..00000000 --- a/tests/OpenGL/package/glm/.travis.yml +++ /dev/null @@ -1,735 +0,0 @@ -language: cpp - -matrix: - include: - - os: osx - osx_image: xcode7.3 - script: - - cmake --version - - mkdir ./build_unknown_release - - cd ./build_unknown_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_DISABLE_AUTO_DETECTION=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - env: - - MATRIX_EVAL="INFO=C++unknown-release" - - - os: osx - osx_image: xcode7.3 - script: - - cmake --version - - mkdir ./build_pure_98_release - - cd ./build_pure_98_release - - 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 -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - env: - - MATRIX_EVAL="INFO=C++98-pure-release" - - - os: osx - osx_image: xcode7.3 - script: - - cmake --version - - mkdir ./build_pure_ms_release - - cd ./build_pure_ms_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - env: - - MATRIX_EVAL="INFO=C++98-pure-ms-release" - - - os: osx - osx_image: xcode7.3 - script: - - cmake --version - - mkdir ./build_pure_11_release - - cd ./build_pure_11_release - - 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 -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - env: - - MATRIX_EVAL="INFO=C++11-pure-release" - - - os: osx - osx_image: xcode7.3 - script: - - cmake --version - - mkdir ./build_sse2_11_release - - cd ./build_sse2_11_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSE2=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - env: - - MATRIX_EVAL="INFO=C++11-sse2-release" - - - os: osx - osx_image: xcode8 - script: - - cmake --version - - mkdir ./build_pure_14_release - - cd ./build_pure_14_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_FORCE_PURE=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - env: - - MATRIX_EVAL="INFO=C++14-pure-release" - - - os: osx - osx_image: xcode8 - script: - - cmake --version - - mkdir ./build_sse3_14_release - - cd ./build_sse3_14_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSE3=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - env: - - MATRIX_EVAL="INFO=C++14-sse3-release" - - - os: osx - osx_image: xcode8 - script: - - cmake --version - - mkdir ./build_avx_14_release - - cd ./build_avx_14_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_AVX=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - env: - - MATRIX_EVAL="INFO=C++14-avx-release" - - - os: osx - osx_image: xcode8 - script: - - cmake --version - - mkdir ./build_avx_14_debug - - cd ./build_avx_14_debug - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_AVX=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - env: - - MATRIX_EVAL="INFO=C++14-avx-debug" - - - os: osx - osx_image: xcode11 - script: - - cmake --version - - mkdir ./build_pure_17_release - - cd ./build_pure_17_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_FORCE_PURE=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - env: - - MATRIX_EVAL="INFO=C++17-pure-release" - - - os: osx - osx_image: xcode11 - script: - - cmake --version - - mkdir ./build_pure_17_debug - - cd ./build_pure_17_debug - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_FORCE_PURE=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - env: - - MATRIX_EVAL="INFO=C++17-pure-debug" - - - os: osx - osx_image: xcode11 - script: - - cmake --version - - mkdir ./build_avx_17_release - - cd ./build_avx_17_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_AVX=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - env: - - MATRIX_EVAL="INFO=C++17-avx-release" - - - os: osx - osx_image: xcode11 - script: - - cmake --version - - mkdir ./build_avx_17_debug - - cd ./build_avx_17_debug - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_AVX=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - env: - - MATRIX_EVAL="INFO=C++17-avx-debug" - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-4.9 - env: - - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9 && INFO=C++98-pure-release" - script: - - cmake --version - - mkdir ./build_pure_98_release - - cd ./build_pure_98_release - - 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 $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-4.9 - env: - - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9 && INFO=C++98-pure-debug" - script: - - cmake --version - - 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 $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-4.9 - env: - - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9 && INFO=C++98-pure-ms" - script: - - cmake --version - - mkdir ./build_pure_ms_release - - cd ./build_pure_ms_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_FORCE_PURE=ON .. - - cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-5 - env: - - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5 && INFO=C++11-pure-release" - script: - - cmake --version - - mkdir ./build_pure_11_release - - cd ./build_pure_11_release - - 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 $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-5 - env: - - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5 && INFO=C++11-pure-debug" - script: - - cmake --version - - mkdir ./build_pure_11_debug - - cd ./build_pure_11_debug - - 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 $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-5 - env: - - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5 && INFO=C++11-pure-ms" - script: - - cmake --version - - mkdir ./build_pure_ms_release - - cd ./build_pure_ms_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_FORCE_PURE=ON .. - - cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-5 - env: - - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5 && INFO=C++11-sse3-release" - script: - - cmake --version - - mkdir ./build_sse3_ms_release - - cd ./build_sse3_ms_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSE3=ON .. - - cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - MATRIX_EVAL="CC=gcc-6 && CXX=g++-6 && INFO=C++14-pure-release" - script: - - cmake --version - - mkdir ./build_pure_14_release - - cd ./build_pure_14_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_FORCE_PURE=ON .. - - cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - MATRIX_EVAL="CC=gcc-6 && CXX=g++-6 && INFO=C++14-pure-debug" - script: - - cmake --version - - mkdir ./build_pure_14_debug - - cd ./build_pure_14_debug - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_FORCE_PURE=ON .. - - cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - MATRIX_EVAL="CC=gcc-6 && CXX=g++-6 && INFO=C++14-pure-ms" - script: - - cmake --version - - mkdir ./build_pure_ms_release - - cd ./build_pure_ms_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_FORCE_PURE=ON .. - - cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 - env: - - MATRIX_EVAL="CC=gcc-6 && CXX=g++-6 && INFO=C++14-sse3-release" - script: - - cmake --version - - mkdir ./build_sse3_ms_release - - cd ./build_sse3_ms_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSE3=ON .. - - cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-7 - env: - - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7 && INFO=C++17-pure-release" - script: - - cmake --version - - mkdir ./build_pure_17_release - - cd ./build_pure_17_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_FORCE_PURE=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-7 - env: - - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7 && INFO=C++17-sse2-release" - script: - - cmake --version - - mkdir ./build_sse2_17_release - - cd ./build_sse2_17_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSE2=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-7 - env: - - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7 && INFO=C++17-sse3-release" - script: - - cmake --version - - mkdir ./build_sse3_17_release - - cd ./build_sse3_17_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSE3=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-7 - env: - - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7 && INFO=C++17-avx-release" - script: - - cmake --version - - mkdir ./build_avx_17_release - - cd ./build_avx_17_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_AVX=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-7 - env: - - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7 && INFO=C++17-avx2-release" - script: - - cmake --version - - mkdir ./build_avx2_17_release - - cd ./build_avx2_17_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_AVX2=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.6 - packages: - - clang-3.6 - env: - - MATRIX_EVAL="CC=clang-3.6 && CXX=clang++-3.6 && INFO=C++14-pure-release" - script: - - cmake --version - - mkdir ./build_pure_14_release - - cd ./build_pure_14_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_FORCE_PURE=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.6 - packages: - - clang-3.6 - env: - - MATRIX_EVAL="CC=clang-3.6 && CXX=clang++-3.6 && INFO=C++14-pure-debug" - script: - - cmake --version - - mkdir ./build_pure_14_debug - - cd ./build_pure_14_debug - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_FORCE_PURE=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - addons: - apt: - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.6 - packages: - - clang-3.6 - env: - - MATRIX_EVAL="CC=clang-3.6 && CXX=clang++-3.6 && INFO=C++14-avx-debug" - script: - - cmake --version - - mkdir ./build_avx_14_debug - - cd ./build_avx_14_debug - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_AVX=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - dist: bionic - env: - - MATRIX_EVAL="CC=clang && CXX=clang++ && INFO=C++17-pure-release" - script: - - cmake --version - - mkdir ./build_pure_17_release - - cd ./build_pure_17_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_FORCE_PURE=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - dist: bionic - env: - - MATRIX_EVAL="CC=clang && CXX=clang++ && INFO=C++17-pure-debug" - script: - - cmake --version - - mkdir ./build_pure_17_debug - - cd ./build_pure_17_debug - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_FORCE_PURE=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - dist: bionic - env: - - MATRIX_EVAL="CC=clang && CXX=clang++ && INFO=C++17-sse3-release - script: - - cmake --version - - mkdir ./build_sse3_17_release - - cd ./build_sse3_17_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSE3=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - dist: bionic - env: - - MATRIX_EVAL="CC=clang && CXX=clang++ && INFO=C++17-sse3-debug" - script: - - cmake --version - - mkdir ./build_sse3_17_debug - - cd ./build_sse3_17_debug - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSE3=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - - - os: linux - dist: bionic - env: - - MATRIX_EVAL="CC=clang && CXX=clang++ && INFO=C++17-ssse3-release" - script: - - cmake --version - - mkdir ./build_ssse3_17_release - - cd ./build_ssse3_17_release - - cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSSE3=ON .. - - cmake -E time cmake --build . - - ctest - - cd $TRAVIS_BUILD_DIR - - mkdir ./build_test_cmake - - cd ./build_test_cmake - - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -Dglm_DIR=$TRAVIS_BUILD_DIR/cmake/glm/ - - cmake --build . - -before_install: - - eval "${MATRIX_EVAL}" - - diff --git a/tests/OpenGL/package/glm/CMakeLists.txt b/tests/OpenGL/package/glm/CMakeLists.txt deleted file mode 100644 index 843e7546..00000000 --- a/tests/OpenGL/package/glm/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -cmake_minimum_required(VERSION 3.2 FATAL_ERROR) -cmake_policy(VERSION 3.2) - -set(GLM_VERSION "0.9.9") -project(glm VERSION ${GLM_VERSION} LANGUAGES CXX) -enable_testing() - -add_subdirectory(glm) -add_library(glm::glm ALIAS glm) - -if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) - -add_subdirectory(test) - -endif(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/tests/OpenGL/package/glm/cmake/glm/glmConfig-version.cmake b/tests/OpenGL/package/glm/cmake/glm/glmConfig-version.cmake deleted file mode 100644 index 6e63a4a3..00000000 --- a/tests/OpenGL/package/glm/cmake/glm/glmConfig-version.cmake +++ /dev/null @@ -1,11 +0,0 @@ -if(${PACKAGE_FIND_VERSION_MAJOR} EQUAL 0) - if (${PACKAGE_FIND_VERSION} VERSION_LESS ${GLM_VERSION}) - set(PACKAGE_VERSION_COMPATIBLE 1) - endif() - if(${PACKAGE_FIND_VERSION} VERSION_EQUAL ${GLM_VERSION}) - set(PACKAGE_VERSION_EXACT 1) - endif() -else() - set(PACKAGE_VERSION_UNSUITABLE 1) -endif() - diff --git a/tests/OpenGL/package/glm/cmake/glm/glmConfig.cmake b/tests/OpenGL/package/glm/cmake/glm/glmConfig.cmake deleted file mode 100644 index 4fba5116..00000000 --- a/tests/OpenGL/package/glm/cmake/glm/glmConfig.cmake +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.2 FATAL_ERROR) -cmake_policy(VERSION 3.2) - -set(GLM_VERSION 0.9.9) - -get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -if (_IMPORT_PREFIX STREQUAL "/") - set(_IMPORT_PREFIX "") -endif() - -# Set the old GLM_INCLUDE_DIRS variable for backwards compatibility -set(GLM_INCLUDE_DIRS ${_IMPORT_PREFIX}) - -add_library(glm::glm INTERFACE IMPORTED) -set_target_properties(glm::glm PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES ${GLM_INCLUDE_DIRS}) - -mark_as_advanced(glm_DIR) -set(_IMPORT_PREFIX) - diff --git a/tests/OpenGL/package/glm/copying.txt b/tests/OpenGL/package/glm/copying.txt deleted file mode 100644 index 779c32fb..00000000 --- a/tests/OpenGL/package/glm/copying.txt +++ /dev/null @@ -1,54 +0,0 @@ -================================================================================ -OpenGL Mathematics (GLM) --------------------------------------------------------------------------------- -GLM is licensed under The Happy Bunny License or MIT License - -================================================================================ -The Happy Bunny License (Modified MIT License) --------------------------------------------------------------------------------- -Copyright (c) 2005 - G-Truc Creation - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -Restrictions: - By making use of the Software for military purposes, you choose to make a - Bunny unhappy. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -================================================================================ -The MIT License --------------------------------------------------------------------------------- -Copyright (c) 2005 - G-Truc Creation - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/tests/OpenGL/package/glm/doc/api/a00001_source.html b/tests/OpenGL/package/glm/doc/api/a00001_source.html deleted file mode 100644 index 36d74ceb..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00001_source.html +++ /dev/null @@ -1,493 +0,0 @@ - - - - - - -0.9.9 API documentation: _features.hpp Source File - - - - - - - - - - -

-
-
-
_features.hpp
-
-
-
1 #pragma once
-
2 
-
3 // #define GLM_CXX98_EXCEPTIONS
-
4 // #define GLM_CXX98_RTTI
-
5 
-
6 // #define GLM_CXX11_RVALUE_REFERENCES
-
7 // Rvalue references - GCC 4.3
-
8 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html
-
9 
-
10 // GLM_CXX11_TRAILING_RETURN
-
11 // Rvalue references for *this - GCC not supported
-
12 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm
-
13 
-
14 // GLM_CXX11_NONSTATIC_MEMBER_INIT
-
15 // Initialization of class objects by rvalues - GCC any
-
16 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html
-
17 
-
18 // GLM_CXX11_NONSTATIC_MEMBER_INIT
-
19 // Non-static data member initializers - GCC 4.7
-
20 // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm
-
21 
-
22 // #define GLM_CXX11_VARIADIC_TEMPLATE
-
23 // Variadic templates - GCC 4.3
-
24 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf
-
25 
-
26 //
-
27 // Extending variadic template template parameters - GCC 4.4
-
28 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf
-
29 
-
30 // #define GLM_CXX11_GENERALIZED_INITIALIZERS
-
31 // Initializer lists - GCC 4.4
-
32 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm
-
33 
-
34 // #define GLM_CXX11_STATIC_ASSERT
-
35 // Static assertions - GCC 4.3
-
36 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html
-
37 
-
38 // #define GLM_CXX11_AUTO_TYPE
-
39 // auto-typed variables - GCC 4.4
-
40 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf
-
41 
-
42 // #define GLM_CXX11_AUTO_TYPE
-
43 // Multi-declarator auto - GCC 4.4
-
44 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf
-
45 
-
46 // #define GLM_CXX11_AUTO_TYPE
-
47 // Removal of auto as a storage-class specifier - GCC 4.4
-
48 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2546.htm
-
49 
-
50 // #define GLM_CXX11_AUTO_TYPE
-
51 // New function declarator syntax - GCC 4.4
-
52 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm
-
53 
-
54 // #define GLM_CXX11_LAMBDAS
-
55 // New wording for C++0x lambdas - GCC 4.5
-
56 // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf
-
57 
-
58 // #define GLM_CXX11_DECLTYPE
-
59 // Declared type of an expression - GCC 4.3
-
60 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf
-
61 
-
62 //
-
63 // Right angle brackets - GCC 4.3
-
64 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html
-
65 
-
66 //
-
67 // Default template arguments for function templates DR226 GCC 4.3
-
68 // http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226
-
69 
-
70 //
-
71 // Solving the SFINAE problem for expressions DR339 GCC 4.4
-
72 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html
-
73 
-
74 // #define GLM_CXX11_ALIAS_TEMPLATE
-
75 // Template aliases N2258 GCC 4.7
-
76 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf
-
77 
-
78 //
-
79 // Extern templates N1987 Yes
-
80 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm
-
81 
-
82 // #define GLM_CXX11_NULLPTR
-
83 // Null pointer constant N2431 GCC 4.6
-
84 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf
-
85 
-
86 // #define GLM_CXX11_STRONG_ENUMS
-
87 // Strongly-typed enums N2347 GCC 4.4
-
88 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf
-
89 
-
90 //
-
91 // Forward declarations for enums N2764 GCC 4.6
-
92 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf
-
93 
-
94 //
-
95 // Generalized attributes N2761 GCC 4.8
-
96 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf
-
97 
-
98 //
-
99 // Generalized constant expressions N2235 GCC 4.6
-
100 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf
-
101 
-
102 //
-
103 // Alignment support N2341 GCC 4.8
-
104 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
-
105 
-
106 // #define GLM_CXX11_DELEGATING_CONSTRUCTORS
-
107 // Delegating constructors N1986 GCC 4.7
-
108 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf
-
109 
-
110 //
-
111 // Inheriting constructors N2540 GCC 4.8
-
112 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm
-
113 
-
114 // #define GLM_CXX11_EXPLICIT_CONVERSIONS
-
115 // Explicit conversion operators N2437 GCC 4.5
-
116 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf
-
117 
-
118 //
-
119 // New character types N2249 GCC 4.4
-
120 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html
-
121 
-
122 //
-
123 // Unicode string literals N2442 GCC 4.5
-
124 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
-
125 
-
126 //
-
127 // Raw string literals N2442 GCC 4.5
-
128 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
-
129 
-
130 //
-
131 // Universal character name literals N2170 GCC 4.5
-
132 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html
-
133 
-
134 // #define GLM_CXX11_USER_LITERALS
-
135 // User-defined literals N2765 GCC 4.7
-
136 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf
-
137 
-
138 //
-
139 // Standard Layout Types N2342 GCC 4.5
-
140 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm
-
141 
-
142 // #define GLM_CXX11_DEFAULTED_FUNCTIONS
-
143 // #define GLM_CXX11_DELETED_FUNCTIONS
-
144 // Defaulted and deleted functions N2346 GCC 4.4
-
145 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
-
146 
-
147 //
-
148 // Extended friend declarations N1791 GCC 4.7
-
149 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf
-
150 
-
151 //
-
152 // Extending sizeof N2253 GCC 4.4
-
153 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html
-
154 
-
155 // #define GLM_CXX11_INLINE_NAMESPACES
-
156 // Inline namespaces N2535 GCC 4.4
-
157 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm
-
158 
-
159 // #define GLM_CXX11_UNRESTRICTED_UNIONS
-
160 // Unrestricted unions N2544 GCC 4.6
-
161 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf
-
162 
-
163 // #define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS
-
164 // Local and unnamed types as template arguments N2657 GCC 4.5
-
165 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm
-
166 
-
167 // #define GLM_CXX11_RANGE_FOR
-
168 // Range-based for N2930 GCC 4.6
-
169 // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html
-
170 
-
171 // #define GLM_CXX11_OVERRIDE_CONTROL
-
172 // Explicit virtual overrides N2928 N3206 N3272 GCC 4.7
-
173 // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
-
174 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm
-
175 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm
-
176 
-
177 //
-
178 // Minimal support for garbage collection and reachability-based leak detection N2670 No
-
179 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm
-
180 
-
181 // #define GLM_CXX11_NOEXCEPT
-
182 // Allowing move constructors to throw [noexcept] N3050 GCC 4.6 (core language only)
-
183 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html
-
184 
-
185 //
-
186 // Defining move special member functions N3053 GCC 4.6
-
187 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html
-
188 
-
189 //
-
190 // Sequence points N2239 Yes
-
191 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html
-
192 
-
193 //
-
194 // Atomic operations N2427 GCC 4.4
-
195 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html
-
196 
-
197 //
-
198 // Strong Compare and Exchange N2748 GCC 4.5
-
199 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html
-
200 
-
201 //
-
202 // Bidirectional Fences N2752 GCC 4.8
-
203 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm
-
204 
-
205 //
-
206 // Memory model N2429 GCC 4.8
-
207 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm
-
208 
-
209 //
-
210 // Data-dependency ordering: atomics and memory model N2664 GCC 4.4
-
211 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm
-
212 
-
213 //
-
214 // Propagating exceptions N2179 GCC 4.4
-
215 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html
-
216 
-
217 //
-
218 // Abandoning a process and at_quick_exit N2440 GCC 4.8
-
219 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm
-
220 
-
221 //
-
222 // Allow atomics use in signal handlers N2547 Yes
-
223 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2547.htm
-
224 
-
225 //
-
226 // Thread-local storage N2659 GCC 4.8
-
227 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm
-
228 
-
229 //
-
230 // Dynamic initialization and destruction with concurrency N2660 GCC 4.3
-
231 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm
-
232 
-
233 //
-
234 // __func__ predefined identifier N2340 GCC 4.3
-
235 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm
-
236 
-
237 //
-
238 // C99 preprocessor N1653 GCC 4.3
-
239 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm
-
240 
-
241 //
-
242 // long long N1811 GCC 4.3
-
243 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf
-
244 
-
245 //
-
246 // Extended integral types N1988 Yes
-
247 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf
-
248 
-
249 #if(GLM_COMPILER & GLM_COMPILER_GCC)
-
250 
-
251 # define GLM_CXX11_STATIC_ASSERT
-
252 
-
253 #elif(GLM_COMPILER & GLM_COMPILER_CLANG)
-
254 # if(__has_feature(cxx_exceptions))
-
255 # define GLM_CXX98_EXCEPTIONS
-
256 # endif
-
257 
-
258 # if(__has_feature(cxx_rtti))
-
259 # define GLM_CXX98_RTTI
-
260 # endif
-
261 
-
262 # if(__has_feature(cxx_access_control_sfinae))
-
263 # define GLM_CXX11_ACCESS_CONTROL_SFINAE
-
264 # endif
-
265 
-
266 # if(__has_feature(cxx_alias_templates))
-
267 # define GLM_CXX11_ALIAS_TEMPLATE
-
268 # endif
-
269 
-
270 # if(__has_feature(cxx_alignas))
-
271 # define GLM_CXX11_ALIGNAS
-
272 # endif
-
273 
-
274 # if(__has_feature(cxx_attributes))
-
275 # define GLM_CXX11_ATTRIBUTES
-
276 # endif
-
277 
-
278 # if(__has_feature(cxx_constexpr))
-
279 # define GLM_CXX11_CONSTEXPR
-
280 # endif
-
281 
-
282 # if(__has_feature(cxx_decltype))
-
283 # define GLM_CXX11_DECLTYPE
-
284 # endif
-
285 
-
286 # if(__has_feature(cxx_default_function_template_args))
-
287 # define GLM_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS
-
288 # endif
-
289 
-
290 # if(__has_feature(cxx_defaulted_functions))
-
291 # define GLM_CXX11_DEFAULTED_FUNCTIONS
-
292 # endif
-
293 
-
294 # if(__has_feature(cxx_delegating_constructors))
-
295 # define GLM_CXX11_DELEGATING_CONSTRUCTORS
-
296 # endif
-
297 
-
298 # if(__has_feature(cxx_deleted_functions))
-
299 # define GLM_CXX11_DELETED_FUNCTIONS
-
300 # endif
-
301 
-
302 # if(__has_feature(cxx_explicit_conversions))
-
303 # define GLM_CXX11_EXPLICIT_CONVERSIONS
-
304 # endif
-
305 
-
306 # if(__has_feature(cxx_generalized_initializers))
-
307 # define GLM_CXX11_GENERALIZED_INITIALIZERS
-
308 # endif
-
309 
-
310 # if(__has_feature(cxx_implicit_moves))
-
311 # define GLM_CXX11_IMPLICIT_MOVES
-
312 # endif
-
313 
-
314 # if(__has_feature(cxx_inheriting_constructors))
-
315 # define GLM_CXX11_INHERITING_CONSTRUCTORS
-
316 # endif
-
317 
-
318 # if(__has_feature(cxx_inline_namespaces))
-
319 # define GLM_CXX11_INLINE_NAMESPACES
-
320 # endif
-
321 
-
322 # if(__has_feature(cxx_lambdas))
-
323 # define GLM_CXX11_LAMBDAS
-
324 # endif
-
325 
-
326 # if(__has_feature(cxx_local_type_template_args))
-
327 # define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS
-
328 # endif
-
329 
-
330 # if(__has_feature(cxx_noexcept))
-
331 # define GLM_CXX11_NOEXCEPT
-
332 # endif
-
333 
-
334 # if(__has_feature(cxx_nonstatic_member_init))
-
335 # define GLM_CXX11_NONSTATIC_MEMBER_INIT
-
336 # endif
-
337 
-
338 # if(__has_feature(cxx_nullptr))
-
339 # define GLM_CXX11_NULLPTR
-
340 # endif
-
341 
-
342 # if(__has_feature(cxx_override_control))
-
343 # define GLM_CXX11_OVERRIDE_CONTROL
-
344 # endif
-
345 
-
346 # if(__has_feature(cxx_reference_qualified_functions))
-
347 # define GLM_CXX11_REFERENCE_QUALIFIED_FUNCTIONS
-
348 # endif
-
349 
-
350 # if(__has_feature(cxx_range_for))
-
351 # define GLM_CXX11_RANGE_FOR
-
352 # endif
-
353 
-
354 # if(__has_feature(cxx_raw_string_literals))
-
355 # define GLM_CXX11_RAW_STRING_LITERALS
-
356 # endif
-
357 
-
358 # if(__has_feature(cxx_rvalue_references))
-
359 # define GLM_CXX11_RVALUE_REFERENCES
-
360 # endif
-
361 
-
362 # if(__has_feature(cxx_static_assert))
-
363 # define GLM_CXX11_STATIC_ASSERT
-
364 # endif
-
365 
-
366 # if(__has_feature(cxx_auto_type))
-
367 # define GLM_CXX11_AUTO_TYPE
-
368 # endif
-
369 
-
370 # if(__has_feature(cxx_strong_enums))
-
371 # define GLM_CXX11_STRONG_ENUMS
-
372 # endif
-
373 
-
374 # if(__has_feature(cxx_trailing_return))
-
375 # define GLM_CXX11_TRAILING_RETURN
-
376 # endif
-
377 
-
378 # if(__has_feature(cxx_unicode_literals))
-
379 # define GLM_CXX11_UNICODE_LITERALS
-
380 # endif
-
381 
-
382 # if(__has_feature(cxx_unrestricted_unions))
-
383 # define GLM_CXX11_UNRESTRICTED_UNIONS
-
384 # endif
-
385 
-
386 # if(__has_feature(cxx_user_literals))
-
387 # define GLM_CXX11_USER_LITERALS
-
388 # endif
-
389 
-
390 # if(__has_feature(cxx_variadic_templates))
-
391 # define GLM_CXX11_VARIADIC_TEMPLATES
-
392 # endif
-
393 
-
394 #endif//(GLM_COMPILER & GLM_COMPILER_CLANG)
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00002_source.html b/tests/OpenGL/package/glm/doc/api/a00002_source.html deleted file mode 100644 index b3878354..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00002_source.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - -0.9.9 API documentation: _fixes.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
_fixes.hpp
-
-
-
1 #include <cmath>
-
2 
-
4 #ifdef max
-
5 #undef max
-
6 #endif
-
7 
-
9 #ifdef min
-
10 #undef min
-
11 #endif
-
12 
-
14 #ifdef isnan
-
15 #undef isnan
-
16 #endif
-
17 
-
19 #ifdef isinf
-
20 #undef isinf
-
21 #endif
-
22 
-
24 #ifdef log2
-
25 #undef log2
-
26 #endif
-
27 
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00003_source.html b/tests/OpenGL/package/glm/doc/api/a00003_source.html deleted file mode 100644 index 4e90ac88..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00003_source.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - -0.9.9 API documentation: _noise.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
_noise.hpp
-
-
-
1 #pragma once
-
2 
-
3 #include "../common.hpp"
-
4 
-
5 namespace glm{
-
6 namespace detail
-
7 {
-
8  template<typename T>
-
9  GLM_FUNC_QUALIFIER T mod289(T const& x)
-
10  {
-
11  return x - floor(x * (static_cast<T>(1.0) / static_cast<T>(289.0))) * static_cast<T>(289.0);
-
12  }
-
13 
-
14  template<typename T>
-
15  GLM_FUNC_QUALIFIER T permute(T const& x)
-
16  {
-
17  return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
-
18  }
-
19 
-
20  template<typename T, qualifier Q>
-
21  GLM_FUNC_QUALIFIER vec<2, T, Q> permute(vec<2, T, Q> const& x)
-
22  {
-
23  return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
-
24  }
-
25 
-
26  template<typename T, qualifier Q>
-
27  GLM_FUNC_QUALIFIER vec<3, T, Q> permute(vec<3, T, Q> const& x)
-
28  {
-
29  return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
-
30  }
-
31 
-
32  template<typename T, qualifier Q>
-
33  GLM_FUNC_QUALIFIER vec<4, T, Q> permute(vec<4, T, Q> const& x)
-
34  {
-
35  return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
-
36  }
-
37 
-
38  template<typename T>
-
39  GLM_FUNC_QUALIFIER T taylorInvSqrt(T const& r)
-
40  {
-
41  return static_cast<T>(1.79284291400159) - static_cast<T>(0.85373472095314) * r;
-
42  }
-
43 
-
44  template<typename T, qualifier Q>
-
45  GLM_FUNC_QUALIFIER vec<2, T, Q> taylorInvSqrt(vec<2, T, Q> const& r)
-
46  {
-
47  return static_cast<T>(1.79284291400159) - static_cast<T>(0.85373472095314) * r;
-
48  }
-
49 
-
50  template<typename T, qualifier Q>
-
51  GLM_FUNC_QUALIFIER vec<3, T, Q> taylorInvSqrt(vec<3, T, Q> const& r)
-
52  {
-
53  return static_cast<T>(1.79284291400159) - static_cast<T>(0.85373472095314) * r;
-
54  }
-
55 
-
56  template<typename T, qualifier Q>
-
57  GLM_FUNC_QUALIFIER vec<4, T, Q> taylorInvSqrt(vec<4, T, Q> const& r)
-
58  {
-
59  return static_cast<T>(1.79284291400159) - static_cast<T>(0.85373472095314) * r;
-
60  }
-
61 
-
62  template<typename T, qualifier Q>
-
63  GLM_FUNC_QUALIFIER vec<2, T, Q> fade(vec<2, T, Q> const& t)
-
64  {
-
65  return (t * t * t) * (t * (t * static_cast<T>(6) - static_cast<T>(15)) + static_cast<T>(10));
-
66  }
-
67 
-
68  template<typename T, qualifier Q>
-
69  GLM_FUNC_QUALIFIER vec<3, T, Q> fade(vec<3, T, Q> const& t)
-
70  {
-
71  return (t * t * t) * (t * (t * static_cast<T>(6) - static_cast<T>(15)) + static_cast<T>(10));
-
72  }
-
73 
-
74  template<typename T, qualifier Q>
-
75  GLM_FUNC_QUALIFIER vec<4, T, Q> fade(vec<4, T, Q> const& t)
-
76  {
-
77  return (t * t * t) * (t * (t * static_cast<T>(6) - static_cast<T>(15)) + static_cast<T>(10));
-
78  }
-
79 }//namespace detail
-
80 }//namespace glm
-
81 
-
GLM_FUNC_DECL vec< L, T, Q > floor(vec< L, T, Q > const &x)
Returns a value equal to the nearest integer that is less then or equal to x.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00004_source.html b/tests/OpenGL/package/glm/doc/api/a00004_source.html deleted file mode 100644 index a2a5ebb6..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00004_source.html +++ /dev/null @@ -1,905 +0,0 @@ - - - - - - -0.9.9 API documentation: _swizzle.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
_swizzle.hpp
-
-
-
1 #pragma once
-
2 
-
3 namespace glm{
-
4 namespace detail
-
5 {
-
6  // Internal class for implementing swizzle operators
-
7  template<typename T, int N>
-
8  struct _swizzle_base0
-
9  {
-
10  protected:
-
11  GLM_FUNC_QUALIFIER T& elem(size_t i){ return (reinterpret_cast<T*>(_buffer))[i]; }
-
12  GLM_FUNC_QUALIFIER T const& elem(size_t i) const{ return (reinterpret_cast<const T*>(_buffer))[i]; }
-
13 
-
14  // Use an opaque buffer to *ensure* the compiler doesn't call a constructor.
-
15  // The size 1 buffer is assumed to aligned to the actual members so that the
-
16  // elem()
-
17  char _buffer[1];
-
18  };
-
19 
-
20  template<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3, bool Aligned>
-
21  struct _swizzle_base1 : public _swizzle_base0<T, N>
-
22  {
-
23  };
-
24 
-
25  template<typename T, qualifier Q, int E0, int E1, bool Aligned>
-
26  struct _swizzle_base1<2, T, Q, E0,E1,-1,-2, Aligned> : public _swizzle_base0<T, 2>
-
27  {
-
28  GLM_FUNC_QUALIFIER vec<2, T, Q> operator ()() const { return vec<2, T, Q>(this->elem(E0), this->elem(E1)); }
-
29  };
-
30 
-
31  template<typename T, qualifier Q, int E0, int E1, int E2, bool Aligned>
-
32  struct _swizzle_base1<3, T, Q, E0,E1,E2,-1, Aligned> : public _swizzle_base0<T, 3>
-
33  {
-
34  GLM_FUNC_QUALIFIER vec<3, T, Q> operator ()() const { return vec<3, T, Q>(this->elem(E0), this->elem(E1), this->elem(E2)); }
-
35  };
-
36 
-
37  template<typename T, qualifier Q, int E0, int E1, int E2, int E3, bool Aligned>
-
38  struct _swizzle_base1<4, T, Q, E0,E1,E2,E3, Aligned> : public _swizzle_base0<T, 4>
-
39  {
-
40  GLM_FUNC_QUALIFIER vec<4, T, Q> operator ()() const { return vec<4, T, Q>(this->elem(E0), this->elem(E1), this->elem(E2), this->elem(E3)); }
-
41  };
-
42 
-
43  // Internal class for implementing swizzle operators
-
44  /*
-
45  Template parameters:
-
46 
-
47  T = type of scalar values (e.g. float, double)
-
48  N = number of components in the vector (e.g. 3)
-
49  E0...3 = what index the n-th element of this swizzle refers to in the unswizzled vec
-
50 
-
51  DUPLICATE_ELEMENTS = 1 if there is a repeated element, 0 otherwise (used to specialize swizzles
-
52  containing duplicate elements so that they cannot be used as r-values).
-
53  */
-
54  template<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3, int DUPLICATE_ELEMENTS>
-
55  struct _swizzle_base2 : public _swizzle_base1<N, T, Q, E0,E1,E2,E3, detail::is_aligned<Q>::value>
-
56  {
-
57  struct op_equal
-
58  {
-
59  GLM_FUNC_QUALIFIER void operator() (T& e, T& t) const{ e = t; }
-
60  };
-
61 
-
62  struct op_minus
-
63  {
-
64  GLM_FUNC_QUALIFIER void operator() (T& e, T& t) const{ e -= t; }
-
65  };
-
66 
-
67  struct op_plus
-
68  {
-
69  GLM_FUNC_QUALIFIER void operator() (T& e, T& t) const{ e += t; }
-
70  };
-
71 
-
72  struct op_mul
-
73  {
-
74  GLM_FUNC_QUALIFIER void operator() (T& e, T& t) const{ e *= t; }
-
75  };
-
76 
-
77  struct op_div
-
78  {
-
79  GLM_FUNC_QUALIFIER void operator() (T& e, T& t) const{ e /= t; }
-
80  };
-
81 
-
82  public:
-
83  GLM_FUNC_QUALIFIER _swizzle_base2& operator= (const T& t)
-
84  {
-
85  for (int i = 0; i < N; ++i)
-
86  (*this)[i] = t;
-
87  return *this;
-
88  }
-
89 
-
90  GLM_FUNC_QUALIFIER _swizzle_base2& operator= (vec<N, T, Q> const& that)
-
91  {
-
92  _apply_op(that, op_equal());
-
93  return *this;
-
94  }
-
95 
-
96  GLM_FUNC_QUALIFIER void operator -= (vec<N, T, Q> const& that)
-
97  {
-
98  _apply_op(that, op_minus());
-
99  }
-
100 
-
101  GLM_FUNC_QUALIFIER void operator += (vec<N, T, Q> const& that)
-
102  {
-
103  _apply_op(that, op_plus());
-
104  }
-
105 
-
106  GLM_FUNC_QUALIFIER void operator *= (vec<N, T, Q> const& that)
-
107  {
-
108  _apply_op(that, op_mul());
-
109  }
-
110 
-
111  GLM_FUNC_QUALIFIER void operator /= (vec<N, T, Q> const& that)
-
112  {
-
113  _apply_op(that, op_div());
-
114  }
-
115 
-
116  GLM_FUNC_QUALIFIER T& operator[](size_t i)
-
117  {
-
118  const int offset_dst[4] = { E0, E1, E2, E3 };
-
119  return this->elem(offset_dst[i]);
-
120  }
-
121  GLM_FUNC_QUALIFIER T operator[](size_t i) const
-
122  {
-
123  const int offset_dst[4] = { E0, E1, E2, E3 };
-
124  return this->elem(offset_dst[i]);
-
125  }
-
126 
-
127  protected:
-
128  template<typename U>
-
129  GLM_FUNC_QUALIFIER void _apply_op(vec<N, T, Q> const& that, const U& op)
-
130  {
-
131  // Make a copy of the data in this == &that.
-
132  // The copier should optimize out the copy in cases where the function is
-
133  // properly inlined and the copy is not necessary.
-
134  T t[N];
-
135  for (int i = 0; i < N; ++i)
-
136  t[i] = that[i];
-
137  for (int i = 0; i < N; ++i)
-
138  op( (*this)[i], t[i] );
-
139  }
-
140  };
-
141 
-
142  // Specialization for swizzles containing duplicate elements. These cannot be modified.
-
143  template<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3>
-
144  struct _swizzle_base2<N, T, Q, E0,E1,E2,E3, 1> : public _swizzle_base1<N, T, Q, E0,E1,E2,E3, detail::is_aligned<Q>::value>
-
145  {
-
146  struct Stub {};
-
147 
-
148  GLM_FUNC_QUALIFIER _swizzle_base2& operator= (Stub const&) { return *this; }
-
149 
-
150  GLM_FUNC_QUALIFIER T operator[] (size_t i) const
-
151  {
-
152  const int offset_dst[4] = { E0, E1, E2, E3 };
-
153  return this->elem(offset_dst[i]);
-
154  }
-
155  };
-
156 
-
157  template<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3>
-
158  struct _swizzle : public _swizzle_base2<N, T, Q, E0, E1, E2, E3, (E0 == E1 || E0 == E2 || E0 == E3 || E1 == E2 || E1 == E3 || E2 == E3)>
-
159  {
-
160  typedef _swizzle_base2<N, T, Q, E0, E1, E2, E3, (E0 == E1 || E0 == E2 || E0 == E3 || E1 == E2 || E1 == E3 || E2 == E3)> base_type;
-
161 
-
162  using base_type::operator=;
-
163 
-
164  GLM_FUNC_QUALIFIER operator vec<N, T, Q> () const { return (*this)(); }
-
165  };
-
166 
-
167 //
-
168 // To prevent the C++ syntax from getting entirely overwhelming, define some alias macros
-
169 //
-
170 #define GLM_SWIZZLE_TEMPLATE1 template<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3>
-
171 #define GLM_SWIZZLE_TEMPLATE2 template<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3, int F0, int F1, int F2, int F3>
-
172 #define GLM_SWIZZLE_TYPE1 _swizzle<N, T, Q, E0, E1, E2, E3>
-
173 #define GLM_SWIZZLE_TYPE2 _swizzle<N, T, Q, F0, F1, F2, F3>
-
174 
-
175 //
-
176 // Wrapper for a binary operator (e.g. u.yy + v.zy)
-
177 //
-
178 #define GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \
-
179  GLM_SWIZZLE_TEMPLATE2 \
-
180  GLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE2& b) \
-
181  { \
-
182  return a() OPERAND b(); \
-
183  } \
-
184  GLM_SWIZZLE_TEMPLATE1 \
-
185  GLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const GLM_SWIZZLE_TYPE1& a, const vec<N, T, Q>& b) \
-
186  { \
-
187  return a() OPERAND b; \
-
188  } \
-
189  GLM_SWIZZLE_TEMPLATE1 \
-
190  GLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const vec<N, T, Q>& a, const GLM_SWIZZLE_TYPE1& b) \
-
191  { \
-
192  return a OPERAND b(); \
-
193  }
-
194 
-
195 //
-
196 // Wrapper for a operand between a swizzle and a binary (e.g. 1.0f - u.xyz)
-
197 //
-
198 #define GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \
-
199  GLM_SWIZZLE_TEMPLATE1 \
-
200  GLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const GLM_SWIZZLE_TYPE1& a, const T& b) \
-
201  { \
-
202  return a() OPERAND b; \
-
203  } \
-
204  GLM_SWIZZLE_TEMPLATE1 \
-
205  GLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const T& a, const GLM_SWIZZLE_TYPE1& b) \
-
206  { \
-
207  return a OPERAND b(); \
-
208  }
-
209 
-
210 //
-
211 // Macro for wrapping a function taking one argument (e.g. abs())
-
212 //
-
213 #define GLM_SWIZZLE_FUNCTION_1_ARGS(RETURN_TYPE,FUNCTION) \
-
214  GLM_SWIZZLE_TEMPLATE1 \
-
215  GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a) \
-
216  { \
-
217  return FUNCTION(a()); \
-
218  }
-
219 
-
220 //
-
221 // Macro for wrapping a function taking two vector arguments (e.g. dot()).
-
222 //
-
223 #define GLM_SWIZZLE_FUNCTION_2_ARGS(RETURN_TYPE,FUNCTION) \
-
224  GLM_SWIZZLE_TEMPLATE2 \
-
225  GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE2& b) \
-
226  { \
-
227  return FUNCTION(a(), b()); \
-
228  } \
-
229  GLM_SWIZZLE_TEMPLATE1 \
-
230  GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE1& b) \
-
231  { \
-
232  return FUNCTION(a(), b()); \
-
233  } \
-
234  GLM_SWIZZLE_TEMPLATE1 \
-
235  GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const typename V& b) \
-
236  { \
-
237  return FUNCTION(a(), b); \
-
238  } \
-
239  GLM_SWIZZLE_TEMPLATE1 \
-
240  GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const V& a, const GLM_SWIZZLE_TYPE1& b) \
-
241  { \
-
242  return FUNCTION(a, b()); \
-
243  }
-
244 
-
245 //
-
246 // Macro for wrapping a function take 2 vec arguments followed by a scalar (e.g. mix()).
-
247 //
-
248 #define GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(RETURN_TYPE,FUNCTION) \
-
249  GLM_SWIZZLE_TEMPLATE2 \
-
250  GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE2& b, const T& c) \
-
251  { \
-
252  return FUNCTION(a(), b(), c); \
-
253  } \
-
254  GLM_SWIZZLE_TEMPLATE1 \
-
255  GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE1& b, const T& c) \
-
256  { \
-
257  return FUNCTION(a(), b(), c); \
-
258  } \
-
259  GLM_SWIZZLE_TEMPLATE1 \
-
260  GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const typename S0::vec_type& b, const T& c)\
-
261  { \
-
262  return FUNCTION(a(), b, c); \
-
263  } \
-
264  GLM_SWIZZLE_TEMPLATE1 \
-
265  GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const typename V& a, const GLM_SWIZZLE_TYPE1& b, const T& c) \
-
266  { \
-
267  return FUNCTION(a, b(), c); \
-
268  }
-
269 
-
270 }//namespace detail
-
271 }//namespace glm
-
272 
-
273 namespace glm
-
274 {
-
275  namespace detail
-
276  {
-
277  GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(-)
-
278  GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(*)
-
279  GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(+)
-
280  GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(-)
-
281  GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(*)
-
282  GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(/)
-
283  }
-
284 
-
285  //
-
286  // Swizzles are distinct types from the unswizzled type. The below macros will
-
287  // provide template specializations for the swizzle types for the given functions
-
288  // so that the compiler does not have any ambiguity to choosing how to handle
-
289  // the function.
-
290  //
-
291  // The alternative is to use the operator()() when calling the function in order
-
292  // to explicitly convert the swizzled type to the unswizzled type.
-
293  //
-
294 
-
295  //GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, abs);
-
296  //GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acos);
-
297  //GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acosh);
-
298  //GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, all);
-
299  //GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, any);
-
300 
-
301  //GLM_SWIZZLE_FUNCTION_2_ARGS(value_type, dot);
-
302  //GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, cross);
-
303  //GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, step);
-
304  //GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(vec_type, mix);
-
305 }
-
306 
-
307 #define GLM_SWIZZLE2_2_MEMBERS(T, Q, E0,E1) \
-
308  struct { detail::_swizzle<2, T, Q, 0,0,-1,-2> E0 ## E0; }; \
-
309  struct { detail::_swizzle<2, T, Q, 0,1,-1,-2> E0 ## E1; }; \
-
310  struct { detail::_swizzle<2, T, Q, 1,0,-1,-2> E1 ## E0; }; \
-
311  struct { detail::_swizzle<2, T, Q, 1,1,-1,-2> E1 ## E1; };
-
312 
-
313 #define GLM_SWIZZLE2_3_MEMBERS(T, Q, E0,E1) \
-
314  struct { detail::_swizzle<3,T, Q, 0,0,0,-1> E0 ## E0 ## E0; }; \
-
315  struct { detail::_swizzle<3,T, Q, 0,0,1,-1> E0 ## E0 ## E1; }; \
-
316  struct { detail::_swizzle<3,T, Q, 0,1,0,-1> E0 ## E1 ## E0; }; \
-
317  struct { detail::_swizzle<3,T, Q, 0,1,1,-1> E0 ## E1 ## E1; }; \
-
318  struct { detail::_swizzle<3,T, Q, 1,0,0,-1> E1 ## E0 ## E0; }; \
-
319  struct { detail::_swizzle<3,T, Q, 1,0,1,-1> E1 ## E0 ## E1; }; \
-
320  struct { detail::_swizzle<3,T, Q, 1,1,0,-1> E1 ## E1 ## E0; }; \
-
321  struct { detail::_swizzle<3,T, Q, 1,1,1,-1> E1 ## E1 ## E1; };
-
322 
-
323 #define GLM_SWIZZLE2_4_MEMBERS(T, Q, E0,E1) \
-
324  struct { detail::_swizzle<4,T, Q, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
-
325  struct { detail::_swizzle<4,T, Q, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
-
326  struct { detail::_swizzle<4,T, Q, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \
-
327  struct { detail::_swizzle<4,T, Q, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \
-
328  struct { detail::_swizzle<4,T, Q, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \
-
329  struct { detail::_swizzle<4,T, Q, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \
-
330  struct { detail::_swizzle<4,T, Q, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \
-
331  struct { detail::_swizzle<4,T, Q, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \
-
332  struct { detail::_swizzle<4,T, Q, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \
-
333  struct { detail::_swizzle<4,T, Q, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \
-
334  struct { detail::_swizzle<4,T, Q, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \
-
335  struct { detail::_swizzle<4,T, Q, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \
-
336  struct { detail::_swizzle<4,T, Q, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \
-
337  struct { detail::_swizzle<4,T, Q, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \
-
338  struct { detail::_swizzle<4,T, Q, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \
-
339  struct { detail::_swizzle<4,T, Q, 1,1,1,1> E1 ## E1 ## E1 ## E1; };
-
340 
-
341 #define GLM_SWIZZLE3_2_MEMBERS(T, Q, E0,E1,E2) \
-
342  struct { detail::_swizzle<2,T, Q, 0,0,-1,-2> E0 ## E0; }; \
-
343  struct { detail::_swizzle<2,T, Q, 0,1,-1,-2> E0 ## E1; }; \
-
344  struct { detail::_swizzle<2,T, Q, 0,2,-1,-2> E0 ## E2; }; \
-
345  struct { detail::_swizzle<2,T, Q, 1,0,-1,-2> E1 ## E0; }; \
-
346  struct { detail::_swizzle<2,T, Q, 1,1,-1,-2> E1 ## E1; }; \
-
347  struct { detail::_swizzle<2,T, Q, 1,2,-1,-2> E1 ## E2; }; \
-
348  struct { detail::_swizzle<2,T, Q, 2,0,-1,-2> E2 ## E0; }; \
-
349  struct { detail::_swizzle<2,T, Q, 2,1,-1,-2> E2 ## E1; }; \
-
350  struct { detail::_swizzle<2,T, Q, 2,2,-1,-2> E2 ## E2; };
-
351 
-
352 #define GLM_SWIZZLE3_3_MEMBERS(T, Q ,E0,E1,E2) \
-
353  struct { detail::_swizzle<3, T, Q, 0,0,0,-1> E0 ## E0 ## E0; }; \
-
354  struct { detail::_swizzle<3, T, Q, 0,0,1,-1> E0 ## E0 ## E1; }; \
-
355  struct { detail::_swizzle<3, T, Q, 0,0,2,-1> E0 ## E0 ## E2; }; \
-
356  struct { detail::_swizzle<3, T, Q, 0,1,0,-1> E0 ## E1 ## E0; }; \
-
357  struct { detail::_swizzle<3, T, Q, 0,1,1,-1> E0 ## E1 ## E1; }; \
-
358  struct { detail::_swizzle<3, T, Q, 0,1,2,-1> E0 ## E1 ## E2; }; \
-
359  struct { detail::_swizzle<3, T, Q, 0,2,0,-1> E0 ## E2 ## E0; }; \
-
360  struct { detail::_swizzle<3, T, Q, 0,2,1,-1> E0 ## E2 ## E1; }; \
-
361  struct { detail::_swizzle<3, T, Q, 0,2,2,-1> E0 ## E2 ## E2; }; \
-
362  struct { detail::_swizzle<3, T, Q, 1,0,0,-1> E1 ## E0 ## E0; }; \
-
363  struct { detail::_swizzle<3, T, Q, 1,0,1,-1> E1 ## E0 ## E1; }; \
-
364  struct { detail::_swizzle<3, T, Q, 1,0,2,-1> E1 ## E0 ## E2; }; \
-
365  struct { detail::_swizzle<3, T, Q, 1,1,0,-1> E1 ## E1 ## E0; }; \
-
366  struct { detail::_swizzle<3, T, Q, 1,1,1,-1> E1 ## E1 ## E1; }; \
-
367  struct { detail::_swizzle<3, T, Q, 1,1,2,-1> E1 ## E1 ## E2; }; \
-
368  struct { detail::_swizzle<3, T, Q, 1,2,0,-1> E1 ## E2 ## E0; }; \
-
369  struct { detail::_swizzle<3, T, Q, 1,2,1,-1> E1 ## E2 ## E1; }; \
-
370  struct { detail::_swizzle<3, T, Q, 1,2,2,-1> E1 ## E2 ## E2; }; \
-
371  struct { detail::_swizzle<3, T, Q, 2,0,0,-1> E2 ## E0 ## E0; }; \
-
372  struct { detail::_swizzle<3, T, Q, 2,0,1,-1> E2 ## E0 ## E1; }; \
-
373  struct { detail::_swizzle<3, T, Q, 2,0,2,-1> E2 ## E0 ## E2; }; \
-
374  struct { detail::_swizzle<3, T, Q, 2,1,0,-1> E2 ## E1 ## E0; }; \
-
375  struct { detail::_swizzle<3, T, Q, 2,1,1,-1> E2 ## E1 ## E1; }; \
-
376  struct { detail::_swizzle<3, T, Q, 2,1,2,-1> E2 ## E1 ## E2; }; \
-
377  struct { detail::_swizzle<3, T, Q, 2,2,0,-1> E2 ## E2 ## E0; }; \
-
378  struct { detail::_swizzle<3, T, Q, 2,2,1,-1> E2 ## E2 ## E1; }; \
-
379  struct { detail::_swizzle<3, T, Q, 2,2,2,-1> E2 ## E2 ## E2; };
-
380 
-
381 #define GLM_SWIZZLE3_4_MEMBERS(T, Q, E0,E1,E2) \
-
382  struct { detail::_swizzle<4,T, Q, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
-
383  struct { detail::_swizzle<4,T, Q, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
-
384  struct { detail::_swizzle<4,T, Q, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \
-
385  struct { detail::_swizzle<4,T, Q, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \
-
386  struct { detail::_swizzle<4,T, Q, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \
-
387  struct { detail::_swizzle<4,T, Q, 0,0,1,2> E0 ## E0 ## E1 ## E2; }; \
-
388  struct { detail::_swizzle<4,T, Q, 0,0,2,0> E0 ## E0 ## E2 ## E0; }; \
-
389  struct { detail::_swizzle<4,T, Q, 0,0,2,1> E0 ## E0 ## E2 ## E1; }; \
-
390  struct { detail::_swizzle<4,T, Q, 0,0,2,2> E0 ## E0 ## E2 ## E2; }; \
-
391  struct { detail::_swizzle<4,T, Q, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \
-
392  struct { detail::_swizzle<4,T, Q, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \
-
393  struct { detail::_swizzle<4,T, Q, 0,1,0,2> E0 ## E1 ## E0 ## E2; }; \
-
394  struct { detail::_swizzle<4,T, Q, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \
-
395  struct { detail::_swizzle<4,T, Q, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \
-
396  struct { detail::_swizzle<4,T, Q, 0,1,1,2> E0 ## E1 ## E1 ## E2; }; \
-
397  struct { detail::_swizzle<4,T, Q, 0,1,2,0> E0 ## E1 ## E2 ## E0; }; \
-
398  struct { detail::_swizzle<4,T, Q, 0,1,2,1> E0 ## E1 ## E2 ## E1; }; \
-
399  struct { detail::_swizzle<4,T, Q, 0,1,2,2> E0 ## E1 ## E2 ## E2; }; \
-
400  struct { detail::_swizzle<4,T, Q, 0,2,0,0> E0 ## E2 ## E0 ## E0; }; \
-
401  struct { detail::_swizzle<4,T, Q, 0,2,0,1> E0 ## E2 ## E0 ## E1; }; \
-
402  struct { detail::_swizzle<4,T, Q, 0,2,0,2> E0 ## E2 ## E0 ## E2; }; \
-
403  struct { detail::_swizzle<4,T, Q, 0,2,1,0> E0 ## E2 ## E1 ## E0; }; \
-
404  struct { detail::_swizzle<4,T, Q, 0,2,1,1> E0 ## E2 ## E1 ## E1; }; \
-
405  struct { detail::_swizzle<4,T, Q, 0,2,1,2> E0 ## E2 ## E1 ## E2; }; \
-
406  struct { detail::_swizzle<4,T, Q, 0,2,2,0> E0 ## E2 ## E2 ## E0; }; \
-
407  struct { detail::_swizzle<4,T, Q, 0,2,2,1> E0 ## E2 ## E2 ## E1; }; \
-
408  struct { detail::_swizzle<4,T, Q, 0,2,2,2> E0 ## E2 ## E2 ## E2; }; \
-
409  struct { detail::_swizzle<4,T, Q, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \
-
410  struct { detail::_swizzle<4,T, Q, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \
-
411  struct { detail::_swizzle<4,T, Q, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \
-
412  struct { detail::_swizzle<4,T, Q, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \
-
413  struct { detail::_swizzle<4,T, Q, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \
-
414  struct { detail::_swizzle<4,T, Q, 1,0,1,2> E1 ## E0 ## E1 ## E2; }; \
-
415  struct { detail::_swizzle<4,T, Q, 1,0,2,0> E1 ## E0 ## E2 ## E0; }; \
-
416  struct { detail::_swizzle<4,T, Q, 1,0,2,1> E1 ## E0 ## E2 ## E1; }; \
-
417  struct { detail::_swizzle<4,T, Q, 1,0,2,2> E1 ## E0 ## E2 ## E2; }; \
-
418  struct { detail::_swizzle<4,T, Q, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \
-
419  struct { detail::_swizzle<4,T, Q, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \
-
420  struct { detail::_swizzle<4,T, Q, 1,1,0,2> E1 ## E1 ## E0 ## E2; }; \
-
421  struct { detail::_swizzle<4,T, Q, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \
-
422  struct { detail::_swizzle<4,T, Q, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; \
-
423  struct { detail::_swizzle<4,T, Q, 1,1,1,2> E1 ## E1 ## E1 ## E2; }; \
-
424  struct { detail::_swizzle<4,T, Q, 1,1,2,0> E1 ## E1 ## E2 ## E0; }; \
-
425  struct { detail::_swizzle<4,T, Q, 1,1,2,1> E1 ## E1 ## E2 ## E1; }; \
-
426  struct { detail::_swizzle<4,T, Q, 1,1,2,2> E1 ## E1 ## E2 ## E2; }; \
-
427  struct { detail::_swizzle<4,T, Q, 1,2,0,0> E1 ## E2 ## E0 ## E0; }; \
-
428  struct { detail::_swizzle<4,T, Q, 1,2,0,1> E1 ## E2 ## E0 ## E1; }; \
-
429  struct { detail::_swizzle<4,T, Q, 1,2,0,2> E1 ## E2 ## E0 ## E2; }; \
-
430  struct { detail::_swizzle<4,T, Q, 1,2,1,0> E1 ## E2 ## E1 ## E0; }; \
-
431  struct { detail::_swizzle<4,T, Q, 1,2,1,1> E1 ## E2 ## E1 ## E1; }; \
-
432  struct { detail::_swizzle<4,T, Q, 1,2,1,2> E1 ## E2 ## E1 ## E2; }; \
-
433  struct { detail::_swizzle<4,T, Q, 1,2,2,0> E1 ## E2 ## E2 ## E0; }; \
-
434  struct { detail::_swizzle<4,T, Q, 1,2,2,1> E1 ## E2 ## E2 ## E1; }; \
-
435  struct { detail::_swizzle<4,T, Q, 1,2,2,2> E1 ## E2 ## E2 ## E2; }; \
-
436  struct { detail::_swizzle<4,T, Q, 2,0,0,0> E2 ## E0 ## E0 ## E0; }; \
-
437  struct { detail::_swizzle<4,T, Q, 2,0,0,1> E2 ## E0 ## E0 ## E1; }; \
-
438  struct { detail::_swizzle<4,T, Q, 2,0,0,2> E2 ## E0 ## E0 ## E2; }; \
-
439  struct { detail::_swizzle<4,T, Q, 2,0,1,0> E2 ## E0 ## E1 ## E0; }; \
-
440  struct { detail::_swizzle<4,T, Q, 2,0,1,1> E2 ## E0 ## E1 ## E1; }; \
-
441  struct { detail::_swizzle<4,T, Q, 2,0,1,2> E2 ## E0 ## E1 ## E2; }; \
-
442  struct { detail::_swizzle<4,T, Q, 2,0,2,0> E2 ## E0 ## E2 ## E0; }; \
-
443  struct { detail::_swizzle<4,T, Q, 2,0,2,1> E2 ## E0 ## E2 ## E1; }; \
-
444  struct { detail::_swizzle<4,T, Q, 2,0,2,2> E2 ## E0 ## E2 ## E2; }; \
-
445  struct { detail::_swizzle<4,T, Q, 2,1,0,0> E2 ## E1 ## E0 ## E0; }; \
-
446  struct { detail::_swizzle<4,T, Q, 2,1,0,1> E2 ## E1 ## E0 ## E1; }; \
-
447  struct { detail::_swizzle<4,T, Q, 2,1,0,2> E2 ## E1 ## E0 ## E2; }; \
-
448  struct { detail::_swizzle<4,T, Q, 2,1,1,0> E2 ## E1 ## E1 ## E0; }; \
-
449  struct { detail::_swizzle<4,T, Q, 2,1,1,1> E2 ## E1 ## E1 ## E1; }; \
-
450  struct { detail::_swizzle<4,T, Q, 2,1,1,2> E2 ## E1 ## E1 ## E2; }; \
-
451  struct { detail::_swizzle<4,T, Q, 2,1,2,0> E2 ## E1 ## E2 ## E0; }; \
-
452  struct { detail::_swizzle<4,T, Q, 2,1,2,1> E2 ## E1 ## E2 ## E1; }; \
-
453  struct { detail::_swizzle<4,T, Q, 2,1,2,2> E2 ## E1 ## E2 ## E2; }; \
-
454  struct { detail::_swizzle<4,T, Q, 2,2,0,0> E2 ## E2 ## E0 ## E0; }; \
-
455  struct { detail::_swizzle<4,T, Q, 2,2,0,1> E2 ## E2 ## E0 ## E1; }; \
-
456  struct { detail::_swizzle<4,T, Q, 2,2,0,2> E2 ## E2 ## E0 ## E2; }; \
-
457  struct { detail::_swizzle<4,T, Q, 2,2,1,0> E2 ## E2 ## E1 ## E0; }; \
-
458  struct { detail::_swizzle<4,T, Q, 2,2,1,1> E2 ## E2 ## E1 ## E1; }; \
-
459  struct { detail::_swizzle<4,T, Q, 2,2,1,2> E2 ## E2 ## E1 ## E2; }; \
-
460  struct { detail::_swizzle<4,T, Q, 2,2,2,0> E2 ## E2 ## E2 ## E0; }; \
-
461  struct { detail::_swizzle<4,T, Q, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \
-
462  struct { detail::_swizzle<4,T, Q, 2,2,2,2> E2 ## E2 ## E2 ## E2; };
-
463 
-
464 #define GLM_SWIZZLE4_2_MEMBERS(T, Q, E0,E1,E2,E3) \
-
465  struct { detail::_swizzle<2,T, Q, 0,0,-1,-2> E0 ## E0; }; \
-
466  struct { detail::_swizzle<2,T, Q, 0,1,-1,-2> E0 ## E1; }; \
-
467  struct { detail::_swizzle<2,T, Q, 0,2,-1,-2> E0 ## E2; }; \
-
468  struct { detail::_swizzle<2,T, Q, 0,3,-1,-2> E0 ## E3; }; \
-
469  struct { detail::_swizzle<2,T, Q, 1,0,-1,-2> E1 ## E0; }; \
-
470  struct { detail::_swizzle<2,T, Q, 1,1,-1,-2> E1 ## E1; }; \
-
471  struct { detail::_swizzle<2,T, Q, 1,2,-1,-2> E1 ## E2; }; \
-
472  struct { detail::_swizzle<2,T, Q, 1,3,-1,-2> E1 ## E3; }; \
-
473  struct { detail::_swizzle<2,T, Q, 2,0,-1,-2> E2 ## E0; }; \
-
474  struct { detail::_swizzle<2,T, Q, 2,1,-1,-2> E2 ## E1; }; \
-
475  struct { detail::_swizzle<2,T, Q, 2,2,-1,-2> E2 ## E2; }; \
-
476  struct { detail::_swizzle<2,T, Q, 2,3,-1,-2> E2 ## E3; }; \
-
477  struct { detail::_swizzle<2,T, Q, 3,0,-1,-2> E3 ## E0; }; \
-
478  struct { detail::_swizzle<2,T, Q, 3,1,-1,-2> E3 ## E1; }; \
-
479  struct { detail::_swizzle<2,T, Q, 3,2,-1,-2> E3 ## E2; }; \
-
480  struct { detail::_swizzle<2,T, Q, 3,3,-1,-2> E3 ## E3; };
-
481 
-
482 #define GLM_SWIZZLE4_3_MEMBERS(T, Q, E0,E1,E2,E3) \
-
483  struct { detail::_swizzle<3, T, Q, 0,0,0,-1> E0 ## E0 ## E0; }; \
-
484  struct { detail::_swizzle<3, T, Q, 0,0,1,-1> E0 ## E0 ## E1; }; \
-
485  struct { detail::_swizzle<3, T, Q, 0,0,2,-1> E0 ## E0 ## E2; }; \
-
486  struct { detail::_swizzle<3, T, Q, 0,0,3,-1> E0 ## E0 ## E3; }; \
-
487  struct { detail::_swizzle<3, T, Q, 0,1,0,-1> E0 ## E1 ## E0; }; \
-
488  struct { detail::_swizzle<3, T, Q, 0,1,1,-1> E0 ## E1 ## E1; }; \
-
489  struct { detail::_swizzle<3, T, Q, 0,1,2,-1> E0 ## E1 ## E2; }; \
-
490  struct { detail::_swizzle<3, T, Q, 0,1,3,-1> E0 ## E1 ## E3; }; \
-
491  struct { detail::_swizzle<3, T, Q, 0,2,0,-1> E0 ## E2 ## E0; }; \
-
492  struct { detail::_swizzle<3, T, Q, 0,2,1,-1> E0 ## E2 ## E1; }; \
-
493  struct { detail::_swizzle<3, T, Q, 0,2,2,-1> E0 ## E2 ## E2; }; \
-
494  struct { detail::_swizzle<3, T, Q, 0,2,3,-1> E0 ## E2 ## E3; }; \
-
495  struct { detail::_swizzle<3, T, Q, 0,3,0,-1> E0 ## E3 ## E0; }; \
-
496  struct { detail::_swizzle<3, T, Q, 0,3,1,-1> E0 ## E3 ## E1; }; \
-
497  struct { detail::_swizzle<3, T, Q, 0,3,2,-1> E0 ## E3 ## E2; }; \
-
498  struct { detail::_swizzle<3, T, Q, 0,3,3,-1> E0 ## E3 ## E3; }; \
-
499  struct { detail::_swizzle<3, T, Q, 1,0,0,-1> E1 ## E0 ## E0; }; \
-
500  struct { detail::_swizzle<3, T, Q, 1,0,1,-1> E1 ## E0 ## E1; }; \
-
501  struct { detail::_swizzle<3, T, Q, 1,0,2,-1> E1 ## E0 ## E2; }; \
-
502  struct { detail::_swizzle<3, T, Q, 1,0,3,-1> E1 ## E0 ## E3; }; \
-
503  struct { detail::_swizzle<3, T, Q, 1,1,0,-1> E1 ## E1 ## E0; }; \
-
504  struct { detail::_swizzle<3, T, Q, 1,1,1,-1> E1 ## E1 ## E1; }; \
-
505  struct { detail::_swizzle<3, T, Q, 1,1,2,-1> E1 ## E1 ## E2; }; \
-
506  struct { detail::_swizzle<3, T, Q, 1,1,3,-1> E1 ## E1 ## E3; }; \
-
507  struct { detail::_swizzle<3, T, Q, 1,2,0,-1> E1 ## E2 ## E0; }; \
-
508  struct { detail::_swizzle<3, T, Q, 1,2,1,-1> E1 ## E2 ## E1; }; \
-
509  struct { detail::_swizzle<3, T, Q, 1,2,2,-1> E1 ## E2 ## E2; }; \
-
510  struct { detail::_swizzle<3, T, Q, 1,2,3,-1> E1 ## E2 ## E3; }; \
-
511  struct { detail::_swizzle<3, T, Q, 1,3,0,-1> E1 ## E3 ## E0; }; \
-
512  struct { detail::_swizzle<3, T, Q, 1,3,1,-1> E1 ## E3 ## E1; }; \
-
513  struct { detail::_swizzle<3, T, Q, 1,3,2,-1> E1 ## E3 ## E2; }; \
-
514  struct { detail::_swizzle<3, T, Q, 1,3,3,-1> E1 ## E3 ## E3; }; \
-
515  struct { detail::_swizzle<3, T, Q, 2,0,0,-1> E2 ## E0 ## E0; }; \
-
516  struct { detail::_swizzle<3, T, Q, 2,0,1,-1> E2 ## E0 ## E1; }; \
-
517  struct { detail::_swizzle<3, T, Q, 2,0,2,-1> E2 ## E0 ## E2; }; \
-
518  struct { detail::_swizzle<3, T, Q, 2,0,3,-1> E2 ## E0 ## E3; }; \
-
519  struct { detail::_swizzle<3, T, Q, 2,1,0,-1> E2 ## E1 ## E0; }; \
-
520  struct { detail::_swizzle<3, T, Q, 2,1,1,-1> E2 ## E1 ## E1; }; \
-
521  struct { detail::_swizzle<3, T, Q, 2,1,2,-1> E2 ## E1 ## E2; }; \
-
522  struct { detail::_swizzle<3, T, Q, 2,1,3,-1> E2 ## E1 ## E3; }; \
-
523  struct { detail::_swizzle<3, T, Q, 2,2,0,-1> E2 ## E2 ## E0; }; \
-
524  struct { detail::_swizzle<3, T, Q, 2,2,1,-1> E2 ## E2 ## E1; }; \
-
525  struct { detail::_swizzle<3, T, Q, 2,2,2,-1> E2 ## E2 ## E2; }; \
-
526  struct { detail::_swizzle<3, T, Q, 2,2,3,-1> E2 ## E2 ## E3; }; \
-
527  struct { detail::_swizzle<3, T, Q, 2,3,0,-1> E2 ## E3 ## E0; }; \
-
528  struct { detail::_swizzle<3, T, Q, 2,3,1,-1> E2 ## E3 ## E1; }; \
-
529  struct { detail::_swizzle<3, T, Q, 2,3,2,-1> E2 ## E3 ## E2; }; \
-
530  struct { detail::_swizzle<3, T, Q, 2,3,3,-1> E2 ## E3 ## E3; }; \
-
531  struct { detail::_swizzle<3, T, Q, 3,0,0,-1> E3 ## E0 ## E0; }; \
-
532  struct { detail::_swizzle<3, T, Q, 3,0,1,-1> E3 ## E0 ## E1; }; \
-
533  struct { detail::_swizzle<3, T, Q, 3,0,2,-1> E3 ## E0 ## E2; }; \
-
534  struct { detail::_swizzle<3, T, Q, 3,0,3,-1> E3 ## E0 ## E3; }; \
-
535  struct { detail::_swizzle<3, T, Q, 3,1,0,-1> E3 ## E1 ## E0; }; \
-
536  struct { detail::_swizzle<3, T, Q, 3,1,1,-1> E3 ## E1 ## E1; }; \
-
537  struct { detail::_swizzle<3, T, Q, 3,1,2,-1> E3 ## E1 ## E2; }; \
-
538  struct { detail::_swizzle<3, T, Q, 3,1,3,-1> E3 ## E1 ## E3; }; \
-
539  struct { detail::_swizzle<3, T, Q, 3,2,0,-1> E3 ## E2 ## E0; }; \
-
540  struct { detail::_swizzle<3, T, Q, 3,2,1,-1> E3 ## E2 ## E1; }; \
-
541  struct { detail::_swizzle<3, T, Q, 3,2,2,-1> E3 ## E2 ## E2; }; \
-
542  struct { detail::_swizzle<3, T, Q, 3,2,3,-1> E3 ## E2 ## E3; }; \
-
543  struct { detail::_swizzle<3, T, Q, 3,3,0,-1> E3 ## E3 ## E0; }; \
-
544  struct { detail::_swizzle<3, T, Q, 3,3,1,-1> E3 ## E3 ## E1; }; \
-
545  struct { detail::_swizzle<3, T, Q, 3,3,2,-1> E3 ## E3 ## E2; }; \
-
546  struct { detail::_swizzle<3, T, Q, 3,3,3,-1> E3 ## E3 ## E3; };
-
547 
-
548 #define GLM_SWIZZLE4_4_MEMBERS(T, Q, E0,E1,E2,E3) \
-
549  struct { detail::_swizzle<4, T, Q, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
-
550  struct { detail::_swizzle<4, T, Q, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
-
551  struct { detail::_swizzle<4, T, Q, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \
-
552  struct { detail::_swizzle<4, T, Q, 0,0,0,3> E0 ## E0 ## E0 ## E3; }; \
-
553  struct { detail::_swizzle<4, T, Q, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \
-
554  struct { detail::_swizzle<4, T, Q, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \
-
555  struct { detail::_swizzle<4, T, Q, 0,0,1,2> E0 ## E0 ## E1 ## E2; }; \
-
556  struct { detail::_swizzle<4, T, Q, 0,0,1,3> E0 ## E0 ## E1 ## E3; }; \
-
557  struct { detail::_swizzle<4, T, Q, 0,0,2,0> E0 ## E0 ## E2 ## E0; }; \
-
558  struct { detail::_swizzle<4, T, Q, 0,0,2,1> E0 ## E0 ## E2 ## E1; }; \
-
559  struct { detail::_swizzle<4, T, Q, 0,0,2,2> E0 ## E0 ## E2 ## E2; }; \
-
560  struct { detail::_swizzle<4, T, Q, 0,0,2,3> E0 ## E0 ## E2 ## E3; }; \
-
561  struct { detail::_swizzle<4, T, Q, 0,0,3,0> E0 ## E0 ## E3 ## E0; }; \
-
562  struct { detail::_swizzle<4, T, Q, 0,0,3,1> E0 ## E0 ## E3 ## E1; }; \
-
563  struct { detail::_swizzle<4, T, Q, 0,0,3,2> E0 ## E0 ## E3 ## E2; }; \
-
564  struct { detail::_swizzle<4, T, Q, 0,0,3,3> E0 ## E0 ## E3 ## E3; }; \
-
565  struct { detail::_swizzle<4, T, Q, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \
-
566  struct { detail::_swizzle<4, T, Q, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \
-
567  struct { detail::_swizzle<4, T, Q, 0,1,0,2> E0 ## E1 ## E0 ## E2; }; \
-
568  struct { detail::_swizzle<4, T, Q, 0,1,0,3> E0 ## E1 ## E0 ## E3; }; \
-
569  struct { detail::_swizzle<4, T, Q, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \
-
570  struct { detail::_swizzle<4, T, Q, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \
-
571  struct { detail::_swizzle<4, T, Q, 0,1,1,2> E0 ## E1 ## E1 ## E2; }; \
-
572  struct { detail::_swizzle<4, T, Q, 0,1,1,3> E0 ## E1 ## E1 ## E3; }; \
-
573  struct { detail::_swizzle<4, T, Q, 0,1,2,0> E0 ## E1 ## E2 ## E0; }; \
-
574  struct { detail::_swizzle<4, T, Q, 0,1,2,1> E0 ## E1 ## E2 ## E1; }; \
-
575  struct { detail::_swizzle<4, T, Q, 0,1,2,2> E0 ## E1 ## E2 ## E2; }; \
-
576  struct { detail::_swizzle<4, T, Q, 0,1,2,3> E0 ## E1 ## E2 ## E3; }; \
-
577  struct { detail::_swizzle<4, T, Q, 0,1,3,0> E0 ## E1 ## E3 ## E0; }; \
-
578  struct { detail::_swizzle<4, T, Q, 0,1,3,1> E0 ## E1 ## E3 ## E1; }; \
-
579  struct { detail::_swizzle<4, T, Q, 0,1,3,2> E0 ## E1 ## E3 ## E2; }; \
-
580  struct { detail::_swizzle<4, T, Q, 0,1,3,3> E0 ## E1 ## E3 ## E3; }; \
-
581  struct { detail::_swizzle<4, T, Q, 0,2,0,0> E0 ## E2 ## E0 ## E0; }; \
-
582  struct { detail::_swizzle<4, T, Q, 0,2,0,1> E0 ## E2 ## E0 ## E1; }; \
-
583  struct { detail::_swizzle<4, T, Q, 0,2,0,2> E0 ## E2 ## E0 ## E2; }; \
-
584  struct { detail::_swizzle<4, T, Q, 0,2,0,3> E0 ## E2 ## E0 ## E3; }; \
-
585  struct { detail::_swizzle<4, T, Q, 0,2,1,0> E0 ## E2 ## E1 ## E0; }; \
-
586  struct { detail::_swizzle<4, T, Q, 0,2,1,1> E0 ## E2 ## E1 ## E1; }; \
-
587  struct { detail::_swizzle<4, T, Q, 0,2,1,2> E0 ## E2 ## E1 ## E2; }; \
-
588  struct { detail::_swizzle<4, T, Q, 0,2,1,3> E0 ## E2 ## E1 ## E3; }; \
-
589  struct { detail::_swizzle<4, T, Q, 0,2,2,0> E0 ## E2 ## E2 ## E0; }; \
-
590  struct { detail::_swizzle<4, T, Q, 0,2,2,1> E0 ## E2 ## E2 ## E1; }; \
-
591  struct { detail::_swizzle<4, T, Q, 0,2,2,2> E0 ## E2 ## E2 ## E2; }; \
-
592  struct { detail::_swizzle<4, T, Q, 0,2,2,3> E0 ## E2 ## E2 ## E3; }; \
-
593  struct { detail::_swizzle<4, T, Q, 0,2,3,0> E0 ## E2 ## E3 ## E0; }; \
-
594  struct { detail::_swizzle<4, T, Q, 0,2,3,1> E0 ## E2 ## E3 ## E1; }; \
-
595  struct { detail::_swizzle<4, T, Q, 0,2,3,2> E0 ## E2 ## E3 ## E2; }; \
-
596  struct { detail::_swizzle<4, T, Q, 0,2,3,3> E0 ## E2 ## E3 ## E3; }; \
-
597  struct { detail::_swizzle<4, T, Q, 0,3,0,0> E0 ## E3 ## E0 ## E0; }; \
-
598  struct { detail::_swizzle<4, T, Q, 0,3,0,1> E0 ## E3 ## E0 ## E1; }; \
-
599  struct { detail::_swizzle<4, T, Q, 0,3,0,2> E0 ## E3 ## E0 ## E2; }; \
-
600  struct { detail::_swizzle<4, T, Q, 0,3,0,3> E0 ## E3 ## E0 ## E3; }; \
-
601  struct { detail::_swizzle<4, T, Q, 0,3,1,0> E0 ## E3 ## E1 ## E0; }; \
-
602  struct { detail::_swizzle<4, T, Q, 0,3,1,1> E0 ## E3 ## E1 ## E1; }; \
-
603  struct { detail::_swizzle<4, T, Q, 0,3,1,2> E0 ## E3 ## E1 ## E2; }; \
-
604  struct { detail::_swizzle<4, T, Q, 0,3,1,3> E0 ## E3 ## E1 ## E3; }; \
-
605  struct { detail::_swizzle<4, T, Q, 0,3,2,0> E0 ## E3 ## E2 ## E0; }; \
-
606  struct { detail::_swizzle<4, T, Q, 0,3,2,1> E0 ## E3 ## E2 ## E1; }; \
-
607  struct { detail::_swizzle<4, T, Q, 0,3,2,2> E0 ## E3 ## E2 ## E2; }; \
-
608  struct { detail::_swizzle<4, T, Q, 0,3,2,3> E0 ## E3 ## E2 ## E3; }; \
-
609  struct { detail::_swizzle<4, T, Q, 0,3,3,0> E0 ## E3 ## E3 ## E0; }; \
-
610  struct { detail::_swizzle<4, T, Q, 0,3,3,1> E0 ## E3 ## E3 ## E1; }; \
-
611  struct { detail::_swizzle<4, T, Q, 0,3,3,2> E0 ## E3 ## E3 ## E2; }; \
-
612  struct { detail::_swizzle<4, T, Q, 0,3,3,3> E0 ## E3 ## E3 ## E3; }; \
-
613  struct { detail::_swizzle<4, T, Q, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \
-
614  struct { detail::_swizzle<4, T, Q, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \
-
615  struct { detail::_swizzle<4, T, Q, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \
-
616  struct { detail::_swizzle<4, T, Q, 1,0,0,3> E1 ## E0 ## E0 ## E3; }; \
-
617  struct { detail::_swizzle<4, T, Q, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \
-
618  struct { detail::_swizzle<4, T, Q, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \
-
619  struct { detail::_swizzle<4, T, Q, 1,0,1,2> E1 ## E0 ## E1 ## E2; }; \
-
620  struct { detail::_swizzle<4, T, Q, 1,0,1,3> E1 ## E0 ## E1 ## E3; }; \
-
621  struct { detail::_swizzle<4, T, Q, 1,0,2,0> E1 ## E0 ## E2 ## E0; }; \
-
622  struct { detail::_swizzle<4, T, Q, 1,0,2,1> E1 ## E0 ## E2 ## E1; }; \
-
623  struct { detail::_swizzle<4, T, Q, 1,0,2,2> E1 ## E0 ## E2 ## E2; }; \
-
624  struct { detail::_swizzle<4, T, Q, 1,0,2,3> E1 ## E0 ## E2 ## E3; }; \
-
625  struct { detail::_swizzle<4, T, Q, 1,0,3,0> E1 ## E0 ## E3 ## E0; }; \
-
626  struct { detail::_swizzle<4, T, Q, 1,0,3,1> E1 ## E0 ## E3 ## E1; }; \
-
627  struct { detail::_swizzle<4, T, Q, 1,0,3,2> E1 ## E0 ## E3 ## E2; }; \
-
628  struct { detail::_swizzle<4, T, Q, 1,0,3,3> E1 ## E0 ## E3 ## E3; }; \
-
629  struct { detail::_swizzle<4, T, Q, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \
-
630  struct { detail::_swizzle<4, T, Q, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \
-
631  struct { detail::_swizzle<4, T, Q, 1,1,0,2> E1 ## E1 ## E0 ## E2; }; \
-
632  struct { detail::_swizzle<4, T, Q, 1,1,0,3> E1 ## E1 ## E0 ## E3; }; \
-
633  struct { detail::_swizzle<4, T, Q, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \
-
634  struct { detail::_swizzle<4, T, Q, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; \
-
635  struct { detail::_swizzle<4, T, Q, 1,1,1,2> E1 ## E1 ## E1 ## E2; }; \
-
636  struct { detail::_swizzle<4, T, Q, 1,1,1,3> E1 ## E1 ## E1 ## E3; }; \
-
637  struct { detail::_swizzle<4, T, Q, 1,1,2,0> E1 ## E1 ## E2 ## E0; }; \
-
638  struct { detail::_swizzle<4, T, Q, 1,1,2,1> E1 ## E1 ## E2 ## E1; }; \
-
639  struct { detail::_swizzle<4, T, Q, 1,1,2,2> E1 ## E1 ## E2 ## E2; }; \
-
640  struct { detail::_swizzle<4, T, Q, 1,1,2,3> E1 ## E1 ## E2 ## E3; }; \
-
641  struct { detail::_swizzle<4, T, Q, 1,1,3,0> E1 ## E1 ## E3 ## E0; }; \
-
642  struct { detail::_swizzle<4, T, Q, 1,1,3,1> E1 ## E1 ## E3 ## E1; }; \
-
643  struct { detail::_swizzle<4, T, Q, 1,1,3,2> E1 ## E1 ## E3 ## E2; }; \
-
644  struct { detail::_swizzle<4, T, Q, 1,1,3,3> E1 ## E1 ## E3 ## E3; }; \
-
645  struct { detail::_swizzle<4, T, Q, 1,2,0,0> E1 ## E2 ## E0 ## E0; }; \
-
646  struct { detail::_swizzle<4, T, Q, 1,2,0,1> E1 ## E2 ## E0 ## E1; }; \
-
647  struct { detail::_swizzle<4, T, Q, 1,2,0,2> E1 ## E2 ## E0 ## E2; }; \
-
648  struct { detail::_swizzle<4, T, Q, 1,2,0,3> E1 ## E2 ## E0 ## E3; }; \
-
649  struct { detail::_swizzle<4, T, Q, 1,2,1,0> E1 ## E2 ## E1 ## E0; }; \
-
650  struct { detail::_swizzle<4, T, Q, 1,2,1,1> E1 ## E2 ## E1 ## E1; }; \
-
651  struct { detail::_swizzle<4, T, Q, 1,2,1,2> E1 ## E2 ## E1 ## E2; }; \
-
652  struct { detail::_swizzle<4, T, Q, 1,2,1,3> E1 ## E2 ## E1 ## E3; }; \
-
653  struct { detail::_swizzle<4, T, Q, 1,2,2,0> E1 ## E2 ## E2 ## E0; }; \
-
654  struct { detail::_swizzle<4, T, Q, 1,2,2,1> E1 ## E2 ## E2 ## E1; }; \
-
655  struct { detail::_swizzle<4, T, Q, 1,2,2,2> E1 ## E2 ## E2 ## E2; }; \
-
656  struct { detail::_swizzle<4, T, Q, 1,2,2,3> E1 ## E2 ## E2 ## E3; }; \
-
657  struct { detail::_swizzle<4, T, Q, 1,2,3,0> E1 ## E2 ## E3 ## E0; }; \
-
658  struct { detail::_swizzle<4, T, Q, 1,2,3,1> E1 ## E2 ## E3 ## E1; }; \
-
659  struct { detail::_swizzle<4, T, Q, 1,2,3,2> E1 ## E2 ## E3 ## E2; }; \
-
660  struct { detail::_swizzle<4, T, Q, 1,2,3,3> E1 ## E2 ## E3 ## E3; }; \
-
661  struct { detail::_swizzle<4, T, Q, 1,3,0,0> E1 ## E3 ## E0 ## E0; }; \
-
662  struct { detail::_swizzle<4, T, Q, 1,3,0,1> E1 ## E3 ## E0 ## E1; }; \
-
663  struct { detail::_swizzle<4, T, Q, 1,3,0,2> E1 ## E3 ## E0 ## E2; }; \
-
664  struct { detail::_swizzle<4, T, Q, 1,3,0,3> E1 ## E3 ## E0 ## E3; }; \
-
665  struct { detail::_swizzle<4, T, Q, 1,3,1,0> E1 ## E3 ## E1 ## E0; }; \
-
666  struct { detail::_swizzle<4, T, Q, 1,3,1,1> E1 ## E3 ## E1 ## E1; }; \
-
667  struct { detail::_swizzle<4, T, Q, 1,3,1,2> E1 ## E3 ## E1 ## E2; }; \
-
668  struct { detail::_swizzle<4, T, Q, 1,3,1,3> E1 ## E3 ## E1 ## E3; }; \
-
669  struct { detail::_swizzle<4, T, Q, 1,3,2,0> E1 ## E3 ## E2 ## E0; }; \
-
670  struct { detail::_swizzle<4, T, Q, 1,3,2,1> E1 ## E3 ## E2 ## E1; }; \
-
671  struct { detail::_swizzle<4, T, Q, 1,3,2,2> E1 ## E3 ## E2 ## E2; }; \
-
672  struct { detail::_swizzle<4, T, Q, 1,3,2,3> E1 ## E3 ## E2 ## E3; }; \
-
673  struct { detail::_swizzle<4, T, Q, 1,3,3,0> E1 ## E3 ## E3 ## E0; }; \
-
674  struct { detail::_swizzle<4, T, Q, 1,3,3,1> E1 ## E3 ## E3 ## E1; }; \
-
675  struct { detail::_swizzle<4, T, Q, 1,3,3,2> E1 ## E3 ## E3 ## E2; }; \
-
676  struct { detail::_swizzle<4, T, Q, 1,3,3,3> E1 ## E3 ## E3 ## E3; }; \
-
677  struct { detail::_swizzle<4, T, Q, 2,0,0,0> E2 ## E0 ## E0 ## E0; }; \
-
678  struct { detail::_swizzle<4, T, Q, 2,0,0,1> E2 ## E0 ## E0 ## E1; }; \
-
679  struct { detail::_swizzle<4, T, Q, 2,0,0,2> E2 ## E0 ## E0 ## E2; }; \
-
680  struct { detail::_swizzle<4, T, Q, 2,0,0,3> E2 ## E0 ## E0 ## E3; }; \
-
681  struct { detail::_swizzle<4, T, Q, 2,0,1,0> E2 ## E0 ## E1 ## E0; }; \
-
682  struct { detail::_swizzle<4, T, Q, 2,0,1,1> E2 ## E0 ## E1 ## E1; }; \
-
683  struct { detail::_swizzle<4, T, Q, 2,0,1,2> E2 ## E0 ## E1 ## E2; }; \
-
684  struct { detail::_swizzle<4, T, Q, 2,0,1,3> E2 ## E0 ## E1 ## E3; }; \
-
685  struct { detail::_swizzle<4, T, Q, 2,0,2,0> E2 ## E0 ## E2 ## E0; }; \
-
686  struct { detail::_swizzle<4, T, Q, 2,0,2,1> E2 ## E0 ## E2 ## E1; }; \
-
687  struct { detail::_swizzle<4, T, Q, 2,0,2,2> E2 ## E0 ## E2 ## E2; }; \
-
688  struct { detail::_swizzle<4, T, Q, 2,0,2,3> E2 ## E0 ## E2 ## E3; }; \
-
689  struct { detail::_swizzle<4, T, Q, 2,0,3,0> E2 ## E0 ## E3 ## E0; }; \
-
690  struct { detail::_swizzle<4, T, Q, 2,0,3,1> E2 ## E0 ## E3 ## E1; }; \
-
691  struct { detail::_swizzle<4, T, Q, 2,0,3,2> E2 ## E0 ## E3 ## E2; }; \
-
692  struct { detail::_swizzle<4, T, Q, 2,0,3,3> E2 ## E0 ## E3 ## E3; }; \
-
693  struct { detail::_swizzle<4, T, Q, 2,1,0,0> E2 ## E1 ## E0 ## E0; }; \
-
694  struct { detail::_swizzle<4, T, Q, 2,1,0,1> E2 ## E1 ## E0 ## E1; }; \
-
695  struct { detail::_swizzle<4, T, Q, 2,1,0,2> E2 ## E1 ## E0 ## E2; }; \
-
696  struct { detail::_swizzle<4, T, Q, 2,1,0,3> E2 ## E1 ## E0 ## E3; }; \
-
697  struct { detail::_swizzle<4, T, Q, 2,1,1,0> E2 ## E1 ## E1 ## E0; }; \
-
698  struct { detail::_swizzle<4, T, Q, 2,1,1,1> E2 ## E1 ## E1 ## E1; }; \
-
699  struct { detail::_swizzle<4, T, Q, 2,1,1,2> E2 ## E1 ## E1 ## E2; }; \
-
700  struct { detail::_swizzle<4, T, Q, 2,1,1,3> E2 ## E1 ## E1 ## E3; }; \
-
701  struct { detail::_swizzle<4, T, Q, 2,1,2,0> E2 ## E1 ## E2 ## E0; }; \
-
702  struct { detail::_swizzle<4, T, Q, 2,1,2,1> E2 ## E1 ## E2 ## E1; }; \
-
703  struct { detail::_swizzle<4, T, Q, 2,1,2,2> E2 ## E1 ## E2 ## E2; }; \
-
704  struct { detail::_swizzle<4, T, Q, 2,1,2,3> E2 ## E1 ## E2 ## E3; }; \
-
705  struct { detail::_swizzle<4, T, Q, 2,1,3,0> E2 ## E1 ## E3 ## E0; }; \
-
706  struct { detail::_swizzle<4, T, Q, 2,1,3,1> E2 ## E1 ## E3 ## E1; }; \
-
707  struct { detail::_swizzle<4, T, Q, 2,1,3,2> E2 ## E1 ## E3 ## E2; }; \
-
708  struct { detail::_swizzle<4, T, Q, 2,1,3,3> E2 ## E1 ## E3 ## E3; }; \
-
709  struct { detail::_swizzle<4, T, Q, 2,2,0,0> E2 ## E2 ## E0 ## E0; }; \
-
710  struct { detail::_swizzle<4, T, Q, 2,2,0,1> E2 ## E2 ## E0 ## E1; }; \
-
711  struct { detail::_swizzle<4, T, Q, 2,2,0,2> E2 ## E2 ## E0 ## E2; }; \
-
712  struct { detail::_swizzle<4, T, Q, 2,2,0,3> E2 ## E2 ## E0 ## E3; }; \
-
713  struct { detail::_swizzle<4, T, Q, 2,2,1,0> E2 ## E2 ## E1 ## E0; }; \
-
714  struct { detail::_swizzle<4, T, Q, 2,2,1,1> E2 ## E2 ## E1 ## E1; }; \
-
715  struct { detail::_swizzle<4, T, Q, 2,2,1,2> E2 ## E2 ## E1 ## E2; }; \
-
716  struct { detail::_swizzle<4, T, Q, 2,2,1,3> E2 ## E2 ## E1 ## E3; }; \
-
717  struct { detail::_swizzle<4, T, Q, 2,2,2,0> E2 ## E2 ## E2 ## E0; }; \
-
718  struct { detail::_swizzle<4, T, Q, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \
-
719  struct { detail::_swizzle<4, T, Q, 2,2,2,2> E2 ## E2 ## E2 ## E2; }; \
-
720  struct { detail::_swizzle<4, T, Q, 2,2,2,3> E2 ## E2 ## E2 ## E3; }; \
-
721  struct { detail::_swizzle<4, T, Q, 2,2,3,0> E2 ## E2 ## E3 ## E0; }; \
-
722  struct { detail::_swizzle<4, T, Q, 2,2,3,1> E2 ## E2 ## E3 ## E1; }; \
-
723  struct { detail::_swizzle<4, T, Q, 2,2,3,2> E2 ## E2 ## E3 ## E2; }; \
-
724  struct { detail::_swizzle<4, T, Q, 2,2,3,3> E2 ## E2 ## E3 ## E3; }; \
-
725  struct { detail::_swizzle<4, T, Q, 2,3,0,0> E2 ## E3 ## E0 ## E0; }; \
-
726  struct { detail::_swizzle<4, T, Q, 2,3,0,1> E2 ## E3 ## E0 ## E1; }; \
-
727  struct { detail::_swizzle<4, T, Q, 2,3,0,2> E2 ## E3 ## E0 ## E2; }; \
-
728  struct { detail::_swizzle<4, T, Q, 2,3,0,3> E2 ## E3 ## E0 ## E3; }; \
-
729  struct { detail::_swizzle<4, T, Q, 2,3,1,0> E2 ## E3 ## E1 ## E0; }; \
-
730  struct { detail::_swizzle<4, T, Q, 2,3,1,1> E2 ## E3 ## E1 ## E1; }; \
-
731  struct { detail::_swizzle<4, T, Q, 2,3,1,2> E2 ## E3 ## E1 ## E2; }; \
-
732  struct { detail::_swizzle<4, T, Q, 2,3,1,3> E2 ## E3 ## E1 ## E3; }; \
-
733  struct { detail::_swizzle<4, T, Q, 2,3,2,0> E2 ## E3 ## E2 ## E0; }; \
-
734  struct { detail::_swizzle<4, T, Q, 2,3,2,1> E2 ## E3 ## E2 ## E1; }; \
-
735  struct { detail::_swizzle<4, T, Q, 2,3,2,2> E2 ## E3 ## E2 ## E2; }; \
-
736  struct { detail::_swizzle<4, T, Q, 2,3,2,3> E2 ## E3 ## E2 ## E3; }; \
-
737  struct { detail::_swizzle<4, T, Q, 2,3,3,0> E2 ## E3 ## E3 ## E0; }; \
-
738  struct { detail::_swizzle<4, T, Q, 2,3,3,1> E2 ## E3 ## E3 ## E1; }; \
-
739  struct { detail::_swizzle<4, T, Q, 2,3,3,2> E2 ## E3 ## E3 ## E2; }; \
-
740  struct { detail::_swizzle<4, T, Q, 2,3,3,3> E2 ## E3 ## E3 ## E3; }; \
-
741  struct { detail::_swizzle<4, T, Q, 3,0,0,0> E3 ## E0 ## E0 ## E0; }; \
-
742  struct { detail::_swizzle<4, T, Q, 3,0,0,1> E3 ## E0 ## E0 ## E1; }; \
-
743  struct { detail::_swizzle<4, T, Q, 3,0,0,2> E3 ## E0 ## E0 ## E2; }; \
-
744  struct { detail::_swizzle<4, T, Q, 3,0,0,3> E3 ## E0 ## E0 ## E3; }; \
-
745  struct { detail::_swizzle<4, T, Q, 3,0,1,0> E3 ## E0 ## E1 ## E0; }; \
-
746  struct { detail::_swizzle<4, T, Q, 3,0,1,1> E3 ## E0 ## E1 ## E1; }; \
-
747  struct { detail::_swizzle<4, T, Q, 3,0,1,2> E3 ## E0 ## E1 ## E2; }; \
-
748  struct { detail::_swizzle<4, T, Q, 3,0,1,3> E3 ## E0 ## E1 ## E3; }; \
-
749  struct { detail::_swizzle<4, T, Q, 3,0,2,0> E3 ## E0 ## E2 ## E0; }; \
-
750  struct { detail::_swizzle<4, T, Q, 3,0,2,1> E3 ## E0 ## E2 ## E1; }; \
-
751  struct { detail::_swizzle<4, T, Q, 3,0,2,2> E3 ## E0 ## E2 ## E2; }; \
-
752  struct { detail::_swizzle<4, T, Q, 3,0,2,3> E3 ## E0 ## E2 ## E3; }; \
-
753  struct { detail::_swizzle<4, T, Q, 3,0,3,0> E3 ## E0 ## E3 ## E0; }; \
-
754  struct { detail::_swizzle<4, T, Q, 3,0,3,1> E3 ## E0 ## E3 ## E1; }; \
-
755  struct { detail::_swizzle<4, T, Q, 3,0,3,2> E3 ## E0 ## E3 ## E2; }; \
-
756  struct { detail::_swizzle<4, T, Q, 3,0,3,3> E3 ## E0 ## E3 ## E3; }; \
-
757  struct { detail::_swizzle<4, T, Q, 3,1,0,0> E3 ## E1 ## E0 ## E0; }; \
-
758  struct { detail::_swizzle<4, T, Q, 3,1,0,1> E3 ## E1 ## E0 ## E1; }; \
-
759  struct { detail::_swizzle<4, T, Q, 3,1,0,2> E3 ## E1 ## E0 ## E2; }; \
-
760  struct { detail::_swizzle<4, T, Q, 3,1,0,3> E3 ## E1 ## E0 ## E3; }; \
-
761  struct { detail::_swizzle<4, T, Q, 3,1,1,0> E3 ## E1 ## E1 ## E0; }; \
-
762  struct { detail::_swizzle<4, T, Q, 3,1,1,1> E3 ## E1 ## E1 ## E1; }; \
-
763  struct { detail::_swizzle<4, T, Q, 3,1,1,2> E3 ## E1 ## E1 ## E2; }; \
-
764  struct { detail::_swizzle<4, T, Q, 3,1,1,3> E3 ## E1 ## E1 ## E3; }; \
-
765  struct { detail::_swizzle<4, T, Q, 3,1,2,0> E3 ## E1 ## E2 ## E0; }; \
-
766  struct { detail::_swizzle<4, T, Q, 3,1,2,1> E3 ## E1 ## E2 ## E1; }; \
-
767  struct { detail::_swizzle<4, T, Q, 3,1,2,2> E3 ## E1 ## E2 ## E2; }; \
-
768  struct { detail::_swizzle<4, T, Q, 3,1,2,3> E3 ## E1 ## E2 ## E3; }; \
-
769  struct { detail::_swizzle<4, T, Q, 3,1,3,0> E3 ## E1 ## E3 ## E0; }; \
-
770  struct { detail::_swizzle<4, T, Q, 3,1,3,1> E3 ## E1 ## E3 ## E1; }; \
-
771  struct { detail::_swizzle<4, T, Q, 3,1,3,2> E3 ## E1 ## E3 ## E2; }; \
-
772  struct { detail::_swizzle<4, T, Q, 3,1,3,3> E3 ## E1 ## E3 ## E3; }; \
-
773  struct { detail::_swizzle<4, T, Q, 3,2,0,0> E3 ## E2 ## E0 ## E0; }; \
-
774  struct { detail::_swizzle<4, T, Q, 3,2,0,1> E3 ## E2 ## E0 ## E1; }; \
-
775  struct { detail::_swizzle<4, T, Q, 3,2,0,2> E3 ## E2 ## E0 ## E2; }; \
-
776  struct { detail::_swizzle<4, T, Q, 3,2,0,3> E3 ## E2 ## E0 ## E3; }; \
-
777  struct { detail::_swizzle<4, T, Q, 3,2,1,0> E3 ## E2 ## E1 ## E0; }; \
-
778  struct { detail::_swizzle<4, T, Q, 3,2,1,1> E3 ## E2 ## E1 ## E1; }; \
-
779  struct { detail::_swizzle<4, T, Q, 3,2,1,2> E3 ## E2 ## E1 ## E2; }; \
-
780  struct { detail::_swizzle<4, T, Q, 3,2,1,3> E3 ## E2 ## E1 ## E3; }; \
-
781  struct { detail::_swizzle<4, T, Q, 3,2,2,0> E3 ## E2 ## E2 ## E0; }; \
-
782  struct { detail::_swizzle<4, T, Q, 3,2,2,1> E3 ## E2 ## E2 ## E1; }; \
-
783  struct { detail::_swizzle<4, T, Q, 3,2,2,2> E3 ## E2 ## E2 ## E2; }; \
-
784  struct { detail::_swizzle<4, T, Q, 3,2,2,3> E3 ## E2 ## E2 ## E3; }; \
-
785  struct { detail::_swizzle<4, T, Q, 3,2,3,0> E3 ## E2 ## E3 ## E0; }; \
-
786  struct { detail::_swizzle<4, T, Q, 3,2,3,1> E3 ## E2 ## E3 ## E1; }; \
-
787  struct { detail::_swizzle<4, T, Q, 3,2,3,2> E3 ## E2 ## E3 ## E2; }; \
-
788  struct { detail::_swizzle<4, T, Q, 3,2,3,3> E3 ## E2 ## E3 ## E3; }; \
-
789  struct { detail::_swizzle<4, T, Q, 3,3,0,0> E3 ## E3 ## E0 ## E0; }; \
-
790  struct { detail::_swizzle<4, T, Q, 3,3,0,1> E3 ## E3 ## E0 ## E1; }; \
-
791  struct { detail::_swizzle<4, T, Q, 3,3,0,2> E3 ## E3 ## E0 ## E2; }; \
-
792  struct { detail::_swizzle<4, T, Q, 3,3,0,3> E3 ## E3 ## E0 ## E3; }; \
-
793  struct { detail::_swizzle<4, T, Q, 3,3,1,0> E3 ## E3 ## E1 ## E0; }; \
-
794  struct { detail::_swizzle<4, T, Q, 3,3,1,1> E3 ## E3 ## E1 ## E1; }; \
-
795  struct { detail::_swizzle<4, T, Q, 3,3,1,2> E3 ## E3 ## E1 ## E2; }; \
-
796  struct { detail::_swizzle<4, T, Q, 3,3,1,3> E3 ## E3 ## E1 ## E3; }; \
-
797  struct { detail::_swizzle<4, T, Q, 3,3,2,0> E3 ## E3 ## E2 ## E0; }; \
-
798  struct { detail::_swizzle<4, T, Q, 3,3,2,1> E3 ## E3 ## E2 ## E1; }; \
-
799  struct { detail::_swizzle<4, T, Q, 3,3,2,2> E3 ## E3 ## E2 ## E2; }; \
-
800  struct { detail::_swizzle<4, T, Q, 3,3,2,3> E3 ## E3 ## E2 ## E3; }; \
-
801  struct { detail::_swizzle<4, T, Q, 3,3,3,0> E3 ## E3 ## E3 ## E0; }; \
-
802  struct { detail::_swizzle<4, T, Q, 3,3,3,1> E3 ## E3 ## E3 ## E1; }; \
-
803  struct { detail::_swizzle<4, T, Q, 3,3,3,2> E3 ## E3 ## E3 ## E2; }; \
-
804  struct { detail::_swizzle<4, T, Q, 3,3,3,3> E3 ## E3 ## E3 ## E3; };
-
GLM_FUNC_DECL GLM_CONSTEXPR genType e()
Return e constant.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00005_source.html b/tests/OpenGL/package/glm/doc/api/a00005_source.html deleted file mode 100644 index 5ef1455e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00005_source.html +++ /dev/null @@ -1,781 +0,0 @@ - - - - - - -0.9.9 API documentation: _swizzle_func.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
_swizzle_func.hpp
-
-
-
1 #pragma once
-
2 
-
3 #define GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, CONST, A, B) \
-
4  vec<2, T, Q> A ## B() CONST \
-
5  { \
-
6  return vec<2, T, Q>(this->A, this->B); \
-
7  }
-
8 
-
9 #define GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, CONST, A, B, C) \
-
10  vec<3, T, Q> A ## B ## C() CONST \
-
11  { \
-
12  return vec<3, T, Q>(this->A, this->B, this->C); \
-
13  }
-
14 
-
15 #define GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, CONST, A, B, C, D) \
-
16  vec<4, T, Q> A ## B ## C ## D() CONST \
-
17  { \
-
18  return vec<4, T, Q>(this->A, this->B, this->C, this->D); \
-
19  }
-
20 
-
21 #define GLM_SWIZZLE_GEN_VEC2_ENTRY_DEF(T, P, L, CONST, A, B) \
-
22  template<typename T> \
-
23  vec<L, T, Q> vec<L, T, Q>::A ## B() CONST \
-
24  { \
-
25  return vec<2, T, Q>(this->A, this->B); \
-
26  }
-
27 
-
28 #define GLM_SWIZZLE_GEN_VEC3_ENTRY_DEF(T, P, L, CONST, A, B, C) \
-
29  template<typename T> \
-
30  vec<3, T, Q> vec<L, T, Q>::A ## B ## C() CONST \
-
31  { \
-
32  return vec<3, T, Q>(this->A, this->B, this->C); \
-
33  }
-
34 
-
35 #define GLM_SWIZZLE_GEN_VEC4_ENTRY_DEF(T, P, L, CONST, A, B, C, D) \
-
36  template<typename T> \
-
37  vec<4, T, Q> vec<L, T, Q>::A ## B ## C ## D() CONST \
-
38  { \
-
39  return vec<4, T, Q>(this->A, this->B, this->C, this->D); \
-
40  }
-
41 
-
42 #define GLM_MUTABLE
-
43 
-
44 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, A, B) \
-
45  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, 2, GLM_MUTABLE, A, B) \
-
46  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, 2, GLM_MUTABLE, B, A)
-
47 
-
48 #define GLM_SWIZZLE_GEN_REF_FROM_VEC2(T, P) \
-
49  GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, x, y) \
-
50  GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, r, g) \
-
51  GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, s, t)
-
52 
-
53 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
-
54  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, B) \
-
55  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, C) \
-
56  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, A) \
-
57  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, C) \
-
58  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, A) \
-
59  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, B)
-
60 
-
61 #define GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
-
62  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, A, B, C) \
-
63  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, A, C, B) \
-
64  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, B, A, C) \
-
65  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, B, C, A) \
-
66  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, C, A, B) \
-
67  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, C, B, A)
-
68 
-
69 #define GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, A, B, C) \
-
70  GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
-
71  GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(T, P, A, B, C)
-
72 
-
73 #define GLM_SWIZZLE_GEN_REF_FROM_VEC3(T, P) \
-
74  GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, x, y, z) \
-
75  GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, r, g, b) \
-
76  GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, s, t, p)
-
77 
-
78 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
-
79  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, B) \
-
80  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, C) \
-
81  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, D) \
-
82  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, A) \
-
83  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, C) \
-
84  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, D) \
-
85  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, A) \
-
86  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, B) \
-
87  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, D) \
-
88  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, D, A) \
-
89  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, D, B) \
-
90  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, D, C)
-
91 
-
92 #define GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
-
93  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, B, C) \
-
94  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, B, D) \
-
95  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, C, B) \
-
96  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, C, D) \
-
97  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, D, B) \
-
98  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, D, C) \
-
99  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, A, C) \
-
100  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, A, D) \
-
101  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, C, A) \
-
102  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, C, D) \
-
103  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, D, A) \
-
104  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, D, C) \
-
105  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, A, B) \
-
106  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, A, D) \
-
107  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, B, A) \
-
108  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, B, D) \
-
109  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, D, A) \
-
110  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, D, B) \
-
111  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, A, B) \
-
112  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, A, C) \
-
113  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, B, A) \
-
114  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, B, C) \
-
115  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, C, A) \
-
116  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, C, B)
-
117 
-
118 #define GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
-
119  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, C, B, D) \
-
120  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, C, D, B) \
-
121  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, D, B, C) \
-
122  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, D, C, B) \
-
123  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, B, D, C) \
-
124  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, B, C, D) \
-
125  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, C, A, D) \
-
126  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, C, D, A) \
-
127  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, D, A, C) \
-
128  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, D, C, A) \
-
129  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, A, D, C) \
-
130  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, A, C, D) \
-
131  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, B, A, D) \
-
132  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, B, D, A) \
-
133  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, D, A, B) \
-
134  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, D, B, A) \
-
135  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, A, D, B) \
-
136  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, A, B, D) \
-
137  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, C, B, A) \
-
138  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, C, A, B) \
-
139  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, A, B, C) \
-
140  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, A, C, B) \
-
141  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, B, A, C) \
-
142  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, B, C, A)
-
143 
-
144 #define GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, A, B, C, D) \
-
145  GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
-
146  GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
-
147  GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D)
-
148 
-
149 #define GLM_SWIZZLE_GEN_REF_FROM_VEC4(T, P) \
-
150  GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, x, y, z, w) \
-
151  GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, r, g, b, a) \
-
152  GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, s, t, p, q)
-
153 
-
154 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(T, P, A, B) \
-
155  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, A) \
-
156  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, B) \
-
157  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, A) \
-
158  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, B)
-
159 
-
160 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(T, P, A, B) \
-
161  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, A) \
-
162  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, B) \
-
163  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, A) \
-
164  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, B) \
-
165  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, A) \
-
166  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, B) \
-
167  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, A) \
-
168  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, B)
-
169 
-
170 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(T, P, A, B) \
-
171  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, A) \
-
172  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, B) \
-
173  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, A) \
-
174  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, B) \
-
175  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, A) \
-
176  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, B) \
-
177  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, A) \
-
178  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, B) \
-
179  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, A) \
-
180  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, B) \
-
181  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, A) \
-
182  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, B) \
-
183  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, A) \
-
184  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, B) \
-
185  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, A) \
-
186  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, B)
-
187 
-
188 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, A, B) \
-
189  GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(T, P, A, B) \
-
190  GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(T, P, A, B) \
-
191  GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(T, P, A, B)
-
192 
-
193 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC2(T, P) \
-
194  GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, x, y) \
-
195  GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, r, g) \
-
196  GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, s, t)
-
197 
-
198 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
-
199  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, A) \
-
200  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, B) \
-
201  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, C) \
-
202  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, A) \
-
203  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, B) \
-
204  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, C) \
-
205  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, A) \
-
206  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, B) \
-
207  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, C)
-
208 
-
209 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
-
210  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, A) \
-
211  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, B) \
-
212  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, C) \
-
213  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, A) \
-
214  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, B) \
-
215  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, C) \
-
216  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, A) \
-
217  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, B) \
-
218  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, C) \
-
219  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, A) \
-
220  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, B) \
-
221  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, C) \
-
222  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, A) \
-
223  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, B) \
-
224  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, C) \
-
225  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, A) \
-
226  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, B) \
-
227  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, C) \
-
228  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, A) \
-
229  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, B) \
-
230  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, C) \
-
231  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, A) \
-
232  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, B) \
-
233  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, C) \
-
234  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, A) \
-
235  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, B) \
-
236  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, C)
-
237 
-
238 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
-
239  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, A) \
-
240  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, B) \
-
241  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, C) \
-
242  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, A) \
-
243  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, B) \
-
244  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, C) \
-
245  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, A) \
-
246  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, B) \
-
247  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, C) \
-
248  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, A) \
-
249  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, B) \
-
250  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, C) \
-
251  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, A) \
-
252  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, B) \
-
253  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, C) \
-
254  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, A) \
-
255  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, B) \
-
256  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, C) \
-
257  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, A) \
-
258  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, B) \
-
259  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, C) \
-
260  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, A) \
-
261  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, B) \
-
262  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, C) \
-
263  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, A) \
-
264  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, B) \
-
265  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, C) \
-
266  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, A) \
-
267  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, B) \
-
268  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, C) \
-
269  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, A) \
-
270  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, B) \
-
271  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, C) \
-
272  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, A) \
-
273  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, B) \
-
274  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, C) \
-
275  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, A) \
-
276  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, B) \
-
277  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, C) \
-
278  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, A) \
-
279  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, B) \
-
280  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, C) \
-
281  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, A) \
-
282  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, B) \
-
283  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, C) \
-
284  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, A) \
-
285  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, B) \
-
286  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, C) \
-
287  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, A) \
-
288  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, B) \
-
289  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, C) \
-
290  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, A) \
-
291  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, B) \
-
292  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, C) \
-
293  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, A) \
-
294  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, B) \
-
295  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, C) \
-
296  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, A) \
-
297  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, B) \
-
298  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, C) \
-
299  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, A) \
-
300  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, B) \
-
301  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, C) \
-
302  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, A) \
-
303  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, B) \
-
304  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, C) \
-
305  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, A) \
-
306  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, B) \
-
307  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, C) \
-
308  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, A) \
-
309  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, B) \
-
310  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, C) \
-
311  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, A) \
-
312  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, B) \
-
313  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, C) \
-
314  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, A) \
-
315  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, B) \
-
316  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, C) \
-
317  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, A) \
-
318  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, B) \
-
319  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, C)
-
320 
-
321 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, A, B, C) \
-
322  GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
-
323  GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
-
324  GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(T, P, A, B, C)
-
325 
-
326 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC3(T, P) \
-
327  GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, x, y, z) \
-
328  GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, r, g, b) \
-
329  GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, s, t, p)
-
330 
-
331 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
-
332  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, A) \
-
333  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, B) \
-
334  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, C) \
-
335  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, D) \
-
336  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, A) \
-
337  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, B) \
-
338  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, C) \
-
339  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, D) \
-
340  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, A) \
-
341  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, B) \
-
342  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, C) \
-
343  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, D) \
-
344  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, A) \
-
345  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, B) \
-
346  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, C) \
-
347  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, D)
-
348 
-
349 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
-
350  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, A) \
-
351  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, B) \
-
352  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, C) \
-
353  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, D) \
-
354  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, A) \
-
355  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, B) \
-
356  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, C) \
-
357  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, D) \
-
358  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, A) \
-
359  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, B) \
-
360  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, C) \
-
361  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, D) \
-
362  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, A) \
-
363  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, B) \
-
364  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, C) \
-
365  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, D) \
-
366  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, A) \
-
367  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, B) \
-
368  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, C) \
-
369  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, D) \
-
370  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, A) \
-
371  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, B) \
-
372  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, C) \
-
373  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, D) \
-
374  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, A) \
-
375  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, B) \
-
376  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, C) \
-
377  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, D) \
-
378  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, A) \
-
379  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, B) \
-
380  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, C) \
-
381  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, D) \
-
382  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, A) \
-
383  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, B) \
-
384  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, C) \
-
385  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, D) \
-
386  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, A) \
-
387  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, B) \
-
388  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, C) \
-
389  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, D) \
-
390  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, A) \
-
391  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, B) \
-
392  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, C) \
-
393  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, D) \
-
394  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, A) \
-
395  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, B) \
-
396  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, C) \
-
397  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, D) \
-
398  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, A) \
-
399  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, B) \
-
400  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, C) \
-
401  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, D) \
-
402  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, A) \
-
403  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, B) \
-
404  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, C) \
-
405  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, D) \
-
406  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, A) \
-
407  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, B) \
-
408  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, C) \
-
409  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, D) \
-
410  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, A) \
-
411  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, B) \
-
412  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, C) \
-
413  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, D)
-
414 
-
415 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
-
416  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, A) \
-
417  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, B) \
-
418  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, C) \
-
419  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, D) \
-
420  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, A) \
-
421  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, B) \
-
422  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, C) \
-
423  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, D) \
-
424  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, A) \
-
425  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, B) \
-
426  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, C) \
-
427  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, D) \
-
428  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, A) \
-
429  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, B) \
-
430  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, C) \
-
431  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, D) \
-
432  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, A) \
-
433  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, B) \
-
434  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, C) \
-
435  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, D) \
-
436  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, A) \
-
437  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, B) \
-
438  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, C) \
-
439  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, D) \
-
440  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, A) \
-
441  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, B) \
-
442  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, C) \
-
443  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, D) \
-
444  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, A) \
-
445  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, B) \
-
446  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, C) \
-
447  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, D) \
-
448  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, A) \
-
449  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, B) \
-
450  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, C) \
-
451  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, D) \
-
452  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, A) \
-
453  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, B) \
-
454  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, C) \
-
455  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, D) \
-
456  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, A) \
-
457  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, B) \
-
458  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, C) \
-
459  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, D) \
-
460  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, A) \
-
461  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, B) \
-
462  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, C) \
-
463  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, D) \
-
464  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, A) \
-
465  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, B) \
-
466  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, C) \
-
467  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, D) \
-
468  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, A) \
-
469  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, B) \
-
470  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, C) \
-
471  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, D) \
-
472  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, A) \
-
473  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, B) \
-
474  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, C) \
-
475  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, D) \
-
476  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, A) \
-
477  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, B) \
-
478  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, C) \
-
479  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, D) \
-
480  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, A) \
-
481  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, B) \
-
482  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, C) \
-
483  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, D) \
-
484  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, A) \
-
485  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, B) \
-
486  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, C) \
-
487  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, D) \
-
488  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, A) \
-
489  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, B) \
-
490  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, C) \
-
491  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, D) \
-
492  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, A) \
-
493  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, B) \
-
494  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, C) \
-
495  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, D) \
-
496  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, A) \
-
497  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, B) \
-
498  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, C) \
-
499  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, D) \
-
500  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, A) \
-
501  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, B) \
-
502  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, C) \
-
503  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, D) \
-
504  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, A) \
-
505  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, B) \
-
506  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, C) \
-
507  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, D) \
-
508  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, A) \
-
509  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, B) \
-
510  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, C) \
-
511  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, D) \
-
512  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, A) \
-
513  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, B) \
-
514  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, C) \
-
515  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, D) \
-
516  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, A) \
-
517  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, B) \
-
518  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, C) \
-
519  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, D) \
-
520  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, A) \
-
521  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, B) \
-
522  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, C) \
-
523  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, D) \
-
524  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, A) \
-
525  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, B) \
-
526  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, C) \
-
527  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, D) \
-
528  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, A) \
-
529  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, B) \
-
530  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, C) \
-
531  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, D) \
-
532  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, A) \
-
533  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, B) \
-
534  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, C) \
-
535  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, D) \
-
536  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, A) \
-
537  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, B) \
-
538  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, C) \
-
539  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, D) \
-
540  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, A) \
-
541  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, B) \
-
542  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, C) \
-
543  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, D) \
-
544  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, A) \
-
545  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, B) \
-
546  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, C) \
-
547  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, D) \
-
548  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, A) \
-
549  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, B) \
-
550  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, C) \
-
551  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, D) \
-
552  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, A) \
-
553  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, B) \
-
554  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, C) \
-
555  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, D) \
-
556  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, A) \
-
557  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, B) \
-
558  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, C) \
-
559  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, D) \
-
560  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, A) \
-
561  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, B) \
-
562  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, C) \
-
563  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, D) \
-
564  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, A) \
-
565  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, B) \
-
566  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, C) \
-
567  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, D) \
-
568  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, A) \
-
569  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, B) \
-
570  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, C) \
-
571  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, D) \
-
572  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, A) \
-
573  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, B) \
-
574  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, C) \
-
575  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, D) \
-
576  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, A) \
-
577  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, B) \
-
578  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, C) \
-
579  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, D) \
-
580  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, A) \
-
581  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, B) \
-
582  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, C) \
-
583  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, D) \
-
584  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, A) \
-
585  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, B) \
-
586  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, C) \
-
587  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, D) \
-
588  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, A) \
-
589  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, B) \
-
590  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, C) \
-
591  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, D) \
-
592  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, A) \
-
593  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, B) \
-
594  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, C) \
-
595  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, D) \
-
596  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, A) \
-
597  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, B) \
-
598  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, C) \
-
599  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, D) \
-
600  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, A) \
-
601  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, B) \
-
602  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, C) \
-
603  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, D) \
-
604  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, A) \
-
605  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, B) \
-
606  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, C) \
-
607  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, D) \
-
608  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, A) \
-
609  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, B) \
-
610  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, C) \
-
611  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, D) \
-
612  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, A) \
-
613  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, B) \
-
614  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, C) \
-
615  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, D) \
-
616  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, A) \
-
617  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, B) \
-
618  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, C) \
-
619  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, D) \
-
620  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, A) \
-
621  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, B) \
-
622  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, C) \
-
623  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, D) \
-
624  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, A) \
-
625  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, B) \
-
626  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, C) \
-
627  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, D) \
-
628  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, A) \
-
629  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, B) \
-
630  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, C) \
-
631  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, D) \
-
632  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, A) \
-
633  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, B) \
-
634  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, C) \
-
635  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, D) \
-
636  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, A) \
-
637  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, B) \
-
638  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, C) \
-
639  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, D) \
-
640  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, A) \
-
641  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, B) \
-
642  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, C) \
-
643  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, D) \
-
644  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, A) \
-
645  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, B) \
-
646  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, C) \
-
647  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, D) \
-
648  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, A) \
-
649  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, B) \
-
650  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, C) \
-
651  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, D) \
-
652  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, A) \
-
653  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, B) \
-
654  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, C) \
-
655  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, D) \
-
656  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, A) \
-
657  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, B) \
-
658  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, C) \
-
659  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, D) \
-
660  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, A) \
-
661  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, B) \
-
662  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, C) \
-
663  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, D) \
-
664  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, A) \
-
665  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, B) \
-
666  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, C) \
-
667  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, D) \
-
668  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, A) \
-
669  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, B) \
-
670  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, C) \
-
671  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, D)
-
672 
-
673 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, A, B, C, D) \
-
674  GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
-
675  GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
-
676  GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D)
-
677 
-
678 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC4(T, P) \
-
679  GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, x, y, z, w) \
-
680  GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, r, g, b, a) \
-
681  GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, s, t, p, q)
-
682 
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00006_source.html b/tests/OpenGL/package/glm/doc/api/a00006_source.html deleted file mode 100644 index 96923b3b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00006_source.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - -0.9.9 API documentation: _vectorize.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
_vectorize.hpp
-
-
-
1 #pragma once
-
2 
-
3 namespace glm{
-
4 namespace detail
-
5 {
-
6  template<template<length_t L, typename T, qualifier Q> class vec, length_t L, typename R, typename T, qualifier Q>
-
7  struct functor1{};
-
8 
-
9  template<template<length_t L, typename T, qualifier Q> class vec, typename R, typename T, qualifier Q>
-
10  struct functor1<vec, 1, R, T, Q>
-
11  {
-
12  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<1, R, Q> call(R (*Func) (T x), vec<1, T, Q> const& v)
-
13  {
-
14  return vec<1, R, Q>(Func(v.x));
-
15  }
-
16  };
-
17 
-
18  template<template<length_t L, typename T, qualifier Q> class vec, typename R, typename T, qualifier Q>
-
19  struct functor1<vec, 2, R, T, Q>
-
20  {
-
21  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<2, R, Q> call(R (*Func) (T x), vec<2, T, Q> const& v)
-
22  {
-
23  return vec<2, R, Q>(Func(v.x), Func(v.y));
-
24  }
-
25  };
-
26 
-
27  template<template<length_t L, typename T, qualifier Q> class vec, typename R, typename T, qualifier Q>
-
28  struct functor1<vec, 3, R, T, Q>
-
29  {
-
30  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<3, R, Q> call(R (*Func) (T x), vec<3, T, Q> const& v)
-
31  {
-
32  return vec<3, R, Q>(Func(v.x), Func(v.y), Func(v.z));
-
33  }
-
34  };
-
35 
-
36  template<template<length_t L, typename T, qualifier Q> class vec, typename R, typename T, qualifier Q>
-
37  struct functor1<vec, 4, R, T, Q>
-
38  {
-
39  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, R, Q> call(R (*Func) (T x), vec<4, T, Q> const& v)
-
40  {
-
41  return vec<4, R, Q>(Func(v.x), Func(v.y), Func(v.z), Func(v.w));
-
42  }
-
43  };
-
44 
-
45  template<template<length_t L, typename T, qualifier Q> class vec, length_t L, typename T, qualifier Q>
-
46  struct functor2{};
-
47 
-
48  template<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>
-
49  struct functor2<vec, 1, T, Q>
-
50  {
-
51  GLM_FUNC_QUALIFIER static vec<1, T, Q> call(T (*Func) (T x, T y), vec<1, T, Q> const& a, vec<1, T, Q> const& b)
-
52  {
-
53  return vec<1, T, Q>(Func(a.x, b.x));
-
54  }
-
55  };
-
56 
-
57  template<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>
-
58  struct functor2<vec, 2, T, Q>
-
59  {
-
60  GLM_FUNC_QUALIFIER static vec<2, T, Q> call(T (*Func) (T x, T y), vec<2, T, Q> const& a, vec<2, T, Q> const& b)
-
61  {
-
62  return vec<2, T, Q>(Func(a.x, b.x), Func(a.y, b.y));
-
63  }
-
64  };
-
65 
-
66  template<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>
-
67  struct functor2<vec, 3, T, Q>
-
68  {
-
69  GLM_FUNC_QUALIFIER static vec<3, T, Q> call(T (*Func) (T x, T y), vec<3, T, Q> const& a, vec<3, T, Q> const& b)
-
70  {
-
71  return vec<3, T, Q>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z));
-
72  }
-
73  };
-
74 
-
75  template<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>
-
76  struct functor2<vec, 4, T, Q>
-
77  {
-
78  GLM_FUNC_QUALIFIER static vec<4, T, Q> call(T (*Func) (T x, T y), vec<4, T, Q> const& a, vec<4, T, Q> const& b)
-
79  {
-
80  return vec<4, T, Q>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z), Func(a.w, b.w));
-
81  }
-
82  };
-
83 
-
84  template<template<length_t L, typename T, qualifier Q> class vec, length_t L, typename T, qualifier Q>
-
85  struct functor2_vec_sca{};
-
86 
-
87  template<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>
-
88  struct functor2_vec_sca<vec, 1, T, Q>
-
89  {
-
90  GLM_FUNC_QUALIFIER static vec<1, T, Q> call(T (*Func) (T x, T y), vec<1, T, Q> const& a, T b)
-
91  {
-
92  return vec<1, T, Q>(Func(a.x, b));
-
93  }
-
94  };
-
95 
-
96  template<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>
-
97  struct functor2_vec_sca<vec, 2, T, Q>
-
98  {
-
99  GLM_FUNC_QUALIFIER static vec<2, T, Q> call(T (*Func) (T x, T y), vec<2, T, Q> const& a, T b)
-
100  {
-
101  return vec<2, T, Q>(Func(a.x, b), Func(a.y, b));
-
102  }
-
103  };
-
104 
-
105  template<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>
-
106  struct functor2_vec_sca<vec, 3, T, Q>
-
107  {
-
108  GLM_FUNC_QUALIFIER static vec<3, T, Q> call(T (*Func) (T x, T y), vec<3, T, Q> const& a, T b)
-
109  {
-
110  return vec<3, T, Q>(Func(a.x, b), Func(a.y, b), Func(a.z, b));
-
111  }
-
112  };
-
113 
-
114  template<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>
-
115  struct functor2_vec_sca<vec, 4, T, Q>
-
116  {
-
117  GLM_FUNC_QUALIFIER static vec<4, T, Q> call(T (*Func) (T x, T y), vec<4, T, Q> const& a, T b)
-
118  {
-
119  return vec<4, T, Q>(Func(a.x, b), Func(a.y, b), Func(a.z, b), Func(a.w, b));
-
120  }
-
121  };
-
122 
-
123  template<length_t L, typename T, qualifier Q>
-
124  struct functor2_vec_int {};
-
125 
-
126  template<typename T, qualifier Q>
-
127  struct functor2_vec_int<1, T, Q>
-
128  {
-
129  GLM_FUNC_QUALIFIER static vec<1, int, Q> call(int (*Func) (T x, int y), vec<1, T, Q> const& a, vec<1, int, Q> const& b)
-
130  {
-
131  return vec<1, int, Q>(Func(a.x, b.x));
-
132  }
-
133  };
-
134 
-
135  template<typename T, qualifier Q>
-
136  struct functor2_vec_int<2, T, Q>
-
137  {
-
138  GLM_FUNC_QUALIFIER static vec<2, int, Q> call(int (*Func) (T x, int y), vec<2, T, Q> const& a, vec<2, int, Q> const& b)
-
139  {
-
140  return vec<2, int, Q>(Func(a.x, b.x), Func(a.y, b.y));
-
141  }
-
142  };
-
143 
-
144  template<typename T, qualifier Q>
-
145  struct functor2_vec_int<3, T, Q>
-
146  {
-
147  GLM_FUNC_QUALIFIER static vec<3, int, Q> call(int (*Func) (T x, int y), vec<3, T, Q> const& a, vec<3, int, Q> const& b)
-
148  {
-
149  return vec<3, int, Q>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z));
-
150  }
-
151  };
-
152 
-
153  template<typename T, qualifier Q>
-
154  struct functor2_vec_int<4, T, Q>
-
155  {
-
156  GLM_FUNC_QUALIFIER static vec<4, int, Q> call(int (*Func) (T x, int y), vec<4, T, Q> const& a, vec<4, int, Q> const& b)
-
157  {
-
158  return vec<4, int, Q>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z), Func(a.w, b.w));
-
159  }
-
160  };
-
161 }//namespace detail
-
162 }//namespace glm
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00007.html b/tests/OpenGL/package/glm/doc/api/a00007.html deleted file mode 100644 index bd708c8f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00007.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - -0.9.9 API documentation: associated_min_max.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
associated_min_max.hpp File Reference
-
-
- -

GLM_GTX_associated_min_max -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_associated_min_max

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

Definition in file associated_min_max.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00007_source.html b/tests/OpenGL/package/glm/doc/api/a00007_source.html deleted file mode 100644 index 45d76a2d..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00007_source.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - -0.9.9 API documentation: associated_min_max.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
associated_min_max.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../glm.hpp"
-
18 
-
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
20 # ifndef GLM_ENABLE_EXPERIMENTAL
-
21 # pragma message("GLM: GLM_GTX_associated_min_max is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
22 # else
-
23 # pragma message("GLM: GLM_GTX_associated_min_max extension included")
-
24 # endif
-
25 #endif
-
26 
-
27 namespace glm
-
28 {
-
31 
-
34  template<typename T, typename U, qualifier Q>
-
35  GLM_FUNC_DECL U associatedMin(T x, U a, T y, U b);
-
36 
-
39  template<length_t L, typename T, typename U, qualifier Q>
-
40  GLM_FUNC_DECL vec<2, U, Q> associatedMin(
-
41  vec<L, T, Q> const& x, vec<L, U, Q> const& a,
-
42  vec<L, T, Q> const& y, vec<L, U, Q> const& b);
-
43 
-
46  template<length_t L, typename T, typename U, qualifier Q>
-
47  GLM_FUNC_DECL vec<L, U, Q> associatedMin(
-
48  T x, const vec<L, U, Q>& a,
-
49  T y, const vec<L, U, Q>& b);
-
50 
-
53  template<length_t L, typename T, typename U, qualifier Q>
-
54  GLM_FUNC_DECL vec<L, U, Q> associatedMin(
-
55  vec<L, T, Q> const& x, U a,
-
56  vec<L, T, Q> const& y, U b);
-
57 
-
60  template<typename T, typename U>
-
61  GLM_FUNC_DECL U associatedMin(
-
62  T x, U a,
-
63  T y, U b,
-
64  T z, U c);
-
65 
-
68  template<length_t L, typename T, typename U, qualifier Q>
-
69  GLM_FUNC_DECL vec<L, U, Q> associatedMin(
-
70  vec<L, T, Q> const& x, vec<L, U, Q> const& a,
-
71  vec<L, T, Q> const& y, vec<L, U, Q> const& b,
-
72  vec<L, T, Q> const& z, vec<L, U, Q> const& c);
-
73 
-
76  template<typename T, typename U>
-
77  GLM_FUNC_DECL U associatedMin(
-
78  T x, U a,
-
79  T y, U b,
-
80  T z, U c,
-
81  T w, U d);
-
82 
-
85  template<length_t L, typename T, typename U, qualifier Q>
-
86  GLM_FUNC_DECL vec<L, U, Q> associatedMin(
-
87  vec<L, T, Q> const& x, vec<L, U, Q> const& a,
-
88  vec<L, T, Q> const& y, vec<L, U, Q> const& b,
-
89  vec<L, T, Q> const& z, vec<L, U, Q> const& c,
-
90  vec<L, T, Q> const& w, vec<L, U, Q> const& d);
-
91 
-
94  template<length_t L, typename T, typename U, qualifier Q>
-
95  GLM_FUNC_DECL vec<L, U, Q> associatedMin(
-
96  T x, vec<L, U, Q> const& a,
-
97  T y, vec<L, U, Q> const& b,
-
98  T z, vec<L, U, Q> const& c,
-
99  T w, vec<L, U, Q> const& d);
-
100 
-
103  template<length_t L, typename T, typename U, qualifier Q>
-
104  GLM_FUNC_DECL vec<L, U, Q> associatedMin(
-
105  vec<L, T, Q> const& x, U a,
-
106  vec<L, T, Q> const& y, U b,
-
107  vec<L, T, Q> const& z, U c,
-
108  vec<L, T, Q> const& w, U d);
-
109 
-
112  template<typename T, typename U>
-
113  GLM_FUNC_DECL U associatedMax(T x, U a, T y, U b);
-
114 
-
117  template<length_t L, typename T, typename U, qualifier Q>
-
118  GLM_FUNC_DECL vec<2, U, Q> associatedMax(
-
119  vec<L, T, Q> const& x, vec<L, U, Q> const& a,
-
120  vec<L, T, Q> const& y, vec<L, U, Q> const& b);
-
121 
-
124  template<length_t L, typename T, typename U, qualifier Q>
-
125  GLM_FUNC_DECL vec<L, T, Q> associatedMax(
-
126  T x, vec<L, U, Q> const& a,
-
127  T y, vec<L, U, Q> const& b);
-
128 
-
131  template<length_t L, typename T, typename U, qualifier Q>
-
132  GLM_FUNC_DECL vec<L, U, Q> associatedMax(
-
133  vec<L, T, Q> const& x, U a,
-
134  vec<L, T, Q> const& y, U b);
-
135 
-
138  template<typename T, typename U>
-
139  GLM_FUNC_DECL U associatedMax(
-
140  T x, U a,
-
141  T y, U b,
-
142  T z, U c);
-
143 
-
146  template<length_t L, typename T, typename U, qualifier Q>
-
147  GLM_FUNC_DECL vec<L, U, Q> associatedMax(
-
148  vec<L, T, Q> const& x, vec<L, U, Q> const& a,
-
149  vec<L, T, Q> const& y, vec<L, U, Q> const& b,
-
150  vec<L, T, Q> const& z, vec<L, U, Q> const& c);
-
151 
-
154  template<length_t L, typename T, typename U, qualifier Q>
-
155  GLM_FUNC_DECL vec<L, T, Q> associatedMax(
-
156  T x, vec<L, U, Q> const& a,
-
157  T y, vec<L, U, Q> const& b,
-
158  T z, vec<L, U, Q> const& c);
-
159 
-
162  template<length_t L, typename T, typename U, qualifier Q>
-
163  GLM_FUNC_DECL vec<L, U, Q> associatedMax(
-
164  vec<L, T, Q> const& x, U a,
-
165  vec<L, T, Q> const& y, U b,
-
166  vec<L, T, Q> const& z, U c);
-
167 
-
170  template<typename T, typename U>
-
171  GLM_FUNC_DECL U associatedMax(
-
172  T x, U a,
-
173  T y, U b,
-
174  T z, U c,
-
175  T w, U d);
-
176 
-
179  template<length_t L, typename T, typename U, qualifier Q>
-
180  GLM_FUNC_DECL vec<L, U, Q> associatedMax(
-
181  vec<L, T, Q> const& x, vec<L, U, Q> const& a,
-
182  vec<L, T, Q> const& y, vec<L, U, Q> const& b,
-
183  vec<L, T, Q> const& z, vec<L, U, Q> const& c,
-
184  vec<L, T, Q> const& w, vec<L, U, Q> const& d);
-
185 
-
188  template<length_t L, typename T, typename U, qualifier Q>
-
189  GLM_FUNC_DECL vec<L, U, Q> associatedMax(
-
190  T x, vec<L, U, Q> const& a,
-
191  T y, vec<L, U, Q> const& b,
-
192  T z, vec<L, U, Q> const& c,
-
193  T w, vec<L, U, Q> const& d);
-
194 
-
197  template<length_t L, typename T, typename U, qualifier Q>
-
198  GLM_FUNC_DECL vec<L, U, Q> associatedMax(
-
199  vec<L, T, Q> const& x, U a,
-
200  vec<L, T, Q> const& y, U b,
-
201  vec<L, T, Q> const& z, U c,
-
202  vec<L, T, Q> const& w, U d);
-
203 
-
205 } //namespace glm
-
206 
-
207 #include "associated_min_max.inl"
-
GLM_FUNC_DECL vec< L, U, Q > associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)
Maximum comparison between 4 variables and returns 4 associated variable values.
-
GLM_FUNC_DECL vec< L, U, Q > associatedMin(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)
Minimum comparison between 4 variables and returns 4 associated variable values.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00008.html b/tests/OpenGL/package/glm/doc/api/a00008.html deleted file mode 100644 index 481484f3..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00008.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -0.9.9 API documentation: bit.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
bit.hpp File Reference
-
-
- -

GLM_GTX_bit -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_bit

-
See also
Core features (dependence)
- -

Definition in file bit.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00008_source.html b/tests/OpenGL/package/glm/doc/api/a00008_source.html deleted file mode 100644 index ea56523d..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00008_source.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - -0.9.9 API documentation: bit.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
bit.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependencies
-
16 #include "../gtc/bitfield.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # ifndef GLM_ENABLE_EXPERIMENTAL
-
20 # pragma message("GLM: GLM_GTX_bit is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
21 # else
-
22 # pragma message("GLM: GLM_GTX_bit extension included")
-
23 # endif
-
24 #endif
-
25 
-
26 namespace glm
-
27 {
-
30 
-
32  template<typename genIUType>
-
33  GLM_FUNC_DECL genIUType highestBitValue(genIUType Value);
-
34 
-
36  template<typename genIUType>
-
37  GLM_FUNC_DECL genIUType lowestBitValue(genIUType Value);
-
38 
-
42  template<length_t L, typename T, qualifier Q>
-
43  GLM_FUNC_DECL vec<L, T, Q> highestBitValue(vec<L, T, Q> const& value);
-
44 
-
50  template<typename genIUType>
-
51  GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoAbove(genIUType Value);
-
52 
-
58  template<length_t L, typename T, qualifier Q>
-
59  GLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> powerOfTwoAbove(vec<L, T, Q> const& value);
-
60 
-
66  template<typename genIUType>
-
67  GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoBelow(genIUType Value);
-
68 
-
74  template<length_t L, typename T, qualifier Q>
-
75  GLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> powerOfTwoBelow(vec<L, T, Q> const& value);
-
76 
-
82  template<typename genIUType>
-
83  GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoNearest(genIUType Value);
-
84 
-
90  template<length_t L, typename T, qualifier Q>
-
91  GLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> powerOfTwoNearest(vec<L, T, Q> const& value);
-
92 
-
94 } //namespace glm
-
95 
-
96 
-
97 #include "bit.inl"
-
98 
-
GLM_FUNC_DECL vec< L, T, Q > highestBitValue(vec< L, T, Q > const &value)
Find the highest bit set to 1 in a integer variable and return its value.
-
GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > powerOfTwoBelow(vec< L, T, Q > const &value)
Return the power of two number which value is just lower the input value.
-
GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > powerOfTwoAbove(vec< L, T, Q > const &value)
Return the power of two number which value is just higher the input value.
-
GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > powerOfTwoNearest(vec< L, T, Q > const &value)
Return the power of two number which value is the closet to the input value.
-
GLM_FUNC_DECL genIUType lowestBitValue(genIUType Value)
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00009.html b/tests/OpenGL/package/glm/doc/api/a00009.html deleted file mode 100644 index 429ccf04..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00009.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - -0.9.9 API documentation: bitfield.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
bitfield.hpp File Reference
-
-
- -

GLM_GTC_bitfield -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTC_bitfield

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

Definition in file bitfield.hpp.

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

GLM_GTX_closest_point -More...

- -

Go to the source code of this file.

- - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_closest_point

-
See also
Core features (dependence)
- -

Definition in file closest_point.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00010_source.html b/tests/OpenGL/package/glm/doc/api/a00010_source.html deleted file mode 100644 index 57de3ceb..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00010_source.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - -0.9.9 API documentation: closest_point.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
closest_point.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../glm.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # ifndef GLM_ENABLE_EXPERIMENTAL
-
20 # pragma message("GLM: GLM_GTX_closest_point is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
21 # else
-
22 # pragma message("GLM: GLM_GTX_closest_point extension included")
-
23 # endif
-
24 #endif
-
25 
-
26 namespace glm
-
27 {
-
30 
-
33  template<typename T, qualifier Q>
-
34  GLM_FUNC_DECL vec<3, T, Q> closestPointOnLine(
-
35  vec<3, T, Q> const& point,
-
36  vec<3, T, Q> const& a,
-
37  vec<3, T, Q> const& b);
-
38 
-
40  template<typename T, qualifier Q>
-
41  GLM_FUNC_DECL vec<2, T, Q> closestPointOnLine(
-
42  vec<2, T, Q> const& point,
-
43  vec<2, T, Q> const& a,
-
44  vec<2, T, Q> const& b);
-
45 
-
47 }// namespace glm
-
48 
-
49 #include "closest_point.inl"
-
GLM_FUNC_DECL vec< 2, T, Q > closestPointOnLine(vec< 2, T, Q > const &point, vec< 2, T, Q > const &a, vec< 2, T, Q > const &b)
2d lines work as well
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00011.html b/tests/OpenGL/package/glm/doc/api/a00011.html deleted file mode 100644 index fc81397e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00011.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - -0.9.9 API documentation: color_encoding.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
color_encoding.hpp File Reference
-
-
- -

GLM_GTX_color_encoding -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_color_encoding

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

Definition in file color_encoding.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00011_source.html b/tests/OpenGL/package/glm/doc/api/a00011_source.html deleted file mode 100644 index 0deaac45..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00011_source.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - -0.9.9 API documentation: color_encoding.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
color_encoding.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependencies
-
17 #include "../detail/setup.hpp"
-
18 #include "../detail/qualifier.hpp"
-
19 #include "../vec3.hpp"
-
20 #include <limits>
-
21 
-
22 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
23 # ifndef GLM_ENABLE_EXPERIMENTAL
-
24 # pragma message("GLM: GLM_GTC_color_encoding is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
25 # else
-
26 # pragma message("GLM: GLM_GTC_color_encoding extension included")
-
27 # endif
-
28 #endif
-
29 
-
30 namespace glm
-
31 {
-
34 
-
36  template<typename T, qualifier Q>
-
37  GLM_FUNC_DECL vec<3, T, Q> convertLinearSRGBToD65XYZ(vec<3, T, Q> const& ColorLinearSRGB);
-
38 
-
40  template<typename T, qualifier Q>
-
41  GLM_FUNC_DECL vec<3, T, Q> convertLinearSRGBToD50XYZ(vec<3, T, Q> const& ColorLinearSRGB);
-
42 
-
44  template<typename T, qualifier Q>
-
45  GLM_FUNC_DECL vec<3, T, Q> convertD65XYZToLinearSRGB(vec<3, T, Q> const& ColorD65XYZ);
-
46 
-
48  template<typename T, qualifier Q>
-
49  GLM_FUNC_DECL vec<3, T, Q> convertD65XYZToD50XYZ(vec<3, T, Q> const& ColorD65XYZ);
-
50 
-
52 } //namespace glm
-
53 
-
54 #include "color_encoding.inl"
-
GLM_FUNC_DECL vec< 3, T, Q > convertD65XYZToLinearSRGB(vec< 3, T, Q > const &ColorD65XYZ)
Convert a D65 YUV color to linear sRGB.
-
GLM_FUNC_DECL vec< 3, T, Q > convertLinearSRGBToD50XYZ(vec< 3, T, Q > const &ColorLinearSRGB)
Convert a linear sRGB color to D50 YUV.
-
GLM_FUNC_DECL vec< 3, T, Q > convertLinearSRGBToD65XYZ(vec< 3, T, Q > const &ColorLinearSRGB)
Convert a linear sRGB color to D65 YUV.
-
GLM_FUNC_DECL vec< 3, T, Q > convertD65XYZToD50XYZ(vec< 3, T, Q > const &ColorD65XYZ)
Convert a D65 YUV color to D50 YUV.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00012.html b/tests/OpenGL/package/glm/doc/api/a00012.html deleted file mode 100644 index 4262e1e9..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00012.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - -0.9.9 API documentation: color_space.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
gtc/color_space.hpp File Reference
-
-
- -

GLM_GTC_color_space -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - -

-Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > convertLinearToSRGB (vec< L, T, Q > const &ColorLinear)
 Convert a linear color to sRGB color using a standard gamma correction. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > convertLinearToSRGB (vec< L, T, Q > const &ColorLinear, T Gamma)
 Convert a linear color to sRGB color using a custom gamma correction. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > convertSRGBToLinear (vec< L, T, Q > const &ColorSRGB)
 Convert a sRGB color to linear color using a standard gamma correction. More...
 
-template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > convertSRGBToLinear (vec< L, T, Q > const &ColorSRGB, T Gamma)
 Convert a sRGB color to linear color using a custom gamma correction.
 
-

Detailed Description

-

GLM_GTC_color_space

-
See also
Core features (dependence)
-
-GLM_GTC_color_space (dependence)
- -

Definition in file gtc/color_space.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00012_source.html b/tests/OpenGL/package/glm/doc/api/a00012_source.html deleted file mode 100644 index 8f864b9f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00012_source.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - -0.9.9 API documentation: color_space.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
gtc/color_space.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependencies
-
17 #include "../detail/setup.hpp"
-
18 #include "../detail/qualifier.hpp"
-
19 #include "../exponential.hpp"
-
20 #include "../vec3.hpp"
-
21 #include "../vec4.hpp"
-
22 #include <limits>
-
23 
-
24 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
25 # pragma message("GLM: GLM_GTC_color_space extension included")
-
26 #endif
-
27 
-
28 namespace glm
-
29 {
-
32 
-
35  template<length_t L, typename T, qualifier Q>
-
36  GLM_FUNC_DECL vec<L, T, Q> convertLinearToSRGB(vec<L, T, Q> const& ColorLinear);
-
37 
-
40  template<length_t L, typename T, qualifier Q>
-
41  GLM_FUNC_DECL vec<L, T, Q> convertLinearToSRGB(vec<L, T, Q> const& ColorLinear, T Gamma);
-
42 
-
45  template<length_t L, typename T, qualifier Q>
-
46  GLM_FUNC_DECL vec<L, T, Q> convertSRGBToLinear(vec<L, T, Q> const& ColorSRGB);
-
47 
-
49  // IEC 61966-2-1:1999 / Rec. 709 specification https://www.w3.org/Graphics/Color/srgb
-
50  template<length_t L, typename T, qualifier Q>
-
51  GLM_FUNC_DECL vec<L, T, Q> convertSRGBToLinear(vec<L, T, Q> const& ColorSRGB, T Gamma);
-
52 
-
54 } //namespace glm
-
55 
-
56 #include "color_space.inl"
-
GLM_FUNC_DECL vec< L, T, Q > convertLinearToSRGB(vec< L, T, Q > const &ColorLinear, T Gamma)
Convert a linear color to sRGB color using a custom gamma correction.
-
GLM_FUNC_DECL vec< L, T, Q > convertSRGBToLinear(vec< L, T, Q > const &ColorSRGB, T Gamma)
Convert a sRGB color to linear color using a custom gamma correction.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00013.html b/tests/OpenGL/package/glm/doc/api/a00013.html deleted file mode 100644 index 0c209950..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00013.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - -0.9.9 API documentation: color_space.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
gtx/color_space.hpp File Reference
-
-
- -

GLM_GTX_color_space -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > hsvColor (vec< 3, T, Q > const &rgbValue)
 Converts a color from RGB color space to its color in HSV color space. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T luminosity (vec< 3, T, Q > const &color)
 Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rgbColor (vec< 3, T, Q > const &hsvValue)
 Converts a color from HSV color space to its color in RGB color space. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > saturation (T const s)
 Build a saturation matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > saturation (T const s, vec< 3, T, Q > const &color)
 Modify the saturation of a color. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > saturation (T const s, vec< 4, T, Q > const &color)
 Modify the saturation of a color. More...
 
-

Detailed Description

-

GLM_GTX_color_space

-
See also
Core features (dependence)
- -

Definition in file gtx/color_space.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00013_source.html b/tests/OpenGL/package/glm/doc/api/a00013_source.html deleted file mode 100644 index e85a5658..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00013_source.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - -0.9.9 API documentation: color_space.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
gtx/color_space.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../glm.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # ifndef GLM_ENABLE_EXPERIMENTAL
-
20 # pragma message("GLM: GLM_GTX_color_space is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
21 # else
-
22 # pragma message("GLM: GLM_GTX_color_space extension included")
-
23 # endif
-
24 #endif
-
25 
-
26 namespace glm
-
27 {
-
30 
-
33  template<typename T, qualifier Q>
-
34  GLM_FUNC_DECL vec<3, T, Q> rgbColor(
-
35  vec<3, T, Q> const& hsvValue);
-
36 
-
39  template<typename T, qualifier Q>
-
40  GLM_FUNC_DECL vec<3, T, Q> hsvColor(
-
41  vec<3, T, Q> const& rgbValue);
-
42 
-
45  template<typename T>
-
46  GLM_FUNC_DECL mat<4, 4, T, defaultp> saturation(
-
47  T const s);
-
48 
-
51  template<typename T, qualifier Q>
-
52  GLM_FUNC_DECL vec<3, T, Q> saturation(
-
53  T const s,
-
54  vec<3, T, Q> const& color);
-
55 
-
58  template<typename T, qualifier Q>
-
59  GLM_FUNC_DECL vec<4, T, Q> saturation(
-
60  T const s,
-
61  vec<4, T, Q> const& color);
-
62 
-
65  template<typename T, qualifier Q>
-
66  GLM_FUNC_DECL T luminosity(
-
67  vec<3, T, Q> const& color);
-
68 
-
70 }//namespace glm
-
71 
-
72 #include "color_space.inl"
-
GLM_FUNC_DECL T luminosity(vec< 3, T, Q > const &color)
Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals.
-
GLM_FUNC_DECL vec< 4, T, Q > saturation(T const s, vec< 4, T, Q > const &color)
Modify the saturation of a color.
-
GLM_FUNC_DECL vec< 3, T, Q > rgbColor(vec< 3, T, Q > const &hsvValue)
Converts a color from HSV color space to its color in RGB color space.
-
GLM_FUNC_DECL vec< 3, T, Q > hsvColor(vec< 3, T, Q > const &rgbValue)
Converts a color from RGB color space to its color in HSV color space.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00014.html b/tests/OpenGL/package/glm/doc/api/a00014.html deleted file mode 100644 index 5e838b7a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00014.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - -0.9.9 API documentation: color_space_YCoCg.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
color_space_YCoCg.hpp File Reference
-
-
- -

GLM_GTX_color_space_YCoCg -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_color_space_YCoCg

-
See also
Core features (dependence)
- -

Definition in file color_space_YCoCg.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00014_source.html b/tests/OpenGL/package/glm/doc/api/a00014_source.html deleted file mode 100644 index 903a7d9b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00014_source.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - -0.9.9 API documentation: color_space_YCoCg.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
color_space_YCoCg.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../glm.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # ifndef GLM_ENABLE_EXPERIMENTAL
-
20 # pragma message("GLM: GLM_GTX_color_space_YCoCg is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
21 # else
-
22 # pragma message("GLM: GLM_GTX_color_space_YCoCg extension included")
-
23 # endif
-
24 #endif
-
25 
-
26 namespace glm
-
27 {
-
30 
-
33  template<typename T, qualifier Q>
-
34  GLM_FUNC_DECL vec<3, T, Q> rgb2YCoCg(
-
35  vec<3, T, Q> const& rgbColor);
-
36 
-
39  template<typename T, qualifier Q>
-
40  GLM_FUNC_DECL vec<3, T, Q> YCoCg2rgb(
-
41  vec<3, T, Q> const& YCoCgColor);
-
42 
-
46  template<typename T, qualifier Q>
-
47  GLM_FUNC_DECL vec<3, T, Q> rgb2YCoCgR(
-
48  vec<3, T, Q> const& rgbColor);
-
49 
-
53  template<typename T, qualifier Q>
-
54  GLM_FUNC_DECL vec<3, T, Q> YCoCgR2rgb(
-
55  vec<3, T, Q> const& YCoCgColor);
-
56 
-
58 }//namespace glm
-
59 
-
60 #include "color_space_YCoCg.inl"
-
GLM_FUNC_DECL vec< 3, T, Q > YCoCgR2rgb(vec< 3, T, Q > const &YCoCgColor)
Convert a color from YCoCgR color space to RGB color space.
-
GLM_FUNC_DECL vec< 3, T, Q > YCoCg2rgb(vec< 3, T, Q > const &YCoCgColor)
Convert a color from YCoCg color space to RGB color space.
-
GLM_FUNC_DECL vec< 3, T, Q > rgbColor(vec< 3, T, Q > const &hsvValue)
Converts a color from HSV color space to its color in RGB color space.
-
GLM_FUNC_DECL vec< 3, T, Q > rgb2YCoCg(vec< 3, T, Q > const &rgbColor)
Convert a color from RGB color space to YCoCg color space.
-
GLM_FUNC_DECL vec< 3, T, Q > rgb2YCoCgR(vec< 3, T, Q > const &rgbColor)
Convert a color from RGB color space to YCoCgR color space.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00015.html b/tests/OpenGL/package/glm/doc/api/a00015.html deleted file mode 100644 index 0f9e2256..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00015.html +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - -0.9.9 API documentation: common.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
common.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00015_source.html b/tests/OpenGL/package/glm/doc/api/a00015_source.html deleted file mode 100644 index 6bc9d103..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00015_source.html +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - -0.9.9 API documentation: common.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
common.hpp
-
-
-Go to the documentation of this file.
1 
-
15 #pragma once
-
16 
-
17 #include "detail/qualifier.hpp"
-
18 #include "detail/_fixes.hpp"
-
19 
-
20 namespace glm
-
21 {
-
24 
-
31  template<typename genType>
-
32  GLM_FUNC_DECL GLM_CONSTEXPR genType abs(genType x);
-
33 
-
42  template<length_t L, typename T, qualifier Q>
-
43  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> abs(vec<L, T, Q> const& x);
-
44 
-
53  template<length_t L, typename T, qualifier Q>
-
54  GLM_FUNC_DECL vec<L, T, Q> sign(vec<L, T, Q> const& x);
-
55 
-
64  template<length_t L, typename T, qualifier Q>
-
65  GLM_FUNC_DECL vec<L, T, Q> floor(vec<L, T, Q> const& x);
-
66 
-
76  template<length_t L, typename T, qualifier Q>
-
77  GLM_FUNC_DECL vec<L, T, Q> trunc(vec<L, T, Q> const& x);
-
78 
-
91  template<length_t L, typename T, qualifier Q>
-
92  GLM_FUNC_DECL vec<L, T, Q> round(vec<L, T, Q> const& x);
-
93 
-
105  template<length_t L, typename T, qualifier Q>
-
106  GLM_FUNC_DECL vec<L, T, Q> roundEven(vec<L, T, Q> const& x);
-
107 
-
117  template<length_t L, typename T, qualifier Q>
-
118  GLM_FUNC_DECL vec<L, T, Q> ceil(vec<L, T, Q> const& x);
-
119 
-
126  template<typename genType>
-
127  GLM_FUNC_DECL genType fract(genType x);
-
128 
-
137  template<length_t L, typename T, qualifier Q>
-
138  GLM_FUNC_DECL vec<L, T, Q> fract(vec<L, T, Q> const& x);
-
139 
-
140  template<typename genType>
-
141  GLM_FUNC_DECL genType mod(genType x, genType y);
-
142 
-
143  template<length_t L, typename T, qualifier Q>
-
144  GLM_FUNC_DECL vec<L, T, Q> mod(vec<L, T, Q> const& x, T y);
-
145 
-
155  template<length_t L, typename T, qualifier Q>
-
156  GLM_FUNC_DECL vec<L, T, Q> mod(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
-
157 
-
167  template<typename genType>
-
168  GLM_FUNC_DECL genType modf(genType x, genType& i);
-
169 
-
176  template<typename genType>
-
177  GLM_FUNC_DECL GLM_CONSTEXPR genType min(genType x, genType y);
-
178 
-
187  template<length_t L, typename T, qualifier Q>
-
188  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> min(vec<L, T, Q> const& x, T y);
-
189 
-
198  template<length_t L, typename T, qualifier Q>
-
199  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> min(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
-
200 
-
207  template<typename genType>
-
208  GLM_FUNC_DECL GLM_CONSTEXPR genType max(genType x, genType y);
-
209 
-
218  template<length_t L, typename T, qualifier Q>
-
219  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> max(vec<L, T, Q> const& x, T y);
-
220 
-
229  template<length_t L, typename T, qualifier Q>
-
230  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> max(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
-
231 
-
239  template<typename genType>
-
240  GLM_FUNC_DECL GLM_CONSTEXPR genType clamp(genType x, genType minVal, genType maxVal);
-
241 
-
251  template<length_t L, typename T, qualifier Q>
-
252  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> clamp(vec<L, T, Q> const& x, T minVal, T maxVal);
-
253 
-
263  template<length_t L, typename T, qualifier Q>
-
264  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> clamp(vec<L, T, Q> const& x, vec<L, T, Q> const& minVal, vec<L, T, Q> const& maxVal);
-
265 
-
308  template<typename genTypeT, typename genTypeU>
-
309  GLM_FUNC_DECL genTypeT mix(genTypeT x, genTypeT y, genTypeU a);
-
310 
-
311  template<length_t L, typename T, typename U, qualifier Q>
-
312  GLM_FUNC_DECL vec<L, T, Q> mix(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, U, Q> const& a);
-
313 
-
314  template<length_t L, typename T, typename U, qualifier Q>
-
315  GLM_FUNC_DECL vec<L, T, Q> mix(vec<L, T, Q> const& x, vec<L, T, Q> const& y, U a);
-
316 
-
321  template<typename genType>
-
322  GLM_FUNC_DECL genType step(genType edge, genType x);
-
323 
-
332  template<length_t L, typename T, qualifier Q>
-
333  GLM_FUNC_DECL vec<L, T, Q> step(T edge, vec<L, T, Q> const& x);
-
334 
-
343  template<length_t L, typename T, qualifier Q>
-
344  GLM_FUNC_DECL vec<L, T, Q> step(vec<L, T, Q> const& edge, vec<L, T, Q> const& x);
-
345 
-
360  template<typename genType>
-
361  GLM_FUNC_DECL genType smoothstep(genType edge0, genType edge1, genType x);
-
362 
-
363  template<length_t L, typename T, qualifier Q>
-
364  GLM_FUNC_DECL vec<L, T, Q> smoothstep(T edge0, T edge1, vec<L, T, Q> const& x);
-
365 
-
366  template<length_t L, typename T, qualifier Q>
-
367  GLM_FUNC_DECL vec<L, T, Q> smoothstep(vec<L, T, Q> const& edge0, vec<L, T, Q> const& edge1, vec<L, T, Q> const& x);
-
368 
-
383  template<length_t L, typename T, qualifier Q>
-
384  GLM_FUNC_DECL vec<L, bool, Q> isnan(vec<L, T, Q> const& x);
-
385 
-
398  template<length_t L, typename T, qualifier Q>
-
399  GLM_FUNC_DECL vec<L, bool, Q> isinf(vec<L, T, Q> const& x);
-
400 
-
407  GLM_FUNC_DECL int floatBitsToInt(float const& v);
-
408 
-
418  template<length_t L, qualifier Q>
-
419  GLM_FUNC_DECL vec<L, int, Q> floatBitsToInt(vec<L, float, Q> const& v);
-
420 
-
427  GLM_FUNC_DECL uint floatBitsToUint(float const& v);
-
428 
-
438  template<length_t L, qualifier Q>
-
439  GLM_FUNC_DECL vec<L, uint, Q> floatBitsToUint(vec<L, float, Q> const& v);
-
440 
-
449  GLM_FUNC_DECL float intBitsToFloat(int const& v);
-
450 
-
462  template<length_t L, qualifier Q>
-
463  GLM_FUNC_DECL vec<L, float, Q> intBitsToFloat(vec<L, int, Q> const& v);
-
464 
-
473  GLM_FUNC_DECL float uintBitsToFloat(uint const& v);
-
474 
-
486  template<length_t L, qualifier Q>
-
487  GLM_FUNC_DECL vec<L, float, Q> uintBitsToFloat(vec<L, uint, Q> const& v);
-
488 
-
495  template<typename genType>
-
496  GLM_FUNC_DECL genType fma(genType const& a, genType const& b, genType const& c);
-
497 
-
512  template<typename genType>
-
513  GLM_FUNC_DECL genType frexp(genType x, int& exp);
-
514 
-
515  template<length_t L, typename T, qualifier Q>
-
516  GLM_FUNC_DECL vec<L, T, Q> frexp(vec<L, T, Q> const& v, vec<L, int, Q>& exp);
-
517 
-
529  template<typename genType>
-
530  GLM_FUNC_DECL genType ldexp(genType const& x, int const& exp);
-
531 
-
532  template<length_t L, typename T, qualifier Q>
-
533  GLM_FUNC_DECL vec<L, T, Q> ldexp(vec<L, T, Q> const& v, vec<L, int, Q> const& exp);
-
534 
-
536 }//namespace glm
-
537 
-
538 #include "detail/func_common.inl"
-
539 
-
GLM_FUNC_DECL vec< L, T, Q > floor(vec< L, T, Q > const &x)
Returns a value equal to the nearest integer that is less then or equal to x.
-
GLM_FUNC_DECL genType fma(genType const &a, genType const &b, genType const &c)
Computes and returns a * b + c.
-
GLM_FUNC_DECL vec< L, T, Q > trunc(vec< L, T, Q > const &x)
Returns a value equal to the nearest integer to x whose absolute value is not larger than the absolut...
-
GLM_FUNC_DECL vec< L, T, Q > mod(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Modulus.
-
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > clamp(vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)
Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal an...
-
GLM_FUNC_DECL vec< L, T, Q > round(vec< L, T, Q > const &x)
Returns a value equal to the nearest integer to x.
-
GLM_FUNC_DECL vec< L, float, Q > uintBitsToFloat(vec< L, uint, Q > const &v)
Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value...
-
GLM_FUNC_DECL vec< L, T, Q > sign(vec< L, T, Q > const &x)
Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0.
-
GLM_FUNC_DECL vec< L, bool, Q > isinf(vec< L, T, Q > const &x)
Returns true if x holds a positive infinity or negative infinity representation in the underlying imp...
-
GLM_FUNC_DECL vec< L, T, Q > roundEven(vec< L, T, Q > const &x)
Returns a value equal to the nearest integer to x.
-
GLM_FUNC_DECL genType modf(genType x, genType &i)
Returns the fractional part of x and sets i to the integer part (as a whole number floating point val...
-
GLM_FUNC_DECL vec< L, T, Q > ceil(vec< L, T, Q > const &x)
Returns a value equal to the nearest integer that is greater than or equal to x.
-
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > min(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Returns y if y < x; otherwise, it returns x.
-
GLM_FUNC_DECL vec< L, float, Q > intBitsToFloat(vec< L, int, Q > const &v)
Returns a floating-point value corresponding to a signed integer encoding of a floating-point value...
-
GLM_FUNC_DECL vec< L, bool, Q > isnan(vec< L, T, Q > const &x)
Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of...
-
GLM_FUNC_DECL vec< L, T, Q > exp(vec< L, T, Q > const &v)
Returns the natural exponentiation of x, i.e., e^x.
-
GLM_FUNC_DECL vec< L, uint, Q > floatBitsToUint(vec< L, float, Q > const &v)
Returns a unsigned integer value representing the encoding of a floating-point value.
-
GLM_FUNC_DECL genType smoothstep(genType edge0, genType edge1, genType x)
Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation between 0 a...
-
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > abs(vec< L, T, Q > const &x)
Returns x if x >= 0; otherwise, it returns -x.
-
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > max(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Returns y if x < y; otherwise, it returns x.
-
GLM_FUNC_DECL vec< L, T, Q > step(vec< L, T, Q > const &edge, vec< L, T, Q > const &x)
Returns 0.0 if x < edge, otherwise it returns 1.0.
-
GLM_FUNC_DECL vec< L, T, Q > fract(vec< L, T, Q > const &x)
Return x - floor(x).
-
GLM_FUNC_DECL genType ldexp(genType const &x, int const &exp)
Builds a floating-point number from x and the corresponding integral exponent of two in exp...
-
GLM_FUNC_DECL vec< L, int, Q > floatBitsToInt(vec< L, float, Q > const &v)
Returns a signed integer value representing the encoding of a floating-point value.
-
GLM_FUNC_DECL genTypeT mix(genTypeT x, genTypeT y, genTypeU a)
If genTypeU is a floating scalar or vector: Returns x * (1.0 - a) + y * a, i.e., the linear blend of ...
-
GLM_FUNC_DECL genType frexp(genType x, int &exp)
Splits x into a floating-point significand in the range [0.5, 1.0) and an integral exponent of two...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00016.html b/tests/OpenGL/package/glm/doc/api/a00016.html deleted file mode 100644 index 82bb3750..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00016.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - -0.9.9 API documentation: common.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
gtx/common.hpp File Reference
-
-
- -

GLM_GTX_common -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - -

-Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > closeBounded (vec< L, T, Q > const &Value, vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)
 Returns whether vector components values are within an interval. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmod (vec< L, T, Q > const &v)
 Similar to 'mod' but with a different rounding and integer support. More...
 
template<typename genType >
GLM_FUNC_DECL genType::bool_type isdenormal (genType const &x)
 Returns true if x is a denormalized number Numbers whose absolute value is too small to be represented in the normal format are represented in an alternate, denormalized format. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > openBounded (vec< L, T, Q > const &Value, vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)
 Returns whether vector components values are within an interval. More...
 
-

Detailed Description

-

GLM_GTX_common

-
See also
Core features (dependence)
- -

Definition in file gtx/common.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00016_source.html b/tests/OpenGL/package/glm/doc/api/a00016_source.html deleted file mode 100644 index 0833436d..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00016_source.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - -0.9.9 API documentation: common.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
gtx/common.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependencies:
-
16 #include "../vec2.hpp"
-
17 #include "../vec3.hpp"
-
18 #include "../vec4.hpp"
-
19 #include "../gtc/vec1.hpp"
-
20 
-
21 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
22 # ifndef GLM_ENABLE_EXPERIMENTAL
-
23 # pragma message("GLM: GLM_GTX_common is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
24 # else
-
25 # pragma message("GLM: GLM_GTX_common extension included")
-
26 # endif
-
27 #endif
-
28 
-
29 namespace glm
-
30 {
-
33 
-
42  template<typename genType>
-
43  GLM_FUNC_DECL typename genType::bool_type isdenormal(genType const& x);
-
44 
-
50  template<length_t L, typename T, qualifier Q>
-
51  GLM_FUNC_DECL vec<L, T, Q> fmod(vec<L, T, Q> const& v);
-
52 
-
60  template <length_t L, typename T, qualifier Q>
-
61  GLM_FUNC_DECL vec<L, bool, Q> openBounded(vec<L, T, Q> const& Value, vec<L, T, Q> const& Min, vec<L, T, Q> const& Max);
-
62 
-
70  template <length_t L, typename T, qualifier Q>
-
71  GLM_FUNC_DECL vec<L, bool, Q> closeBounded(vec<L, T, Q> const& Value, vec<L, T, Q> const& Min, vec<L, T, Q> const& Max);
-
72 
-
74 }//namespace glm
-
75 
-
76 #include "common.inl"
-
GLM_FUNC_DECL vec< L, T, Q > fmod(vec< L, T, Q > const &v)
Similar to 'mod' but with a different rounding and integer support.
-
GLM_FUNC_DECL vec< L, bool, Q > openBounded(vec< L, T, Q > const &Value, vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)
Returns whether vector components values are within an interval.
-
GLM_FUNC_DECL genType::bool_type isdenormal(genType const &x)
Returns true if x is a denormalized number Numbers whose absolute value is too small to be represente...
-
Definition: common.hpp:20
-
GLM_FUNC_DECL vec< L, bool, Q > closeBounded(vec< L, T, Q > const &Value, vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)
Returns whether vector components values are within an interval.
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00017.html b/tests/OpenGL/package/glm/doc/api/a00017.html deleted file mode 100644 index f5eda22a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00017.html +++ /dev/null @@ -1,443 +0,0 @@ - - - - - - -0.9.9 API documentation: compatibility.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
compatibility.hpp File Reference
-
-
- -

GLM_GTX_compatibility -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

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

-Functions

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

Detailed Description

-

GLM_GTX_compatibility

-
See also
Core features (dependence)
- -

Definition in file compatibility.hpp.

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

GLM_GTX_component_wise -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_component_wise

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

Definition in file component_wise.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00018_source.html b/tests/OpenGL/package/glm/doc/api/a00018_source.html deleted file mode 100644 index 81414087..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00018_source.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - -0.9.9 API documentation: component_wise.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
component_wise.hpp
-
-
-Go to the documentation of this file.
1 
-
15 #pragma once
-
16 
-
17 // Dependencies
-
18 #include "../detail/setup.hpp"
-
19 #include "../detail/qualifier.hpp"
-
20 
-
21 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
22 # ifndef GLM_ENABLE_EXPERIMENTAL
-
23 # pragma message("GLM: GLM_GTX_component_wise is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
24 # else
-
25 # pragma message("GLM: GLM_GTX_component_wise extension included")
-
26 # endif
-
27 #endif
-
28 
-
29 namespace glm
-
30 {
-
33 
-
37  template<typename floatType, length_t L, typename T, qualifier Q>
-
38  GLM_FUNC_DECL vec<L, floatType, Q> compNormalize(vec<L, T, Q> const& v);
-
39 
-
43  template<length_t L, typename T, typename floatType, qualifier Q>
-
44  GLM_FUNC_DECL vec<L, T, Q> compScale(vec<L, floatType, Q> const& v);
-
45 
-
48  template<typename genType>
-
49  GLM_FUNC_DECL typename genType::value_type compAdd(genType const& v);
-
50 
-
53  template<typename genType>
-
54  GLM_FUNC_DECL typename genType::value_type compMul(genType const& v);
-
55 
-
58  template<typename genType>
-
59  GLM_FUNC_DECL typename genType::value_type compMin(genType const& v);
-
60 
-
63  template<typename genType>
-
64  GLM_FUNC_DECL typename genType::value_type compMax(genType const& v);
-
65 
-
67 }//namespace glm
-
68 
-
69 #include "component_wise.inl"
-
GLM_FUNC_DECL genType::value_type compMax(genType const &v)
Find the maximum value between single vector components.
-
GLM_FUNC_DECL genType::value_type compMul(genType const &v)
Multiply all vector components together.
-
GLM_FUNC_DECL vec< L, T, Q > compScale(vec< L, floatType, Q > const &v)
Convert a normalized float vector to an integer vector.
-
GLM_FUNC_DECL vec< L, floatType, Q > compNormalize(vec< L, T, Q > const &v)
Convert an integer vector to a normalized float vector.
-
GLM_FUNC_DECL genType::value_type compMin(genType const &v)
Find the minimum value between single vector components.
-
GLM_FUNC_DECL genType::value_type compAdd(genType const &v)
Add all vector components together.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00019_source.html b/tests/OpenGL/package/glm/doc/api/a00019_source.html deleted file mode 100644 index d2fd66f7..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00019_source.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - -0.9.9 API documentation: compute_common.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
compute_common.hpp
-
-
-
1 #pragma once
-
2 
-
3 #include "setup.hpp"
-
4 #include <limits>
-
5 
-
6 namespace glm{
-
7 namespace detail
-
8 {
-
9  template<typename genFIType, bool /*signed*/>
-
10  struct compute_abs
-
11  {};
-
12 
-
13  template<typename genFIType>
-
14  struct compute_abs<genFIType, true>
-
15  {
-
16  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static genFIType call(genFIType x)
-
17  {
-
18  GLM_STATIC_ASSERT(
-
19  std::numeric_limits<genFIType>::is_iec559 || std::numeric_limits<genFIType>::is_signed,
-
20  "'abs' only accept floating-point and integer scalar or vector inputs");
-
21 
-
22  return x >= genFIType(0) ? x : -x;
-
23  // TODO, perf comp with: *(((int *) &x) + 1) &= 0x7fffffff;
-
24  }
-
25  };
-
26 
-
27 #if GLM_COMPILER & GLM_COMPILER_CUDA
-
28  template<>
-
29  struct compute_abs<float, true>
-
30  {
-
31  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static float call(float x)
-
32  {
-
33  return fabsf(x);
-
34  }
-
35  };
-
36 #endif
-
37 
-
38  template<typename genFIType>
-
39  struct compute_abs<genFIType, false>
-
40  {
-
41  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static genFIType call(genFIType x)
-
42  {
-
43  GLM_STATIC_ASSERT(
-
44  (!std::numeric_limits<genFIType>::is_signed && std::numeric_limits<genFIType>::is_integer),
-
45  "'abs' only accept floating-point and integer scalar or vector inputs");
-
46  return x;
-
47  }
-
48  };
-
49 }//namespace detail
-
50 }//namespace glm
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00020_source.html b/tests/OpenGL/package/glm/doc/api/a00020_source.html deleted file mode 100644 index 049fde6e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00020_source.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - -0.9.9 API documentation: compute_vector_relational.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
compute_vector_relational.hpp
-
-
-
1 #pragma once
-
2 
-
3 //#include "compute_common.hpp"
-
4 #include "setup.hpp"
-
5 #include <limits>
-
6 
-
7 namespace glm{
-
8 namespace detail
-
9 {
-
10  template <typename T, bool isFloat>
-
11  struct compute_equal
-
12  {
-
13  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static bool call(T a, T b)
-
14  {
-
15  return a == b;
-
16  }
-
17  };
-
18 /*
-
19  template <typename T>
-
20  struct compute_equal<T, true>
-
21  {
-
22  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static bool call(T a, T b)
-
23  {
-
24  return detail::compute_abs<T, std::numeric_limits<T>::is_signed>::call(b - a) <= static_cast<T>(0);
-
25  //return std::memcmp(&a, &b, sizeof(T)) == 0;
-
26  }
-
27  };
-
28 */
-
29 }//namespace detail
-
30 }//namespace glm
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00021.html b/tests/OpenGL/package/glm/doc/api/a00021.html deleted file mode 100644 index 0203aaad..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00021.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - -0.9.9 API documentation: constants.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
constants.hpp File Reference
-
-
- -

GLM_GTC_constants -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTC_constants

-
See also
Core features (dependence)
- -

Definition in file constants.hpp.

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

GLM_GTX_dual_quaternion -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

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

-Functions

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

Detailed Description

-

GLM_GTX_dual_quaternion

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

Definition in file dual_quaternion.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00022_source.html b/tests/OpenGL/package/glm/doc/api/a00022_source.html deleted file mode 100644 index 6be65eec..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00022_source.html +++ /dev/null @@ -1,317 +0,0 @@ - - - - - - -0.9.9 API documentation: dual_quaternion.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
dual_quaternion.hpp
-
-
-Go to the documentation of this file.
1 
-
16 #pragma once
-
17 
-
18 // Dependency:
-
19 #include "../glm.hpp"
-
20 #include "../gtc/constants.hpp"
-
21 #include "../gtc/quaternion.hpp"
-
22 
-
23 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
24 # ifndef GLM_ENABLE_EXPERIMENTAL
-
25 # pragma message("GLM: GLM_GTX_dual_quaternion is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
26 # else
-
27 # pragma message("GLM: GLM_GTX_dual_quaternion extension included")
-
28 # endif
-
29 #endif
-
30 
-
31 namespace glm
-
32 {
-
35 
-
36  template<typename T, qualifier Q = defaultp>
-
37  struct tdualquat
-
38  {
-
39  // -- Implementation detail --
-
40 
-
41  typedef T value_type;
-
42  typedef qua<T, Q> part_type;
-
43 
-
44  // -- Data --
-
45 
-
46  qua<T, Q> real, dual;
-
47 
-
48  // -- Component accesses --
-
49 
-
50  typedef length_t length_type;
-
52  GLM_FUNC_DECL static GLM_CONSTEXPR length_type length(){return 2;}
-
53 
-
54  GLM_FUNC_DECL part_type & operator[](length_type i);
-
55  GLM_FUNC_DECL part_type const& operator[](length_type i) const;
-
56 
-
57  // -- Implicit basic constructors --
-
58 
-
59  GLM_FUNC_DECL GLM_CONSTEXPR tdualquat() GLM_DEFAULT;
-
60  GLM_FUNC_DECL GLM_CONSTEXPR tdualquat(tdualquat<T, Q> const& d) GLM_DEFAULT;
-
61  template<qualifier P>
-
62  GLM_FUNC_DECL GLM_CONSTEXPR tdualquat(tdualquat<T, P> const& d);
-
63 
-
64  // -- Explicit basic constructors --
-
65 
-
66  GLM_FUNC_DECL GLM_CONSTEXPR tdualquat(qua<T, Q> const& real);
-
67  GLM_FUNC_DECL GLM_CONSTEXPR tdualquat(qua<T, Q> const& orientation, vec<3, T, Q> const& translation);
-
68  GLM_FUNC_DECL GLM_CONSTEXPR tdualquat(qua<T, Q> const& real, qua<T, Q> const& dual);
-
69 
-
70  // -- Conversion constructors --
-
71 
-
72  template<typename U, qualifier P>
-
73  GLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT tdualquat(tdualquat<U, P> const& q);
-
74 
-
75  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR tdualquat(mat<2, 4, T, Q> const& holder_mat);
-
76  GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR tdualquat(mat<3, 4, T, Q> const& aug_mat);
-
77 
-
78  // -- Unary arithmetic operators --
-
79 
-
80  GLM_FUNC_DECL tdualquat<T, Q> & operator=(tdualquat<T, Q> const& m) GLM_DEFAULT;
-
81 
-
82  template<typename U>
-
83  GLM_FUNC_DECL tdualquat<T, Q> & operator=(tdualquat<U, Q> const& m);
-
84  template<typename U>
-
85  GLM_FUNC_DECL tdualquat<T, Q> & operator*=(U s);
-
86  template<typename U>
-
87  GLM_FUNC_DECL tdualquat<T, Q> & operator/=(U s);
-
88  };
-
89 
-
90  // -- Unary bit operators --
-
91 
-
92  template<typename T, qualifier Q>
-
93  GLM_FUNC_DECL tdualquat<T, Q> operator+(tdualquat<T, Q> const& q);
-
94 
-
95  template<typename T, qualifier Q>
-
96  GLM_FUNC_DECL tdualquat<T, Q> operator-(tdualquat<T, Q> const& q);
-
97 
-
98  // -- Binary operators --
-
99 
-
100  template<typename T, qualifier Q>
-
101  GLM_FUNC_DECL tdualquat<T, Q> operator+(tdualquat<T, Q> const& q, tdualquat<T, Q> const& p);
-
102 
-
103  template<typename T, qualifier Q>
-
104  GLM_FUNC_DECL tdualquat<T, Q> operator*(tdualquat<T, Q> const& q, tdualquat<T, Q> const& p);
-
105 
-
106  template<typename T, qualifier Q>
-
107  GLM_FUNC_DECL vec<3, T, Q> operator*(tdualquat<T, Q> const& q, vec<3, T, Q> const& v);
-
108 
-
109  template<typename T, qualifier Q>
-
110  GLM_FUNC_DECL vec<3, T, Q> operator*(vec<3, T, Q> const& v, tdualquat<T, Q> const& q);
-
111 
-
112  template<typename T, qualifier Q>
-
113  GLM_FUNC_DECL vec<4, T, Q> operator*(tdualquat<T, Q> const& q, vec<4, T, Q> const& v);
-
114 
-
115  template<typename T, qualifier Q>
-
116  GLM_FUNC_DECL vec<4, T, Q> operator*(vec<4, T, Q> const& v, tdualquat<T, Q> const& q);
-
117 
-
118  template<typename T, qualifier Q>
-
119  GLM_FUNC_DECL tdualquat<T, Q> operator*(tdualquat<T, Q> const& q, T const& s);
-
120 
-
121  template<typename T, qualifier Q>
-
122  GLM_FUNC_DECL tdualquat<T, Q> operator*(T const& s, tdualquat<T, Q> const& q);
-
123 
-
124  template<typename T, qualifier Q>
-
125  GLM_FUNC_DECL tdualquat<T, Q> operator/(tdualquat<T, Q> const& q, T const& s);
-
126 
-
127  // -- Boolean operators --
-
128 
-
129  template<typename T, qualifier Q>
-
130  GLM_FUNC_DECL bool operator==(tdualquat<T, Q> const& q1, tdualquat<T, Q> const& q2);
-
131 
-
132  template<typename T, qualifier Q>
-
133  GLM_FUNC_DECL bool operator!=(tdualquat<T, Q> const& q1, tdualquat<T, Q> const& q2);
-
134 
-
138  template <typename T, qualifier Q>
-
139  GLM_FUNC_DECL tdualquat<T, Q> dual_quat_identity();
-
140 
-
144  template<typename T, qualifier Q>
-
145  GLM_FUNC_DECL tdualquat<T, Q> normalize(tdualquat<T, Q> const& q);
-
146 
-
150  template<typename T, qualifier Q>
-
151  GLM_FUNC_DECL tdualquat<T, Q> lerp(tdualquat<T, Q> const& x, tdualquat<T, Q> const& y, T const& a);
-
152 
-
156  template<typename T, qualifier Q>
-
157  GLM_FUNC_DECL tdualquat<T, Q> inverse(tdualquat<T, Q> const& q);
-
158 
-
162  template<typename T, qualifier Q>
-
163  GLM_FUNC_DECL mat<2, 4, T, Q> mat2x4_cast(tdualquat<T, Q> const& x);
-
164 
-
168  template<typename T, qualifier Q>
-
169  GLM_FUNC_DECL mat<3, 4, T, Q> mat3x4_cast(tdualquat<T, Q> const& x);
-
170 
-
174  template<typename T, qualifier Q>
-
175  GLM_FUNC_DECL tdualquat<T, Q> dualquat_cast(mat<2, 4, T, Q> const& x);
-
176 
-
180  template<typename T, qualifier Q>
-
181  GLM_FUNC_DECL tdualquat<T, Q> dualquat_cast(mat<3, 4, T, Q> const& x);
-
182 
-
183 
-
187  typedef tdualquat<float, lowp> lowp_dualquat;
-
188 
-
192  typedef tdualquat<float, mediump> mediump_dualquat;
-
193 
-
197  typedef tdualquat<float, highp> highp_dualquat;
-
198 
-
199 
-
203  typedef tdualquat<float, lowp> lowp_fdualquat;
-
204 
-
208  typedef tdualquat<float, mediump> mediump_fdualquat;
-
209 
-
213  typedef tdualquat<float, highp> highp_fdualquat;
-
214 
-
215 
-
219  typedef tdualquat<double, lowp> lowp_ddualquat;
-
220 
-
224  typedef tdualquat<double, mediump> mediump_ddualquat;
-
225 
-
229  typedef tdualquat<double, highp> highp_ddualquat;
-
230 
-
231 
-
232 #if(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
-
233  typedef highp_fdualquat dualquat;
-
237 
-
241  typedef highp_fdualquat fdualquat;
-
242 #elif(defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
-
243  typedef highp_fdualquat dualquat;
-
244  typedef highp_fdualquat fdualquat;
-
245 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
-
246  typedef mediump_fdualquat dualquat;
-
247  typedef mediump_fdualquat fdualquat;
-
248 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && defined(GLM_PRECISION_LOWP_FLOAT))
-
249  typedef lowp_fdualquat dualquat;
-
250  typedef lowp_fdualquat fdualquat;
-
251 #else
-
252 # error "GLM error: multiple default precision requested for single-precision floating-point types"
-
253 #endif
-
254 
-
255 
-
256 #if(!defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
-
257  typedef highp_ddualquat ddualquat;
-
261 #elif(defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
-
262  typedef highp_ddualquat ddualquat;
-
263 #elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
-
264  typedef mediump_ddualquat ddualquat;
-
265 #elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && defined(GLM_PRECISION_LOWP_DOUBLE))
-
266  typedef lowp_ddualquat ddualquat;
-
267 #else
-
268 # error "GLM error: Multiple default precision requested for double-precision floating-point types"
-
269 #endif
-
270 
-
272 } //namespace glm
-
273 
-
274 #include "dual_quaternion.inl"
-
highp_ddualquat ddualquat
Dual-quaternion of default double-qualifier floating-point numbers.
-
highp_fdualquat fdualquat
Dual-quaternion of single-qualifier floating-point numbers.
-
GLM_FUNC_DECL mat< 2, 4, T, Q > mat2x4_cast(tdualquat< T, Q > const &x)
Converts a quaternion to a 2 * 4 matrix.
-
tdualquat< double, highp > highp_ddualquat
Dual-quaternion of high double-qualifier floating-point numbers.
-
GLM_FUNC_DECL tdualquat< T, Q > normalize(tdualquat< T, Q > const &q)
Returns the normalized quaternion.
-
GLM_FUNC_DECL tdualquat< T, Q > dual_quat_identity()
Creates an identity dual quaternion.
-
GLM_FUNC_DECL tdualquat< T, Q > inverse(tdualquat< T, Q > const &q)
Returns the q inverse.
-
GLM_FUNC_DECL tdualquat< T, Q > lerp(tdualquat< T, Q > const &x, tdualquat< T, Q > const &y, T const &a)
Returns the linear interpolation of two dual quaternion.
-
tdualquat< float, lowp > lowp_dualquat
Dual-quaternion of low single-qualifier floating-point numbers.
-
tdualquat< float, lowp > lowp_fdualquat
Dual-quaternion of low single-qualifier floating-point numbers.
-
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.
-
tdualquat< double, lowp > lowp_ddualquat
Dual-quaternion of low double-qualifier floating-point numbers.
-
GLM_FUNC_DECL mat< 3, 4, T, Q > mat3x4_cast(tdualquat< T, Q > const &x)
Converts a quaternion to a 3 * 4 matrix.
-
highp_fdualquat dualquat
Dual-quaternion of floating-point numbers.
-
tdualquat< float, highp > highp_fdualquat
Dual-quaternion of high single-qualifier floating-point numbers.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > orientation(vec< 3, T, Q > const &Normal, vec< 3, T, Q > const &Up)
Build a rotation matrix from a normal and a up vector.
-
tdualquat< float, mediump > mediump_dualquat
Dual-quaternion of medium single-qualifier floating-point numbers.
-
tdualquat< float, mediump > mediump_fdualquat
Dual-quaternion of medium single-qualifier floating-point numbers.
-
tdualquat< double, mediump > mediump_ddualquat
Dual-quaternion of medium double-qualifier floating-point numbers.
-
GLM_FUNC_DECL tdualquat< T, Q > dualquat_cast(mat< 3, 4, T, Q > const &x)
Converts a 3 * 4 matrix (augmented matrix rotation + translation) to a quaternion.
-
tdualquat< float, highp > highp_dualquat
Dual-quaternion of high single-qualifier floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00023.html b/tests/OpenGL/package/glm/doc/api/a00023.html deleted file mode 100644 index 61002b82..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00023.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - -0.9.9 API documentation: easing.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
easing.hpp File Reference
-
-
- -

GLM_GTX_easing -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_easing

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

Definition in file easing.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00023_source.html b/tests/OpenGL/package/glm/doc/api/a00023_source.html deleted file mode 100644 index 92e1529b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00023_source.html +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - -0.9.9 API documentation: easing.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
easing.hpp
-
-
-Go to the documentation of this file.
1 
-
17 #pragma once
-
18 
-
19 // Dependency:
-
20 #include "../glm.hpp"
-
21 #include "../gtc/constants.hpp"
-
22 #include "../detail/qualifier.hpp"
-
23 
-
24 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
25 # ifndef GLM_ENABLE_EXPERIMENTAL
-
26 # pragma message("GLM: GLM_GTX_easing is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
27 # else
-
28 # pragma message("GLM: GLM_GTX_easing extension included")
-
29 # endif
-
30 #endif
-
31 
-
32 namespace glm{
-
35 
-
38  template <typename genType>
-
39  GLM_FUNC_DECL genType linearInterpolation(genType const & a);
-
40 
-
43  template <typename genType>
-
44  GLM_FUNC_DECL genType quadraticEaseIn(genType const & a);
-
45 
-
48  template <typename genType>
-
49  GLM_FUNC_DECL genType quadraticEaseOut(genType const & a);
-
50 
-
55  template <typename genType>
-
56  GLM_FUNC_DECL genType quadraticEaseInOut(genType const & a);
-
57 
-
59  template <typename genType>
-
60  GLM_FUNC_DECL genType cubicEaseIn(genType const & a);
-
61 
-
64  template <typename genType>
-
65  GLM_FUNC_DECL genType cubicEaseOut(genType const & a);
-
66 
-
71  template <typename genType>
-
72  GLM_FUNC_DECL genType cubicEaseInOut(genType const & a);
-
73 
-
76  template <typename genType>
-
77  GLM_FUNC_DECL genType quarticEaseIn(genType const & a);
-
78 
-
81  template <typename genType>
-
82  GLM_FUNC_DECL genType quarticEaseOut(genType const & a);
-
83 
-
88  template <typename genType>
-
89  GLM_FUNC_DECL genType quarticEaseInOut(genType const & a);
-
90 
-
93  template <typename genType>
-
94  GLM_FUNC_DECL genType quinticEaseIn(genType const & a);
-
95 
-
98  template <typename genType>
-
99  GLM_FUNC_DECL genType quinticEaseOut(genType const & a);
-
100 
-
105  template <typename genType>
-
106  GLM_FUNC_DECL genType quinticEaseInOut(genType const & a);
-
107 
-
110  template <typename genType>
-
111  GLM_FUNC_DECL genType sineEaseIn(genType const & a);
-
112 
-
115  template <typename genType>
-
116  GLM_FUNC_DECL genType sineEaseOut(genType const & a);
-
117 
-
120  template <typename genType>
-
121  GLM_FUNC_DECL genType sineEaseInOut(genType const & a);
-
122 
-
125  template <typename genType>
-
126  GLM_FUNC_DECL genType circularEaseIn(genType const & a);
-
127 
-
130  template <typename genType>
-
131  GLM_FUNC_DECL genType circularEaseOut(genType const & a);
-
132 
-
137  template <typename genType>
-
138  GLM_FUNC_DECL genType circularEaseInOut(genType const & a);
-
139 
-
142  template <typename genType>
-
143  GLM_FUNC_DECL genType exponentialEaseIn(genType const & a);
-
144 
-
147  template <typename genType>
-
148  GLM_FUNC_DECL genType exponentialEaseOut(genType const & a);
-
149 
-
154  template <typename genType>
-
155  GLM_FUNC_DECL genType exponentialEaseInOut(genType const & a);
-
156 
-
159  template <typename genType>
-
160  GLM_FUNC_DECL genType elasticEaseIn(genType const & a);
-
161 
-
164  template <typename genType>
-
165  GLM_FUNC_DECL genType elasticEaseOut(genType const & a);
-
166 
-
171  template <typename genType>
-
172  GLM_FUNC_DECL genType elasticEaseInOut(genType const & a);
-
173 
-
175  template <typename genType>
-
176  GLM_FUNC_DECL genType backEaseIn(genType const& a);
-
177 
-
179  template <typename genType>
-
180  GLM_FUNC_DECL genType backEaseOut(genType const& a);
-
181 
-
183  template <typename genType>
-
184  GLM_FUNC_DECL genType backEaseInOut(genType const& a);
-
185 
-
189  template <typename genType>
-
190  GLM_FUNC_DECL genType backEaseIn(genType const& a, genType const& o);
-
191 
-
195  template <typename genType>
-
196  GLM_FUNC_DECL genType backEaseOut(genType const& a, genType const& o);
-
197 
-
201  template <typename genType>
-
202  GLM_FUNC_DECL genType backEaseInOut(genType const& a, genType const& o);
-
203 
-
205  template <typename genType>
-
206  GLM_FUNC_DECL genType bounceEaseIn(genType const& a);
-
207 
-
209  template <typename genType>
-
210  GLM_FUNC_DECL genType bounceEaseOut(genType const& a);
-
211 
-
213  template <typename genType>
-
214  GLM_FUNC_DECL genType bounceEaseInOut(genType const& a);
-
215 
-
217 }//namespace glm
-
218 
-
219 #include "easing.inl"
-
GLM_FUNC_DECL genType bounceEaseIn(genType const &a)
-
GLM_FUNC_DECL genType circularEaseInOut(genType const &a)
Modelled after the piecewise circular function y = (1/2)(1 - sqrt(1 - 4x^2)) ; [0, 0.5) y = (1/2)(sqrt(-(2x - 3)*(2x - 1)) + 1) ; [0.5, 1].
-
GLM_FUNC_DECL genType cubicEaseIn(genType const &a)
Modelled after the cubic y = x^3.
-
GLM_FUNC_DECL genType elasticEaseIn(genType const &a)
Modelled after the damped sine wave y = sin(13pi/2*x)*pow(2, 10 * (x - 1))
-
GLM_FUNC_DECL genType quinticEaseIn(genType const &a)
Modelled after the quintic y = x^5.
-
GLM_FUNC_DECL genType sineEaseInOut(genType const &a)
Modelled after half sine wave.
-
GLM_FUNC_DECL genType circularEaseOut(genType const &a)
Modelled after shifted quadrant II of unit circle.
-
GLM_FUNC_DECL genType elasticEaseOut(genType const &a)
Modelled after the damped sine wave y = sin(-13pi/2*(x + 1))*pow(2, -10x) + 1.
-
GLM_FUNC_DECL genType elasticEaseInOut(genType const &a)
Modelled after the piecewise exponentially-damped sine wave: y = (1/2)*sin(13pi/2*(2*x))*pow(2, 10 * ((2*x) - 1)) ; [0,0.5) y = (1/2)*(sin(-13pi/2*((2x-1)+1))*pow(2,-10(2*x-1)) + 2) ; [0.5, 1].
-
GLM_FUNC_DECL genType sineEaseIn(genType const &a)
Modelled after quarter-cycle of sine wave.
-
GLM_FUNC_DECL genType linearInterpolation(genType const &a)
Modelled after the line y = x.
-
GLM_FUNC_DECL genType quarticEaseIn(genType const &a)
Modelled after the quartic x^4.
-
GLM_FUNC_DECL genType quarticEaseOut(genType const &a)
Modelled after the quartic y = 1 - (x - 1)^4.
-
GLM_FUNC_DECL genType sineEaseOut(genType const &a)
Modelled after quarter-cycle of sine wave (different phase)
-
GLM_FUNC_DECL genType quadraticEaseInOut(genType const &a)
Modelled after the piecewise quadratic y = (1/2)((2x)^2) ; [0, 0.5) y = -(1/2)((2x-1)*(2x-3) - 1) ; [...
-
GLM_FUNC_DECL genType circularEaseIn(genType const &a)
Modelled after shifted quadrant IV of unit circle.
-
GLM_FUNC_DECL genType quadraticEaseOut(genType const &a)
Modelled after the parabola y = -x^2 + 2x.
-
GLM_FUNC_DECL genType exponentialEaseOut(genType const &a)
Modelled after the exponential function y = -2^(-10x) + 1.
-
GLM_FUNC_DECL genType quinticEaseOut(genType const &a)
Modelled after the quintic y = (x - 1)^5 + 1.
-
GLM_FUNC_DECL genType cubicEaseOut(genType const &a)
Modelled after the cubic y = (x - 1)^3 + 1.
-
GLM_FUNC_DECL genType exponentialEaseInOut(genType const &a)
Modelled after the piecewise exponential y = (1/2)2^(10(2x - 1)) ; [0,0.5) y = -(1/2)*2^(-10(2x - 1))...
-
GLM_FUNC_DECL genType bounceEaseOut(genType const &a)
-
GLM_FUNC_DECL genType quinticEaseInOut(genType const &a)
Modelled after the piecewise quintic y = (1/2)((2x)^5) ; [0, 0.5) y = (1/2)((2x-2)^5 + 2) ; [0...
-
GLM_FUNC_DECL genType backEaseIn(genType const &a, genType const &o)
-
GLM_FUNC_DECL genType exponentialEaseIn(genType const &a)
Modelled after the exponential function y = 2^(10(x - 1))
-
GLM_FUNC_DECL genType quadraticEaseIn(genType const &a)
Modelled after the parabola y = x^2.
-
GLM_FUNC_DECL genType quarticEaseInOut(genType const &a)
Modelled after the piecewise quartic y = (1/2)((2x)^4) ; [0, 0.5) y = -(1/2)((2x-2)^4 - 2) ; [0...
-
GLM_FUNC_DECL genType cubicEaseInOut(genType const &a)
Modelled after the piecewise cubic y = (1/2)((2x)^3) ; [0, 0.5) y = (1/2)((2x-2)^3 + 2) ; [0...
-
GLM_FUNC_DECL genType bounceEaseInOut(genType const &a)
-
GLM_FUNC_DECL genType backEaseInOut(genType const &a, genType const &o)
-
GLM_FUNC_DECL genType backEaseOut(genType const &a, genType const &o)
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00024.html b/tests/OpenGL/package/glm/doc/api/a00024.html deleted file mode 100644 index 8a392d24..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00024.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - -0.9.9 API documentation: epsilon.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
epsilon.hpp File Reference
-
-
- -

GLM_GTC_epsilon -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTC_epsilon

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

Definition in file epsilon.hpp.

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

GLM_GTX_euler_angles -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_euler_angles

-
See also
Core features (dependence)
- -

Definition in file euler_angles.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00025_source.html b/tests/OpenGL/package/glm/doc/api/a00025_source.html deleted file mode 100644 index 5c6402e7..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00025_source.html +++ /dev/null @@ -1,380 +0,0 @@ - - - - - - -0.9.9 API documentation: euler_angles.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
euler_angles.hpp
-
-
-Go to the documentation of this file.
1 
-
16 #pragma once
-
17 
-
18 // Dependency:
-
19 #include "../glm.hpp"
-
20 
-
21 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
22 # ifndef GLM_ENABLE_EXPERIMENTAL
-
23 # pragma message("GLM: GLM_GTX_euler_angles is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
24 # else
-
25 # pragma message("GLM: GLM_GTX_euler_angles extension included")
-
26 # endif
-
27 #endif
-
28 
-
29 namespace glm
-
30 {
-
33 
-
36  template<typename T>
-
37  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleX(
-
38  T const& angleX);
-
39 
-
42  template<typename T>
-
43  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleY(
-
44  T const& angleY);
-
45 
-
48  template<typename T>
-
49  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZ(
-
50  T const& angleZ);
-
51 
-
54  template <typename T>
-
55  GLM_FUNC_DECL mat<4, 4, T, defaultp> derivedEulerAngleX(
-
56  T const & angleX, T const & angularVelocityX);
-
57 
-
60  template <typename T>
-
61  GLM_FUNC_DECL mat<4, 4, T, defaultp> derivedEulerAngleY(
-
62  T const & angleY, T const & angularVelocityY);
-
63 
-
66  template <typename T>
-
67  GLM_FUNC_DECL mat<4, 4, T, defaultp> derivedEulerAngleZ(
-
68  T const & angleZ, T const & angularVelocityZ);
-
69 
-
72  template<typename T>
-
73  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXY(
-
74  T const& angleX,
-
75  T const& angleY);
-
76 
-
79  template<typename T>
-
80  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYX(
-
81  T const& angleY,
-
82  T const& angleX);
-
83 
-
86  template<typename T>
-
87  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXZ(
-
88  T const& angleX,
-
89  T const& angleZ);
-
90 
-
93  template<typename T>
-
94  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZX(
-
95  T const& angle,
-
96  T const& angleX);
-
97 
-
100  template<typename T>
-
101  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYZ(
-
102  T const& angleY,
-
103  T const& angleZ);
-
104 
-
107  template<typename T>
-
108  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZY(
-
109  T const& angleZ,
-
110  T const& angleY);
-
111 
-
114  template<typename T>
-
115  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXYZ(
-
116  T const& t1,
-
117  T const& t2,
-
118  T const& t3);
-
119 
-
122  template<typename T>
-
123  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYXZ(
-
124  T const& yaw,
-
125  T const& pitch,
-
126  T const& roll);
-
127 
-
130  template <typename T>
-
131  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXZX(
-
132  T const & t1,
-
133  T const & t2,
-
134  T const & t3);
-
135 
-
138  template <typename T>
-
139  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXYX(
-
140  T const & t1,
-
141  T const & t2,
-
142  T const & t3);
-
143 
-
146  template <typename T>
-
147  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYXY(
-
148  T const & t1,
-
149  T const & t2,
-
150  T const & t3);
-
151 
-
154  template <typename T>
-
155  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYZY(
-
156  T const & t1,
-
157  T const & t2,
-
158  T const & t3);
-
159 
-
162  template <typename T>
-
163  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZYZ(
-
164  T const & t1,
-
165  T const & t2,
-
166  T const & t3);
-
167 
-
170  template <typename T>
-
171  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZXZ(
-
172  T const & t1,
-
173  T const & t2,
-
174  T const & t3);
-
175 
-
178  template <typename T>
-
179  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXZY(
-
180  T const & t1,
-
181  T const & t2,
-
182  T const & t3);
-
183 
-
186  template <typename T>
-
187  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYZX(
-
188  T const & t1,
-
189  T const & t2,
-
190  T const & t3);
-
191 
-
194  template <typename T>
-
195  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZYX(
-
196  T const & t1,
-
197  T const & t2,
-
198  T const & t3);
-
199 
-
202  template <typename T>
-
203  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZXY(
-
204  T const & t1,
-
205  T const & t2,
-
206  T const & t3);
-
207 
-
210  template<typename T>
-
211  GLM_FUNC_DECL mat<4, 4, T, defaultp> yawPitchRoll(
-
212  T const& yaw,
-
213  T const& pitch,
-
214  T const& roll);
-
215 
-
218  template<typename T>
-
219  GLM_FUNC_DECL mat<2, 2, T, defaultp> orientate2(T const& angle);
-
220 
-
223  template<typename T>
-
224  GLM_FUNC_DECL mat<3, 3, T, defaultp> orientate3(T const& angle);
-
225 
-
228  template<typename T, qualifier Q>
-
229  GLM_FUNC_DECL mat<3, 3, T, Q> orientate3(vec<3, T, Q> const& angles);
-
230 
-
233  template<typename T, qualifier Q>
-
234  GLM_FUNC_DECL mat<4, 4, T, Q> orientate4(vec<3, T, Q> const& angles);
-
235 
-
238  template<typename T>
-
239  GLM_FUNC_DECL void extractEulerAngleXYZ(mat<4, 4, T, defaultp> const& M,
-
240  T & t1,
-
241  T & t2,
-
242  T & t3);
-
243 
-
246  template <typename T>
-
247  GLM_FUNC_DECL void extractEulerAngleYXZ(mat<4, 4, T, defaultp> const & M,
-
248  T & t1,
-
249  T & t2,
-
250  T & t3);
-
251 
-
254  template <typename T>
-
255  GLM_FUNC_DECL void extractEulerAngleXZX(mat<4, 4, T, defaultp> const & M,
-
256  T & t1,
-
257  T & t2,
-
258  T & t3);
-
259 
-
262  template <typename T>
-
263  GLM_FUNC_DECL void extractEulerAngleXYX(mat<4, 4, T, defaultp> const & M,
-
264  T & t1,
-
265  T & t2,
-
266  T & t3);
-
267 
-
270  template <typename T>
-
271  GLM_FUNC_DECL void extractEulerAngleYXY(mat<4, 4, T, defaultp> const & M,
-
272  T & t1,
-
273  T & t2,
-
274  T & t3);
-
275 
-
278  template <typename T>
-
279  GLM_FUNC_DECL void extractEulerAngleYZY(mat<4, 4, T, defaultp> const & M,
-
280  T & t1,
-
281  T & t2,
-
282  T & t3);
-
283 
-
286  template <typename T>
-
287  GLM_FUNC_DECL void extractEulerAngleZYZ(mat<4, 4, T, defaultp> const & M,
-
288  T & t1,
-
289  T & t2,
-
290  T & t3);
-
291 
-
294  template <typename T>
-
295  GLM_FUNC_DECL void extractEulerAngleZXZ(mat<4, 4, T, defaultp> const & M,
-
296  T & t1,
-
297  T & t2,
-
298  T & t3);
-
299 
-
302  template <typename T>
-
303  GLM_FUNC_DECL void extractEulerAngleXZY(mat<4, 4, T, defaultp> const & M,
-
304  T & t1,
-
305  T & t2,
-
306  T & t3);
-
307 
-
310  template <typename T>
-
311  GLM_FUNC_DECL void extractEulerAngleYZX(mat<4, 4, T, defaultp> const & M,
-
312  T & t1,
-
313  T & t2,
-
314  T & t3);
-
315 
-
318  template <typename T>
-
319  GLM_FUNC_DECL void extractEulerAngleZYX(mat<4, 4, T, defaultp> const & M,
-
320  T & t1,
-
321  T & t2,
-
322  T & t3);
-
323 
-
326  template <typename T>
-
327  GLM_FUNC_DECL void extractEulerAngleZXY(mat<4, 4, T, defaultp> const & M,
-
328  T & t1,
-
329  T & t2,
-
330  T & t3);
-
331 
-
333 }//namespace glm
-
334 
-
335 #include "euler_angles.inl"
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXY(T const &angleX, T const &angleY)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y).
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYZY(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z * Y).
-
GLM_FUNC_DECL void extractEulerAngleYXZ(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (Y * X * Z) Euler angles from the rotation matrix M.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXYZ(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * Z).
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXZY(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z * Y).
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > derivedEulerAngleZ(T const &angleZ, T const &angularVelocityZ)
Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about Z-axis.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYX(T const &angleY, T const &angleX)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X).
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleY(T const &angleY)
Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Y.
-
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
-
GLM_FUNC_DECL void extractEulerAngleZYZ(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (Z * Y * Z) Euler angles from the rotation matrix M.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > derivedEulerAngleX(T const &angleX, T const &angularVelocityX)
Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about X-axis.
-
GLM_FUNC_DECL void extractEulerAngleXYX(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (X * Y * X) Euler angles from the rotation matrix M.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZXY(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X * Y).
-
GLM_FUNC_DECL T roll(qua< T, Q > const &x)
Returns roll value of euler angles expressed in radians.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleX(T const &angleX)
Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle X.
-
GLM_FUNC_DECL mat< 2, 2, T, defaultp > orientate2(T const &angle)
Creates a 2D 2 * 2 rotation matrix from an euler angle.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXYX(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * X).
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYXZ(T const &yaw, T const &pitch, T const &roll)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
-
GLM_FUNC_DECL void extractEulerAngleXZX(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (X * Z * X) Euler angles from the rotation matrix M.
-
GLM_FUNC_DECL T yaw(qua< T, Q > const &x)
Returns yaw value of euler angles expressed in radians.
-
GLM_FUNC_DECL void extractEulerAngleYXY(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (Y * X * Y) Euler angles from the rotation matrix M.
-
GLM_FUNC_DECL void extractEulerAngleZXY(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (Z * X * Y) Euler angles from the rotation matrix M.
-
GLM_FUNC_DECL void extractEulerAngleXZY(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (X * Z * Y) Euler angles from the rotation matrix M.
-
GLM_FUNC_DECL void extractEulerAngleYZX(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (Y * Z * X) Euler angles from the rotation matrix M.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXZX(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z * X).
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZYX(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y * X).
-
GLM_FUNC_DECL mat< 4, 4, T, Q > orientate4(vec< 3, T, Q > const &angles)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
-
GLM_FUNC_DECL void extractEulerAngleZYX(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (Z * Y * X) Euler angles from the rotation matrix M.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZ(T const &angleZ)
Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Z.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYXY(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Y).
-
GLM_FUNC_DECL void extractEulerAngleYZY(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (Y * Z * Y) Euler angles from the rotation matrix M.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > yawPitchRoll(T const &yaw, T const &pitch, T const &roll)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXZ(T const &angleX, T const &angleZ)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z).
-
GLM_FUNC_DECL void extractEulerAngleXYZ(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (X * Y * Z) Euler angles from the rotation matrix M.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZXZ(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X * Z).
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYZX(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z * X).
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZY(T const &angleZ, T const &angleY)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y).
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZYZ(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y * Z).
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYZ(T const &angleY, T const &angleZ)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z).
-
GLM_FUNC_DECL mat< 3, 3, T, Q > orientate3(vec< 3, T, Q > const &angles)
Creates a 3D 3 * 3 rotation matrix from euler angles (Y * X * Z).
-
GLM_FUNC_DECL void extractEulerAngleZXZ(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (Z * X * Z) Euler angles from the rotation matrix M.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > derivedEulerAngleY(T const &angleY, T const &angularVelocityY)
Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about Y-axis.
-
GLM_FUNC_DECL T pitch(qua< T, Q > const &x)
Returns pitch value of euler angles expressed in radians.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZX(T const &angle, T const &angleX)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X).
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00026.html b/tests/OpenGL/package/glm/doc/api/a00026.html deleted file mode 100644 index 552b6ed2..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00026.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - -0.9.9 API documentation: exponential.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
exponential.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00026_source.html b/tests/OpenGL/package/glm/doc/api/a00026_source.html deleted file mode 100644 index 56d929d8..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00026_source.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - -0.9.9 API documentation: exponential.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
exponential.hpp
-
-
-Go to the documentation of this file.
1 
-
15 #pragma once
-
16 
-
17 #include "detail/type_vec1.hpp"
-
18 #include "detail/type_vec2.hpp"
-
19 #include "detail/type_vec3.hpp"
-
20 #include "detail/type_vec4.hpp"
-
21 #include <cmath>
-
22 
-
23 namespace glm
-
24 {
-
27 
-
35  template<length_t L, typename T, qualifier Q>
-
36  GLM_FUNC_DECL vec<L, T, Q> pow(vec<L, T, Q> const& base, vec<L, T, Q> const& exponent);
-
37 
-
46  template<length_t L, typename T, qualifier Q>
-
47  GLM_FUNC_DECL vec<L, T, Q> exp(vec<L, T, Q> const& v);
-
48 
-
59  template<length_t L, typename T, qualifier Q>
-
60  GLM_FUNC_DECL vec<L, T, Q> log(vec<L, T, Q> const& v);
-
61 
-
70  template<length_t L, typename T, qualifier Q>
-
71  GLM_FUNC_DECL vec<L, T, Q> exp2(vec<L, T, Q> const& v);
-
72 
-
82  template<length_t L, typename T, qualifier Q>
-
83  GLM_FUNC_DECL vec<L, T, Q> log2(vec<L, T, Q> const& v);
-
84 
-
93  template<length_t L, typename T, qualifier Q>
-
94  GLM_FUNC_DECL vec<L, T, Q> sqrt(vec<L, T, Q> const& v);
-
95 
-
104  template<length_t L, typename T, qualifier Q>
-
105  GLM_FUNC_DECL vec<L, T, Q> inversesqrt(vec<L, T, Q> const& v);
-
106 
-
108 }//namespace glm
-
109 
-
110 #include "detail/func_exponential.inl"
-
Core features
-
GLM_FUNC_DECL vec< L, T, Q > sqrt(vec< L, T, Q > const &v)
Returns the positive square root of v.
-
GLM_FUNC_DECL vec< L, T, Q > exp2(vec< L, T, Q > const &v)
Returns 2 raised to the v power.
-
GLM_FUNC_DECL vec< L, T, Q > inversesqrt(vec< L, T, Q > const &v)
Returns the reciprocal of the positive square root of v.
-
Core features
-
Core features
-
GLM_FUNC_DECL vec< L, T, Q > pow(vec< L, T, Q > const &base, vec< L, T, Q > const &exponent)
Returns 'base' raised to the power 'exponent'.
-
GLM_FUNC_DECL vec< L, T, Q > exp(vec< L, T, Q > const &v)
Returns the natural exponentiation of x, i.e., e^x.
-
GLM_FUNC_DECL vec< L, T, Q > log(vec< L, T, Q > const &v)
Returns the natural logarithm of v, i.e., returns the value y which satisfies the equation x = e^y...
-
Core features
-
GLM_FUNC_DECL vec< L, T, Q > log2(vec< L, T, Q > const &v)
Returns the base 2 log of x, i.e., returns the value y, which satisfies the equation x = 2 ^ y...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00027.html b/tests/OpenGL/package/glm/doc/api/a00027.html deleted file mode 100644 index d70d9442..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00027.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - -0.9.9 API documentation: ext.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
ext.hpp File Reference
-
-
- -

Core features (Dependence) -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features (Dependence)

- -

Definition in file ext.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00027_source.html b/tests/OpenGL/package/glm/doc/api/a00027_source.html deleted file mode 100644 index 4142831a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00027_source.html +++ /dev/null @@ -1,449 +0,0 @@ - - - - - - -0.9.9 API documentation: ext.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
ext.hpp
-
-
-Go to the documentation of this file.
1 
-
5 #include "detail/setup.hpp"
-
6 
-
7 #pragma once
-
8 
-
9 #include "glm.hpp"
-
10 
-
11 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_MESSAGE_EXT_INCLUDED_DISPLAYED)
-
12 # define GLM_MESSAGE_EXT_INCLUDED_DISPLAYED
-
13 # pragma message("GLM: All extensions included (not recommended)")
-
14 #endif//GLM_MESSAGES
-
15 
- - - - - - - - - - - - - - - - - - -
34 
- - - - - - - - - - - - - -
48 #include "./ext/matrix_float4x2_precision.hpp"
- - - - -
53 
- -
55 
- - - - - - -
62 
- - - -
66 
-
67 #include "./ext/vector_bool1.hpp"
- -
69 #include "./ext/vector_bool2.hpp"
- -
71 #include "./ext/vector_bool3.hpp"
- -
73 #include "./ext/vector_bool4.hpp"
- -
75 
-
76 #include "./ext/vector_double1.hpp"
- -
78 #include "./ext/vector_double2.hpp"
- -
80 #include "./ext/vector_double3.hpp"
- -
82 #include "./ext/vector_double4.hpp"
- -
84 
-
85 #include "./ext/vector_float1.hpp"
- -
87 #include "./ext/vector_float2.hpp"
- -
89 #include "./ext/vector_float3.hpp"
- -
91 #include "./ext/vector_float4.hpp"
- -
93 
-
94 #include "./ext/vector_int1.hpp"
- -
96 #include "./ext/vector_int2.hpp"
- -
98 #include "./ext/vector_int3.hpp"
- -
100 #include "./ext/vector_int4.hpp"
- -
102 
- -
104 
-
105 #include "./ext/vector_uint1.hpp"
- -
107 #include "./ext/vector_uint2.hpp"
- -
109 #include "./ext/vector_uint3.hpp"
- -
111 #include "./ext/vector_uint4.hpp"
- -
113 
-
114 #include "./gtc/bitfield.hpp"
-
115 #include "./gtc/color_space.hpp"
-
116 #include "./gtc/constants.hpp"
-
117 #include "./gtc/epsilon.hpp"
-
118 #include "./gtc/integer.hpp"
-
119 #include "./gtc/matrix_access.hpp"
-
120 #include "./gtc/matrix_integer.hpp"
-
121 #include "./gtc/matrix_inverse.hpp"
- -
123 #include "./gtc/noise.hpp"
-
124 #include "./gtc/packing.hpp"
-
125 #include "./gtc/quaternion.hpp"
-
126 #include "./gtc/random.hpp"
-
127 #include "./gtc/reciprocal.hpp"
-
128 #include "./gtc/round.hpp"
-
129 #include "./gtc/type_precision.hpp"
-
130 #include "./gtc/type_ptr.hpp"
-
131 #include "./gtc/ulp.hpp"
-
132 #include "./gtc/vec1.hpp"
-
133 #if GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE
-
134 # include "./gtc/type_aligned.hpp"
-
135 #endif
-
136 
-
137 #ifdef GLM_ENABLE_EXPERIMENTAL
- -
139 #include "./gtx/bit.hpp"
-
140 #include "./gtx/closest_point.hpp"
-
141 #include "./gtx/color_encoding.hpp"
-
142 #include "./gtx/color_space.hpp"
- -
144 #include "./gtx/compatibility.hpp"
-
145 #include "./gtx/component_wise.hpp"
-
146 #include "./gtx/dual_quaternion.hpp"
-
147 #include "./gtx/euler_angles.hpp"
-
148 #include "./gtx/extend.hpp"
- - - - -
153 #include "./gtx/functions.hpp"
-
154 #include "./gtx/gradient_paint.hpp"
- -
156 #include "./gtx/integer.hpp"
-
157 #include "./gtx/intersect.hpp"
-
158 #include "./gtx/log_base.hpp"
- - - - -
163 #include "./gtx/matrix_query.hpp"
-
164 #include "./gtx/mixed_product.hpp"
-
165 #include "./gtx/norm.hpp"
-
166 #include "./gtx/normal.hpp"
-
167 #include "./gtx/normalize_dot.hpp"
- -
169 #include "./gtx/optimum_pow.hpp"
-
170 #include "./gtx/orthonormalize.hpp"
-
171 #include "./gtx/perpendicular.hpp"
- -
173 #include "./gtx/projection.hpp"
-
174 #include "./gtx/quaternion.hpp"
-
175 #include "./gtx/raw_data.hpp"
-
176 #include "./gtx/rotate_vector.hpp"
-
177 #include "./gtx/spline.hpp"
-
178 #include "./gtx/std_based_type.hpp"
-
179 #if !(GLM_COMPILER & GLM_COMPILER_CUDA)
-
180 # include "./gtx/string_cast.hpp"
-
181 #endif
-
182 #include "./gtx/transform.hpp"
-
183 #include "./gtx/transform2.hpp"
-
184 #include "./gtx/vec_swizzle.hpp"
-
185 #include "./gtx/vector_angle.hpp"
-
186 #include "./gtx/vector_query.hpp"
-
187 #include "./gtx/wrap.hpp"
-
188 
-
189 #if GLM_HAS_TEMPLATE_ALIASES
- -
191 #endif
-
192 
-
193 #if GLM_HAS_RANGE_FOR
-
194 # include "./gtx/range.hpp"
-
195 #endif
-
196 #endif//GLM_ENABLE_EXPERIMENTAL
-
GLM_GTC_epsilon
-
GLM_EXT_vector_relational
-
GLM_GTX_dual_quaternion
-
GLM_GTX_polar_coordinates
-
GLM_GTX_closest_point
-
Core features
- - -
GLM_GTX_handed_coordinate_space
-
Core features
-
GLM_GTX_raw_data
- -
Core features
-
GLM_GTX_string_cast
-
GLM_EXT_vector_uint1_precision
-
GLM_GTX_intersect
-
GLM_EXT_vector_int1_precision
-
GLM_GTX_normalize_dot
-
GLM_GTX_integer
-
GLM_GTX_rotate_vector
- -
GLM_GTX_matrix_major_storage
-
Core features
- -
Core features
-
GLM_GTX_matrix_interpolation
-
GLM_GTX_vector_angle
-
GLM_GTX_transform2
- - -
GLM_GTX_wrap
-
GLM_GTX_vector_query
-
GLM_GTX_projection
-
GLM_GTC_constants
- -
GLM_GTX_perpendicular
-
Core features
-
Core features
-
Core features
- -
Core features
-
GLM_GTX_std_based_type
-
Core features
-
GLM_GTX_component_wise
-
GLM_GTC_ulp
-
GLM_GTC_round
-
Core features
-
GLM_GTX_orthonormalize
- -
GLM_GTC_integer
-
GLM_EXT_vector_float1
- -
GLM_GTX_matrix_query
-
GLM_EXT_vector_double1_precision
- -
GLM_GTX_vec_swizzle
-
Core features
-
GLM_GTC_type_ptr
-
Core features
-
GLM_GTX_gradient_paint
-
GLM_GTC_bitfield
-
GLM_GTX_range
- -
Core features
-
GLM_GTC_matrix_transform
-
GLM_GTX_matrix_cross_product
-
GLM_EXT_vector_bool1_precision
-
GLM_GTC_type_aligned
-
GLM_EXT_vector_uint1
-
GLM_GTX_quaternion
-
GLM_GTX_color_space_YCoCg
-
GLM_EXT_vector_int1
-
GLM_GTX_normal
-
GLM_GTC_color_space
-
Core features
-
GLM_GTC_noise
-
Core features
-
Core features
- -
GLM_GTC_matrix_integer
-
GLM_GTC_matrix_access
-
GLM_GTX_extented_min_max
-
GLM_GTC_vec1
-
GLM_GTX_transform
- -
GLM_EXT_quaternion_double_precision
-
GLM_GTX_log_base
-
GLM_GTX_compatibility
-
GLM_EXT_scalar_int_sized
- -
GLM_GTX_optimum_pow
-
GLM_GTX_functions
-
GLM_EXT_quaternion_relational
- -
GLM_GTX_fast_square_root
-
Core features
-
GLM_EXT_quaternion_float_precision
-
Core features
- -
GLM_EXT_scalar_relational
- -
Core features
-
GLM_GTC_random
-
GLM_GTX_euler_angles
-
GLM_GTX_spline
-
GLM_GTC_quaternion
-
GLM_GTX_color_space
- -
GLM_GTX_norm
-
GLM_GTX_color_encoding
-
GLM_GTC_reciprocal
- -
Core features
-
GLM_GTX_mixed_producte
-
Core features
-
GLM_EXT_vector_double1
-
Core features
- -
GLM_GTC_type_precision
-
GLM_EXT_scalar_constants
- -
GLM_GTX_fast_trigonometry
-
GLM_GTX_bit
- -
GLM_EXT_quaternion_geometric
-
Core features
-
GLM_GTX_fast_exponential
- -
GLM_EXT_quaternion_float
- -
GLM_EXT_vector_bool1
-
Core features
-
Core features
-
Core features
- -
Core features
-
GLM_GTX_extend
- -
Core features
-
GLM_EXT_quaternion_double
- -
Core features
-
GLM_GTX_number_precision
-
Core features
- -
GLM_GTX_matrix_operation
-
Core features
- -
GLM_GTC_matrix_inverse
-
Core features
-
Experimental extensions
- -
GLM_GTC_packing
-
Core features
-
GLM_GTX_associated_min_max
-
GLM_EXT_vector_float1_precision
-
GLM_EXT_matrix_relational
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00028.html b/tests/OpenGL/package/glm/doc/api/a00028.html deleted file mode 100644 index 99d4646d..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00028.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - -0.9.9 API documentation: extend.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
extend.hpp File Reference
-
-
- -

GLM_GTX_extend -More...

- -

Go to the source code of this file.

- - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_extend

-
See also
Core features (dependence)
- -

Definition in file extend.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00028_source.html b/tests/OpenGL/package/glm/doc/api/a00028_source.html deleted file mode 100644 index 71f6bf9a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00028_source.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - -0.9.9 API documentation: extend.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
extend.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../glm.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # ifndef GLM_ENABLE_EXPERIMENTAL
-
20 # pragma message("GLM: GLM_GTX_extend is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
21 # else
-
22 # pragma message("GLM: GLM_GTX_extend extension included")
-
23 # endif
-
24 #endif
-
25 
-
26 namespace glm
-
27 {
-
30 
-
33  template<typename genType>
-
34  GLM_FUNC_DECL genType extend(
-
35  genType const& Origin,
-
36  genType const& Source,
-
37  typename genType::value_type const Length);
-
38 
-
40 }//namespace glm
-
41 
-
42 #include "extend.inl"
-
GLM_FUNC_DECL genType extend(genType const &Origin, genType const &Source, typename genType::value_type const Length)
Extends of Length the Origin position using the (Source - Origin) direction.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00029.html b/tests/OpenGL/package/glm/doc/api/a00029.html deleted file mode 100644 index 892f596a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00029.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - -0.9.9 API documentation: extended_min_max.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
extended_min_max.hpp File Reference
-
-
- -

GLM_GTX_extented_min_max -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename genType >
GLM_FUNC_DECL genType fclamp (genType x, genType minVal, genType maxVal)
 Returns min(max(x, minVal), maxVal) for each component in x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fclamp (vec< L, T, Q > const &x, T minVal, T maxVal)
 Returns min(max(x, minVal), maxVal) for each component in x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fclamp (vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)
 Returns min(max(x, minVal), maxVal) for each component in x. More...
 
template<typename genType >
GLM_FUNC_DECL genType fmax (genType x, genType y)
 Returns y if x < y; otherwise, it returns x. More...
 
template<typename genType >
GLM_FUNC_DECL genType fmin (genType x, genType y)
 Returns y if y < x; otherwise, it returns x. More...
 
template<typename T >
GLM_FUNC_DECL T max (T const &x, T const &y, T const &z)
 Return the maximum component-wise values of 3 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)
 Return the maximum component-wise values of 3 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, C< T > const &y, C< T > const &z)
 Return the maximum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T max (T const &x, T const &y, T const &z, T const &w)
 Return the maximum component-wise values of 4 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)
 Return the maximum component-wise values of 4 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
 Return the maximum component-wise values of 4 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T min (T const &x, T const &y, T const &z)
 Return the minimum component-wise values of 3 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)
 Return the minimum component-wise values of 3 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, C< T > const &y, C< T > const &z)
 Return the minimum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T min (T const &x, T const &y, T const &z, T const &w)
 Return the minimum component-wise values of 4 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)
 Return the minimum component-wise values of 4 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
 Return the minimum component-wise values of 4 inputs. More...
 
-

Detailed Description

-

GLM_GTX_extented_min_max

-
See also
Core features (dependence)
- -

Definition in file extended_min_max.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00029_source.html b/tests/OpenGL/package/glm/doc/api/a00029_source.html deleted file mode 100644 index 2cb43baf..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00029_source.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - -0.9.9 API documentation: extended_min_max.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
extended_min_max.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../glm.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # ifndef GLM_ENABLE_EXPERIMENTAL
-
20 # pragma message("GLM: GLM_GTX_extented_min_max is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
21 # else
-
22 # pragma message("GLM: GLM_GTX_extented_min_max extension included")
-
23 # endif
-
24 #endif
-
25 
-
26 namespace glm
-
27 {
-
30 
-
33  template<typename T>
-
34  GLM_FUNC_DECL T min(
-
35  T const& x,
-
36  T const& y,
-
37  T const& z);
-
38 
-
41  template<typename T, template<typename> class C>
-
42  GLM_FUNC_DECL C<T> min(
-
43  C<T> const& x,
-
44  typename C<T>::T const& y,
-
45  typename C<T>::T const& z);
-
46 
-
49  template<typename T, template<typename> class C>
-
50  GLM_FUNC_DECL C<T> min(
-
51  C<T> const& x,
-
52  C<T> const& y,
-
53  C<T> const& z);
-
54 
-
57  template<typename T>
-
58  GLM_FUNC_DECL T min(
-
59  T const& x,
-
60  T const& y,
-
61  T const& z,
-
62  T const& w);
-
63 
-
66  template<typename T, template<typename> class C>
-
67  GLM_FUNC_DECL C<T> min(
-
68  C<T> const& x,
-
69  typename C<T>::T const& y,
-
70  typename C<T>::T const& z,
-
71  typename C<T>::T const& w);
-
72 
-
75  template<typename T, template<typename> class C>
-
76  GLM_FUNC_DECL C<T> min(
-
77  C<T> const& x,
-
78  C<T> const& y,
-
79  C<T> const& z,
-
80  C<T> const& w);
-
81 
-
84  template<typename T>
-
85  GLM_FUNC_DECL T max(
-
86  T const& x,
-
87  T const& y,
-
88  T const& z);
-
89 
-
92  template<typename T, template<typename> class C>
-
93  GLM_FUNC_DECL C<T> max(
-
94  C<T> const& x,
-
95  typename C<T>::T const& y,
-
96  typename C<T>::T const& z);
-
97 
-
100  template<typename T, template<typename> class C>
-
101  GLM_FUNC_DECL C<T> max(
-
102  C<T> const& x,
-
103  C<T> const& y,
-
104  C<T> const& z);
-
105 
-
108  template<typename T>
-
109  GLM_FUNC_DECL T max(
-
110  T const& x,
-
111  T const& y,
-
112  T const& z,
-
113  T const& w);
-
114 
-
117  template<typename T, template<typename> class C>
-
118  GLM_FUNC_DECL C<T> max(
-
119  C<T> const& x,
-
120  typename C<T>::T const& y,
-
121  typename C<T>::T const& z,
-
122  typename C<T>::T const& w);
-
123 
-
126  template<typename T, template<typename> class C>
-
127  GLM_FUNC_DECL C<T> max(
-
128  C<T> const& x,
-
129  C<T> const& y,
-
130  C<T> const& z,
-
131  C<T> const& w);
-
132 
-
138  template<typename genType>
-
139  GLM_FUNC_DECL genType fmin(genType x, genType y);
-
140 
-
147  template<typename genType>
-
148  GLM_FUNC_DECL genType fmax(genType x, genType y);
-
149 
-
155  template<typename genType>
-
156  GLM_FUNC_DECL genType fclamp(genType x, genType minVal, genType maxVal);
-
157 
-
165  template<length_t L, typename T, qualifier Q>
-
166  GLM_FUNC_DECL vec<L, T, Q> fclamp(vec<L, T, Q> const& x, T minVal, T maxVal);
-
167 
-
175  template<length_t L, typename T, qualifier Q>
-
176  GLM_FUNC_DECL vec<L, T, Q> fclamp(vec<L, T, Q> const& x, vec<L, T, Q> const& minVal, vec<L, T, Q> const& maxVal);
-
177 
-
178 
-
180 }//namespace glm
-
181 
-
182 #include "extended_min_max.inl"
-
GLM_FUNC_DECL vec< L, T, Q > fclamp(vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)
Returns min(max(x, minVal), maxVal) for each component in x.
-
GLM_FUNC_DECL genType fmin(genType x, genType y)
Returns y if y < x; otherwise, it returns x.
-
GLM_FUNC_DECL genType fmax(genType x, genType y)
Returns y if x < y; otherwise, it returns x.
-
GLM_FUNC_DECL C< T > max(C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
Return the maximum component-wise values of 4 inputs.
-
GLM_FUNC_DECL C< T > min(C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
Return the minimum component-wise values of 4 inputs.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00030.html b/tests/OpenGL/package/glm/doc/api/a00030.html deleted file mode 100644 index 5f1b5b83..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00030.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - -0.9.9 API documentation: exterior_product.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
exterior_product.hpp File Reference
-
-
- -

GLM_GTX_exterior_product -More...

- -

Go to the source code of this file.

- - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_exterior_product

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

Definition in file exterior_product.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00030_source.html b/tests/OpenGL/package/glm/doc/api/a00030_source.html deleted file mode 100644 index 9bdf622e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00030_source.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -0.9.9 API documentation: exterior_product.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
exterior_product.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependencies
-
17 #include "../detail/setup.hpp"
-
18 #include "../detail/qualifier.hpp"
-
19 
-
20 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
21 # ifndef GLM_ENABLE_EXPERIMENTAL
-
22 # pragma message("GLM: GLM_GTX_exterior_product is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
23 # else
-
24 # pragma message("GLM: GLM_GTX_exterior_product extension included")
-
25 # endif
-
26 #endif
-
27 
-
28 namespace glm
-
29 {
-
32 
-
39  template<typename T, qualifier Q>
-
40  GLM_FUNC_DECL T cross(vec<2, T, Q> const& v, vec<2, T, Q> const& u);
-
41 
-
43 } //namespace glm
-
44 
-
45 #include "exterior_product.inl"
-
GLM_FUNC_DECL T cross(vec< 2, T, Q > const &v, vec< 2, T, Q > const &u)
Returns the cross product of x and y.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00031.html b/tests/OpenGL/package/glm/doc/api/a00031.html deleted file mode 100644 index 40ce828f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00031.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - -0.9.9 API documentation: fast_exponential.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
fast_exponential.hpp File Reference
-
-
- -

GLM_GTX_fast_exponential -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_fast_exponential

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

Definition in file fast_exponential.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00031_source.html b/tests/OpenGL/package/glm/doc/api/a00031_source.html deleted file mode 100644 index 40945b5b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00031_source.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -0.9.9 API documentation: fast_exponential.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
fast_exponential.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../glm.hpp"
-
18 
-
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
20 # ifndef GLM_ENABLE_EXPERIMENTAL
-
21 # pragma message("GLM: GLM_GTX_fast_exponential is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
22 # else
-
23 # pragma message("GLM: GLM_GTX_fast_exponential extension included")
-
24 # endif
-
25 #endif
-
26 
-
27 namespace glm
-
28 {
-
31 
-
34  template<typename genType>
-
35  GLM_FUNC_DECL genType fastPow(genType x, genType y);
-
36 
-
39  template<length_t L, typename T, qualifier Q>
-
40  GLM_FUNC_DECL vec<L, T, Q> fastPow(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
-
41 
-
44  template<typename genTypeT, typename genTypeU>
-
45  GLM_FUNC_DECL genTypeT fastPow(genTypeT x, genTypeU y);
-
46 
-
49  template<length_t L, typename T, qualifier Q>
-
50  GLM_FUNC_DECL vec<L, T, Q> fastPow(vec<L, T, Q> const& x);
-
51 
-
54  template<typename T>
-
55  GLM_FUNC_DECL T fastExp(T x);
-
56 
-
59  template<length_t L, typename T, qualifier Q>
-
60  GLM_FUNC_DECL vec<L, T, Q> fastExp(vec<L, T, Q> const& x);
-
61 
-
64  template<typename T>
-
65  GLM_FUNC_DECL T fastLog(T x);
-
66 
-
69  template<length_t L, typename T, qualifier Q>
-
70  GLM_FUNC_DECL vec<L, T, Q> fastLog(vec<L, T, Q> const& x);
-
71 
-
74  template<typename T>
-
75  GLM_FUNC_DECL T fastExp2(T x);
-
76 
-
79  template<length_t L, typename T, qualifier Q>
-
80  GLM_FUNC_DECL vec<L, T, Q> fastExp2(vec<L, T, Q> const& x);
-
81 
-
84  template<typename T>
-
85  GLM_FUNC_DECL T fastLog2(T x);
-
86 
-
89  template<length_t L, typename T, qualifier Q>
-
90  GLM_FUNC_DECL vec<L, T, Q> fastLog2(vec<L, T, Q> const& x);
-
91 
-
93 }//namespace glm
-
94 
-
95 #include "fast_exponential.inl"
-
GLM_FUNC_DECL vec< L, T, Q > fastLog(vec< L, T, Q > const &x)
Faster than the common exp2 function but less accurate.
-
GLM_FUNC_DECL vec< L, T, Q > fastPow(vec< L, T, Q > const &x)
Faster than the common pow function but less accurate.
-
GLM_FUNC_DECL vec< L, T, Q > fastLog2(vec< L, T, Q > const &x)
Faster than the common log2 function but less accurate.
-
GLM_FUNC_DECL vec< L, T, Q > fastExp2(vec< L, T, Q > const &x)
Faster than the common exp2 function but less accurate.
-
GLM_FUNC_DECL vec< L, T, Q > fastExp(vec< L, T, Q > const &x)
Faster than the common exp function but less accurate.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00032.html b/tests/OpenGL/package/glm/doc/api/a00032.html deleted file mode 100644 index 7ba4fe4f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00032.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - -0.9.9 API documentation: fast_square_root.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
fast_square_root.hpp File Reference
-
-
- -

GLM_GTX_fast_square_root -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_fast_square_root

-
See also
Core features (dependence)
- -

Definition in file fast_square_root.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00032_source.html b/tests/OpenGL/package/glm/doc/api/a00032_source.html deleted file mode 100644 index 36328925..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00032_source.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - -0.9.9 API documentation: fast_square_root.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
fast_square_root.hpp
-
-
-Go to the documentation of this file.
1 
-
15 #pragma once
-
16 
-
17 // Dependency:
-
18 #include "../common.hpp"
-
19 #include "../exponential.hpp"
-
20 #include "../geometric.hpp"
-
21 
-
22 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
23 # ifndef GLM_ENABLE_EXPERIMENTAL
-
24 # pragma message("GLM: GLM_GTX_fast_square_root is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
25 # else
-
26 # pragma message("GLM: GLM_GTX_fast_square_root extension included")
-
27 # endif
-
28 #endif
-
29 
-
30 namespace glm
-
31 {
-
34 
-
38  template<typename genType>
-
39  GLM_FUNC_DECL genType fastSqrt(genType x);
-
40 
-
44  template<length_t L, typename T, qualifier Q>
-
45  GLM_FUNC_DECL vec<L, T, Q> fastSqrt(vec<L, T, Q> const& x);
-
46 
-
50  template<typename genType>
-
51  GLM_FUNC_DECL genType fastInverseSqrt(genType x);
-
52 
-
56  template<length_t L, typename T, qualifier Q>
-
57  GLM_FUNC_DECL vec<L, T, Q> fastInverseSqrt(vec<L, T, Q> const& x);
-
58 
-
62  template<typename genType>
-
63  GLM_FUNC_DECL genType fastLength(genType x);
-
64 
-
68  template<length_t L, typename T, qualifier Q>
-
69  GLM_FUNC_DECL T fastLength(vec<L, T, Q> const& x);
-
70 
-
74  template<typename genType>
-
75  GLM_FUNC_DECL genType fastDistance(genType x, genType y);
-
76 
-
80  template<length_t L, typename T, qualifier Q>
-
81  GLM_FUNC_DECL T fastDistance(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
-
82 
-
86  template<typename genType>
-
87  GLM_FUNC_DECL genType fastNormalize(genType const& x);
-
88 
-
90 }// namespace glm
-
91 
-
92 #include "fast_square_root.inl"
-
GLM_FUNC_DECL T fastLength(vec< L, T, Q > const &x)
Faster than the common length function but less accurate.
-
GLM_FUNC_DECL T fastDistance(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Faster than the common distance function but less accurate.
-
GLM_FUNC_DECL vec< L, T, Q > fastSqrt(vec< L, T, Q > const &x)
Faster than the common sqrt function but less accurate.
-
GLM_FUNC_DECL genType fastNormalize(genType const &x)
Faster than the common normalize function but less accurate.
-
GLM_FUNC_DECL vec< L, T, Q > fastInverseSqrt(vec< L, T, Q > const &x)
Faster than the common inversesqrt function but less accurate.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00033.html b/tests/OpenGL/package/glm/doc/api/a00033.html deleted file mode 100644 index 3b496870..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00033.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - -0.9.9 API documentation: fast_trigonometry.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
fast_trigonometry.hpp File Reference
-
-
- -

GLM_GTX_fast_trigonometry -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_fast_trigonometry

-
See also
Core features (dependence)
- -

Definition in file fast_trigonometry.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00033_source.html b/tests/OpenGL/package/glm/doc/api/a00033_source.html deleted file mode 100644 index c02ae841..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00033_source.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - -0.9.9 API documentation: fast_trigonometry.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
fast_trigonometry.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../gtc/constants.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # ifndef GLM_ENABLE_EXPERIMENTAL
-
20 # pragma message("GLM: GLM_GTX_fast_trigonometry is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
21 # else
-
22 # pragma message("GLM: GLM_GTX_fast_trigonometry extension included")
-
23 # endif
-
24 #endif
-
25 
-
26 namespace glm
-
27 {
-
30 
-
33  template<typename T>
-
34  GLM_FUNC_DECL T wrapAngle(T angle);
-
35 
-
38  template<typename T>
-
39  GLM_FUNC_DECL T fastSin(T angle);
-
40 
-
43  template<typename T>
-
44  GLM_FUNC_DECL T fastCos(T angle);
-
45 
-
49  template<typename T>
-
50  GLM_FUNC_DECL T fastTan(T angle);
-
51 
-
55  template<typename T>
-
56  GLM_FUNC_DECL T fastAsin(T angle);
-
57 
-
61  template<typename T>
-
62  GLM_FUNC_DECL T fastAcos(T angle);
-
63 
-
67  template<typename T>
-
68  GLM_FUNC_DECL T fastAtan(T y, T x);
-
69 
-
73  template<typename T>
-
74  GLM_FUNC_DECL T fastAtan(T angle);
-
75 
-
77 }//namespace glm
-
78 
-
79 #include "fast_trigonometry.inl"
-
GLM_FUNC_DECL T fastAsin(T angle)
Faster than the common asin function but less accurate.
-
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
-
GLM_FUNC_DECL T fastAcos(T angle)
Faster than the common acos function but less accurate.
-
GLM_FUNC_DECL T fastTan(T angle)
Faster than the common tan function but less accurate.
-
GLM_FUNC_DECL T fastCos(T angle)
Faster than the common cos function but less accurate.
-
GLM_FUNC_DECL T fastAtan(T angle)
Faster than the common atan function but less accurate.
-
GLM_FUNC_DECL T fastSin(T angle)
Faster than the common sin function but less accurate.
-
GLM_FUNC_DECL T wrapAngle(T angle)
Wrap an angle to [0 2pi[ From GLM_GTX_fast_trigonometry extension.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00034.html b/tests/OpenGL/package/glm/doc/api/a00034.html deleted file mode 100644 index 00e437cd..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00034.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -0.9.9 API documentation: functions.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
functions.hpp File Reference
-
-
- -

GLM_GTX_functions -More...

- -

Go to the source code of this file.

- - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_functions

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

Definition in file functions.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00034_source.html b/tests/OpenGL/package/glm/doc/api/a00034_source.html deleted file mode 100644 index 2d206e04..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00034_source.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - -0.9.9 API documentation: functions.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
functions.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependencies
-
17 #include "../detail/setup.hpp"
-
18 #include "../detail/qualifier.hpp"
-
19 #include "../detail/type_vec2.hpp"
-
20 
-
21 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
22 # ifndef GLM_ENABLE_EXPERIMENTAL
-
23 # pragma message("GLM: GLM_GTX_functions is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
24 # else
-
25 # pragma message("GLM: GLM_GTX_functions extension included")
-
26 # endif
-
27 #endif
-
28 
-
29 namespace glm
-
30 {
-
33 
-
37  template<typename T>
-
38  GLM_FUNC_DECL T gauss(
-
39  T x,
-
40  T ExpectedValue,
-
41  T StandardDeviation);
-
42 
-
46  template<typename T, qualifier Q>
-
47  GLM_FUNC_DECL T gauss(
-
48  vec<2, T, Q> const& Coord,
-
49  vec<2, T, Q> const& ExpectedValue,
-
50  vec<2, T, Q> const& StandardDeviation);
-
51 
-
53 }//namespace glm
-
54 
-
55 #include "functions.inl"
-
56 
-
GLM_FUNC_DECL T gauss(vec< 2, T, Q > const &Coord, vec< 2, T, Q > const &ExpectedValue, vec< 2, T, Q > const &StandardDeviation)
2D gauss function
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00035_source.html b/tests/OpenGL/package/glm/doc/api/a00035_source.html deleted file mode 100644 index 454a17d4..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00035_source.html +++ /dev/null @@ -1,1544 +0,0 @@ - - - - - - -0.9.9 API documentation: fwd.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
fwd.hpp
-
-
-
1 #pragma once
-
2 
-
3 #include "detail/qualifier.hpp"
-
4 
-
5 namespace glm
-
6 {
-
7 #if GLM_HAS_EXTENDED_INTEGER_TYPE
-
8  typedef std::int8_t int8;
-
9  typedef std::int16_t int16;
-
10  typedef std::int32_t int32;
-
11  typedef std::int64_t int64;
-
12 
-
13  typedef std::uint8_t uint8;
-
14  typedef std::uint16_t uint16;
-
15  typedef std::uint32_t uint32;
-
16  typedef std::uint64_t uint64;
-
17 #else
-
18  typedef signed char int8;
-
19  typedef signed short int16;
-
20  typedef signed int int32;
-
21  typedef detail::int64 int64;
-
22 
-
23  typedef unsigned char uint8;
-
24  typedef unsigned short uint16;
-
25  typedef unsigned int uint32;
-
26  typedef detail::uint64 uint64;
-
27 #endif
-
28 
-
29  // Scalar int
-
30 
-
31  typedef int8 lowp_i8;
-
32  typedef int8 mediump_i8;
-
33  typedef int8 highp_i8;
-
34  typedef int8 i8;
-
35 
-
36  typedef int8 lowp_int8;
-
37  typedef int8 mediump_int8;
-
38  typedef int8 highp_int8;
-
39 
-
40  typedef int8 lowp_int8_t;
-
41  typedef int8 mediump_int8_t;
-
42  typedef int8 highp_int8_t;
-
43  typedef int8 int8_t;
-
44 
-
45  typedef int16 lowp_i16;
-
46  typedef int16 mediump_i16;
-
47  typedef int16 highp_i16;
-
48  typedef int16 i16;
-
49 
-
50  typedef int16 lowp_int16;
-
51  typedef int16 mediump_int16;
-
52  typedef int16 highp_int16;
-
53 
-
54  typedef int16 lowp_int16_t;
-
55  typedef int16 mediump_int16_t;
-
56  typedef int16 highp_int16_t;
-
57  typedef int16 int16_t;
-
58 
-
59  typedef int32 lowp_i32;
-
60  typedef int32 mediump_i32;
-
61  typedef int32 highp_i32;
-
62  typedef int32 i32;
-
63 
-
64  typedef int32 lowp_int32;
-
65  typedef int32 mediump_int32;
-
66  typedef int32 highp_int32;
-
67 
-
68  typedef int32 lowp_int32_t;
-
69  typedef int32 mediump_int32_t;
-
70  typedef int32 highp_int32_t;
-
71  typedef int32 int32_t;
-
72 
-
73  typedef int64 lowp_i64;
-
74  typedef int64 mediump_i64;
-
75  typedef int64 highp_i64;
-
76  typedef int64 i64;
-
77 
-
78  typedef int64 lowp_int64;
-
79  typedef int64 mediump_int64;
-
80  typedef int64 highp_int64;
-
81 
-
82  typedef int64 lowp_int64_t;
-
83  typedef int64 mediump_int64_t;
-
84  typedef int64 highp_int64_t;
-
85  typedef int64 int64_t;
-
86 
-
87  // Scalar uint
-
88 
-
89  typedef uint8 lowp_u8;
-
90  typedef uint8 mediump_u8;
-
91  typedef uint8 highp_u8;
-
92  typedef uint8 u8;
-
93 
-
94  typedef uint8 lowp_uint8;
-
95  typedef uint8 mediump_uint8;
-
96  typedef uint8 highp_uint8;
-
97 
-
98  typedef uint8 lowp_uint8_t;
-
99  typedef uint8 mediump_uint8_t;
-
100  typedef uint8 highp_uint8_t;
-
101  typedef uint8 uint8_t;
-
102 
-
103  typedef uint16 lowp_u16;
-
104  typedef uint16 mediump_u16;
-
105  typedef uint16 highp_u16;
-
106  typedef uint16 u16;
-
107 
-
108  typedef uint16 lowp_uint16;
-
109  typedef uint16 mediump_uint16;
-
110  typedef uint16 highp_uint16;
-
111 
-
112  typedef uint16 lowp_uint16_t;
-
113  typedef uint16 mediump_uint16_t;
-
114  typedef uint16 highp_uint16_t;
-
115  typedef uint16 uint16_t;
-
116 
-
117  typedef uint32 lowp_u32;
-
118  typedef uint32 mediump_u32;
-
119  typedef uint32 highp_u32;
-
120  typedef uint32 u32;
-
121 
-
122  typedef uint32 lowp_uint32;
-
123  typedef uint32 mediump_uint32;
-
124  typedef uint32 highp_uint32;
-
125 
-
126  typedef uint32 lowp_uint32_t;
-
127  typedef uint32 mediump_uint32_t;
-
128  typedef uint32 highp_uint32_t;
-
129  typedef uint32 uint32_t;
-
130 
-
131  typedef uint64 lowp_u64;
-
132  typedef uint64 mediump_u64;
-
133  typedef uint64 highp_u64;
-
134  typedef uint64 u64;
-
135 
-
136  typedef uint64 lowp_uint64;
-
137  typedef uint64 mediump_uint64;
-
138  typedef uint64 highp_uint64;
-
139 
-
140  typedef uint64 lowp_uint64_t;
-
141  typedef uint64 mediump_uint64_t;
-
142  typedef uint64 highp_uint64_t;
-
143  typedef uint64 uint64_t;
-
144 
-
145  // Scalar float
-
146 
-
147  typedef float lowp_f32;
-
148  typedef float mediump_f32;
-
149  typedef float highp_f32;
-
150  typedef float f32;
-
151 
-
152  typedef float lowp_float32;
-
153  typedef float mediump_float32;
-
154  typedef float highp_float32;
-
155  typedef float float32;
-
156 
-
157  typedef float lowp_float32_t;
-
158  typedef float mediump_float32_t;
-
159  typedef float highp_float32_t;
-
160  typedef float float32_t;
-
161 
-
162 
-
163  typedef double lowp_f64;
-
164  typedef double mediump_f64;
-
165  typedef double highp_f64;
-
166  typedef double f64;
-
167 
-
168  typedef double lowp_float64;
-
169  typedef double mediump_float64;
-
170  typedef double highp_float64;
-
171  typedef double float64;
-
172 
-
173  typedef double lowp_float64_t;
-
174  typedef double mediump_float64_t;
-
175  typedef double highp_float64_t;
-
176  typedef double float64_t;
-
177 
-
178  // Vector bool
-
179 
-
180  typedef vec<1, bool, lowp> lowp_bvec1;
-
181  typedef vec<2, bool, lowp> lowp_bvec2;
-
182  typedef vec<3, bool, lowp> lowp_bvec3;
-
183  typedef vec<4, bool, lowp> lowp_bvec4;
-
184 
-
185  typedef vec<1, bool, mediump> mediump_bvec1;
-
186  typedef vec<2, bool, mediump> mediump_bvec2;
-
187  typedef vec<3, bool, mediump> mediump_bvec3;
-
188  typedef vec<4, bool, mediump> mediump_bvec4;
-
189 
-
190  typedef vec<1, bool, highp> highp_bvec1;
-
191  typedef vec<2, bool, highp> highp_bvec2;
-
192  typedef vec<3, bool, highp> highp_bvec3;
-
193  typedef vec<4, bool, highp> highp_bvec4;
-
194 
-
195  typedef vec<1, bool, defaultp> bvec1;
-
196  typedef vec<2, bool, defaultp> bvec2;
-
197  typedef vec<3, bool, defaultp> bvec3;
-
198  typedef vec<4, bool, defaultp> bvec4;
-
199 
-
200  // Vector int
-
201 
-
202  typedef vec<1, i32, lowp> lowp_ivec1;
-
203  typedef vec<2, i32, lowp> lowp_ivec2;
-
204  typedef vec<3, i32, lowp> lowp_ivec3;
-
205  typedef vec<4, i32, lowp> lowp_ivec4;
-
206 
-
207  typedef vec<1, i32, mediump> mediump_ivec1;
-
208  typedef vec<2, i32, mediump> mediump_ivec2;
-
209  typedef vec<3, i32, mediump> mediump_ivec3;
-
210  typedef vec<4, i32, mediump> mediump_ivec4;
-
211 
-
212  typedef vec<1, i32, highp> highp_ivec1;
-
213  typedef vec<2, i32, highp> highp_ivec2;
-
214  typedef vec<3, i32, highp> highp_ivec3;
-
215  typedef vec<4, i32, highp> highp_ivec4;
-
216 
-
217  typedef vec<1, i32, defaultp> ivec1;
-
218  typedef vec<2, i32, defaultp> ivec2;
-
219  typedef vec<3, i32, defaultp> ivec3;
-
220  typedef vec<4, i32, defaultp> ivec4;
-
221 
-
222  typedef vec<1, i8, lowp> lowp_i8vec1;
-
223  typedef vec<2, i8, lowp> lowp_i8vec2;
-
224  typedef vec<3, i8, lowp> lowp_i8vec3;
-
225  typedef vec<4, i8, lowp> lowp_i8vec4;
-
226 
-
227  typedef vec<1, i8, mediump> mediump_i8vec1;
-
228  typedef vec<2, i8, mediump> mediump_i8vec2;
-
229  typedef vec<3, i8, mediump> mediump_i8vec3;
-
230  typedef vec<4, i8, mediump> mediump_i8vec4;
-
231 
-
232  typedef vec<1, i8, highp> highp_i8vec1;
-
233  typedef vec<2, i8, highp> highp_i8vec2;
-
234  typedef vec<3, i8, highp> highp_i8vec3;
-
235  typedef vec<4, i8, highp> highp_i8vec4;
-
236 
-
237  typedef vec<1, i8, defaultp> i8vec1;
-
238  typedef vec<2, i8, defaultp> i8vec2;
-
239  typedef vec<3, i8, defaultp> i8vec3;
-
240  typedef vec<4, i8, defaultp> i8vec4;
-
241 
-
242  typedef vec<1, i16, lowp> lowp_i16vec1;
-
243  typedef vec<2, i16, lowp> lowp_i16vec2;
-
244  typedef vec<3, i16, lowp> lowp_i16vec3;
-
245  typedef vec<4, i16, lowp> lowp_i16vec4;
-
246 
-
247  typedef vec<1, i16, mediump> mediump_i16vec1;
-
248  typedef vec<2, i16, mediump> mediump_i16vec2;
-
249  typedef vec<3, i16, mediump> mediump_i16vec3;
-
250  typedef vec<4, i16, mediump> mediump_i16vec4;
-
251 
-
252  typedef vec<1, i16, highp> highp_i16vec1;
-
253  typedef vec<2, i16, highp> highp_i16vec2;
-
254  typedef vec<3, i16, highp> highp_i16vec3;
-
255  typedef vec<4, i16, highp> highp_i16vec4;
-
256 
-
257  typedef vec<1, i16, defaultp> i16vec1;
-
258  typedef vec<2, i16, defaultp> i16vec2;
-
259  typedef vec<3, i16, defaultp> i16vec3;
-
260  typedef vec<4, i16, defaultp> i16vec4;
-
261 
-
262  typedef vec<1, i32, lowp> lowp_i32vec1;
-
263  typedef vec<2, i32, lowp> lowp_i32vec2;
-
264  typedef vec<3, i32, lowp> lowp_i32vec3;
-
265  typedef vec<4, i32, lowp> lowp_i32vec4;
-
266 
-
267  typedef vec<1, i32, mediump> mediump_i32vec1;
-
268  typedef vec<2, i32, mediump> mediump_i32vec2;
-
269  typedef vec<3, i32, mediump> mediump_i32vec3;
-
270  typedef vec<4, i32, mediump> mediump_i32vec4;
-
271 
-
272  typedef vec<1, i32, highp> highp_i32vec1;
-
273  typedef vec<2, i32, highp> highp_i32vec2;
-
274  typedef vec<3, i32, highp> highp_i32vec3;
-
275  typedef vec<4, i32, highp> highp_i32vec4;
-
276 
-
277  typedef vec<1, i32, defaultp> i32vec1;
-
278  typedef vec<2, i32, defaultp> i32vec2;
-
279  typedef vec<3, i32, defaultp> i32vec3;
-
280  typedef vec<4, i32, defaultp> i32vec4;
-
281 
-
282  typedef vec<1, i64, lowp> lowp_i64vec1;
-
283  typedef vec<2, i64, lowp> lowp_i64vec2;
-
284  typedef vec<3, i64, lowp> lowp_i64vec3;
-
285  typedef vec<4, i64, lowp> lowp_i64vec4;
-
286 
-
287  typedef vec<1, i64, mediump> mediump_i64vec1;
-
288  typedef vec<2, i64, mediump> mediump_i64vec2;
-
289  typedef vec<3, i64, mediump> mediump_i64vec3;
-
290  typedef vec<4, i64, mediump> mediump_i64vec4;
-
291 
-
292  typedef vec<1, i64, highp> highp_i64vec1;
-
293  typedef vec<2, i64, highp> highp_i64vec2;
-
294  typedef vec<3, i64, highp> highp_i64vec3;
-
295  typedef vec<4, i64, highp> highp_i64vec4;
-
296 
-
297  typedef vec<1, i64, defaultp> i64vec1;
-
298  typedef vec<2, i64, defaultp> i64vec2;
-
299  typedef vec<3, i64, defaultp> i64vec3;
-
300  typedef vec<4, i64, defaultp> i64vec4;
-
301 
-
302  // Vector uint
-
303 
-
304  typedef vec<1, u32, lowp> lowp_uvec1;
-
305  typedef vec<2, u32, lowp> lowp_uvec2;
-
306  typedef vec<3, u32, lowp> lowp_uvec3;
-
307  typedef vec<4, u32, lowp> lowp_uvec4;
-
308 
-
309  typedef vec<1, u32, mediump> mediump_uvec1;
-
310  typedef vec<2, u32, mediump> mediump_uvec2;
-
311  typedef vec<3, u32, mediump> mediump_uvec3;
-
312  typedef vec<4, u32, mediump> mediump_uvec4;
-
313 
-
314  typedef vec<1, u32, highp> highp_uvec1;
-
315  typedef vec<2, u32, highp> highp_uvec2;
-
316  typedef vec<3, u32, highp> highp_uvec3;
-
317  typedef vec<4, u32, highp> highp_uvec4;
-
318 
-
319  typedef vec<1, u32, defaultp> uvec1;
-
320  typedef vec<2, u32, defaultp> uvec2;
-
321  typedef vec<3, u32, defaultp> uvec3;
-
322  typedef vec<4, u32, defaultp> uvec4;
-
323 
-
324  typedef vec<1, u8, lowp> lowp_u8vec1;
-
325  typedef vec<2, u8, lowp> lowp_u8vec2;
-
326  typedef vec<3, u8, lowp> lowp_u8vec3;
-
327  typedef vec<4, u8, lowp> lowp_u8vec4;
-
328 
-
329  typedef vec<1, u8, mediump> mediump_u8vec1;
-
330  typedef vec<2, u8, mediump> mediump_u8vec2;
-
331  typedef vec<3, u8, mediump> mediump_u8vec3;
-
332  typedef vec<4, u8, mediump> mediump_u8vec4;
-
333 
-
334  typedef vec<1, u8, highp> highp_u8vec1;
-
335  typedef vec<2, u8, highp> highp_u8vec2;
-
336  typedef vec<3, u8, highp> highp_u8vec3;
-
337  typedef vec<4, u8, highp> highp_u8vec4;
-
338 
-
339  typedef vec<1, u8, defaultp> u8vec1;
-
340  typedef vec<2, u8, defaultp> u8vec2;
-
341  typedef vec<3, u8, defaultp> u8vec3;
-
342  typedef vec<4, u8, defaultp> u8vec4;
-
343 
-
344  typedef vec<1, u16, lowp> lowp_u16vec1;
-
345  typedef vec<2, u16, lowp> lowp_u16vec2;
-
346  typedef vec<3, u16, lowp> lowp_u16vec3;
-
347  typedef vec<4, u16, lowp> lowp_u16vec4;
-
348 
-
349  typedef vec<1, u16, mediump> mediump_u16vec1;
-
350  typedef vec<2, u16, mediump> mediump_u16vec2;
-
351  typedef vec<3, u16, mediump> mediump_u16vec3;
-
352  typedef vec<4, u16, mediump> mediump_u16vec4;
-
353 
-
354  typedef vec<1, u16, highp> highp_u16vec1;
-
355  typedef vec<2, u16, highp> highp_u16vec2;
-
356  typedef vec<3, u16, highp> highp_u16vec3;
-
357  typedef vec<4, u16, highp> highp_u16vec4;
-
358 
-
359  typedef vec<1, u16, defaultp> u16vec1;
-
360  typedef vec<2, u16, defaultp> u16vec2;
-
361  typedef vec<3, u16, defaultp> u16vec3;
-
362  typedef vec<4, u16, defaultp> u16vec4;
-
363 
-
364  typedef vec<1, u32, lowp> lowp_u32vec1;
-
365  typedef vec<2, u32, lowp> lowp_u32vec2;
-
366  typedef vec<3, u32, lowp> lowp_u32vec3;
-
367  typedef vec<4, u32, lowp> lowp_u32vec4;
-
368 
-
369  typedef vec<1, u32, mediump> mediump_u32vec1;
-
370  typedef vec<2, u32, mediump> mediump_u32vec2;
-
371  typedef vec<3, u32, mediump> mediump_u32vec3;
-
372  typedef vec<4, u32, mediump> mediump_u32vec4;
-
373 
-
374  typedef vec<1, u32, highp> highp_u32vec1;
-
375  typedef vec<2, u32, highp> highp_u32vec2;
-
376  typedef vec<3, u32, highp> highp_u32vec3;
-
377  typedef vec<4, u32, highp> highp_u32vec4;
-
378 
-
379  typedef vec<1, u32, defaultp> u32vec1;
-
380  typedef vec<2, u32, defaultp> u32vec2;
-
381  typedef vec<3, u32, defaultp> u32vec3;
-
382  typedef vec<4, u32, defaultp> u32vec4;
-
383 
-
384  typedef vec<1, u64, lowp> lowp_u64vec1;
-
385  typedef vec<2, u64, lowp> lowp_u64vec2;
-
386  typedef vec<3, u64, lowp> lowp_u64vec3;
-
387  typedef vec<4, u64, lowp> lowp_u64vec4;
-
388 
-
389  typedef vec<1, u64, mediump> mediump_u64vec1;
-
390  typedef vec<2, u64, mediump> mediump_u64vec2;
-
391  typedef vec<3, u64, mediump> mediump_u64vec3;
-
392  typedef vec<4, u64, mediump> mediump_u64vec4;
-
393 
-
394  typedef vec<1, u64, highp> highp_u64vec1;
-
395  typedef vec<2, u64, highp> highp_u64vec2;
-
396  typedef vec<3, u64, highp> highp_u64vec3;
-
397  typedef vec<4, u64, highp> highp_u64vec4;
-
398 
-
399  typedef vec<1, u64, defaultp> u64vec1;
-
400  typedef vec<2, u64, defaultp> u64vec2;
-
401  typedef vec<3, u64, defaultp> u64vec3;
-
402  typedef vec<4, u64, defaultp> u64vec4;
-
403 
-
404  // Vector float
-
405 
-
406  typedef vec<1, float, lowp> lowp_vec1;
-
407  typedef vec<2, float, lowp> lowp_vec2;
-
408  typedef vec<3, float, lowp> lowp_vec3;
-
409  typedef vec<4, float, lowp> lowp_vec4;
-
410 
-
411  typedef vec<1, float, mediump> mediump_vec1;
-
412  typedef vec<2, float, mediump> mediump_vec2;
-
413  typedef vec<3, float, mediump> mediump_vec3;
-
414  typedef vec<4, float, mediump> mediump_vec4;
-
415 
-
416  typedef vec<1, float, highp> highp_vec1;
-
417  typedef vec<2, float, highp> highp_vec2;
-
418  typedef vec<3, float, highp> highp_vec3;
-
419  typedef vec<4, float, highp> highp_vec4;
-
420 
-
421  typedef vec<1, float, defaultp> vec1;
-
422  typedef vec<2, float, defaultp> vec2;
-
423  typedef vec<3, float, defaultp> vec3;
-
424  typedef vec<4, float, defaultp> vec4;
-
425 
-
426  typedef vec<1, float, lowp> lowp_fvec1;
-
427  typedef vec<2, float, lowp> lowp_fvec2;
-
428  typedef vec<3, float, lowp> lowp_fvec3;
-
429  typedef vec<4, float, lowp> lowp_fvec4;
-
430 
-
431  typedef vec<1, float, mediump> mediump_fvec1;
-
432  typedef vec<2, float, mediump> mediump_fvec2;
-
433  typedef vec<3, float, mediump> mediump_fvec3;
-
434  typedef vec<4, float, mediump> mediump_fvec4;
-
435 
-
436  typedef vec<1, float, highp> highp_fvec1;
-
437  typedef vec<2, float, highp> highp_fvec2;
-
438  typedef vec<3, float, highp> highp_fvec3;
-
439  typedef vec<4, float, highp> highp_fvec4;
-
440 
-
441  typedef vec<1, f32, defaultp> fvec1;
-
442  typedef vec<2, f32, defaultp> fvec2;
-
443  typedef vec<3, f32, defaultp> fvec3;
-
444  typedef vec<4, f32, defaultp> fvec4;
-
445 
-
446  typedef vec<1, f32, lowp> lowp_f32vec1;
-
447  typedef vec<2, f32, lowp> lowp_f32vec2;
-
448  typedef vec<3, f32, lowp> lowp_f32vec3;
-
449  typedef vec<4, f32, lowp> lowp_f32vec4;
-
450 
-
451  typedef vec<1, f32, mediump> mediump_f32vec1;
-
452  typedef vec<2, f32, mediump> mediump_f32vec2;
-
453  typedef vec<3, f32, mediump> mediump_f32vec3;
-
454  typedef vec<4, f32, mediump> mediump_f32vec4;
-
455 
-
456  typedef vec<1, f32, highp> highp_f32vec1;
-
457  typedef vec<2, f32, highp> highp_f32vec2;
-
458  typedef vec<3, f32, highp> highp_f32vec3;
-
459  typedef vec<4, f32, highp> highp_f32vec4;
-
460 
-
461  typedef vec<1, f32, defaultp> f32vec1;
-
462  typedef vec<2, f32, defaultp> f32vec2;
-
463  typedef vec<3, f32, defaultp> f32vec3;
-
464  typedef vec<4, f32, defaultp> f32vec4;
-
465 
-
466  typedef vec<1, f64, lowp> lowp_dvec1;
-
467  typedef vec<2, f64, lowp> lowp_dvec2;
-
468  typedef vec<3, f64, lowp> lowp_dvec3;
-
469  typedef vec<4, f64, lowp> lowp_dvec4;
-
470 
-
471  typedef vec<1, f64, mediump> mediump_dvec1;
-
472  typedef vec<2, f64, mediump> mediump_dvec2;
-
473  typedef vec<3, f64, mediump> mediump_dvec3;
-
474  typedef vec<4, f64, mediump> mediump_dvec4;
-
475 
-
476  typedef vec<1, f64, highp> highp_dvec1;
-
477  typedef vec<2, f64, highp> highp_dvec2;
-
478  typedef vec<3, f64, highp> highp_dvec3;
-
479  typedef vec<4, f64, highp> highp_dvec4;
-
480 
-
481  typedef vec<1, f64, defaultp> dvec1;
-
482  typedef vec<2, f64, defaultp> dvec2;
-
483  typedef vec<3, f64, defaultp> dvec3;
-
484  typedef vec<4, f64, defaultp> dvec4;
-
485 
-
486  typedef vec<1, f64, lowp> lowp_f64vec1;
-
487  typedef vec<2, f64, lowp> lowp_f64vec2;
-
488  typedef vec<3, f64, lowp> lowp_f64vec3;
-
489  typedef vec<4, f64, lowp> lowp_f64vec4;
-
490 
-
491  typedef vec<1, f64, mediump> mediump_f64vec1;
-
492  typedef vec<2, f64, mediump> mediump_f64vec2;
-
493  typedef vec<3, f64, mediump> mediump_f64vec3;
-
494  typedef vec<4, f64, mediump> mediump_f64vec4;
-
495 
-
496  typedef vec<1, f64, highp> highp_f64vec1;
-
497  typedef vec<2, f64, highp> highp_f64vec2;
-
498  typedef vec<3, f64, highp> highp_f64vec3;
-
499  typedef vec<4, f64, highp> highp_f64vec4;
-
500 
-
501  typedef vec<1, f64, defaultp> f64vec1;
-
502  typedef vec<2, f64, defaultp> f64vec2;
-
503  typedef vec<3, f64, defaultp> f64vec3;
-
504  typedef vec<4, f64, defaultp> f64vec4;
-
505 
-
506  // Matrix NxN
-
507 
-
508  typedef mat<2, 2, f32, lowp> lowp_mat2;
-
509  typedef mat<3, 3, f32, lowp> lowp_mat3;
-
510  typedef mat<4, 4, f32, lowp> lowp_mat4;
-
511 
-
512  typedef mat<2, 2, f32, mediump> mediump_mat2;
-
513  typedef mat<3, 3, f32, mediump> mediump_mat3;
-
514  typedef mat<4, 4, f32, mediump> mediump_mat4;
-
515 
-
516  typedef mat<2, 2, f32, highp> highp_mat2;
-
517  typedef mat<3, 3, f32, highp> highp_mat3;
-
518  typedef mat<4, 4, f32, highp> highp_mat4;
-
519 
-
520  typedef mat<2, 2, f32, defaultp> mat2;
-
521  typedef mat<3, 3, f32, defaultp> mat3;
-
522  typedef mat<4, 4, f32, defaultp> mat4;
-
523 
-
524  typedef mat<2, 2, f32, lowp> lowp_fmat2;
-
525  typedef mat<3, 3, f32, lowp> lowp_fmat3;
-
526  typedef mat<4, 4, f32, lowp> lowp_fmat4;
-
527 
-
528  typedef mat<2, 2, f32, mediump> mediump_fmat2;
-
529  typedef mat<3, 3, f32, mediump> mediump_fmat3;
-
530  typedef mat<4, 4, f32, mediump> mediump_fmat4;
-
531 
-
532  typedef mat<2, 2, f32, highp> highp_fmat2;
-
533  typedef mat<3, 3, f32, highp> highp_fmat3;
-
534  typedef mat<4, 4, f32, highp> highp_fmat4;
-
535 
-
536  typedef mat<2, 2, f32, defaultp> fmat2;
-
537  typedef mat<3, 3, f32, defaultp> fmat3;
-
538  typedef mat<4, 4, f32, defaultp> fmat4;
-
539 
-
540  typedef mat<2, 2, f32, lowp> lowp_f32mat2;
-
541  typedef mat<3, 3, f32, lowp> lowp_f32mat3;
-
542  typedef mat<4, 4, f32, lowp> lowp_f32mat4;
-
543 
-
544  typedef mat<2, 2, f32, mediump> mediump_f32mat2;
-
545  typedef mat<3, 3, f32, mediump> mediump_f32mat3;
-
546  typedef mat<4, 4, f32, mediump> mediump_f32mat4;
-
547 
-
548  typedef mat<2, 2, f32, highp> highp_f32mat2;
-
549  typedef mat<3, 3, f32, highp> highp_f32mat3;
-
550  typedef mat<4, 4, f32, highp> highp_f32mat4;
-
551 
-
552  typedef mat<2, 2, f32, defaultp> f32mat2;
-
553  typedef mat<3, 3, f32, defaultp> f32mat3;
-
554  typedef mat<4, 4, f32, defaultp> f32mat4;
-
555 
-
556  typedef mat<2, 2, f64, lowp> lowp_dmat2;
-
557  typedef mat<3, 3, f64, lowp> lowp_dmat3;
-
558  typedef mat<4, 4, f64, lowp> lowp_dmat4;
-
559 
-
560  typedef mat<2, 2, f64, mediump> mediump_dmat2;
-
561  typedef mat<3, 3, f64, mediump> mediump_dmat3;
-
562  typedef mat<4, 4, f64, mediump> mediump_dmat4;
-
563 
-
564  typedef mat<2, 2, f64, highp> highp_dmat2;
-
565  typedef mat<3, 3, f64, highp> highp_dmat3;
-
566  typedef mat<4, 4, f64, highp> highp_dmat4;
-
567 
-
568  typedef mat<2, 2, f64, defaultp> dmat2;
-
569  typedef mat<3, 3, f64, defaultp> dmat3;
-
570  typedef mat<4, 4, f64, defaultp> dmat4;
-
571 
-
572  typedef mat<2, 2, f64, lowp> lowp_f64mat2;
-
573  typedef mat<3, 3, f64, lowp> lowp_f64mat3;
-
574  typedef mat<4, 4, f64, lowp> lowp_f64mat4;
-
575 
-
576  typedef mat<2, 2, f64, mediump> mediump_f64mat2;
-
577  typedef mat<3, 3, f64, mediump> mediump_f64mat3;
-
578  typedef mat<4, 4, f64, mediump> mediump_f64mat4;
-
579 
-
580  typedef mat<2, 2, f64, highp> highp_f64mat2;
-
581  typedef mat<3, 3, f64, highp> highp_f64mat3;
-
582  typedef mat<4, 4, f64, highp> highp_f64mat4;
-
583 
-
584  typedef mat<2, 2, f64, defaultp> f64mat2;
-
585  typedef mat<3, 3, f64, defaultp> f64mat3;
-
586  typedef mat<4, 4, f64, defaultp> f64mat4;
-
587 
-
588  // Matrix MxN
-
589 
-
590  typedef mat<2, 2, f32, lowp> lowp_mat2x2;
-
591  typedef mat<2, 3, f32, lowp> lowp_mat2x3;
-
592  typedef mat<2, 4, f32, lowp> lowp_mat2x4;
-
593  typedef mat<3, 2, f32, lowp> lowp_mat3x2;
-
594  typedef mat<3, 3, f32, lowp> lowp_mat3x3;
-
595  typedef mat<3, 4, f32, lowp> lowp_mat3x4;
-
596  typedef mat<4, 2, f32, lowp> lowp_mat4x2;
-
597  typedef mat<4, 3, f32, lowp> lowp_mat4x3;
-
598  typedef mat<4, 4, f32, lowp> lowp_mat4x4;
-
599 
-
600  typedef mat<2, 2, f32, mediump> mediump_mat2x2;
-
601  typedef mat<2, 3, f32, mediump> mediump_mat2x3;
-
602  typedef mat<2, 4, f32, mediump> mediump_mat2x4;
-
603  typedef mat<3, 2, f32, mediump> mediump_mat3x2;
-
604  typedef mat<3, 3, f32, mediump> mediump_mat3x3;
-
605  typedef mat<3, 4, f32, mediump> mediump_mat3x4;
-
606  typedef mat<4, 2, f32, mediump> mediump_mat4x2;
-
607  typedef mat<4, 3, f32, mediump> mediump_mat4x3;
-
608  typedef mat<4, 4, f32, mediump> mediump_mat4x4;
-
609 
-
610  typedef mat<2, 2, f32, highp> highp_mat2x2;
-
611  typedef mat<2, 3, f32, highp> highp_mat2x3;
-
612  typedef mat<2, 4, f32, highp> highp_mat2x4;
-
613  typedef mat<3, 2, f32, highp> highp_mat3x2;
-
614  typedef mat<3, 3, f32, highp> highp_mat3x3;
-
615  typedef mat<3, 4, f32, highp> highp_mat3x4;
-
616  typedef mat<4, 2, f32, highp> highp_mat4x2;
-
617  typedef mat<4, 3, f32, highp> highp_mat4x3;
-
618  typedef mat<4, 4, f32, highp> highp_mat4x4;
-
619 
-
620  typedef mat<2, 2, f32, defaultp> mat2x2;
-
621  typedef mat<3, 2, f32, defaultp> mat3x2;
-
622  typedef mat<4, 2, f32, defaultp> mat4x2;
-
623  typedef mat<2, 3, f32, defaultp> mat2x3;
-
624  typedef mat<3, 3, f32, defaultp> mat3x3;
-
625  typedef mat<4, 3, f32, defaultp> mat4x3;
-
626  typedef mat<2, 4, f32, defaultp> mat2x4;
-
627  typedef mat<3, 4, f32, defaultp> mat3x4;
-
628  typedef mat<4, 4, f32, defaultp> mat4x4;
-
629 
-
630  typedef mat<2, 2, f32, lowp> lowp_fmat2x2;
-
631  typedef mat<2, 3, f32, lowp> lowp_fmat2x3;
-
632  typedef mat<2, 4, f32, lowp> lowp_fmat2x4;
-
633  typedef mat<3, 2, f32, lowp> lowp_fmat3x2;
-
634  typedef mat<3, 3, f32, lowp> lowp_fmat3x3;
-
635  typedef mat<3, 4, f32, lowp> lowp_fmat3x4;
-
636  typedef mat<4, 2, f32, lowp> lowp_fmat4x2;
-
637  typedef mat<4, 3, f32, lowp> lowp_fmat4x3;
-
638  typedef mat<4, 4, f32, lowp> lowp_fmat4x4;
-
639 
-
640  typedef mat<2, 2, f32, mediump> mediump_fmat2x2;
-
641  typedef mat<2, 3, f32, mediump> mediump_fmat2x3;
-
642  typedef mat<2, 4, f32, mediump> mediump_fmat2x4;
-
643  typedef mat<3, 2, f32, mediump> mediump_fmat3x2;
-
644  typedef mat<3, 3, f32, mediump> mediump_fmat3x3;
-
645  typedef mat<3, 4, f32, mediump> mediump_fmat3x4;
-
646  typedef mat<4, 2, f32, mediump> mediump_fmat4x2;
-
647  typedef mat<4, 3, f32, mediump> mediump_fmat4x3;
-
648  typedef mat<4, 4, f32, mediump> mediump_fmat4x4;
-
649 
-
650  typedef mat<2, 2, f32, highp> highp_fmat2x2;
-
651  typedef mat<2, 3, f32, highp> highp_fmat2x3;
-
652  typedef mat<2, 4, f32, highp> highp_fmat2x4;
-
653  typedef mat<3, 2, f32, highp> highp_fmat3x2;
-
654  typedef mat<3, 3, f32, highp> highp_fmat3x3;
-
655  typedef mat<3, 4, f32, highp> highp_fmat3x4;
-
656  typedef mat<4, 2, f32, highp> highp_fmat4x2;
-
657  typedef mat<4, 3, f32, highp> highp_fmat4x3;
-
658  typedef mat<4, 4, f32, highp> highp_fmat4x4;
-
659 
-
660  typedef mat<2, 2, f32, defaultp> fmat2x2;
-
661  typedef mat<3, 2, f32, defaultp> fmat3x2;
-
662  typedef mat<4, 2, f32, defaultp> fmat4x2;
-
663  typedef mat<2, 3, f32, defaultp> fmat2x3;
-
664  typedef mat<3, 3, f32, defaultp> fmat3x3;
-
665  typedef mat<4, 3, f32, defaultp> fmat4x3;
-
666  typedef mat<2, 4, f32, defaultp> fmat2x4;
-
667  typedef mat<3, 4, f32, defaultp> fmat3x4;
-
668  typedef mat<4, 4, f32, defaultp> fmat4x4;
-
669 
-
670  typedef mat<2, 2, f32, lowp> lowp_f32mat2x2;
-
671  typedef mat<2, 3, f32, lowp> lowp_f32mat2x3;
-
672  typedef mat<2, 4, f32, lowp> lowp_f32mat2x4;
-
673  typedef mat<3, 2, f32, lowp> lowp_f32mat3x2;
-
674  typedef mat<3, 3, f32, lowp> lowp_f32mat3x3;
-
675  typedef mat<3, 4, f32, lowp> lowp_f32mat3x4;
-
676  typedef mat<4, 2, f32, lowp> lowp_f32mat4x2;
-
677  typedef mat<4, 3, f32, lowp> lowp_f32mat4x3;
-
678  typedef mat<4, 4, f32, lowp> lowp_f32mat4x4;
-
679 
-
680  typedef mat<2, 2, f32, mediump> mediump_f32mat2x2;
-
681  typedef mat<2, 3, f32, mediump> mediump_f32mat2x3;
-
682  typedef mat<2, 4, f32, mediump> mediump_f32mat2x4;
-
683  typedef mat<3, 2, f32, mediump> mediump_f32mat3x2;
-
684  typedef mat<3, 3, f32, mediump> mediump_f32mat3x3;
-
685  typedef mat<3, 4, f32, mediump> mediump_f32mat3x4;
-
686  typedef mat<4, 2, f32, mediump> mediump_f32mat4x2;
-
687  typedef mat<4, 3, f32, mediump> mediump_f32mat4x3;
-
688  typedef mat<4, 4, f32, mediump> mediump_f32mat4x4;
-
689 
-
690  typedef mat<2, 2, f32, highp> highp_f32mat2x2;
-
691  typedef mat<2, 3, f32, highp> highp_f32mat2x3;
-
692  typedef mat<2, 4, f32, highp> highp_f32mat2x4;
-
693  typedef mat<3, 2, f32, highp> highp_f32mat3x2;
-
694  typedef mat<3, 3, f32, highp> highp_f32mat3x3;
-
695  typedef mat<3, 4, f32, highp> highp_f32mat3x4;
-
696  typedef mat<4, 2, f32, highp> highp_f32mat4x2;
-
697  typedef mat<4, 3, f32, highp> highp_f32mat4x3;
-
698  typedef mat<4, 4, f32, highp> highp_f32mat4x4;
-
699 
-
700  typedef mat<2, 2, f32, defaultp> f32mat2x2;
-
701  typedef mat<3, 2, f32, defaultp> f32mat3x2;
-
702  typedef mat<4, 2, f32, defaultp> f32mat4x2;
-
703  typedef mat<2, 3, f32, defaultp> f32mat2x3;
-
704  typedef mat<3, 3, f32, defaultp> f32mat3x3;
-
705  typedef mat<4, 3, f32, defaultp> f32mat4x3;
-
706  typedef mat<2, 4, f32, defaultp> f32mat2x4;
-
707  typedef mat<3, 4, f32, defaultp> f32mat3x4;
-
708  typedef mat<4, 4, f32, defaultp> f32mat4x4;
-
709 
-
710  typedef mat<2, 2, double, lowp> lowp_dmat2x2;
-
711  typedef mat<2, 3, double, lowp> lowp_dmat2x3;
-
712  typedef mat<2, 4, double, lowp> lowp_dmat2x4;
-
713  typedef mat<3, 2, double, lowp> lowp_dmat3x2;
-
714  typedef mat<3, 3, double, lowp> lowp_dmat3x3;
-
715  typedef mat<3, 4, double, lowp> lowp_dmat3x4;
-
716  typedef mat<4, 2, double, lowp> lowp_dmat4x2;
-
717  typedef mat<4, 3, double, lowp> lowp_dmat4x3;
-
718  typedef mat<4, 4, double, lowp> lowp_dmat4x4;
-
719 
-
720  typedef mat<2, 2, double, mediump> mediump_dmat2x2;
-
721  typedef mat<2, 3, double, mediump> mediump_dmat2x3;
-
722  typedef mat<2, 4, double, mediump> mediump_dmat2x4;
-
723  typedef mat<3, 2, double, mediump> mediump_dmat3x2;
-
724  typedef mat<3, 3, double, mediump> mediump_dmat3x3;
-
725  typedef mat<3, 4, double, mediump> mediump_dmat3x4;
-
726  typedef mat<4, 2, double, mediump> mediump_dmat4x2;
-
727  typedef mat<4, 3, double, mediump> mediump_dmat4x3;
-
728  typedef mat<4, 4, double, mediump> mediump_dmat4x4;
-
729 
-
730  typedef mat<2, 2, double, highp> highp_dmat2x2;
-
731  typedef mat<2, 3, double, highp> highp_dmat2x3;
-
732  typedef mat<2, 4, double, highp> highp_dmat2x4;
-
733  typedef mat<3, 2, double, highp> highp_dmat3x2;
-
734  typedef mat<3, 3, double, highp> highp_dmat3x3;
-
735  typedef mat<3, 4, double, highp> highp_dmat3x4;
-
736  typedef mat<4, 2, double, highp> highp_dmat4x2;
-
737  typedef mat<4, 3, double, highp> highp_dmat4x3;
-
738  typedef mat<4, 4, double, highp> highp_dmat4x4;
-
739 
-
740  typedef mat<2, 2, double, defaultp> dmat2x2;
-
741  typedef mat<3, 2, double, defaultp> dmat3x2;
-
742  typedef mat<4, 2, double, defaultp> dmat4x2;
-
743  typedef mat<2, 3, double, defaultp> dmat2x3;
-
744  typedef mat<3, 3, double, defaultp> dmat3x3;
-
745  typedef mat<4, 3, double, defaultp> dmat4x3;
-
746  typedef mat<2, 4, double, defaultp> dmat2x4;
-
747  typedef mat<3, 4, double, defaultp> dmat3x4;
-
748  typedef mat<4, 4, double, defaultp> dmat4x4;
-
749 
-
750  typedef mat<2, 2, f64, lowp> lowp_f64mat2x2;
-
751  typedef mat<2, 3, f64, lowp> lowp_f64mat2x3;
-
752  typedef mat<2, 4, f64, lowp> lowp_f64mat2x4;
-
753  typedef mat<3, 2, f64, lowp> lowp_f64mat3x2;
-
754  typedef mat<3, 3, f64, lowp> lowp_f64mat3x3;
-
755  typedef mat<3, 4, f64, lowp> lowp_f64mat3x4;
-
756  typedef mat<4, 2, f64, lowp> lowp_f64mat4x2;
-
757  typedef mat<4, 3, f64, lowp> lowp_f64mat4x3;
-
758  typedef mat<4, 4, f64, lowp> lowp_f64mat4x4;
-
759 
-
760  typedef mat<2, 2, f64, mediump> mediump_f64mat2x2;
-
761  typedef mat<2, 3, f64, mediump> mediump_f64mat2x3;
-
762  typedef mat<2, 4, f64, mediump> mediump_f64mat2x4;
-
763  typedef mat<3, 2, f64, mediump> mediump_f64mat3x2;
-
764  typedef mat<3, 3, f64, mediump> mediump_f64mat3x3;
-
765  typedef mat<3, 4, f64, mediump> mediump_f64mat3x4;
-
766  typedef mat<4, 2, f64, mediump> mediump_f64mat4x2;
-
767  typedef mat<4, 3, f64, mediump> mediump_f64mat4x3;
-
768  typedef mat<4, 4, f64, mediump> mediump_f64mat4x4;
-
769 
-
770  typedef mat<2, 2, f64, highp> highp_f64mat2x2;
-
771  typedef mat<2, 3, f64, highp> highp_f64mat2x3;
-
772  typedef mat<2, 4, f64, highp> highp_f64mat2x4;
-
773  typedef mat<3, 2, f64, highp> highp_f64mat3x2;
-
774  typedef mat<3, 3, f64, highp> highp_f64mat3x3;
-
775  typedef mat<3, 4, f64, highp> highp_f64mat3x4;
-
776  typedef mat<4, 2, f64, highp> highp_f64mat4x2;
-
777  typedef mat<4, 3, f64, highp> highp_f64mat4x3;
-
778  typedef mat<4, 4, f64, highp> highp_f64mat4x4;
-
779 
-
780  typedef mat<2, 2, f64, defaultp> f64mat2x2;
-
781  typedef mat<3, 2, f64, defaultp> f64mat3x2;
-
782  typedef mat<4, 2, f64, defaultp> f64mat4x2;
-
783  typedef mat<2, 3, f64, defaultp> f64mat2x3;
-
784  typedef mat<3, 3, f64, defaultp> f64mat3x3;
-
785  typedef mat<4, 3, f64, defaultp> f64mat4x3;
-
786  typedef mat<2, 4, f64, defaultp> f64mat2x4;
-
787  typedef mat<3, 4, f64, defaultp> f64mat3x4;
-
788  typedef mat<4, 4, f64, defaultp> f64mat4x4;
-
789 
-
790  // Quaternion
-
791 
-
792  typedef qua<float, lowp> lowp_quat;
-
793  typedef qua<float, mediump> mediump_quat;
-
794  typedef qua<float, highp> highp_quat;
-
795  typedef qua<float, defaultp> quat;
-
796 
-
797  typedef qua<float, lowp> lowp_fquat;
-
798  typedef qua<float, mediump> mediump_fquat;
-
799  typedef qua<float, highp> highp_fquat;
-
800  typedef qua<float, defaultp> fquat;
-
801 
-
802  typedef qua<f32, lowp> lowp_f32quat;
-
803  typedef qua<f32, mediump> mediump_f32quat;
-
804  typedef qua<f32, highp> highp_f32quat;
-
805  typedef qua<f32, defaultp> f32quat;
-
806 
-
807  typedef qua<double, lowp> lowp_dquat;
-
808  typedef qua<double, mediump> mediump_dquat;
-
809  typedef qua<double, highp> highp_dquat;
-
810  typedef qua<double, defaultp> dquat;
-
811 
-
812  typedef qua<f64, lowp> lowp_f64quat;
-
813  typedef qua<f64, mediump> mediump_f64quat;
-
814  typedef qua<f64, highp> highp_f64quat;
-
815  typedef qua<f64, defaultp> f64quat;
-
816 }//namespace glm
-
817 
-
818 
-
vec< 1, u16, highp > highp_u16vec1
High qualifier 16 bit unsigned integer scalar type.
Definition: fwd.hpp:354
-
mat< 4, 2, float, mediump > mediump_mat4x2
4 columns of 2 components matrix of single-precision floating-point numbers using medium precision ar...
-
mat< 4, 2, f32, highp > highp_f32mat4x2
High single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:696
-
mat< 4, 3, float, highp > highp_mat4x3
4 columns of 3 components matrix of single-precision floating-point numbers using high precision arit...
-
mat< 4, 4, float, defaultp > mat4x4
4 columns of 4 components matrix of single-precision floating-point numbers.
-
vec< 4, unsigned int, mediump > mediump_uvec4
4 components vector of medium qualifier unsigned integer numbers.
-
uint64 highp_u64
High qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:133
-
vec< 1, f64, mediump > mediump_f64vec1
Medium double-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:491
-
vec< 3, f32, defaultp > f32vec3
Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:463
-
mat< 2, 2, f32, mediump > mediump_fmat2
Medium single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:528
-
double highp_float64_t
High 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:175
-
mat< 4, 4, f64, defaultp > f64mat4
Double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:586
-
vec< 1, int, mediump > mediump_ivec1
1 component vector of signed integer values.
-
vec< 4, double, mediump > mediump_dvec4
4 components vector of medium double-qualifier floating-point numbers.
-
vec< 3, float, highp > highp_vec3
3 components vector of high single-qualifier floating-point numbers.
-
mat< 4, 2, double, lowp > lowp_dmat4x2
4 columns of 2 components matrix of double-precision floating-point numbers using low precision arith...
-
mat< 2, 2, float, defaultp > mat2x2
2 columns of 2 components matrix of single-precision floating-point numbers.
-
mat< 2, 2, f64, defaultp > f64mat2
Double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:584
-
mat< 4, 3, f32, mediump > mediump_fmat4x3
Medium single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:647
-
mat< 3, 3, f32, mediump > mediump_f32mat3
Medium single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:545
-
uint32 mediump_uint32_t
Medium qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:127
-
uint64 lowp_uint64
Low qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:136
-
mat< 3, 3, float, mediump > mediump_mat3x3
3 columns of 3 components matrix of single-precision floating-point numbers using medium precision ar...
-
mat< 2, 2, f32, mediump > mediump_fmat2x2
Medium single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:640
-
vec< 1, f32, defaultp > f32vec1
Single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:461
-
mat< 4, 4, f32, highp > highp_f32mat4
High single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:550
-
qua< float, highp > highp_quat
Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs...
-
double highp_float64
High 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:170
-
mat< 3, 2, double, mediump > mediump_dmat3x2
3 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
-
uint8 lowp_u8
Low qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:89
-
mat< 3, 2, double, lowp > lowp_dmat3x2
3 columns of 2 components matrix of double-precision floating-point numbers using low precision arith...
-
uint32 u32
Default qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:120
-
mat< 3, 3, f64, defaultp > f64mat3
Double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:585
-
vec< 2, int, highp > highp_ivec2
2 components vector of high qualifier signed integer numbers.
-
mat< 4, 3, double, highp > highp_dmat4x3
4 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 2, 3, float, mediump > mediump_mat2x3
2 columns of 3 components matrix of single-precision floating-point numbers using medium precision ar...
-
double lowp_float64
Low 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:168
-
vec< 1, i32, defaultp > i32vec1
32 bit signed integer scalar type.
Definition: fwd.hpp:277
-
uint16 highp_uint16
High qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:110
-
mat< 2, 4, f64, mediump > mediump_f64mat2x4
Medium double-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:762
-
vec< 4, i64, highp > highp_i64vec4
High qualifier 64 bit signed integer vector of 4 components type.
Definition: fwd.hpp:295
-
mat< 4, 4, double, mediump > mediump_dmat4x4
4 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 3, 4, f64, defaultp > f64mat3x4
Double-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:787
-
vec< 4, double, highp > highp_dvec4
4 components vector of high double-qualifier floating-point numbers.
-
mat< 2, 2, f32, defaultp > fmat2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:536
-
mat< 3, 4, double, lowp > lowp_dmat3x4
3 columns of 4 components matrix of double-precision floating-point numbers using low precision arith...
-
vec< 3, i16, defaultp > i16vec3
16 bit signed integer vector of 3 components type.
Definition: fwd.hpp:259
-
uint32 lowp_uint32_t
Low qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:126
-
vec< 2, float, lowp > lowp_fvec2
Low single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:427
-
uint32 mediump_uint32
Medium qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:123
-
mat< 4, 4, f32, mediump > mediump_fmat4
Medium single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:530
-
uint64 highp_uint64
High qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:138
-
mat< 2, 2, f32, lowp > lowp_fmat2
Low single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:524
-
uint32 lowp_uint32
Low qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:122
-
vec< 3, float, lowp > lowp_fvec3
Low single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:428
-
vec< 2, float, mediump > mediump_fvec2
Medium Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:432
-
mat< 2, 3, float, highp > highp_mat2x3
2 columns of 3 components matrix of single-precision floating-point numbers using high precision arit...
-
mat< 3, 4, f32, lowp > lowp_fmat3x4
Low single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:635
-
vec< 2, float, defaultp > vec2
2 components vector of single-precision floating-point numbers.
-
mat< 2, 2, f64, lowp > lowp_f64mat2x2
Low double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:750
-
vec< 4, i64, defaultp > i64vec4
64 bit signed integer vector of 4 components type.
Definition: fwd.hpp:300
-
vec< 3, u16, defaultp > u16vec3
Default qualifier 16 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:361
-
vec< 1, u64, lowp > lowp_u64vec1
Low qualifier 64 bit unsigned integer scalar type.
Definition: fwd.hpp:384
-
mat< 2, 2, double, mediump > mediump_dmat2
2 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
-
vec< 1, u16, mediump > mediump_u16vec1
Medium qualifier 16 bit unsigned integer scalar type.
Definition: fwd.hpp:349
-
vec< 2, float, highp > highp_vec2
2 components vector of high single-qualifier floating-point numbers.
-
vec< 2, i8, defaultp > i8vec2
8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:238
-
mat< 2, 3, f64, mediump > mediump_f64mat2x3
Medium double-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:761
-
vec< 4, u32, lowp > lowp_u32vec4
Low qualifier 32 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:367
-
vec< 4, f32, highp > highp_f32vec4
High single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:459
-
vec< 3, unsigned int, defaultp > uvec3
3 components vector of unsigned integer numbers.
-
vec< 1, f32, lowp > lowp_f32vec1
Low single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:446
-
mat< 2, 3, f32, highp > highp_f32mat2x3
High single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:691
-
int64 highp_int64
High qualifier 64 bit signed integer type.
Definition: fwd.hpp:80
-
vec< 2, i32, mediump > mediump_i32vec2
Medium qualifier 32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:268
-
vec< 1, double, lowp > lowp_dvec1
1 component vector of double-precision floating-point numbers using low precision arithmetic in term ...
-
mat< 4, 4, f64, lowp > lowp_f64mat4
Low double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:574
-
mat< 4, 4, f32, defaultp > fmat4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:538
-
mat< 3, 4, f32, mediump > mediump_fmat3x4
Medium single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:645
-
mat< 3, 3, double, lowp > lowp_dmat3
3 columns of 3 components matrix of double-precision floating-point numbers using low precision arith...
-
int16 lowp_int16_t
Low qualifier 16 bit signed integer type.
Definition: fwd.hpp:54
-
vec< 4, i32, highp > highp_i32vec4
High qualifier 32 bit signed integer vector of 4 components type.
Definition: fwd.hpp:275
-
mat< 4, 2, f32, defaultp > f32mat4x2
Single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:702
-
mat< 3, 2, f32, highp > highp_fmat3x2
High single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:653
-
mat< 2, 4, float, defaultp > mat2x4
2 columns of 4 components matrix of single-precision floating-point numbers.
-
mat< 2, 3, f32, mediump > mediump_fmat2x3
Medium single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:641
-
uint32 mediump_u32
Medium qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:118
-
mat< 3, 2, f32, lowp > lowp_fmat3x2
Low single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:633
-
mat< 2, 3, float, lowp > lowp_mat2x3
2 columns of 3 components matrix of single-precision floating-point numbers using low precision arith...
-
mat< 2, 2, float, lowp > lowp_mat2
2 columns of 2 components matrix of single-precision floating-point numbers using low precision arith...
-
mat< 4, 2, f64, mediump > mediump_f64mat4x2
Medium double-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:766
-
vec< 4, bool, lowp > lowp_bvec4
4 components vector of low qualifier bool numbers.
-
vec< 2, u16, highp > highp_u16vec2
High qualifier 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:355
-
vec< 1, f64, highp > highp_f64vec1
High double-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:496
-
vec< 3, int, defaultp > ivec3
3 components vector of signed integer numbers.
Definition: vector_int3.hpp:15
-
vec< 2, i16, mediump > mediump_i16vec2
Medium qualifier 16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:248
-
mat< 2, 4, f32, highp > highp_fmat2x4
High single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:652
-
vec< 3, u64, defaultp > u64vec3
Default qualifier 64 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:401
-
uint8 lowp_uint8
Low qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:94
-
mat< 3, 2, f32, lowp > lowp_f32mat3x2
Low single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:673
-
vec< 4, bool, mediump > mediump_bvec4
4 components vector of medium qualifier bool numbers.
-
mat< 3, 2, float, defaultp > mat3x2
3 columns of 2 components matrix of single-precision floating-point numbers.
-
uint64 lowp_u64
Low qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:131
-
vec< 1, unsigned int, mediump > mediump_uvec1
1 component vector of unsigned integer values.
-
vec< 3, i64, highp > highp_i64vec3
High qualifier 64 bit signed integer vector of 3 components type.
Definition: fwd.hpp:294
-
int8 mediump_int8
Medium qualifier 8 bit signed integer type.
Definition: fwd.hpp:37
-
int64 lowp_int64
Low qualifier 64 bit signed integer type.
Definition: fwd.hpp:78
-
vec< 1, float, lowp > lowp_vec1
1 component vector of single-precision floating-point numbers using low precision arithmetic in term ...
-
mat< 4, 2, f32, mediump > mediump_f32mat4x2
Medium single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:686
-
mat< 3, 3, float, highp > highp_mat3x3
3 columns of 3 components matrix of single-precision floating-point numbers using high precision arit...
-
vec< 3, f64, lowp > lowp_f64vec3
Low double-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:488
-
mat< 3, 4, float, defaultp > mat3x4
3 columns of 4 components matrix of single-precision floating-point numbers.
-
mat< 3, 3, float, lowp > lowp_mat3x3
3 columns of 3 components matrix of single-precision floating-point numbers using low precision arith...
-
vec< 2, u64, defaultp > u64vec2
Default qualifier 64 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:400
-
vec< 3, i64, lowp > lowp_i64vec3
Low qualifier 64 bit signed integer vector of 3 components type.
Definition: fwd.hpp:284
-
vec< 2, i8, mediump > mediump_i8vec2
Medium qualifier 8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:228
-
vec< 4, float, lowp > lowp_vec4
4 components vector of low single-qualifier floating-point numbers.
-
mat< 4, 3, float, defaultp > mat4x3
4 columns of 3 components matrix of single-precision floating-point numbers.
-
mat< 3, 4, f32, defaultp > f32mat3x4
Single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:707
-
mat< 4, 2, double, mediump > mediump_dmat4x2
4 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
-
vec< 2, float, lowp > lowp_vec2
2 components vector of low single-qualifier floating-point numbers.
-
vec< 3, i16, highp > highp_i16vec3
High qualifier 16 bit signed integer vector of 3 components type.
Definition: fwd.hpp:254
-
mat< 2, 3, double, mediump > mediump_dmat2x3
2 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
-
vec< 3, i16, mediump > mediump_i16vec3
Medium qualifier 16 bit signed integer vector of 3 components type.
Definition: fwd.hpp:249
-
uint64 u64
Default qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:134
-
vec< 2, int, mediump > mediump_ivec2
2 components vector of medium qualifier signed integer numbers.
-
mat< 3, 2, f32, mediump > mediump_fmat3x2
Medium single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:643
-
vec< 1, f64, defaultp > f64vec1
Double-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:501
-
vec< 1, i64, mediump > mediump_i64vec1
Medium qualifier 64 bit signed integer scalar type.
Definition: fwd.hpp:287
-
vec< 1, i16, defaultp > i16vec1
16 bit signed integer scalar type.
Definition: fwd.hpp:257
-
mat< 2, 2, double, lowp > lowp_dmat2
2 columns of 2 components matrix of double-precision floating-point numbers using low precision arith...
-
mat< 2, 4, double, highp > highp_dmat2x4
2 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 3, 3, f64, lowp > lowp_f64mat3x3
Low double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:754
-
vec< 2, f64, lowp > lowp_f64vec2
Low double-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:487
-
mat< 2, 3, f32, highp > highp_fmat2x3
High single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:651
-
mat< 4, 3, f32, lowp > lowp_f32mat4x3
Low single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:677
-
mat< 3, 3, f64, lowp > lowp_f64mat3
Low double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:573
-
vec< 3, u64, mediump > mediump_u64vec3
Medium qualifier 64 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:391
-
double mediump_float64
Medium 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:169
-
double float64
Double-qualifier floating-point scalar.
Definition: fwd.hpp:171
-
vec< 2, bool, highp > highp_bvec2
2 components vector of high qualifier bool numbers.
-
vec< 2, i16, highp > highp_i16vec2
High qualifier 16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:253
-
mat< 4, 2, f32, defaultp > fmat4x2
Single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:662
-
mat< 2, 3, f64, lowp > lowp_f64mat2x3
Low double-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:751
-
mat< 3, 4, f32, defaultp > fmat3x4
Single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:667
-
mat< 3, 3, double, lowp > lowp_dmat3x3
3 columns of 3 components matrix of double-precision floating-point numbers using low precision arith...
-
vec< 3, u32, lowp > lowp_u32vec3
Low qualifier 32 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:366
-
mat< 2, 4, f32, defaultp > f32mat2x4
Single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:706
-
vec< 4, float, lowp > lowp_fvec4
Low single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:429
-
vec< 4, f32, mediump > mediump_f32vec4
Medium single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:454
-
vec< 4, i16, defaultp > i16vec4
16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:260
-
uint8 lowp_uint8_t
Low qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:98
-
uint32 highp_uint32_t
High qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:128
-
mat< 3, 3, f32, defaultp > fmat3x3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:664
-
mat< 3, 4, f64, mediump > mediump_f64mat3x4
Medium double-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:765
-
mat< 2, 3, f32, lowp > lowp_fmat2x3
Low single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:631
-
vec< 1, u32, lowp > lowp_u32vec1
Low qualifier 32 bit unsigned integer scalar type.
Definition: fwd.hpp:364
-
mat< 3, 2, float, lowp > lowp_mat3x2
3 columns of 2 components matrix of single-precision floating-point numbers using low precision arith...
-
mat< 2, 3, f32, defaultp > f32mat2x3
Single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:703
-
vec< 1, i32, mediump > mediump_i32vec1
Medium qualifier 32 bit signed integer scalar type.
Definition: fwd.hpp:267
-
vec< 4, u16, highp > highp_u16vec4
High qualifier 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:357
-
vec< 1, i32, lowp > lowp_i32vec1
Low qualifier 32 bit signed integer scalar type.
Definition: fwd.hpp:262
-
vec< 1, i64, lowp > lowp_i64vec1
Low qualifier 64 bit signed integer scalar type.
Definition: fwd.hpp:282
-
vec< 1, u32, highp > highp_u32vec1
High qualifier 32 bit unsigned integer scalar type.
Definition: fwd.hpp:374
-
vec< 1, bool, highp > highp_bvec1
1 component vector of bool values.
-
int16 mediump_int16
Medium qualifier 16 bit signed integer type.
Definition: fwd.hpp:51
-
uint16 mediump_u16
Medium qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:104
-
qua< f64, defaultp > f64quat
Double-qualifier floating-point quaternion.
Definition: fwd.hpp:815
-
vec< 4, float, mediump > mediump_vec4
4 components vector of medium single-qualifier floating-point numbers.
-
vec< 3, f64, mediump > mediump_f64vec3
Medium double-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:493
-
qua< double, defaultp > dquat
Quaternion of double-precision floating-point numbers.
-
vec< 1, u64, defaultp > u64vec1
Default qualifier 64 bit unsigned integer scalar type.
Definition: fwd.hpp:399
-
int64 int64_t
64 bit signed integer type.
Definition: fwd.hpp:85
-
vec< 1, u8, defaultp > u8vec1
Default qualifier 8 bit unsigned integer scalar type.
Definition: fwd.hpp:339
-
vec< 1, i8, highp > highp_i8vec1
High qualifier 8 bit signed integer scalar type.
Definition: fwd.hpp:232
-
vec< 4, u8, defaultp > u8vec4
Default qualifier 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:342
-
int8 int8_t
8 bit signed integer type.
Definition: fwd.hpp:43
-
int32 i32
32 bit signed integer type.
Definition: fwd.hpp:62
-
vec< 1, u32, mediump > mediump_u32vec1
Medium qualifier 32 bit unsigned integer scalar type.
Definition: fwd.hpp:369
-
mat< 2, 2, f64, defaultp > f64mat2x2
Double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:780
-
mat< 2, 2, f32, lowp > lowp_f32mat2x2
Low single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:670
-
vec< 4, f32, lowp > lowp_f32vec4
Low single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:449
-
vec< 3, float, highp > highp_fvec3
High Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:438
-
mat< 4, 2, f64, lowp > lowp_f64mat4x2
Low double-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:756
-
mat< 3, 3, f32, mediump > mediump_fmat3x3
Medium single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:644
-
vec< 1, i64, highp > highp_i64vec1
High qualifier 64 bit signed integer scalar type.
Definition: fwd.hpp:292
-
vec< 4, i8, defaultp > i8vec4
8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:240
-
vec< 1, int, highp > highp_ivec1
1 component vector of signed integer values.
-
vec< 3, bool, mediump > mediump_bvec3
3 components vector of medium qualifier bool numbers.
-
int32 highp_int32
High qualifier 32 bit signed integer type.
Definition: fwd.hpp:66
-
mat< 2, 3, f32, mediump > mediump_f32mat2x3
Medium single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:681
-
mat< 3, 4, double, mediump > mediump_dmat3x4
3 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 3, 2, f64, lowp > lowp_f64mat3x2
Low double-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:753
-
mat< 4, 2, float, defaultp > mat4x2
4 columns of 2 components matrix of single-precision floating-point numbers.
-
vec< 1, float, mediump > mediump_vec1
1 component vector of single-precision floating-point numbers using medium precision arithmetic in te...
-
uint32 highp_u32
High qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:119
-
int32 highp_i32
High qualifier 32 bit signed integer type.
Definition: fwd.hpp:61
-
vec< 4, int, defaultp > ivec4
4 components vector of signed integer numbers.
Definition: vector_int4.hpp:15
-
mat< 4, 4, float, mediump > mediump_mat4x4
4 columns of 4 components matrix of single-precision floating-point numbers using medium precision ar...
-
vec< 4, u64, defaultp > u64vec4
Default qualifier 64 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:402
-
vec< 2, int, lowp > lowp_ivec2
2 components vector of low qualifier signed integer numbers.
-
vec< 4, f32, defaultp > f32vec4
Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:464
-
mat< 2, 3, f64, defaultp > f64mat2x3
Double-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:783
-
mat< 4, 4, f64, mediump > mediump_f64mat4x4
Medium double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:768
-
mat< 2, 2, double, mediump > mediump_dmat2x2
2 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
-
vec< 4, u16, lowp > lowp_u16vec4
Low qualifier 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:347
-
vec< 4, unsigned int, highp > highp_uvec4
4 components vector of high qualifier unsigned integer numbers.
-
uint32 highp_uint32
High qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:124
-
mat< 4, 4, f32, lowp > lowp_f32mat4
Low single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:542
-
mat< 3, 2, f64, defaultp > f64mat3x2
Double-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:781
-
float mediump_float32
Medium 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:153
-
vec< 1, u32, defaultp > u32vec1
Default qualifier 32 bit unsigned integer scalar type.
Definition: fwd.hpp:379
-
mat< 4, 2, float, lowp > lowp_mat4x2
4 columns of 2 components matrix of single-precision floating-point numbers using low precision arith...
-
vec< 4, f64, mediump > mediump_f64vec4
Medium double-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:494
-
mat< 3, 3, f64, defaultp > f64mat3x3
Double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:784
-
float highp_float32
High 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:154
-
uint8 highp_uint8
High qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:96
-
int8 highp_i8
High qualifier 8 bit signed integer type.
Definition: fwd.hpp:33
-
mat< 2, 4, f64, lowp > lowp_f64mat2x4
Low double-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:752
-
mat< 3, 4, f64, lowp > lowp_f64mat3x4
Low double-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:755
-
vec< 3, float, lowp > lowp_vec3
3 components vector of low single-qualifier floating-point numbers.
-
mat< 3, 4, float, highp > highp_mat3x4
3 columns of 4 components matrix of single-precision floating-point numbers using high precision arit...
-
mat< 4, 4, float, lowp > lowp_mat4
4 columns of 4 components matrix of single-precision floating-point numbers using low precision arith...
-
int8 mediump_i8
Medium qualifier 8 bit signed integer type.
Definition: fwd.hpp:32
-
int64 highp_int64_t
High qualifier 64 bit signed integer type.
Definition: fwd.hpp:84
-
mat< 4, 4, f32, defaultp > f32mat4x4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:708
-
float float32_t
Default 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:160
-
mat< 2, 2, f32, defaultp > f32mat2x2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:700
-
vec< 2, i64, lowp > lowp_i64vec2
Low qualifier 64 bit signed integer vector of 2 components type.
Definition: fwd.hpp:283
-
mat< 2, 4, f32, lowp > lowp_f32mat2x4
Low single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:672
-
vec< 4, bool, highp > highp_bvec4
4 components vector of high qualifier bool numbers.
-
uint32 uint32_t
Default qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:129
-
mat< 3, 3, f32, highp > highp_f32mat3
High single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:549
-
mat< 3, 3, f64, mediump > mediump_f64mat3x3
Medium double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:764
-
vec< 2, bool, defaultp > bvec2
2 components vector of boolean.
-
vec< 4, float, defaultp > vec4
4 components vector of single-precision floating-point numbers.
-
uint8 u8
Default qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:92
-
vec< 3, i32, highp > highp_i32vec3
High qualifier 32 bit signed integer vector of 3 components type.
Definition: fwd.hpp:274
-
float float32
Single-qualifier floating-point scalar.
Definition: fwd.hpp:155
-
vec< 4, f32, defaultp > fvec4
Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:444
-
vec< 1, i32, highp > highp_i32vec1
High qualifier 32 bit signed integer scalar type.
Definition: fwd.hpp:272
-
mat< 3, 3, double, highp > highp_dmat3
3 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 3, 3, f32, lowp > lowp_f32mat3
Low single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:541
-
vec< 1, u16, defaultp > u16vec1
Default qualifier 16 bit unsigned integer scalar type.
Definition: fwd.hpp:359
-
mat< 2, 4, float, lowp > lowp_mat2x4
2 columns of 4 components matrix of single-precision floating-point numbers using low precision arith...
-
vec< 1, double, defaultp > dvec1
1 components vector of double-precision floating-point numbers.
-
vec< 1, i8, defaultp > i8vec1
8 bit signed integer scalar type.
Definition: fwd.hpp:237
-
vec< 3, i32, mediump > mediump_i32vec3
Medium qualifier 32 bit signed integer vector of 3 components type.
Definition: fwd.hpp:269
-
vec< 2, i32, defaultp > i32vec2
32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:278
-
vec< 2, bool, mediump > mediump_bvec2
2 components vector of medium qualifier bool numbers.
-
vec< 2, i16, lowp > lowp_i16vec2
Low qualifier 16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:243
-
vec< 2, float, mediump > mediump_vec2
2 components vector of medium single-qualifier floating-point numbers.
-
vec< 2, u64, mediump > mediump_u64vec2
Medium qualifier 64 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:390
-
vec< 4, u8, lowp > lowp_u8vec4
Low qualifier 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:327
-
mat< 3, 3, f32, highp > highp_f32mat3x3
High single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:694
-
vec< 1, u8, highp > highp_u8vec1
High qualifier 8 bit unsigned integer scalar type.
Definition: fwd.hpp:334
-
uint8 highp_uint8_t
High qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:100
-
vec< 4, u32, mediump > mediump_u32vec4
Medium qualifier 32 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:372
-
mat< 2, 2, f32, highp > highp_f32mat2x2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:690
-
vec< 4, f64, highp > highp_f64vec4
High double-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:499
-
mat< 3, 3, double, highp > highp_dmat3x3
3 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
-
vec< 3, u8, lowp > lowp_u8vec3
Low qualifier 8 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:326
-
float highp_f32
High 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:149
-
uint64 mediump_uint64
Medium qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:137
-
int32 highp_int32_t
32 bit signed integer type.
Definition: fwd.hpp:70
-
mat< 2, 3, f32, lowp > lowp_f32mat2x3
Low single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:671
-
vec< 3, f64, defaultp > f64vec3
Double-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:503
-
vec< 3, u16, mediump > mediump_u16vec3
Medium qualifier 16 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:351
-
mat< 2, 4, f64, defaultp > f64mat2x4
Double-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:786
-
qua< double, mediump > mediump_dquat
Quaternion of medium double-qualifier floating-point numbers using high precision arithmetic in term ...
-
mat< 3, 3, f32, defaultp > f32mat3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:553
-
mat< 2, 2, f64, mediump > mediump_f64mat2x2
Medium double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:760
-
vec< 1, double, highp > highp_dvec1
1 component vector of double-precision floating-point numbers using high precision arithmetic in term...
-
mat< 3, 3, float, defaultp > mat3x3
3 columns of 3 components matrix of single-precision floating-point numbers.
-
uint64 mediump_u64
Medium qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:132
-
mat< 4, 4, float, mediump > mediump_mat4
4 columns of 4 components matrix of single-precision floating-point numbers using medium precision ar...
-
vec< 4, i16, highp > highp_i16vec4
High qualifier 16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:255
-
mat< 4, 4, f32, lowp > lowp_fmat4
Low single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:526
-
vec< 2, u32, mediump > mediump_u32vec2
Medium qualifier 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:370
-
vec< 3, u64, highp > highp_u64vec3
High qualifier 64 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:396
-
vec< 2, unsigned int, defaultp > uvec2
2 components vector of unsigned integer numbers.
-
uint16 lowp_u16
Low qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:103
-
vec< 3, i16, lowp > lowp_i16vec3
Low qualifier 16 bit signed integer vector of 3 components type.
Definition: fwd.hpp:244
-
vec< 3, u16, lowp > lowp_u16vec3
Low qualifier 16 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:346
-
vec< 1, unsigned int, defaultp > uvec1
1 component vector of unsigned integer numbers.
-
vec< 3, f32, lowp > lowp_f32vec3
Low single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:448
-
mat< 4, 4, f32, highp > highp_fmat4
High single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:534
-
mat< 3, 3, f32, lowp > lowp_fmat3
Low single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:525
-
int16 highp_i16
High qualifier 16 bit signed integer type.
Definition: fwd.hpp:47
-
qua< f32, mediump > mediump_f32quat
Medium single-qualifier floating-point quaternion.
Definition: fwd.hpp:803
-
int8 highp_int8
High qualifier 8 bit signed integer type.
Definition: fwd.hpp:38
-
mat< 4, 4, f64, defaultp > f64mat4x4
Double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:788
-
mat< 4, 3, f32, defaultp > fmat4x3
Single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:665
-
mat< 2, 4, f32, lowp > lowp_fmat2x4
Low single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:632
-
mat< 3, 3, f64, highp > highp_f64mat3
High double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:581
-
vec< 3, i8, mediump > mediump_i8vec3
Medium qualifier 8 bit signed integer vector of 3 components type.
Definition: fwd.hpp:229
-
vec< 1, f32, highp > highp_f32vec1
High single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:456
-
vec< 3, i8, lowp > lowp_i8vec3
Low qualifier 8 bit signed integer vector of 3 components type.
Definition: fwd.hpp:224
-
mat< 3, 3, double, mediump > mediump_dmat3x3
3 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 4, 3, f64, lowp > lowp_f64mat4x3
Low double-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:757
-
vec< 4, u64, highp > highp_u64vec4
High qualifier 64 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:397
-
mat< 3, 3, float, mediump > mediump_mat3
3 columns of 3 components matrix of single-precision floating-point numbers using medium precision ar...
-
vec< 3, f32, defaultp > fvec3
Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:443
-
vec< 2, i16, defaultp > i16vec2
16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:258
-
vec< 1, bool, mediump > mediump_bvec1
1 component vector of bool values.
-
mat< 4, 4, double, lowp > lowp_dmat4
4 columns of 4 components matrix of double-precision floating-point numbers using low precision arith...
-
mat< 3, 4, double, highp > highp_dmat3x4
3 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 4, 3, f32, defaultp > f32mat4x3
Single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:705
-
mat< 2, 2, f32, defaultp > f32mat2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:552
-
mat< 2, 4, f32, mediump > mediump_fmat2x4
Medium single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:642
-
vec< 2, u16, mediump > mediump_u16vec2
Medium qualifier 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:350
-
mat< 4, 4, f32, lowp > lowp_f32mat4x4
Low single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:678
-
vec< 2, unsigned int, lowp > lowp_uvec2
2 components vector of low qualifier unsigned integer numbers.
-
mat< 3, 3, float, lowp > lowp_mat3
3 columns of 3 components matrix of single-precision floating-point numbers using low precision arith...
-
vec< 2, u8, lowp > lowp_u8vec2
Low qualifier 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:325
-
vec< 2, double, lowp > lowp_dvec2
2 components vector of low double-qualifier floating-point numbers.
-
mat< 3, 3, f64, mediump > mediump_f64mat3
Medium double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:577
-
int16 lowp_i16
Low qualifier 16 bit signed integer type.
Definition: fwd.hpp:45
-
vec< 1, float, defaultp > vec1
1 components vector of single-precision floating-point numbers.
-
vec< 3, unsigned int, mediump > mediump_uvec3
3 components vector of medium qualifier unsigned integer numbers.
-
mat< 3, 4, f32, highp > highp_fmat3x4
High single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:655
-
double float64_t
Default 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:176
-
mat< 4, 4, f64, highp > highp_f64mat4x4
High double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:778
-
mat< 2, 2, float, highp > highp_mat2
2 columns of 2 components matrix of single-precision floating-point numbers using high precision arit...
-
mat< 4, 3, f32, mediump > mediump_f32mat4x3
Medium single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:687
-
int16 lowp_int16
Low qualifier 16 bit signed integer type.
Definition: fwd.hpp:50
-
vec< 3, int, lowp > lowp_ivec3
3 components vector of low qualifier signed integer numbers.
-
mat< 3, 3, f32, mediump > mediump_fmat3
Medium single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:529
-
mat< 4, 4, double, mediump > mediump_dmat4
4 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 4, 4, f32, highp > highp_f32mat4x4
High single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:698
-
int64 lowp_int64_t
Low qualifier 64 bit signed integer type.
Definition: fwd.hpp:82
-
vec< 4, int, lowp > lowp_ivec4
4 components vector of low qualifier signed integer numbers.
-
uint16 uint16_t
Default qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:115
-
vec< 4, unsigned int, lowp > lowp_uvec4
4 components vector of low qualifier unsigned integer numbers.
-
vec< 2, f64, highp > highp_f64vec2
High double-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:497
-
vec< 2, u64, lowp > lowp_u64vec2
Low qualifier 64 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:385
-
mat< 3, 3, f32, defaultp > fmat3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:537
-
mat< 3, 2, f32, mediump > mediump_f32mat3x2
Medium single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:683
-
mat< 3, 3, double, defaultp > dmat3x3
3 columns of 3 components matrix of double-precision floating-point numbers.
-
mat< 3, 3, double, defaultp > dmat3
3 columns of 3 components matrix of double-precision floating-point numbers.
-
mat< 4, 2, f32, lowp > lowp_f32mat4x2
Low single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:676
-
int32 lowp_int32
Low qualifier 32 bit signed integer type.
Definition: fwd.hpp:64
-
vec< 4, i64, mediump > mediump_i64vec4
Medium qualifier 64 bit signed integer vector of 4 components type.
Definition: fwd.hpp:290
-
vec< 4, bool, defaultp > bvec4
4 components vector of boolean.
-
uint8 uint8_t
Default qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:101
-
vec< 1, i8, mediump > mediump_i8vec1
Medium qualifier 8 bit signed integer scalar type.
Definition: fwd.hpp:227
-
int32 mediump_int32_t
Medium qualifier 32 bit signed integer type.
Definition: fwd.hpp:69
-
mat< 4, 3, double, mediump > mediump_dmat4x3
4 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
-
float highp_float32_t
High 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:159
-
mat< 3, 3, f32, defaultp > f32mat3x3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:704
-
mat< 4, 4, double, highp > highp_dmat4x4
4 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
-
uint8 highp_u8
High qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:91
-
mat< 2, 3, double, highp > highp_dmat2x3
2 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
-
uint8 mediump_uint8
Medium qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:95
-
mat< 4, 2, f32, highp > highp_fmat4x2
High single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:656
-
vec< 2, f32, highp > highp_f32vec2
High single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:457
-
mat< 2, 4, double, mediump > mediump_dmat2x4
2 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 2, 2, double, defaultp > dmat2
2 columns of 2 components matrix of double-precision floating-point numbers.
-
vec< 4, float, highp > highp_vec4
4 components vector of high single-qualifier floating-point numbers.
-
int64 mediump_int64_t
Medium qualifier 64 bit signed integer type.
Definition: fwd.hpp:83
-
vec< 3, u64, lowp > lowp_u64vec3
Low qualifier 64 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:386
-
mat< 4, 4, double, defaultp > dmat4x4
4 columns of 4 components matrix of double-precision floating-point numbers.
-
vec< 1, bool, lowp > lowp_bvec1
1 component vector of bool values.
-
mat< 2, 2, f64, highp > highp_f64mat2x2
High double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:770
-
vec< 3, u32, highp > highp_u32vec3
High qualifier 32 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:376
-
vec< 3, bool, highp > highp_bvec3
3 components vector of high qualifier bool numbers.
-
int8 highp_int8_t
High qualifier 8 bit signed integer type.
Definition: fwd.hpp:42
-
qua< f32, lowp > lowp_f32quat
Low single-qualifier floating-point quaternion.
Definition: fwd.hpp:802
-
vec< 4, i32, lowp > lowp_i32vec4
Low qualifier 32 bit signed integer vector of 4 components type.
Definition: fwd.hpp:265
-
vec< 1, i16, highp > highp_i16vec1
High qualifier 16 bit signed integer scalar type.
Definition: fwd.hpp:252
-
mat< 4, 4, f32, lowp > lowp_fmat4x4
Low single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:638
-
mat< 4, 3, double, lowp > lowp_dmat4x3
4 columns of 3 components matrix of double-precision floating-point numbers using low precision arith...
-
mat< 3, 2, f32, defaultp > f32mat3x2
Single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:701
-
mat< 3, 3, f32, lowp > lowp_f32mat3x3
Low single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:674
-
vec< 2, i8, lowp > lowp_i8vec2
Low qualifier 8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:223
-
vec< 4, i32, defaultp > i32vec4
32 bit signed integer vector of 4 components type.
Definition: fwd.hpp:280
-
mat< 2, 2, f32, highp > highp_f32mat2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:548
-
float lowp_f32
Low 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:147
-
vec< 1, unsigned int, highp > highp_uvec1
1 component vector of unsigned integer values.
-
vec< 4, u16, mediump > mediump_u16vec4
Medium qualifier 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:352
-
vec< 3, unsigned int, highp > highp_uvec3
3 components vector of high qualifier unsigned integer numbers.
-
vec< 3, u32, defaultp > u32vec3
Default qualifier 32 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:381
-
vec< 2, u8, defaultp > u8vec2
Default qualifier 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:340
-
vec< 3, double, mediump > mediump_dvec3
3 components vector of medium double-qualifier floating-point numbers.
-
int16 mediump_i16
Medium qualifier 16 bit signed integer type.
Definition: fwd.hpp:46
-
vec< 2, u64, highp > highp_u64vec2
High qualifier 64 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:395
-
vec< 1, int, lowp > lowp_ivec1
1 component vector of signed integer values.
-
vec< 3, i8, defaultp > i8vec3
8 bit signed integer vector of 3 components type.
Definition: fwd.hpp:239
-
mat< 2, 2, f32, mediump > mediump_f32mat2x2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:680
-
mat< 4, 4, float, defaultp > mat4
4 columns of 4 components matrix of single-precision floating-point numbers.
-
uint16 mediump_uint16_t
Medium qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:113
-
mat< 4, 3, f64, mediump > mediump_f64mat4x3
Medium double-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:767
-
vec< 3, u8, defaultp > u8vec3
Default qualifier 8 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:341
-
double highp_f64
High 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:165
-
vec< 3, float, mediump > mediump_fvec3
Medium Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:433
-
int64 mediump_int64
Medium qualifier 64 bit signed integer type.
Definition: fwd.hpp:79
-
vec< 4, u64, mediump > mediump_u64vec4
Medium qualifier 64 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:392
-
mat< 2, 2, double, highp > highp_dmat2x2
2 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
-
uint64 uint64_t
Default qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:143
-
vec< 2, u32, highp > highp_u32vec2
High qualifier 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:375
-
vec< 1, double, mediump > mediump_dvec1
1 component vector of double-precision floating-point numbers using medium precision arithmetic in te...
-
vec< 1, float, highp > highp_fvec1
High single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:436
-
vec< 4, i64, lowp > lowp_i64vec4
Low qualifier 64 bit signed integer vector of 4 components type.
Definition: fwd.hpp:285
-
vec< 4, int, highp > highp_ivec4
4 components vector of high qualifier signed integer numbers.
-
vec< 3, i32, defaultp > i32vec3
32 bit signed integer vector of 3 components type.
Definition: fwd.hpp:279
-
mat< 2, 4, f32, highp > highp_f32mat2x4
High single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:692
-
vec< 1, i8, lowp > lowp_i8vec1
Low qualifier 8 bit signed integer scalar type.
Definition: fwd.hpp:222
-
mat< 2, 2, f64, highp > highp_f64mat2
High double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:580
-
vec< 3, double, lowp > lowp_dvec3
3 components vector of low double-qualifier floating-point numbers.
-
uint16 lowp_uint16_t
Low qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:112
-
vec< 2, double, defaultp > dvec2
2 components vector of double-precision floating-point numbers.
-
mat< 3, 2, f64, highp > highp_f64mat3x2
High double-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:773
-
vec< 3, u32, mediump > mediump_u32vec3
Medium qualifier 32 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:371
-
uint16 lowp_uint16
Low qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:108
-
mat< 3, 3, float, highp > highp_mat3
3 columns of 3 components matrix of single-precision floating-point numbers using high precision arit...
-
vec< 3, u8, highp > highp_u8vec3
High qualifier 8 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:336
-
vec< 4, f64, defaultp > f64vec4
Double-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:504
-
vec< 2, i8, highp > highp_i8vec2
High qualifier 8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:233
-
mat< 2, 2, double, highp > highp_dmat2
2 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
-
vec< 3, i32, lowp > lowp_i32vec3
Low qualifier 32 bit signed integer vector of 3 components type.
Definition: fwd.hpp:264
-
int32 lowp_i32
Low qualifier 32 bit signed integer type.
Definition: fwd.hpp:59
-
mat< 4, 4, f32, mediump > mediump_fmat4x4
Medium single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:648
-
vec< 3, float, defaultp > vec3
3 components vector of single-precision floating-point numbers.
-
mat< 4, 4, double, lowp > lowp_dmat4x4
4 columns of 4 components matrix of double-precision floating-point numbers using low precision arith...
-
int64 mediump_i64
Medium qualifier 64 bit signed integer type.
Definition: fwd.hpp:74
-
mat< 4, 4, double, highp > highp_dmat4
4 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
-
vec< 4, i16, lowp > lowp_i16vec4
Low qualifier 16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:245
-
vec< 1, bool, defaultp > bvec1
1 components vector of boolean.
-
mat< 4, 3, f64, highp > highp_f64mat4x3
High double-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:777
-
vec< 2, u8, highp > highp_u8vec2
High qualifier 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:335
-
vec< 3, int, mediump > mediump_ivec3
3 components vector of medium qualifier signed integer numbers.
-
vec< 3, i8, highp > highp_i8vec3
High qualifier 8 bit signed integer vector of 3 components type.
Definition: fwd.hpp:234
-
vec< 3, f64, highp > highp_f64vec3
High double-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:498
-
vec< 2, f32, defaultp > fvec2
Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:442
-
vec< 4, f64, lowp > lowp_f64vec4
Low double-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:489
-
qua< double, highp > highp_dquat
Quaternion of high double-qualifier floating-point numbers using high precision arithmetic in term of...
-
vec< 3, f32, mediump > mediump_f32vec3
Medium single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:453
-
double lowp_f64
Low 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:163
-
mat< 4, 2, f32, lowp > lowp_fmat4x2
Low single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:636
-
vec< 3, int, highp > highp_ivec3
3 components vector of high qualifier signed integer numbers.
-
mat< 2, 4, f64, highp > highp_f64mat2x4
High double-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:772
-
mat< 4, 4, f64, highp > highp_f64mat4
High double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:582
-
vec< 4, i32, mediump > mediump_i32vec4
Medium qualifier 32 bit signed integer vector of 4 components type.
Definition: fwd.hpp:270
-
mat< 2, 2, f32, lowp > lowp_f32mat2
Low single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:540
-
int16 int16_t
16 bit signed integer type.
Definition: fwd.hpp:57
-
mat< 3, 4, double, defaultp > dmat3x4
3 columns of 4 components matrix of double-precision floating-point numbers.
-
mat< 2, 3, double, lowp > lowp_dmat2x3
2 columns of 3 components matrix of double-precision floating-point numbers using low precision arith...
-
int64 highp_i64
High qualifier 64 bit signed integer type.
Definition: fwd.hpp:75
-
mat< 2, 4, float, mediump > mediump_mat2x4
2 columns of 4 components matrix of single-precision floating-point numbers using medium precision ar...
-
mat< 3, 4, f64, highp > highp_f64mat3x4
High double-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:775
-
mat< 3, 3, f32, highp > highp_fmat3
High single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:533
-
mat< 3, 3, f32, mediump > mediump_f32mat3x3
Medium single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:684
-
qua< f64, mediump > mediump_f64quat
Medium double-qualifier floating-point quaternion.
Definition: fwd.hpp:813
-
int32 int32_t
32 bit signed integer type.
Definition: fwd.hpp:71
-
vec< 2, f64, defaultp > f64vec2
Double-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:502
-
vec< 4, unsigned int, defaultp > uvec4
4 components vector of unsigned integer numbers.
-
uint64 lowp_uint64_t
Low qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:140
-
detail::uint64 uint64
64 bit unsigned integer type.
-
int16 highp_int16
High qualifier 16 bit signed integer type.
Definition: fwd.hpp:52
-
mat< 2, 2, double, defaultp > dmat2x2
2 columns of 2 components matrix of double-precision floating-point numbers.
-
vec< 1, i16, mediump > mediump_i16vec1
Medium qualifier 16 bit signed integer scalar type.
Definition: fwd.hpp:247
-
mat< 2, 4, double, defaultp > dmat2x4
2 columns of 4 components matrix of double-precision floating-point numbers.
-
mat< 3, 2, double, highp > highp_dmat3x2
3 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 2, 4, f32, defaultp > fmat2x4
Single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:666
-
mat< 2, 2, f32, highp > highp_fmat2x2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:650
-
vec< 4, float, highp > highp_fvec4
High Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:439
-
mat< 3, 3, f64, highp > highp_f64mat3x3
High double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:774
-
int32 mediump_i32
Medium qualifier 32 bit signed integer type.
Definition: fwd.hpp:60
-
vec< 3, float, mediump > mediump_vec3
3 components vector of medium single-qualifier floating-point numbers.
-
vec< 2, u16, lowp > lowp_u16vec2
Low qualifier 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:345
-
vec< 4, u32, highp > highp_u32vec4
High qualifier 32 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:377
-
mat< 4, 2, double, defaultp > dmat4x2
4 columns of 2 components matrix of double-precision floating-point numbers.
-
vec< 4, double, lowp > lowp_dvec4
4 components vector of low double-qualifier floating-point numbers.
-
float lowp_float32_t
Low 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:157
-
uint64 highp_uint64_t
High qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:142
-
vec< 2, f32, lowp > lowp_f32vec2
Low single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:447
-
vec< 4, u32, defaultp > u32vec4
Default qualifier 32 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:382
-
mat< 2, 2, f64, mediump > mediump_f64mat2
Medium double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:576
-
qua< float, mediump > mediump_quat
Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs...
-
mat< 4, 3, f32, highp > highp_f32mat4x3
High single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:697
-
vec< 3, unsigned int, lowp > lowp_uvec3
3 components vector of low qualifier unsigned integer numbers.
-
mat< 2, 2, float, lowp > lowp_mat2x2
2 columns of 2 components matrix of single-precision floating-point numbers using low precision arith...
-
qua< f32, defaultp > f32quat
Single-qualifier floating-point quaternion.
Definition: fwd.hpp:805
-
detail::int64 int64
64 bit signed integer type.
-
qua< double, lowp > lowp_dquat
Quaternion of double-precision floating-point numbers using high precision arithmetic in term of ULPs...
-
vec< 1, u64, highp > highp_u64vec1
High qualifier 64 bit unsigned integer scalar type.
Definition: fwd.hpp:394
-
mat< 3, 4, float, mediump > mediump_mat3x4
3 columns of 4 components matrix of single-precision floating-point numbers using medium precision ar...
-
mat< 2, 3, f64, highp > highp_f64mat2x3
High double-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:771
-
vec< 4, i8, lowp > lowp_i8vec4
Low qualifier 8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:225
-
mat< 4, 3, f32, lowp > lowp_fmat4x3
Low single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:637
-
float f32
Default 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:150
-
vec< 2, i32, highp > highp_i32vec2
High qualifier 32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:273
-
vec< 1, u8, mediump > mediump_u8vec1
Medium qualifier 8 bit unsigned integer scalar type.
Definition: fwd.hpp:329
-
mat< 4, 3, f32, highp > highp_fmat4x3
High single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:657
-
mat< 3, 2, double, defaultp > dmat3x2
3 columns of 2 components matrix of double-precision floating-point numbers.
-
vec< 4, i16, mediump > mediump_i16vec4
Medium qualifier 16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:250
-
mat< 4, 2, f64, defaultp > f64mat4x2
Double-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:782
-
mat< 2, 3, f32, defaultp > fmat2x3
Single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:663
-
mat< 4, 4, f64, mediump > mediump_f64mat4
Medium double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:578
-
vec< 4, u8, mediump > mediump_u8vec4
Medium qualifier 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:332
-
vec< 3, double, highp > highp_dvec3
3 components vector of high double-qualifier floating-point numbers.
-
mat< 3, 4, f32, lowp > lowp_f32mat3x4
Low single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:675
-
double mediump_float64_t
Medium 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:174
-
mat< 2, 2, float, highp > highp_mat2x2
2 columns of 2 components matrix of single-precision floating-point numbers using high precision arit...
-
mat< 4, 3, float, lowp > lowp_mat4x3
4 columns of 3 components matrix of single-precision floating-point numbers using low precision arith...
-
vec< 2, float, highp > highp_fvec2
High Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:437
-
uint16 u16
Default qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:106
-
int64 lowp_i64
Low qualifier 64 bit signed integer type.
Definition: fwd.hpp:73
-
vec< 1, unsigned int, lowp > lowp_uvec1
1 component vector of unsigned integer values.
-
vec< 2, int, defaultp > ivec2
2 components vector of signed integer numbers.
Definition: vector_int2.hpp:15
-
mat< 4, 4, f32, defaultp > f32mat4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:554
-
mat< 4, 2, f32, mediump > mediump_fmat4x2
Medium single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:646
-
mat< 2, 2, f64, lowp > lowp_f64mat2
Low double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:572
-
int8 mediump_int8_t
Medium qualifier 8 bit signed integer type.
Definition: fwd.hpp:41
-
mat< 3, 3, f32, lowp > lowp_fmat3x3
Low single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:634
-
double lowp_float64_t
Low 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:173
-
int16 highp_int16_t
High qualifier 16 bit signed integer type.
Definition: fwd.hpp:56
-
mat< 3, 3, f32, highp > highp_fmat3x3
High single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:654
-
mat< 4, 4, double, defaultp > dmat4
4 columns of 4 components matrix of double-precision floating-point numbers.
-
vec< 1, i64, defaultp > i64vec1
64 bit signed integer scalar type.
Definition: fwd.hpp:297
-
uint32 lowp_u32
Low qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:117
-
mat< 4, 3, float, mediump > mediump_mat4x3
4 columns of 3 components matrix of single-precision floating-point numbers using medium precision ar...
-
vec< 1, u8, lowp > lowp_u8vec1
Low qualifier 8 bit unsigned integer scalar type.
Definition: fwd.hpp:324
-
vec< 3, i64, mediump > mediump_i64vec3
Medium qualifier 64 bit signed integer vector of 3 components type.
Definition: fwd.hpp:289
-
vec< 1, int, defaultp > ivec1
1 component vector of signed integer numbers.
Definition: vector_int1.hpp:28
-
qua< f32, highp > highp_f32quat
High single-qualifier floating-point quaternion.
Definition: fwd.hpp:804
-
uint16 highp_u16
High qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:105
-
vec< 1, f32, defaultp > fvec1
Single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:441
-
mat< 3, 2, float, mediump > mediump_mat3x2
3 columns of 2 components matrix of single-precision floating-point numbers using medium precision ar...
-
vec< 2, bool, lowp > lowp_bvec2
2 components vector of low qualifier bool numbers.
-
vec< 2, u8, mediump > mediump_u8vec2
Medium qualifier 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:330
-
int32 lowp_int32_t
Low qualifier 32 bit signed integer type.
Definition: fwd.hpp:68
-
vec< 1, u16, lowp > lowp_u16vec1
Low qualifier 16 bit unsigned integer scalar type.
Definition: fwd.hpp:344
-
mat< 4, 4, f32, highp > highp_fmat4x4
High single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:658
-
mat< 3, 4, f32, highp > highp_f32mat3x4
High single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:695
-
vec< 3, bool, defaultp > bvec3
3 components vector of boolean.
-
vec< 2, f32, defaultp > f32vec2
Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:462
-
vec< 3, u16, highp > highp_u16vec3
High qualifier 16 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:356
-
float mediump_float32_t
Medium 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:158
-
mat< 2, 2, f32, defaultp > fmat2x2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:660
-
float mediump_f32
Medium 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:148
-
mat< 4, 4, f32, mediump > mediump_f32mat4x4
Medium single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:688
-
qua< float, lowp > lowp_quat
Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs...
-
vec< 2, f32, mediump > mediump_f32vec2
Medium single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:452
-
int8 lowp_int8
Low qualifier 8 bit signed integer type.
Definition: fwd.hpp:36
-
mat< 2, 3, float, defaultp > mat2x3
2 columns of 3 components matrix of single-precision floating-point numbers.
-
vec< 1, f64, lowp > lowp_f64vec1
Low double-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:486
-
mat< 3, 2, f32, highp > highp_f32mat3x2
High single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:693
-
mat< 3, 2, f64, mediump > mediump_f64mat3x2
Medium double-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:763
-
mat< 3, 3, double, mediump > mediump_dmat3
3 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
-
vec< 3, u8, mediump > mediump_u8vec3
Medium qualifier 8 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:331
-
mat< 2, 3, double, defaultp > dmat2x3
2 columns of 3 components matrix of double-precision floating-point numbers.
-
mat< 4, 4, f64, lowp > lowp_f64mat4x4
Low double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:758
-
vec< 1, i16, lowp > lowp_i16vec1
Low qualifier 16 bit signed integer scalar type.
Definition: fwd.hpp:242
-
vec< 3, double, defaultp > dvec3
3 components vector of double-precision floating-point numbers.
-
mat< 2, 4, double, lowp > lowp_dmat2x4
2 columns of 4 components matrix of double-precision floating-point numbers using low precision arith...
-
int8 lowp_int8_t
Low qualifier 8 bit signed integer type.
Definition: fwd.hpp:40
-
vec< 2, u32, lowp > lowp_u32vec2
Low qualifier 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:365
-
mat< 2, 4, f32, mediump > mediump_f32mat2x4
Medium single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:682
-
mat< 4, 3, f64, defaultp > f64mat4x3
Double-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:785
-
vec< 2, i64, highp > highp_i64vec2
High qualifier 64 bit signed integer vector of 2 components type.
Definition: fwd.hpp:293
-
mat< 4, 4, f32, mediump > mediump_f32mat4
Medium single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:546
-
mat< 3, 2, float, highp > highp_mat3x2
3 columns of 2 components matrix of single-precision floating-point numbers using high precision arit...
-
mat< 4, 4, float, highp > highp_mat4x4
4 columns of 4 components matrix of single-precision floating-point numbers using high precision arit...
-
vec< 2, double, mediump > mediump_dvec2
2 components vector of medium double-qualifier floating-point numbers.
-
mat< 2, 2, double, lowp > lowp_dmat2x2
2 columns of 2 components matrix of double-precision floating-point numbers using low precision arith...
-
int64 i64
64 bit signed integer type.
Definition: fwd.hpp:76
-
double f64
Default 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:166
-
vec< 3, bool, lowp > lowp_bvec3
3 components vector of low qualifier bool numbers.
-
mat< 3, 4, float, lowp > lowp_mat3x4
3 columns of 4 components matrix of single-precision floating-point numbers using low precision arith...
-
mat< 4, 4, float, lowp > lowp_mat4x4
4 columns of 4 components matrix of single-precision floating-point numbers using low precision arith...
-
vec< 1, float, highp > highp_vec1
1 component vector of single-precision floating-point numbers using high precision arithmetic in term...
-
vec< 1, f32, mediump > mediump_f32vec1
Medium single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:451
-
mat< 3, 4, f32, mediump > mediump_f32mat3x4
Medium single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:685
-
mat< 2, 2, f32, highp > highp_fmat2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:532
-
vec< 2, unsigned int, highp > highp_uvec2
2 components vector of high qualifier unsigned integer numbers.
-
vec< 3, f32, highp > highp_f32vec3
High single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:458
-
mat< 2, 2, float, mediump > mediump_mat2x2
2 columns of 2 components matrix of single-precision floating-point numbers using medium precision ar...
-
vec< 4, i8, mediump > mediump_i8vec4
Medium qualifier 8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:230
-
float lowp_float32
Low 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:152
-
vec< 2, u32, defaultp > u32vec2
Default qualifier 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:380
-
vec< 2, unsigned int, mediump > mediump_uvec2
2 components vector of medium qualifier unsigned integer numbers.
-
qua< float, defaultp > quat
Quaternion of single-precision floating-point numbers.
-
vec< 2, double, highp > highp_dvec2
2 components vector of high double-qualifier floating-point numbers.
-
vec< 4, float, mediump > mediump_fvec4
Medium Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:434
-
int32 mediump_int32
Medium qualifier 32 bit signed integer type.
Definition: fwd.hpp:65
-
vec< 2, i64, defaultp > i64vec2
64 bit signed integer vector of 2 components type.
Definition: fwd.hpp:298
-
int16 i16
16 bit signed integer type.
Definition: fwd.hpp:48
-
vec< 4, double, defaultp > dvec4
4 components vector of double-precision floating-point numbers.
-
mat< 4, 4, f32, defaultp > fmat4x4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:668
-
mat< 2, 2, float, mediump > mediump_mat2
2 columns of 2 components matrix of single-precision floating-point numbers using medium precision ar...
-
qua< f64, lowp > lowp_f64quat
Low double-qualifier floating-point quaternion.
Definition: fwd.hpp:812
-
mat< 2, 2, float, defaultp > mat2
2 columns of 2 components matrix of single-precision floating-point numbers.
-
mat< 3, 2, f32, defaultp > fmat3x2
Single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:661
-
mat< 4, 3, double, defaultp > dmat4x3
4 columns of 3 components matrix of double-precision floating-point numbers.
-
mat< 4, 2, double, highp > highp_dmat4x2
4 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
-
vec< 4, u16, defaultp > u16vec4
Default qualifier 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:362
-
vec< 2, u16, defaultp > u16vec2
Default qualifier 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:360
-
uint8 mediump_u8
Medium qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:90
-
mat< 2, 2, f32, lowp > lowp_fmat2x2
Low single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:630
-
vec< 4, i8, highp > highp_i8vec4
High qualifier 8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:235
-
vec< 4, u64, lowp > lowp_u64vec4
Low qualifier 64 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:387
-
vec< 2, i64, mediump > mediump_i64vec2
Medium qualifier 64 bit signed integer vector of 2 components type.
Definition: fwd.hpp:288
-
mat< 4, 2, f64, highp > highp_f64mat4x2
High double-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:776
-
mat< 4, 4, float, highp > highp_mat4
4 columns of 4 components matrix of single-precision floating-point numbers using high precision arit...
-
int16 mediump_int16_t
Medium qualifier 16 bit signed integer type.
Definition: fwd.hpp:55
-
int8 lowp_i8
Low qualifier 8 bit signed integer type.
Definition: fwd.hpp:31
-
mat< 4, 2, float, highp > highp_mat4x2
4 columns of 2 components matrix of single-precision floating-point numbers using high precision arit...
-
vec< 3, i64, defaultp > i64vec3
64 bit signed integer vector of 3 components type.
Definition: fwd.hpp:299
-
vec< 2, i32, lowp > lowp_i32vec2
Low qualifier 32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:263
-
qua< f64, highp > highp_f64quat
High double-qualifier floating-point quaternion.
Definition: fwd.hpp:814
-
mat< 3, 3, float, defaultp > mat3
3 columns of 3 components matrix of single-precision floating-point numbers.
-
vec< 2, f64, mediump > mediump_f64vec2
Medium double-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:492
-
uint16 highp_uint16_t
High qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:114
-
vec< 1, float, lowp > lowp_fvec1
Low single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:426
-
int8 i8
8 bit signed integer type.
Definition: fwd.hpp:34
-
uint64 mediump_uint64_t
Medium qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:141
-
vec< 1, u64, mediump > mediump_u64vec1
Medium qualifier 64 bit unsigned integer scalar type.
Definition: fwd.hpp:389
-
mat< 2, 2, f32, mediump > mediump_f32mat2
Medium single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:544
-
vec< 4, int, mediump > mediump_ivec4
4 components vector of medium qualifier signed integer numbers.
-
mat< 2, 4, float, highp > highp_mat2x4
2 columns of 4 components matrix of single-precision floating-point numbers using high precision arit...
-
uint8 mediump_uint8_t
Medium qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:99
-
Definition: common.hpp:20
-
double mediump_f64
Medium 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:164
-
vec< 1, float, mediump > mediump_fvec1
Medium single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:431
-
uint16 mediump_uint16
Medium qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:109
-
vec< 4, u8, highp > highp_u8vec4
High qualifier 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:337
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00036.html b/tests/OpenGL/package/glm/doc/api/a00036.html deleted file mode 100644 index e9fca8f8..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00036.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - -0.9.9 API documentation: geometric.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
geometric.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00036_source.html b/tests/OpenGL/package/glm/doc/api/a00036_source.html deleted file mode 100644 index 2115bb4c..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00036_source.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - -0.9.9 API documentation: geometric.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
geometric.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 #include "detail/type_vec3.hpp"
-
16 
-
17 namespace glm
-
18 {
-
21 
-
29  template<length_t L, typename T, qualifier Q>
-
30  GLM_FUNC_DECL T length(vec<L, T, Q> const& x);
-
31 
-
39  template<length_t L, typename T, qualifier Q>
-
40  GLM_FUNC_DECL T distance(vec<L, T, Q> const& p0, vec<L, T, Q> const& p1);
-
41 
-
49  template<length_t L, typename T, qualifier Q>
-
50  GLM_FUNC_DECL T dot(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
-
51 
-
58  template<typename T, qualifier Q>
-
59  GLM_FUNC_DECL vec<3, T, Q> cross(vec<3, T, Q> const& x, vec<3, T, Q> const& y);
-
60 
-
69  template<length_t L, typename T, qualifier Q>
-
70  GLM_FUNC_DECL vec<L, T, Q> normalize(vec<L, T, Q> const& x);
-
71 
-
79  template<length_t L, typename T, qualifier Q>
-
80  GLM_FUNC_DECL vec<L, T, Q> faceforward(
-
81  vec<L, T, Q> const& N,
-
82  vec<L, T, Q> const& I,
-
83  vec<L, T, Q> const& Nref);
-
84 
-
93  template<length_t L, typename T, qualifier Q>
-
94  GLM_FUNC_DECL vec<L, T, Q> reflect(
-
95  vec<L, T, Q> const& I,
-
96  vec<L, T, Q> const& N);
-
97 
-
107  template<length_t L, typename T, qualifier Q>
-
108  GLM_FUNC_DECL vec<L, T, Q> refract(
-
109  vec<L, T, Q> const& I,
-
110  vec<L, T, Q> const& N,
-
111  T eta);
-
112 
-
114 }//namespace glm
-
115 
-
116 #include "detail/func_geometric.inl"
-
GLM_FUNC_DECL vec< L, T, Q > reflect(vec< L, T, Q > const &I, vec< L, T, Q > const &N)
For the incident vector I and surface orientation N, returns the reflection direction : result = I - ...
-
GLM_FUNC_DECL vec< L, T, Q > faceforward(vec< L, T, Q > const &N, vec< L, T, Q > const &I, vec< L, T, Q > const &Nref)
If dot(Nref, I) < 0.0, return N, otherwise, return -N.
-
GLM_FUNC_DECL T length(vec< L, T, Q > const &x)
Returns the length of x, i.e., sqrt(x * x).
-
GLM_FUNC_DECL vec< 3, T, Q > cross(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)
Returns the cross product of x and y.
-
GLM_FUNC_DECL vec< L, T, Q > refract(vec< L, T, Q > const &I, vec< L, T, Q > const &N, T eta)
For the incident vector I and surface normal N, and the ratio of indices of refraction eta...
-
GLM_FUNC_DECL vec< L, T, Q > normalize(vec< L, T, Q > const &x)
Returns a vector in the same direction as x but with length of 1.
-
Core features
-
GLM_FUNC_DECL T distance(vec< L, T, Q > const &p0, vec< L, T, Q > const &p1)
Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).
-
GLM_FUNC_DECL T dot(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Returns the dot product of x and y, i.e., result = x * y.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00037.html b/tests/OpenGL/package/glm/doc/api/a00037.html deleted file mode 100644 index b1a7039b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00037.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - -0.9.9 API documentation: glm.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
glm.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file glm.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00037_source.html b/tests/OpenGL/package/glm/doc/api/a00037_source.html deleted file mode 100644 index 775648f2..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00037_source.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - -0.9.9 API documentation: glm.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
glm.hpp
-
-
-Go to the documentation of this file.
1 
-
103 #include "detail/_fixes.hpp"
-
104 
-
105 #include "detail/setup.hpp"
-
106 
-
107 #pragma once
-
108 
-
109 #include <cmath>
-
110 #include <climits>
-
111 #include <cfloat>
-
112 #include <limits>
-
113 #include <cassert>
-
114 #include "fwd.hpp"
-
115 
-
116 #include "vec2.hpp"
-
117 #include "vec3.hpp"
-
118 #include "vec4.hpp"
-
119 #include "mat2x2.hpp"
-
120 #include "mat2x3.hpp"
-
121 #include "mat2x4.hpp"
-
122 #include "mat3x2.hpp"
-
123 #include "mat3x3.hpp"
-
124 #include "mat3x4.hpp"
-
125 #include "mat4x2.hpp"
-
126 #include "mat4x3.hpp"
-
127 #include "mat4x4.hpp"
-
128 
-
129 #include "trigonometric.hpp"
-
130 #include "exponential.hpp"
-
131 #include "common.hpp"
-
132 #include "packing.hpp"
-
133 #include "geometric.hpp"
-
134 #include "matrix.hpp"
-
135 #include "vector_relational.hpp"
-
136 #include "integer.hpp"
-
Core features
-
Core features
-
Core features
-
Core features
-
Core features
-
Core features
-
Core features
-
Core features
-
Core features
-
Core features
-
Core features
-
Core features
-
Core features
-
Core features
-
Core features
-
Core features
-
Core features
-
Core features
-
Core features
-
Core features
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00038.html b/tests/OpenGL/package/glm/doc/api/a00038.html deleted file mode 100644 index 9854848c..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00038.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -0.9.9 API documentation: gradient_paint.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
gradient_paint.hpp File Reference
-
-
- -

GLM_GTX_gradient_paint -More...

- -

Go to the source code of this file.

- - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_gradient_paint

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

Definition in file gradient_paint.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00038_source.html b/tests/OpenGL/package/glm/doc/api/a00038_source.html deleted file mode 100644 index 0e82da14..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00038_source.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - -0.9.9 API documentation: gradient_paint.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
gradient_paint.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../glm.hpp"
-
18 #include "../gtx/optimum_pow.hpp"
-
19 
-
20 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
21 # ifndef GLM_ENABLE_EXPERIMENTAL
-
22 # pragma message("GLM: GLM_GTX_gradient_paint is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
23 # else
-
24 # pragma message("GLM: GLM_GTX_gradient_paint extension included")
-
25 # endif
-
26 #endif
-
27 
-
28 namespace glm
-
29 {
-
32 
-
35  template<typename T, qualifier Q>
-
36  GLM_FUNC_DECL T radialGradient(
-
37  vec<2, T, Q> const& Center,
-
38  T const& Radius,
-
39  vec<2, T, Q> const& Focal,
-
40  vec<2, T, Q> const& Position);
-
41 
-
44  template<typename T, qualifier Q>
-
45  GLM_FUNC_DECL T linearGradient(
-
46  vec<2, T, Q> const& Point0,
-
47  vec<2, T, Q> const& Point1,
-
48  vec<2, T, Q> const& Position);
-
49 
-
51 }// namespace glm
-
52 
-
53 #include "gradient_paint.inl"
-
GLM_FUNC_DECL T radialGradient(vec< 2, T, Q > const &Center, T const &Radius, vec< 2, T, Q > const &Focal, vec< 2, T, Q > const &Position)
Return a color from a radial gradient.
-
GLM_FUNC_DECL T linearGradient(vec< 2, T, Q > const &Point0, vec< 2, T, Q > const &Point1, vec< 2, T, Q > const &Position)
Return a color from a linear gradient.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00039.html b/tests/OpenGL/package/glm/doc/api/a00039.html deleted file mode 100644 index 9959600b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00039.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: handed_coordinate_space.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
handed_coordinate_space.hpp File Reference
-
-
- -

GLM_GTX_handed_coordinate_space -More...

- -

Go to the source code of this file.

- - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_handed_coordinate_space

-
See also
Core features (dependence)
- -

Definition in file handed_coordinate_space.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00039_source.html b/tests/OpenGL/package/glm/doc/api/a00039_source.html deleted file mode 100644 index aaf7013f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00039_source.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - -0.9.9 API documentation: handed_coordinate_space.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
handed_coordinate_space.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../glm.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # ifndef GLM_ENABLE_EXPERIMENTAL
-
20 # pragma message("GLM: GLM_GTX_handed_coordinate_space is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
21 # else
-
22 # pragma message("GLM: GLM_GTX_handed_coordinate_space extension included")
-
23 # endif
-
24 #endif
-
25 
-
26 namespace glm
-
27 {
-
30 
-
33  template<typename T, qualifier Q>
-
34  GLM_FUNC_DECL bool rightHanded(
-
35  vec<3, T, Q> const& tangent,
-
36  vec<3, T, Q> const& binormal,
-
37  vec<3, T, Q> const& normal);
-
38 
-
41  template<typename T, qualifier Q>
-
42  GLM_FUNC_DECL bool leftHanded(
-
43  vec<3, T, Q> const& tangent,
-
44  vec<3, T, Q> const& binormal,
-
45  vec<3, T, Q> const& normal);
-
46 
-
48 }// namespace glm
-
49 
-
50 #include "handed_coordinate_space.inl"
-
GLM_FUNC_DECL bool leftHanded(vec< 3, T, Q > const &tangent, vec< 3, T, Q > const &binormal, vec< 3, T, Q > const &normal)
Return if a trihedron left handed or not.
-
GLM_FUNC_DECL bool rightHanded(vec< 3, T, Q > const &tangent, vec< 3, T, Q > const &binormal, vec< 3, T, Q > const &normal)
Return if a trihedron right handed or not.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00040.html b/tests/OpenGL/package/glm/doc/api/a00040.html deleted file mode 100644 index ba2c95e1..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00040.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -0.9.9 API documentation: hash.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
hash.hpp File Reference
-
-
- -

GLM_GTX_hash -More...

- -

Go to the source code of this file.

-

Detailed Description

-

GLM_GTX_hash

-
See also
Core features (dependence)
- -

Definition in file hash.hpp.

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

GLM_GTC_integer -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - -

-Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int, Q > iround (vec< L, T, Q > const &x)
 Returns a value equal to the nearest integer to x. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType log2 (genIUType x)
 Returns the log2 of x for integer values. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, uint, Q > uround (vec< L, T, Q > const &x)
 Returns a value equal to the nearest integer to x. More...
 
-

Detailed Description

-

GLM_GTC_integer

-
See also
Core features (dependence)
-
-GLM_GTC_integer (dependence)
- -

Definition in file gtc/integer.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00041_source.html b/tests/OpenGL/package/glm/doc/api/a00041_source.html deleted file mode 100644 index ac897205..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00041_source.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - -0.9.9 API documentation: integer.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
gtc/integer.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependencies
-
17 #include "../detail/setup.hpp"
-
18 #include "../detail/qualifier.hpp"
-
19 #include "../common.hpp"
-
20 #include "../integer.hpp"
-
21 #include "../exponential.hpp"
-
22 #include <limits>
-
23 
-
24 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
25 # pragma message("GLM: GLM_GTC_integer extension included")
-
26 #endif
-
27 
-
28 namespace glm
-
29 {
-
32 
-
35  template<typename genIUType>
-
36  GLM_FUNC_DECL genIUType log2(genIUType x);
-
37 
-
47  template<length_t L, typename T, qualifier Q>
-
48  GLM_FUNC_DECL vec<L, int, Q> iround(vec<L, T, Q> const& x);
-
49 
-
59  template<length_t L, typename T, qualifier Q>
-
60  GLM_FUNC_DECL vec<L, uint, Q> uround(vec<L, T, Q> const& x);
-
61 
-
63 } //namespace glm
-
64 
-
65 #include "integer.inl"
-
GLM_FUNC_DECL vec< L, uint, Q > uround(vec< L, T, Q > const &x)
Returns a value equal to the nearest integer to x.
-
GLM_FUNC_DECL genIUType log2(genIUType x)
Returns the log2 of x for integer values.
-
GLM_FUNC_DECL vec< L, int, Q > iround(vec< L, T, Q > const &x)
Returns a value equal to the nearest integer to x.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00042.html b/tests/OpenGL/package/glm/doc/api/a00042.html deleted file mode 100644 index 8779f988..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00042.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - -0.9.9 API documentation: integer.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
gtx/integer.hpp File Reference
-
-
- -

GLM_GTX_integer -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

typedef signed int sint
 32bit signed integer. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename genType >
GLM_FUNC_DECL genType factorial (genType const &x)
 Return the factorial value of a number (!12 max, integer only) From GLM_GTX_integer extension. More...
 
GLM_FUNC_DECL unsigned int floor_log2 (unsigned int x)
 Returns the floor log2 of x. More...
 
GLM_FUNC_DECL int mod (int x, int y)
 Modulus. More...
 
GLM_FUNC_DECL uint mod (uint x, uint y)
 Modulus. More...
 
GLM_FUNC_DECL uint nlz (uint x)
 Returns the number of leading zeros. More...
 
GLM_FUNC_DECL int pow (int x, uint y)
 Returns x raised to the y power. More...
 
GLM_FUNC_DECL uint pow (uint x, uint y)
 Returns x raised to the y power. More...
 
GLM_FUNC_DECL int sqrt (int x)
 Returns the positive square root of x. More...
 
GLM_FUNC_DECL uint sqrt (uint x)
 Returns the positive square root of x. More...
 
-

Detailed Description

-

GLM_GTX_integer

-
See also
Core features (dependence)
- -

Definition in file gtx/integer.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00042_source.html b/tests/OpenGL/package/glm/doc/api/a00042_source.html deleted file mode 100644 index 9093e881..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00042_source.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -0.9.9 API documentation: integer.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
gtx/integer.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../glm.hpp"
-
17 #include "../gtc/integer.hpp"
-
18 
-
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
20 # ifndef GLM_ENABLE_EXPERIMENTAL
-
21 # pragma message("GLM: GLM_GTX_integer is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
22 # else
-
23 # pragma message("GLM: GLM_GTX_integer extension included")
-
24 # endif
-
25 #endif
-
26 
-
27 namespace glm
-
28 {
-
31 
-
34  GLM_FUNC_DECL int pow(int x, uint y);
-
35 
-
38  GLM_FUNC_DECL int sqrt(int x);
-
39 
-
42  GLM_FUNC_DECL unsigned int floor_log2(unsigned int x);
-
43 
-
46  GLM_FUNC_DECL int mod(int x, int y);
-
47 
-
50  template<typename genType>
-
51  GLM_FUNC_DECL genType factorial(genType const& x);
-
52 
-
55  typedef signed int sint;
-
56 
-
59  GLM_FUNC_DECL uint pow(uint x, uint y);
-
60 
-
63  GLM_FUNC_DECL uint sqrt(uint x);
-
64 
-
67  GLM_FUNC_DECL uint mod(uint x, uint y);
-
68 
-
71  GLM_FUNC_DECL uint nlz(uint x);
-
72 
-
74 }//namespace glm
-
75 
-
76 #include "integer.inl"
-
GLM_FUNC_DECL uint nlz(uint x)
Returns the number of leading zeros.
-
GLM_FUNC_DECL uint mod(uint x, uint y)
Modulus.
-
GLM_FUNC_DECL unsigned int floor_log2(unsigned int x)
Returns the floor log2 of x.
-
signed int sint
32bit signed integer.
Definition: gtx/integer.hpp:55
-
GLM_FUNC_DECL genType factorial(genType const &x)
Return the factorial value of a number (!12 max, integer only) From GLM_GTX_integer extension...
-
GLM_FUNC_DECL uint pow(uint x, uint y)
Returns x raised to the y power.
-
GLM_FUNC_DECL uint sqrt(uint x)
Returns the positive square root of x.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00043.html b/tests/OpenGL/package/glm/doc/api/a00043.html deleted file mode 100644 index 02da2db6..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00043.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - -0.9.9 API documentation: integer.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
integer.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

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

GLM_GTX_intersect -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_intersect

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

Definition in file intersect.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00044_source.html b/tests/OpenGL/package/glm/doc/api/a00044_source.html deleted file mode 100644 index dd4a4fdc..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00044_source.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - -0.9.9 API documentation: intersect.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
intersect.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include <cfloat>
-
18 #include <limits>
-
19 #include "../glm.hpp"
-
20 #include "../geometric.hpp"
-
21 #include "../gtx/closest_point.hpp"
-
22 #include "../gtx/vector_query.hpp"
-
23 
-
24 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
25 # ifndef GLM_ENABLE_EXPERIMENTAL
-
26 # pragma message("GLM: GLM_GTX_closest_point is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
27 # else
-
28 # pragma message("GLM: GLM_GTX_closest_point extension included")
-
29 # endif
-
30 #endif
-
31 
-
32 namespace glm
-
33 {
-
36 
-
40  template<typename genType>
-
41  GLM_FUNC_DECL bool intersectRayPlane(
-
42  genType const& orig, genType const& dir,
-
43  genType const& planeOrig, genType const& planeNormal,
-
44  typename genType::value_type & intersectionDistance);
-
45 
-
49  template<typename T, qualifier Q>
-
50  GLM_FUNC_DECL bool intersectRayTriangle(
-
51  vec<3, T, Q> const& orig, vec<3, T, Q> const& dir,
-
52  vec<3, T, Q> const& v0, vec<3, T, Q> const& v1, vec<3, T, Q> const& v2,
-
53  vec<2, T, Q>& baryPosition, T& distance);
-
54 
-
57  template<typename genType>
-
58  GLM_FUNC_DECL bool intersectLineTriangle(
-
59  genType const& orig, genType const& dir,
-
60  genType const& vert0, genType const& vert1, genType const& vert2,
-
61  genType & position);
-
62 
-
66  template<typename genType>
-
67  GLM_FUNC_DECL bool intersectRaySphere(
-
68  genType const& rayStarting, genType const& rayNormalizedDirection,
-
69  genType const& sphereCenter, typename genType::value_type const sphereRadiusSquered,
-
70  typename genType::value_type & intersectionDistance);
-
71 
-
74  template<typename genType>
-
75  GLM_FUNC_DECL bool intersectRaySphere(
-
76  genType const& rayStarting, genType const& rayNormalizedDirection,
-
77  genType const& sphereCenter, const typename genType::value_type sphereRadius,
-
78  genType & intersectionPosition, genType & intersectionNormal);
-
79 
-
82  template<typename genType>
-
83  GLM_FUNC_DECL bool intersectLineSphere(
-
84  genType const& point0, genType const& point1,
-
85  genType const& sphereCenter, typename genType::value_type sphereRadius,
-
86  genType & intersectionPosition1, genType & intersectionNormal1,
-
87  genType & intersectionPosition2 = genType(), genType & intersectionNormal2 = genType());
-
88 
-
90 }//namespace glm
-
91 
-
92 #include "intersect.inl"
-
GLM_FUNC_DECL bool intersectRayTriangle(vec< 3, T, Q > const &orig, vec< 3, T, Q > const &dir, vec< 3, T, Q > const &v0, vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 2, T, Q > &baryPosition, T &distance)
Compute the intersection of a ray and a triangle.
-
GLM_FUNC_DECL bool intersectRaySphere(genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, const typename genType::value_type sphereRadius, genType &intersectionPosition, genType &intersectionNormal)
Compute the intersection of a ray and a sphere.
-
GLM_FUNC_DECL bool intersectRayPlane(genType const &orig, genType const &dir, genType const &planeOrig, genType const &planeNormal, typename genType::value_type &intersectionDistance)
Compute the intersection of a ray and a plane.
-
GLM_FUNC_DECL bool intersectLineTriangle(genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &position)
Compute the intersection of a line and a triangle.
-
GLM_FUNC_DECL bool intersectLineSphere(genType const &point0, genType const &point1, genType const &sphereCenter, typename genType::value_type sphereRadius, genType &intersectionPosition1, genType &intersectionNormal1, genType &intersectionPosition2=genType(), genType &intersectionNormal2=genType())
Compute the intersection of a line and a sphere.
-
GLM_FUNC_DECL T distance(vec< L, T, Q > const &p0, vec< L, T, Q > const &p1)
Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00045.html b/tests/OpenGL/package/glm/doc/api/a00045.html deleted file mode 100644 index a0bd7057..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00045.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - -0.9.9 API documentation: io.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
io.hpp File Reference
-
-
- -

GLM_GTX_io -More...

- -

Go to the source code of this file.

-

Detailed Description

-

GLM_GTX_io

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

Definition in file io.hpp.

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

GLM_GTX_log_base -More...

- -

Go to the source code of this file.

- - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_log_base

-
See also
Core features (dependence)
- -

Definition in file log_base.hpp.

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

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file mat2x2.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00048_source.html b/tests/OpenGL/package/glm/doc/api/a00048_source.html deleted file mode 100644 index 29c2a521..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00048_source.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - -0.9.9 API documentation: mat2x2.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
mat2x2.hpp
-
- - - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00049.html b/tests/OpenGL/package/glm/doc/api/a00049.html deleted file mode 100644 index 02371af4..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00049.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - -0.9.9 API documentation: mat2x3.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
mat2x3.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file mat2x3.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00049_source.html b/tests/OpenGL/package/glm/doc/api/a00049_source.html deleted file mode 100644 index 9b32dceb..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00049_source.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - -0.9.9 API documentation: mat2x3.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
mat2x3.hpp
-
- - - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00050.html b/tests/OpenGL/package/glm/doc/api/a00050.html deleted file mode 100644 index edc8e0d3..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00050.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - -0.9.9 API documentation: mat2x4.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
mat2x4.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file mat2x4.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00050_source.html b/tests/OpenGL/package/glm/doc/api/a00050_source.html deleted file mode 100644 index ef9de3a5..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00050_source.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - -0.9.9 API documentation: mat2x4.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
mat2x4.hpp
-
- - - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00051.html b/tests/OpenGL/package/glm/doc/api/a00051.html deleted file mode 100644 index fe42f0de..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00051.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - -0.9.9 API documentation: mat3x2.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
mat3x2.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file mat3x2.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00051_source.html b/tests/OpenGL/package/glm/doc/api/a00051_source.html deleted file mode 100644 index 7ff21cc9..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00051_source.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - -0.9.9 API documentation: mat3x2.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
mat3x2.hpp
-
- - - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00052.html b/tests/OpenGL/package/glm/doc/api/a00052.html deleted file mode 100644 index e54365b5..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00052.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - -0.9.9 API documentation: mat3x3.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
mat3x3.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file mat3x3.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00052_source.html b/tests/OpenGL/package/glm/doc/api/a00052_source.html deleted file mode 100644 index d05398cc..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00052_source.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -0.9.9 API documentation: mat3x3.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
mat3x3.hpp
-
- - - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00053.html b/tests/OpenGL/package/glm/doc/api/a00053.html deleted file mode 100644 index 595a4ebd..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00053.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - -0.9.9 API documentation: mat3x4.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
mat3x4.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file mat3x4.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00053_source.html b/tests/OpenGL/package/glm/doc/api/a00053_source.html deleted file mode 100644 index ceaa6234..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00053_source.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -0.9.9 API documentation: mat3x4.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
mat3x4.hpp
-
- - - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00054.html b/tests/OpenGL/package/glm/doc/api/a00054.html deleted file mode 100644 index 8a064563..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00054.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - -0.9.9 API documentation: mat4x2.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
mat4x2.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file mat4x2.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00054_source.html b/tests/OpenGL/package/glm/doc/api/a00054_source.html deleted file mode 100644 index 5e8fe2dc..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00054_source.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -0.9.9 API documentation: mat4x2.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
mat4x2.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
- - - -
8 #include "./ext/matrix_float4x2_precision.hpp"
-
9 
- -
Core features
-
Core features
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00055.html b/tests/OpenGL/package/glm/doc/api/a00055.html deleted file mode 100644 index 3905618f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00055.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - -0.9.9 API documentation: mat4x3.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
mat4x3.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file mat4x3.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00055_source.html b/tests/OpenGL/package/glm/doc/api/a00055_source.html deleted file mode 100644 index 85f4e8fe..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00055_source.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -0.9.9 API documentation: mat4x3.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
mat4x3.hpp
-
- - - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00056.html b/tests/OpenGL/package/glm/doc/api/a00056.html deleted file mode 100644 index b4a33834..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00056.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - -0.9.9 API documentation: mat4x4.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
mat4x4.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file mat4x4.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00056_source.html b/tests/OpenGL/package/glm/doc/api/a00056_source.html deleted file mode 100644 index b6f327dc..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00056_source.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - -0.9.9 API documentation: mat4x4.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
mat4x4.hpp
-
- - - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00057.html b/tests/OpenGL/package/glm/doc/api/a00057.html deleted file mode 100644 index 2513496c..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00057.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

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

GLM_GTC_matrix_access -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTC_matrix_access

-
See also
Core features (dependence)
- -

Definition in file matrix_access.hpp.

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

GLM_EXT_matrix_clip_space -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00059_source.html b/tests/OpenGL/package/glm/doc/api/a00059_source.html deleted file mode 100644 index 758d4894..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00059_source.html +++ /dev/null @@ -1,327 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_clip_space.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_clip_space.hpp
-
-
-Go to the documentation of this file.
1 
-
20 #pragma once
-
21 
-
22 // Dependencies
-
23 #include "../ext/scalar_constants.hpp"
-
24 #include "../geometric.hpp"
-
25 #include "../trigonometric.hpp"
-
26 
-
27 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
28 # pragma message("GLM: GLM_EXT_matrix_clip_space extension included")
-
29 #endif
-
30 
-
31 namespace glm
-
32 {
-
35 
-
42  template<typename T>
-
43  GLM_FUNC_DECL mat<4, 4, T, defaultp> ortho(
-
44  T left, T right, T bottom, T top);
-
45 
-
52  template<typename T>
-
53  GLM_FUNC_DECL mat<4, 4, T, defaultp> orthoLH_ZO(
-
54  T left, T right, T bottom, T top, T zNear, T zFar);
-
55 
-
62  template<typename T>
-
63  GLM_FUNC_DECL mat<4, 4, T, defaultp> orthoLH_NO(
-
64  T left, T right, T bottom, T top, T zNear, T zFar);
-
65 
-
72  template<typename T>
-
73  GLM_FUNC_DECL mat<4, 4, T, defaultp> orthoRH_ZO(
-
74  T left, T right, T bottom, T top, T zNear, T zFar);
-
75 
-
82  template<typename T>
-
83  GLM_FUNC_DECL mat<4, 4, T, defaultp> orthoRH_NO(
-
84  T left, T right, T bottom, T top, T zNear, T zFar);
-
85 
-
92  template<typename T>
-
93  GLM_FUNC_DECL mat<4, 4, T, defaultp> orthoZO(
-
94  T left, T right, T bottom, T top, T zNear, T zFar);
-
95 
-
102  template<typename T>
-
103  GLM_FUNC_DECL mat<4, 4, T, defaultp> orthoNO(
-
104  T left, T right, T bottom, T top, T zNear, T zFar);
-
105 
-
113  template<typename T>
-
114  GLM_FUNC_DECL mat<4, 4, T, defaultp> orthoLH(
-
115  T left, T right, T bottom, T top, T zNear, T zFar);
-
116 
-
124  template<typename T>
-
125  GLM_FUNC_DECL mat<4, 4, T, defaultp> orthoRH(
-
126  T left, T right, T bottom, T top, T zNear, T zFar);
-
127 
-
135  template<typename T>
-
136  GLM_FUNC_DECL mat<4, 4, T, defaultp> ortho(
-
137  T left, T right, T bottom, T top, T zNear, T zFar);
-
138 
-
143  template<typename T>
-
144  GLM_FUNC_DECL mat<4, 4, T, defaultp> frustumLH_ZO(
-
145  T left, T right, T bottom, T top, T near, T far);
-
146 
-
151  template<typename T>
-
152  GLM_FUNC_DECL mat<4, 4, T, defaultp> frustumLH_NO(
-
153  T left, T right, T bottom, T top, T near, T far);
-
154 
-
159  template<typename T>
-
160  GLM_FUNC_DECL mat<4, 4, T, defaultp> frustumRH_ZO(
-
161  T left, T right, T bottom, T top, T near, T far);
-
162 
-
167  template<typename T>
-
168  GLM_FUNC_DECL mat<4, 4, T, defaultp> frustumRH_NO(
-
169  T left, T right, T bottom, T top, T near, T far);
-
170 
-
175  template<typename T>
-
176  GLM_FUNC_DECL mat<4, 4, T, defaultp> frustumZO(
-
177  T left, T right, T bottom, T top, T near, T far);
-
178 
-
183  template<typename T>
-
184  GLM_FUNC_DECL mat<4, 4, T, defaultp> frustumNO(
-
185  T left, T right, T bottom, T top, T near, T far);
-
186 
-
192  template<typename T>
-
193  GLM_FUNC_DECL mat<4, 4, T, defaultp> frustumLH(
-
194  T left, T right, T bottom, T top, T near, T far);
-
195 
-
201  template<typename T>
-
202  GLM_FUNC_DECL mat<4, 4, T, defaultp> frustumRH(
-
203  T left, T right, T bottom, T top, T near, T far);
-
204 
-
210  template<typename T>
-
211  GLM_FUNC_DECL mat<4, 4, T, defaultp> frustum(
-
212  T left, T right, T bottom, T top, T near, T far);
-
213 
-
214 
-
224  template<typename T>
-
225  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveRH_ZO(
-
226  T fovy, T aspect, T near, T far);
-
227 
-
237  template<typename T>
-
238  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveRH_NO(
-
239  T fovy, T aspect, T near, T far);
-
240 
-
250  template<typename T>
-
251  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveLH_ZO(
-
252  T fovy, T aspect, T near, T far);
-
253 
-
263  template<typename T>
-
264  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveLH_NO(
-
265  T fovy, T aspect, T near, T far);
-
266 
-
276  template<typename T>
-
277  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveZO(
-
278  T fovy, T aspect, T near, T far);
-
279 
-
289  template<typename T>
-
290  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveNO(
-
291  T fovy, T aspect, T near, T far);
-
292 
-
303  template<typename T>
-
304  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveRH(
-
305  T fovy, T aspect, T near, T far);
-
306 
-
317  template<typename T>
-
318  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveLH(
-
319  T fovy, T aspect, T near, T far);
-
320 
-
331  template<typename T>
-
332  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspective(
-
333  T fovy, T aspect, T near, T far);
-
334 
-
345  template<typename T>
-
346  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovRH_ZO(
-
347  T fov, T width, T height, T near, T far);
-
348 
-
359  template<typename T>
-
360  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovRH_NO(
-
361  T fov, T width, T height, T near, T far);
-
362 
-
373  template<typename T>
-
374  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovLH_ZO(
-
375  T fov, T width, T height, T near, T far);
-
376 
-
387  template<typename T>
-
388  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovLH_NO(
-
389  T fov, T width, T height, T near, T far);
-
390 
-
401  template<typename T>
-
402  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovZO(
-
403  T fov, T width, T height, T near, T far);
-
404 
-
415  template<typename T>
-
416  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovNO(
-
417  T fov, T width, T height, T near, T far);
-
418 
-
430  template<typename T>
-
431  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovRH(
-
432  T fov, T width, T height, T near, T far);
-
433 
-
445  template<typename T>
-
446  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovLH(
-
447  T fov, T width, T height, T near, T far);
-
448 
-
459  template<typename T>
-
460  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFov(
-
461  T fov, T width, T height, T near, T far);
-
462 
-
470  template<typename T>
-
471  GLM_FUNC_DECL mat<4, 4, T, defaultp> infinitePerspectiveLH(
-
472  T fovy, T aspect, T near);
-
473 
-
481  template<typename T>
-
482  GLM_FUNC_DECL mat<4, 4, T, defaultp> infinitePerspectiveRH(
-
483  T fovy, T aspect, T near);
-
484 
-
492  template<typename T>
-
493  GLM_FUNC_DECL mat<4, 4, T, defaultp> infinitePerspective(
-
494  T fovy, T aspect, T near);
-
495 
-
503  template<typename T>
-
504  GLM_FUNC_DECL mat<4, 4, T, defaultp> tweakedInfinitePerspective(
-
505  T fovy, T aspect, T near);
-
506 
-
515  template<typename T>
-
516  GLM_FUNC_DECL mat<4, 4, T, defaultp> tweakedInfinitePerspective(
-
517  T fovy, T aspect, T near, T ep);
-
518 
-
520 }//namespace glm
-
521 
-
522 #include "matrix_clip_space.inl"
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumRH_NO(T left, T right, T bottom, T top, T near, T far)
Creates a right handed frustum matrix.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspective(T fovy, T aspect, T near)
Creates a matrix for a symmetric perspective-view frustum with far plane at infinite with default han...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoZO(T left, T right, T bottom, T top, T zNear, T zFar)
Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > tweakedInfinitePerspective(T fovy, T aspect, T near, T ep)
Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics har...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoRH(T left, T right, T bottom, T top, T zNear, T zFar)
Creates a matrix for an orthographic parallel viewing volume, using right-handed coordinates.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovLH(T fov, T width, T height, T near, T far)
Builds a left handed perspective projection matrix based on a field of view.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumLH_ZO(T left, T right, T bottom, T top, T near, T far)
Creates a left handed frustum matrix.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumLH_NO(T left, T right, T bottom, T top, T near, T far)
Creates a left handed frustum matrix.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumNO(T left, T right, T bottom, T top, T near, T far)
Creates a frustum matrix using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-h...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumRH(T left, T right, T bottom, T top, T near, T far)
Creates a right handed frustum matrix.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumLH(T left, T right, T bottom, T top, T near, T far)
Creates a left handed frustum matrix.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovRH_NO(T fov, T width, T height, T near, T far)
Builds a perspective projection matrix based on a field of view using right-handed coordinates...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFov(T fov, T width, T height, T near, T far)
Builds a perspective projection matrix based on a field of view and the default handedness and defaul...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovRH(T fov, T width, T height, T near, T far)
Builds a right handed perspective projection matrix based on a field of view.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumRH_ZO(T left, T right, T bottom, T top, T near, T far)
Creates a right handed frustum matrix.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoLH_ZO(T left, T right, T bottom, T top, T zNear, T zFar)
Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveLH_ZO(T fovy, T aspect, T near, T far)
Creates a matrix for a left handed, symetric perspective-view frustum.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveRH_NO(T fovy, T aspect, T near, T far)
Creates a matrix for a right handed, symetric perspective-view frustum.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoRH_NO(T left, T right, T bottom, T top, T zNear, T zFar)
Creates a matrix for an orthographic parallel viewing volume, using right-handed coordinates.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveLH_NO(T fovy, T aspect, T near, T far)
Creates a matrix for a left handed, symetric perspective-view frustum.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > ortho(T left, T right, T bottom, T top, T zNear, T zFar)
Creates a matrix for an orthographic parallel viewing volume, using the default handedness and defaul...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovLH_ZO(T fov, T width, T height, T near, T far)
Builds a perspective projection matrix based on a field of view using left-handed coordinates...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumZO(T left, T right, T bottom, T top, T near, T far)
Creates a frustum matrix using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-h...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoLH(T left, T right, T bottom, T top, T zNear, T zFar)
Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoNO(T left, T right, T bottom, T top, T zNear, T zFar)
Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates if GLM_FO...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoLH_NO(T left, T right, T bottom, T top, T zNear, T zFar)
Creates a matrix for an orthographic parallel viewing volume using right-handed coordinates.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovNO(T fov, T width, T height, T near, T far)
Builds a perspective projection matrix based on a field of view using left-handed coordinates if GLM_...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspective(T fovy, T aspect, T near, T far)
Creates a matrix for a symetric perspective-view frustum based on the default handedness and default ...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoRH_ZO(T left, T right, T bottom, T top, T zNear, T zFar)
Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovZO(T fov, T width, T height, T near, T far)
Builds a perspective projection matrix based on a field of view using left-handed coordinates if GLM_...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveRH(T fovy, T aspect, T near)
Creates a matrix for a right handed, symmetric perspective-view frustum with far plane at infinite...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveNO(T fovy, T aspect, T near, T far)
Creates a matrix for a symetric perspective-view frustum using left-handed coordinates if GLM_FORCE_L...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovLH_NO(T fov, T width, T height, T near, T far)
Builds a perspective projection matrix based on a field of view using left-handed coordinates...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveRH_ZO(T fovy, T aspect, T near, T far)
Creates a matrix for a right handed, symetric perspective-view frustum.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveZO(T fovy, T aspect, T near, T far)
Creates a matrix for a symetric perspective-view frustum using left-handed coordinates if GLM_FORCE_L...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveLH(T fovy, T aspect, T near)
Creates a matrix for a left handed, symmetric perspective-view frustum with far plane at infinite...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveLH(T fovy, T aspect, T near, T far)
Creates a matrix for a left handed, symetric perspective-view frustum.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovRH_ZO(T fov, T width, T height, T near, T far)
Builds a perspective projection matrix based on a field of view using right-handed coordinates...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustum(T left, T right, T bottom, T top, T near, T far)
Creates a frustum matrix with default handedness, using the default handedness and default near and f...
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveRH(T fovy, T aspect, T near, T far)
Creates a matrix for a right handed, symetric perspective-view frustum.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00060.html b/tests/OpenGL/package/glm/doc/api/a00060.html deleted file mode 100644 index 878c55db..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00060.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_common.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_common.hpp File Reference
-
- - - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00060_source.html b/tests/OpenGL/package/glm/doc/api/a00060_source.html deleted file mode 100644 index 0232d910..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00060_source.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_common.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_common.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 #include "../detail/qualifier.hpp"
-
16 #include "../detail/_fixes.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # pragma message("GLM: GLM_EXT_matrix_transform extension included")
-
20 #endif
-
21 
-
22 namespace glm
-
23 {
-
26 
-
27  template<length_t C, length_t R, typename T, typename U, qualifier Q>
-
28  GLM_FUNC_DECL mat<C, R, T, Q> mix(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, mat<C, R, U, Q> const& a);
-
29 
-
30  template<length_t C, length_t R, typename T, typename U, qualifier Q>
-
31  GLM_FUNC_DECL mat<C, R, T, Q> mix(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, U a);
-
32 
-
34 }//namespace glm
-
35 
-
36 #include "matrix_common.inl"
-
GLM_FUNC_DECL genTypeT mix(genTypeT x, genTypeT y, genTypeU a)
If genTypeU is a floating scalar or vector: Returns x * (1.0 - a) + y * a, i.e., the linear blend of ...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00061.html b/tests/OpenGL/package/glm/doc/api/a00061.html deleted file mode 100644 index c0ef4551..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00061.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_cross_product.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_cross_product.hpp File Reference
-
-
- -

GLM_GTX_matrix_cross_product -More...

- -

Go to the source code of this file.

- - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_matrix_cross_product

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

Definition in file matrix_cross_product.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00061_source.html b/tests/OpenGL/package/glm/doc/api/a00061_source.html deleted file mode 100644 index 3eb5a4f2..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00061_source.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_cross_product.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_cross_product.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../glm.hpp"
-
18 
-
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
20 # ifndef GLM_ENABLE_EXPERIMENTAL
-
21 # pragma message("GLM: GLM_GTX_matrix_cross_product is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
22 # else
-
23 # pragma message("GLM: GLM_GTX_matrix_cross_product extension included")
-
24 # endif
-
25 #endif
-
26 
-
27 namespace glm
-
28 {
-
31 
-
34  template<typename T, qualifier Q>
-
35  GLM_FUNC_DECL mat<3, 3, T, Q> matrixCross3(
-
36  vec<3, T, Q> const& x);
-
37 
-
40  template<typename T, qualifier Q>
-
41  GLM_FUNC_DECL mat<4, 4, T, Q> matrixCross4(
-
42  vec<3, T, Q> const& x);
-
43 
-
45 }//namespace glm
-
46 
-
47 #include "matrix_cross_product.inl"
-
GLM_FUNC_DECL mat< 4, 4, T, Q > matrixCross4(vec< 3, T, Q > const &x)
Build a cross product matrix.
-
GLM_FUNC_DECL mat< 3, 3, T, Q > matrixCross3(vec< 3, T, Q > const &x)
Build a cross product matrix.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00062.html b/tests/OpenGL/package/glm/doc/api/a00062.html deleted file mode 100644 index 1156dc94..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00062.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_decompose.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_decompose.hpp File Reference
-
-
- -

GLM_GTX_matrix_decompose -More...

- -

Go to the source code of this file.

- - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_matrix_decompose

-
See also
Core features (dependence)
- -

Definition in file matrix_decompose.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00062_source.html b/tests/OpenGL/package/glm/doc/api/a00062_source.html deleted file mode 100644 index a5e9c690..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00062_source.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_decompose.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_decompose.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependencies
-
16 #include "../mat4x4.hpp"
-
17 #include "../vec3.hpp"
-
18 #include "../vec4.hpp"
-
19 #include "../geometric.hpp"
-
20 #include "../gtc/quaternion.hpp"
-
21 #include "../gtc/matrix_transform.hpp"
-
22 
-
23 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
24 # ifndef GLM_ENABLE_EXPERIMENTAL
-
25 # pragma message("GLM: GLM_GTX_matrix_decompose is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
26 # else
-
27 # pragma message("GLM: GLM_GTX_matrix_decompose extension included")
-
28 # endif
-
29 #endif
-
30 
-
31 namespace glm
-
32 {
-
35 
-
38  template<typename T, qualifier Q>
-
39  GLM_FUNC_DECL bool decompose(
-
40  mat<4, 4, T, Q> const& modelMatrix,
-
41  vec<3, T, Q> & scale, qua<T, Q> & orientation, vec<3, T, Q> & translation, vec<3, T, Q> & skew, vec<4, T, Q> & perspective);
-
42 
-
44 }//namespace glm
-
45 
-
46 #include "matrix_decompose.inl"
-
GLM_FUNC_DECL bool decompose(mat< 4, 4, T, Q > const &modelMatrix, vec< 3, T, Q > &scale, qua< T, Q > &orientation, vec< 3, T, Q > &translation, vec< 3, T, Q > &skew, vec< 4, T, Q > &perspective)
Decomposes a model matrix to translations, rotation and scale components.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > scale(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
Builds a scale 4 * 4 matrix created from 3 scalars.
-
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspective(T fovy, T aspect, T near, T far)
Creates a matrix for a symetric perspective-view frustum based on the default handedness and default ...
-
GLM_FUNC_DECL mat< 4, 4, T, Q > orientation(vec< 3, T, Q > const &Normal, vec< 3, T, Q > const &Up)
Build a rotation matrix from a normal and a up vector.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00063.html b/tests/OpenGL/package/glm/doc/api/a00063.html deleted file mode 100644 index 3732425f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00063.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double2x2.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_double2x2.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file matrix_double2x2.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00063_source.html b/tests/OpenGL/package/glm/doc/api/a00063_source.html deleted file mode 100644 index f684672e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00063_source.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double2x2.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_double2x2.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat2x2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef mat<2, 2, double, defaultp> dmat2x2;
-
16 
-
20  typedef mat<2, 2, double, defaultp> dmat2;
-
21 
-
23 }//namespace glm
-
mat< 2, 2, double, defaultp > dmat2
2 columns of 2 components matrix of double-precision floating-point numbers.
-
mat< 2, 2, double, defaultp > dmat2x2
2 columns of 2 components matrix of double-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00064.html b/tests/OpenGL/package/glm/doc/api/a00064.html deleted file mode 100644 index dffcad5c..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00064.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double2x2_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_double2x2_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00064_source.html b/tests/OpenGL/package/glm/doc/api/a00064_source.html deleted file mode 100644 index 40b129dc..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00064_source.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double2x2_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_double2x2_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat2x2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef mat<2, 2, double, lowp> lowp_dmat2;
-
17 
-
22  typedef mat<2, 2, double, mediump> mediump_dmat2;
-
23 
-
28  typedef mat<2, 2, double, highp> highp_dmat2;
-
29 
-
34  typedef mat<2, 2, double, lowp> lowp_dmat2x2;
-
35 
-
40  typedef mat<2, 2, double, mediump> mediump_dmat2x2;
-
41 
-
46  typedef mat<2, 2, double, highp> highp_dmat2x2;
-
47 
-
49 }//namespace glm
-
mat< 2, 2, double, mediump > mediump_dmat2
2 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 2, 2, double, lowp > lowp_dmat2
2 columns of 2 components matrix of double-precision floating-point numbers using low precision arith...
-
mat< 2, 2, double, mediump > mediump_dmat2x2
2 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 2, 2, double, highp > highp_dmat2x2
2 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 2, 2, double, highp > highp_dmat2
2 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 2, 2, double, lowp > lowp_dmat2x2
2 columns of 2 components matrix of double-precision floating-point numbers using low precision arith...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00065.html b/tests/OpenGL/package/glm/doc/api/a00065.html deleted file mode 100644 index 3367bd25..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00065.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double2x3.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_double2x3.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file matrix_double2x3.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00065_source.html b/tests/OpenGL/package/glm/doc/api/a00065_source.html deleted file mode 100644 index 3e4202bf..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00065_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double2x3.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_double2x3.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat2x3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef mat<2, 3, double, defaultp> dmat2x3;
-
16 
-
18 }//namespace glm
-
mat< 2, 3, double, defaultp > dmat2x3
2 columns of 3 components matrix of double-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00066.html b/tests/OpenGL/package/glm/doc/api/a00066.html deleted file mode 100644 index 5bc921b1..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00066.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double2x3_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_double2x3_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00066_source.html b/tests/OpenGL/package/glm/doc/api/a00066_source.html deleted file mode 100644 index cb1ec15f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00066_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double2x3_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_double2x3_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat2x3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef mat<2, 3, double, lowp> lowp_dmat2x3;
-
17 
-
22  typedef mat<2, 3, double, mediump> mediump_dmat2x3;
-
23 
-
28  typedef mat<2, 3, double, highp> highp_dmat2x3;
-
29 
-
31 }//namespace glm
-
mat< 2, 3, double, mediump > mediump_dmat2x3
2 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 2, 3, double, highp > highp_dmat2x3
2 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 2, 3, double, lowp > lowp_dmat2x3
2 columns of 3 components matrix of double-precision floating-point numbers using low precision arith...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00067.html b/tests/OpenGL/package/glm/doc/api/a00067.html deleted file mode 100644 index 9649eb03..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00067.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double2x4.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_double2x4.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file matrix_double2x4.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00067_source.html b/tests/OpenGL/package/glm/doc/api/a00067_source.html deleted file mode 100644 index 94d4c97b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00067_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double2x4.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_double2x4.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat2x4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef mat<2, 4, double, defaultp> dmat2x4;
-
16 
-
18 }//namespace glm
-
mat< 2, 4, double, defaultp > dmat2x4
2 columns of 4 components matrix of double-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00068.html b/tests/OpenGL/package/glm/doc/api/a00068.html deleted file mode 100644 index d02af5d0..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00068.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double2x4_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_double2x4_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00068_source.html b/tests/OpenGL/package/glm/doc/api/a00068_source.html deleted file mode 100644 index cee8dd3c..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00068_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double2x4_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_double2x4_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat2x4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef mat<2, 4, double, lowp> lowp_dmat2x4;
-
17 
-
22  typedef mat<2, 4, double, mediump> mediump_dmat2x4;
-
23 
-
28  typedef mat<2, 4, double, highp> highp_dmat2x4;
-
29 
-
31 }//namespace glm
-
mat< 2, 4, double, highp > highp_dmat2x4
2 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 2, 4, double, mediump > mediump_dmat2x4
2 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 2, 4, double, lowp > lowp_dmat2x4
2 columns of 4 components matrix of double-precision floating-point numbers using low precision arith...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00069.html b/tests/OpenGL/package/glm/doc/api/a00069.html deleted file mode 100644 index 77e86d3a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00069.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double3x2.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_double3x2.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file matrix_double3x2.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00069_source.html b/tests/OpenGL/package/glm/doc/api/a00069_source.html deleted file mode 100644 index 893db253..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00069_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double3x2.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_double3x2.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat3x2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef mat<3, 2, double, defaultp> dmat3x2;
-
16 
-
18 }//namespace glm
-
mat< 3, 2, double, defaultp > dmat3x2
3 columns of 2 components matrix of double-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00070.html b/tests/OpenGL/package/glm/doc/api/a00070.html deleted file mode 100644 index f6e3e393..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00070.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double3x2_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_double3x2_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00070_source.html b/tests/OpenGL/package/glm/doc/api/a00070_source.html deleted file mode 100644 index 0e228c61..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00070_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double3x2_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_double3x2_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat3x2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef mat<3, 2, double, lowp> lowp_dmat3x2;
-
17 
-
22  typedef mat<3, 2, double, mediump> mediump_dmat3x2;
-
23 
-
28  typedef mat<3, 2, double, highp> highp_dmat3x2;
-
29 
-
31 }//namespace glm
-
mat< 3, 2, double, mediump > mediump_dmat3x2
3 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 3, 2, double, lowp > lowp_dmat3x2
3 columns of 2 components matrix of double-precision floating-point numbers using low precision arith...
-
mat< 3, 2, double, highp > highp_dmat3x2
3 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00071.html b/tests/OpenGL/package/glm/doc/api/a00071.html deleted file mode 100644 index 69a7029e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00071.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double3x3.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_double3x3.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file matrix_double3x3.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00071_source.html b/tests/OpenGL/package/glm/doc/api/a00071_source.html deleted file mode 100644 index 5d9c0b7b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00071_source.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double3x3.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_double3x3.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat3x3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef mat<3, 3, double, defaultp> dmat3x3;
-
16 
-
20  typedef mat<3, 3, double, defaultp> dmat3;
-
21 
-
23 }//namespace glm
-
mat< 3, 3, double, defaultp > dmat3x3
3 columns of 3 components matrix of double-precision floating-point numbers.
-
mat< 3, 3, double, defaultp > dmat3
3 columns of 3 components matrix of double-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00072.html b/tests/OpenGL/package/glm/doc/api/a00072.html deleted file mode 100644 index 102098a6..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00072.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double3x3_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_double3x3_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00072_source.html b/tests/OpenGL/package/glm/doc/api/a00072_source.html deleted file mode 100644 index 7726d4a2..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00072_source.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double3x3_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_double3x3_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat3x3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef mat<3, 3, double, lowp> lowp_dmat3;
-
17 
-
22  typedef mat<3, 3, double, mediump> mediump_dmat3;
-
23 
-
28  typedef mat<3, 3, double, highp> highp_dmat3;
-
29 
-
34  typedef mat<3, 3, double, lowp> lowp_dmat3x3;
-
35 
-
40  typedef mat<3, 3, double, mediump> mediump_dmat3x3;
-
41 
-
46  typedef mat<3, 3, double, highp> highp_dmat3x3;
-
47 
-
49 }//namespace glm
-
mat< 3, 3, double, lowp > lowp_dmat3
3 columns of 3 components matrix of double-precision floating-point numbers using low precision arith...
-
mat< 3, 3, double, lowp > lowp_dmat3x3
3 columns of 3 components matrix of double-precision floating-point numbers using low precision arith...
-
mat< 3, 3, double, highp > highp_dmat3
3 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 3, 3, double, highp > highp_dmat3x3
3 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 3, 3, double, mediump > mediump_dmat3x3
3 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 3, 3, double, mediump > mediump_dmat3
3 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00073.html b/tests/OpenGL/package/glm/doc/api/a00073.html deleted file mode 100644 index 8b94028d..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00073.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double3x4.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_double3x4.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file matrix_double3x4.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00073_source.html b/tests/OpenGL/package/glm/doc/api/a00073_source.html deleted file mode 100644 index 65681a0e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00073_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double3x4.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_double3x4.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat3x4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef mat<3, 4, double, defaultp> dmat3x4;
-
16 
-
18 }//namespace glm
-
mat< 3, 4, double, defaultp > dmat3x4
3 columns of 4 components matrix of double-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00074.html b/tests/OpenGL/package/glm/doc/api/a00074.html deleted file mode 100644 index dc2586d7..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00074.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double3x4_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_double3x4_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00074_source.html b/tests/OpenGL/package/glm/doc/api/a00074_source.html deleted file mode 100644 index e805fc78..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00074_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double3x4_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_double3x4_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat3x4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef mat<3, 4, double, lowp> lowp_dmat3x4;
-
17 
-
22  typedef mat<3, 4, double, mediump> mediump_dmat3x4;
-
23 
-
28  typedef mat<3, 4, double, highp> highp_dmat3x4;
-
29 
-
31 }//namespace glm
-
mat< 3, 4, double, lowp > lowp_dmat3x4
3 columns of 4 components matrix of double-precision floating-point numbers using low precision arith...
-
mat< 3, 4, double, mediump > mediump_dmat3x4
3 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 3, 4, double, highp > highp_dmat3x4
3 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00075.html b/tests/OpenGL/package/glm/doc/api/a00075.html deleted file mode 100644 index 2b3c2219..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00075.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double4x2.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_double4x2.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file matrix_double4x2.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00075_source.html b/tests/OpenGL/package/glm/doc/api/a00075_source.html deleted file mode 100644 index f688cedf..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00075_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double4x2.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_double4x2.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat4x2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef mat<4, 2, double, defaultp> dmat4x2;
-
16 
-
18 }//namespace glm
-
mat< 4, 2, double, defaultp > dmat4x2
4 columns of 2 components matrix of double-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00076.html b/tests/OpenGL/package/glm/doc/api/a00076.html deleted file mode 100644 index 1f1000fe..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00076.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double4x2_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_double4x2_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00076_source.html b/tests/OpenGL/package/glm/doc/api/a00076_source.html deleted file mode 100644 index da64db97..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00076_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double4x2_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_double4x2_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat4x2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef mat<4, 2, double, lowp> lowp_dmat4x2;
-
17 
-
22  typedef mat<4, 2, double, mediump> mediump_dmat4x2;
-
23 
-
28  typedef mat<4, 2, double, highp> highp_dmat4x2;
-
29 
-
31 }//namespace glm
-
mat< 4, 2, double, lowp > lowp_dmat4x2
4 columns of 2 components matrix of double-precision floating-point numbers using low precision arith...
-
mat< 4, 2, double, mediump > mediump_dmat4x2
4 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 4, 2, double, highp > highp_dmat4x2
4 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00077.html b/tests/OpenGL/package/glm/doc/api/a00077.html deleted file mode 100644 index 686affa9..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00077.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double4x3.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_double4x3.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file matrix_double4x3.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00077_source.html b/tests/OpenGL/package/glm/doc/api/a00077_source.html deleted file mode 100644 index c8913cd1..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00077_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double4x3.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_double4x3.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat4x3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef mat<4, 3, double, defaultp> dmat4x3;
-
16 
-
18 }//namespace glm
-
mat< 4, 3, double, defaultp > dmat4x3
4 columns of 3 components matrix of double-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00078.html b/tests/OpenGL/package/glm/doc/api/a00078.html deleted file mode 100644 index 7cdee1c7..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00078.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double4x3_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_double4x3_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00078_source.html b/tests/OpenGL/package/glm/doc/api/a00078_source.html deleted file mode 100644 index 923fc1d5..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00078_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double4x3_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_double4x3_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat4x3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef mat<4, 3, double, lowp> lowp_dmat4x3;
-
17 
-
22  typedef mat<4, 3, double, mediump> mediump_dmat4x3;
-
23 
-
28  typedef mat<4, 3, double, highp> highp_dmat4x3;
-
29 
-
31 }//namespace glm
-
mat< 4, 3, double, highp > highp_dmat4x3
4 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 4, 3, double, mediump > mediump_dmat4x3
4 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 4, 3, double, lowp > lowp_dmat4x3
4 columns of 3 components matrix of double-precision floating-point numbers using low precision arith...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00079.html b/tests/OpenGL/package/glm/doc/api/a00079.html deleted file mode 100644 index 338ac518..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00079.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double4x4.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_double4x4.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file matrix_double4x4.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00079_source.html b/tests/OpenGL/package/glm/doc/api/a00079_source.html deleted file mode 100644 index bd45445b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00079_source.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double4x4.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_double4x4.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat4x4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef mat<4, 4, double, defaultp> dmat4x4;
-
16 
-
20  typedef mat<4, 4, double, defaultp> dmat4;
-
21 
-
23 }//namespace glm
-
mat< 4, 4, double, defaultp > dmat4x4
4 columns of 4 components matrix of double-precision floating-point numbers.
-
mat< 4, 4, double, defaultp > dmat4
4 columns of 4 components matrix of double-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00080.html b/tests/OpenGL/package/glm/doc/api/a00080.html deleted file mode 100644 index c9421fe4..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00080.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double4x4_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_double4x4_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00080_source.html b/tests/OpenGL/package/glm/doc/api/a00080_source.html deleted file mode 100644 index 7ba0a331..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00080_source.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_double4x4_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_double4x4_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat4x4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef mat<4, 4, double, lowp> lowp_dmat4;
-
17 
-
22  typedef mat<4, 4, double, mediump> mediump_dmat4;
-
23 
-
28  typedef mat<4, 4, double, highp> highp_dmat4;
-
29 
-
34  typedef mat<4, 4, double, lowp> lowp_dmat4x4;
-
35 
-
40  typedef mat<4, 4, double, mediump> mediump_dmat4x4;
-
41 
-
46  typedef mat<4, 4, double, highp> highp_dmat4x4;
-
47 
-
49 }//namespace glm
-
mat< 4, 4, double, mediump > mediump_dmat4x4
4 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 4, 4, double, lowp > lowp_dmat4
4 columns of 4 components matrix of double-precision floating-point numbers using low precision arith...
-
mat< 4, 4, double, mediump > mediump_dmat4
4 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 4, 4, double, highp > highp_dmat4x4
4 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
-
mat< 4, 4, double, lowp > lowp_dmat4x4
4 columns of 4 components matrix of double-precision floating-point numbers using low precision arith...
-
mat< 4, 4, double, highp > highp_dmat4
4 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00081.html b/tests/OpenGL/package/glm/doc/api/a00081.html deleted file mode 100644 index d1e90c09..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00081.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_factorisation.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_factorisation.hpp File Reference
-
-
- -

GLM_GTX_matrix_factorisation -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_matrix_factorisation

-
See also
Core features (dependence)
- -

Definition in file matrix_factorisation.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00081_source.html b/tests/OpenGL/package/glm/doc/api/a00081_source.html deleted file mode 100644 index 2bee6a86..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00081_source.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_factorisation.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_factorisation.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../glm.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # ifndef GLM_ENABLE_EXPERIMENTAL
-
20 # pragma message("GLM: GLM_GTX_matrix_factorisation is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
21 # else
-
22 # pragma message("GLM: GLM_GTX_matrix_factorisation extension included")
-
23 # endif
-
24 #endif
-
25 
-
26 /*
-
27 Suggestions:
-
28  - Move helper functions flipud and fliplr to another file: They may be helpful in more general circumstances.
-
29  - Implement other types of matrix factorisation, such as: QL and LQ, L(D)U, eigendecompositions, etc...
-
30 */
-
31 
-
32 namespace glm
-
33 {
-
36 
-
40  template <length_t C, length_t R, typename T, qualifier Q>
-
41  GLM_FUNC_DECL mat<C, R, T, Q> flipud(mat<C, R, T, Q> const& in);
-
42 
-
46  template <length_t C, length_t R, typename T, qualifier Q>
-
47  GLM_FUNC_DECL mat<C, R, T, Q> fliplr(mat<C, R, T, Q> const& in);
-
48 
-
54  template <length_t C, length_t R, typename T, qualifier Q>
-
55  GLM_FUNC_DECL void qr_decompose(mat<C, R, T, Q> const& in, mat<(C < R ? C : R), R, T, Q>& q, mat<C, (C < R ? C : R), T, Q>& r);
-
56 
-
63  template <length_t C, length_t R, typename T, qualifier Q>
-
64  GLM_FUNC_DECL void rq_decompose(mat<C, R, T, Q> const& in, mat<(C < R ? C : R), R, T, Q>& r, mat<C, (C < R ? C : R), T, Q>& q);
-
65 
-
67 }
-
68 
-
69 #include "matrix_factorisation.inl"
-
GLM_FUNC_DECL void rq_decompose(mat< C, R, T, Q > const &in, mat<(C< R?C:R), R, T, Q > &r, mat< C,(C< R?C:R), T, Q > &q)
Performs RQ factorisation of a matrix.
-
GLM_FUNC_DECL void qr_decompose(mat< C, R, T, Q > const &in, mat<(C< R?C:R), R, T, Q > &q, mat< C,(C< R?C:R), T, Q > &r)
Performs QR factorisation of a matrix.
-
GLM_FUNC_DECL mat< C, R, T, Q > flipud(mat< C, R, T, Q > const &in)
Flips the matrix rows up and down.
-
GLM_FUNC_DECL mat< C, R, T, Q > fliplr(mat< C, R, T, Q > const &in)
Flips the matrix columns right and left.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00082.html b/tests/OpenGL/package/glm/doc/api/a00082.html deleted file mode 100644 index 9ac278eb..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00082.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float2x2.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_float2x2.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file matrix_float2x2.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00082_source.html b/tests/OpenGL/package/glm/doc/api/a00082_source.html deleted file mode 100644 index 68f096c2..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00082_source.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float2x2.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float2x2.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat2x2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef mat<2, 2, float, defaultp> mat2x2;
-
16 
-
20  typedef mat<2, 2, float, defaultp> mat2;
-
21 
-
23 }//namespace glm
-
mat< 2, 2, float, defaultp > mat2x2
2 columns of 2 components matrix of single-precision floating-point numbers.
-
mat< 2, 2, float, defaultp > mat2
2 columns of 2 components matrix of single-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00083.html b/tests/OpenGL/package/glm/doc/api/a00083.html deleted file mode 100644 index 9145fdcc..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00083.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float2x2_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_float2x2_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00083_source.html b/tests/OpenGL/package/glm/doc/api/a00083_source.html deleted file mode 100644 index d327c95c..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00083_source.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float2x2_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float2x2_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat2x2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef mat<2, 2, float, lowp> lowp_mat2;
-
17 
-
22  typedef mat<2, 2, float, mediump> mediump_mat2;
-
23 
-
28  typedef mat<2, 2, float, highp> highp_mat2;
-
29 
-
34  typedef mat<2, 2, float, lowp> lowp_mat2x2;
-
35 
-
40  typedef mat<2, 2, float, mediump> mediump_mat2x2;
-
41 
-
46  typedef mat<2, 2, float, highp> highp_mat2x2;
-
47 
-
49 }//namespace glm
-
mat< 2, 2, float, lowp > lowp_mat2
2 columns of 2 components matrix of single-precision floating-point numbers using low precision arith...
-
mat< 2, 2, float, highp > highp_mat2
2 columns of 2 components matrix of single-precision floating-point numbers using high precision arit...
-
mat< 2, 2, float, lowp > lowp_mat2x2
2 columns of 2 components matrix of single-precision floating-point numbers using low precision arith...
-
mat< 2, 2, float, highp > highp_mat2x2
2 columns of 2 components matrix of single-precision floating-point numbers using high precision arit...
-
mat< 2, 2, float, mediump > mediump_mat2x2
2 columns of 2 components matrix of single-precision floating-point numbers using medium precision ar...
-
mat< 2, 2, float, mediump > mediump_mat2
2 columns of 2 components matrix of single-precision floating-point numbers using medium precision ar...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00084.html b/tests/OpenGL/package/glm/doc/api/a00084.html deleted file mode 100644 index 3911e079..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00084.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float2x3.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_float2x3.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file matrix_float2x3.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00084_source.html b/tests/OpenGL/package/glm/doc/api/a00084_source.html deleted file mode 100644 index ba54fa2a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00084_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float2x3.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float2x3.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat2x3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef mat<2, 3, float, defaultp> mat2x3;
-
16 
-
18 }//namespace glm
-
mat< 2, 3, float, defaultp > mat2x3
2 columns of 3 components matrix of single-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00085.html b/tests/OpenGL/package/glm/doc/api/a00085.html deleted file mode 100644 index 58bdd792..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00085.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float2x3_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_float2x3_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00085_source.html b/tests/OpenGL/package/glm/doc/api/a00085_source.html deleted file mode 100644 index c58d2ae6..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00085_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float2x3_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float2x3_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat2x3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef mat<2, 3, float, lowp> lowp_mat2x3;
-
17 
-
22  typedef mat<2, 3, float, mediump> mediump_mat2x3;
-
23 
-
28  typedef mat<2, 3, float, highp> highp_mat2x3;
-
29 
-
31 }//namespace glm
-
mat< 2, 3, float, mediump > mediump_mat2x3
2 columns of 3 components matrix of single-precision floating-point numbers using medium precision ar...
-
mat< 2, 3, float, highp > highp_mat2x3
2 columns of 3 components matrix of single-precision floating-point numbers using high precision arit...
-
mat< 2, 3, float, lowp > lowp_mat2x3
2 columns of 3 components matrix of single-precision floating-point numbers using low precision arith...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00086.html b/tests/OpenGL/package/glm/doc/api/a00086.html deleted file mode 100644 index de06d1a7..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00086.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float2x4.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_float2x4.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file matrix_float2x4.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00086_source.html b/tests/OpenGL/package/glm/doc/api/a00086_source.html deleted file mode 100644 index 8e472d15..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00086_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float2x4.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float2x4.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat2x4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef mat<2, 4, float, defaultp> mat2x4;
-
16 
-
18 }//namespace glm
-
mat< 2, 4, float, defaultp > mat2x4
2 columns of 4 components matrix of single-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00087.html b/tests/OpenGL/package/glm/doc/api/a00087.html deleted file mode 100644 index b0f38e98..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00087.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float2x4_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_float2x4_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00087_source.html b/tests/OpenGL/package/glm/doc/api/a00087_source.html deleted file mode 100644 index 24885f4a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00087_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float2x4_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float2x4_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat2x4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef mat<2, 4, float, lowp> lowp_mat2x4;
-
17 
-
22  typedef mat<2, 4, float, mediump> mediump_mat2x4;
-
23 
-
28  typedef mat<2, 4, float, highp> highp_mat2x4;
-
29 
-
31 }//namespace glm
-
mat< 2, 4, float, lowp > lowp_mat2x4
2 columns of 4 components matrix of single-precision floating-point numbers using low precision arith...
-
mat< 2, 4, float, mediump > mediump_mat2x4
2 columns of 4 components matrix of single-precision floating-point numbers using medium precision ar...
-
mat< 2, 4, float, highp > highp_mat2x4
2 columns of 4 components matrix of single-precision floating-point numbers using high precision arit...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00088.html b/tests/OpenGL/package/glm/doc/api/a00088.html deleted file mode 100644 index 32953ba7..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00088.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float3x2.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_float3x2.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file matrix_float3x2.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00088_source.html b/tests/OpenGL/package/glm/doc/api/a00088_source.html deleted file mode 100644 index 798fc788..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00088_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float3x2.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float3x2.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat3x2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef mat<3, 2, float, defaultp> mat3x2;
-
16 
-
18 }//namespace glm
-
mat< 3, 2, float, defaultp > mat3x2
3 columns of 2 components matrix of single-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00089.html b/tests/OpenGL/package/glm/doc/api/a00089.html deleted file mode 100644 index dbd3b9fa..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00089.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float3x2_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_float3x2_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00089_source.html b/tests/OpenGL/package/glm/doc/api/a00089_source.html deleted file mode 100644 index 3083ceda..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00089_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float3x2_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float3x2_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat3x2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef mat<3, 2, float, lowp> lowp_mat3x2;
-
17 
-
22  typedef mat<3, 2, float, mediump> mediump_mat3x2;
-
23 
-
28  typedef mat<3, 2, float, highp> highp_mat3x2;
-
29 
-
31 }//namespace glm
-
mat< 3, 2, float, lowp > lowp_mat3x2
3 columns of 2 components matrix of single-precision floating-point numbers using low precision arith...
-
mat< 3, 2, float, mediump > mediump_mat3x2
3 columns of 2 components matrix of single-precision floating-point numbers using medium precision ar...
-
mat< 3, 2, float, highp > highp_mat3x2
3 columns of 2 components matrix of single-precision floating-point numbers using high precision arit...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00090.html b/tests/OpenGL/package/glm/doc/api/a00090.html deleted file mode 100644 index 5da3f396..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00090.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float3x3.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_float3x3.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file matrix_float3x3.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00090_source.html b/tests/OpenGL/package/glm/doc/api/a00090_source.html deleted file mode 100644 index fc8e9a6e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00090_source.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float3x3.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float3x3.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat3x3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef mat<3, 3, float, defaultp> mat3x3;
-
16 
-
20  typedef mat<3, 3, float, defaultp> mat3;
-
21 
-
23 }//namespace glm
-
mat< 3, 3, float, defaultp > mat3x3
3 columns of 3 components matrix of single-precision floating-point numbers.
-
mat< 3, 3, float, defaultp > mat3
3 columns of 3 components matrix of single-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00091.html b/tests/OpenGL/package/glm/doc/api/a00091.html deleted file mode 100644 index d80cd192..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00091.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float3x3_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_float3x3_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00091_source.html b/tests/OpenGL/package/glm/doc/api/a00091_source.html deleted file mode 100644 index 1f8ce621..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00091_source.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float3x3_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float3x3_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat3x3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef mat<3, 3, float, lowp> lowp_mat3;
-
17 
-
22  typedef mat<3, 3, float, mediump> mediump_mat3;
-
23 
-
28  typedef mat<3, 3, float, highp> highp_mat3;
-
29 
-
34  typedef mat<3, 3, float, lowp> lowp_mat3x3;
-
35 
-
40  typedef mat<3, 3, float, mediump> mediump_mat3x3;
-
41 
-
46  typedef mat<3, 3, float, highp> highp_mat3x3;
-
47 
-
49 }//namespace glm
-
mat< 3, 3, float, mediump > mediump_mat3x3
3 columns of 3 components matrix of single-precision floating-point numbers using medium precision ar...
-
mat< 3, 3, float, highp > highp_mat3x3
3 columns of 3 components matrix of single-precision floating-point numbers using high precision arit...
-
mat< 3, 3, float, lowp > lowp_mat3x3
3 columns of 3 components matrix of single-precision floating-point numbers using low precision arith...
-
mat< 3, 3, float, mediump > mediump_mat3
3 columns of 3 components matrix of single-precision floating-point numbers using medium precision ar...
-
mat< 3, 3, float, lowp > lowp_mat3
3 columns of 3 components matrix of single-precision floating-point numbers using low precision arith...
-
mat< 3, 3, float, highp > highp_mat3
3 columns of 3 components matrix of single-precision floating-point numbers using high precision arit...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00092.html b/tests/OpenGL/package/glm/doc/api/a00092.html deleted file mode 100644 index a32abb20..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00092.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float3x4.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_float3x4.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file matrix_float3x4.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00092_source.html b/tests/OpenGL/package/glm/doc/api/a00092_source.html deleted file mode 100644 index 67b9f406..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00092_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float3x4.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float3x4.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat3x4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef mat<3, 4, float, defaultp> mat3x4;
-
16 
-
18 }//namespace glm
-
mat< 3, 4, float, defaultp > mat3x4
3 columns of 4 components matrix of single-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00093.html b/tests/OpenGL/package/glm/doc/api/a00093.html deleted file mode 100644 index 862a061a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00093.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float3x4_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_float3x4_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00093_source.html b/tests/OpenGL/package/glm/doc/api/a00093_source.html deleted file mode 100644 index 424db41f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00093_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float3x4_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float3x4_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat3x4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef mat<3, 4, float, lowp> lowp_mat3x4;
-
17 
-
22  typedef mat<3, 4, float, mediump> mediump_mat3x4;
-
23 
-
28  typedef mat<3, 4, float, highp> highp_mat3x4;
-
29 
-
31 }//namespace glm
-
mat< 3, 4, float, highp > highp_mat3x4
3 columns of 4 components matrix of single-precision floating-point numbers using high precision arit...
-
mat< 3, 4, float, mediump > mediump_mat3x4
3 columns of 4 components matrix of single-precision floating-point numbers using medium precision ar...
-
mat< 3, 4, float, lowp > lowp_mat3x4
3 columns of 4 components matrix of single-precision floating-point numbers using low precision arith...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00094.html b/tests/OpenGL/package/glm/doc/api/a00094.html deleted file mode 100644 index b9d4ef7a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00094.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float4x2.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_float4x2.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file matrix_float4x2.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00094_source.html b/tests/OpenGL/package/glm/doc/api/a00094_source.html deleted file mode 100644 index aacca642..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00094_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float4x2.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float4x2.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat4x2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef mat<4, 2, float, defaultp> mat4x2;
-
16 
-
18 }//namespace glm
-
mat< 4, 2, float, defaultp > mat4x2
4 columns of 2 components matrix of single-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00095_source.html b/tests/OpenGL/package/glm/doc/api/a00095_source.html deleted file mode 100644 index b9d21999..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00095_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float4x2_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float4x2_precision.hpp
-
-
-
1 
-
4 #pragma once
-
5 #include "../detail/type_mat2x2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef mat<4, 2, float, lowp> lowp_mat4x2;
-
17 
-
22  typedef mat<4, 2, float, mediump> mediump_mat4x2;
-
23 
-
28  typedef mat<4, 2, float, highp> highp_mat4x2;
-
29 
-
31 }//namespace glm
-
mat< 4, 2, float, mediump > mediump_mat4x2
4 columns of 2 components matrix of single-precision floating-point numbers using medium precision ar...
-
mat< 4, 2, float, lowp > lowp_mat4x2
4 columns of 2 components matrix of single-precision floating-point numbers using low precision arith...
-
mat< 4, 2, float, highp > highp_mat4x2
4 columns of 2 components matrix of single-precision floating-point numbers using high precision arit...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00096.html b/tests/OpenGL/package/glm/doc/api/a00096.html deleted file mode 100644 index ae8352d1..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00096.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float4x3.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_float4x3.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file matrix_float4x3.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00096_source.html b/tests/OpenGL/package/glm/doc/api/a00096_source.html deleted file mode 100644 index c7e6ce9a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00096_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float4x3.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float4x3.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat4x3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef mat<4, 3, float, defaultp> mat4x3;
-
16 
-
18 }//namespace glm
-
mat< 4, 3, float, defaultp > mat4x3
4 columns of 3 components matrix of single-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00097.html b/tests/OpenGL/package/glm/doc/api/a00097.html deleted file mode 100644 index c3167d47..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00097.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float4x3_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_float4x3_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00097_source.html b/tests/OpenGL/package/glm/doc/api/a00097_source.html deleted file mode 100644 index d2faec60..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00097_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float4x3_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float4x3_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat4x3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef mat<4, 3, float, lowp> lowp_mat4x3;
-
17 
-
22  typedef mat<4, 3, float, mediump> mediump_mat4x3;
-
23 
-
28  typedef mat<4, 3, float, highp> highp_mat4x3;
-
29 
-
31 }//namespace glm
-
mat< 4, 3, float, highp > highp_mat4x3
4 columns of 3 components matrix of single-precision floating-point numbers using high precision arit...
-
mat< 4, 3, float, lowp > lowp_mat4x3
4 columns of 3 components matrix of single-precision floating-point numbers using low precision arith...
-
mat< 4, 3, float, mediump > mediump_mat4x3
4 columns of 3 components matrix of single-precision floating-point numbers using medium precision ar...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00098.html b/tests/OpenGL/package/glm/doc/api/a00098.html deleted file mode 100644 index 2359c881..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00098.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float4x4.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float4x4.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

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

Detailed Description

-

Core features

- -

Definition in file matrix_float4x4.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00098_source.html b/tests/OpenGL/package/glm/doc/api/a00098_source.html deleted file mode 100644 index 99a231ff..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00098_source.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float4x4.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float4x4.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat4x4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef mat<4, 4, float, defaultp> mat4x4;
-
16 
-
20  typedef mat<4, 4, float, defaultp> mat4;
-
21 
-
23 }//namespace glm
-
mat< 4, 4, float, defaultp > mat4x4
4 columns of 4 components matrix of single-precision floating-point numbers.
-
mat< 4, 4, float, defaultp > mat4
4 columns of 4 components matrix of single-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00099.html b/tests/OpenGL/package/glm/doc/api/a00099.html deleted file mode 100644 index 567117f8..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00099.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float4x4_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_float4x4_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00099_source.html b/tests/OpenGL/package/glm/doc/api/a00099_source.html deleted file mode 100644 index 224d9729..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00099_source.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_float4x4_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_float4x4_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_mat4x4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef mat<4, 4, float, lowp> lowp_mat4;
-
17 
-
22  typedef mat<4, 4, float, mediump> mediump_mat4;
-
23 
-
28  typedef mat<4, 4, float, highp> highp_mat4;
-
29 
-
34  typedef mat<4, 4, float, lowp> lowp_mat4x4;
-
35 
-
40  typedef mat<4, 4, float, mediump> mediump_mat4x4;
-
41 
-
46  typedef mat<4, 4, float, highp> highp_mat4x4;
-
47 
-
49 }//namespace glm
-
mat< 4, 4, float, mediump > mediump_mat4x4
4 columns of 4 components matrix of single-precision floating-point numbers using medium precision ar...
-
mat< 4, 4, float, lowp > lowp_mat4
4 columns of 4 components matrix of single-precision floating-point numbers using low precision arith...
-
mat< 4, 4, float, mediump > mediump_mat4
4 columns of 4 components matrix of single-precision floating-point numbers using medium precision ar...
-
mat< 4, 4, float, highp > highp_mat4x4
4 columns of 4 components matrix of single-precision floating-point numbers using high precision arit...
-
mat< 4, 4, float, lowp > lowp_mat4x4
4 columns of 4 components matrix of single-precision floating-point numbers using low precision arith...
-
mat< 4, 4, float, highp > highp_mat4
4 columns of 4 components matrix of single-precision floating-point numbers using high precision arit...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00100.html b/tests/OpenGL/package/glm/doc/api/a00100.html deleted file mode 100644 index 9d3e5473..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00100.html +++ /dev/null @@ -1,403 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_integer.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_integer.hpp File Reference
-
-
- -

GLM_GTC_matrix_integer -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

typedef mat< 2, 2, int, highp > highp_imat2
 High-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int, highp > highp_imat2x2
 High-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 2, 3, int, highp > highp_imat2x3
 High-qualifier signed integer 2x3 matrix. More...
 
typedef mat< 2, 4, int, highp > highp_imat2x4
 High-qualifier signed integer 2x4 matrix. More...
 
typedef mat< 3, 3, int, highp > highp_imat3
 High-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 3, 2, int, highp > highp_imat3x2
 High-qualifier signed integer 3x2 matrix. More...
 
typedef mat< 3, 3, int, highp > highp_imat3x3
 High-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 3, 4, int, highp > highp_imat3x4
 High-qualifier signed integer 3x4 matrix. More...
 
typedef mat< 4, 4, int, highp > highp_imat4
 High-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 4, 2, int, highp > highp_imat4x2
 High-qualifier signed integer 4x2 matrix. More...
 
typedef mat< 4, 3, int, highp > highp_imat4x3
 High-qualifier signed integer 4x3 matrix. More...
 
typedef mat< 4, 4, int, highp > highp_imat4x4
 High-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 2, 2, uint, highp > highp_umat2
 High-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint, highp > highp_umat2x2
 High-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 3, uint, highp > highp_umat2x3
 High-qualifier unsigned integer 2x3 matrix. More...
 
typedef mat< 2, 4, uint, highp > highp_umat2x4
 High-qualifier unsigned integer 2x4 matrix. More...
 
typedef mat< 3, 3, uint, highp > highp_umat3
 High-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 2, uint, highp > highp_umat3x2
 High-qualifier unsigned integer 3x2 matrix. More...
 
typedef mat< 3, 3, uint, highp > highp_umat3x3
 High-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 4, uint, highp > highp_umat3x4
 High-qualifier unsigned integer 3x4 matrix. More...
 
typedef mat< 4, 4, uint, highp > highp_umat4
 High-qualifier unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 2, uint, highp > highp_umat4x2
 High-qualifier unsigned integer 4x2 matrix. More...
 
typedef mat< 4, 3, uint, highp > highp_umat4x3
 High-qualifier unsigned integer 4x3 matrix. More...
 
typedef mat< 4, 4, uint, highp > highp_umat4x4
 High-qualifier unsigned integer 4x4 matrix. More...
 
typedef mediump_imat2 imat2
 Signed integer 2x2 matrix. More...
 
typedef mediump_imat2x2 imat2x2
 Signed integer 2x2 matrix. More...
 
typedef mediump_imat2x3 imat2x3
 Signed integer 2x3 matrix. More...
 
typedef mediump_imat2x4 imat2x4
 Signed integer 2x4 matrix. More...
 
typedef mediump_imat3 imat3
 Signed integer 3x3 matrix. More...
 
typedef mediump_imat3x2 imat3x2
 Signed integer 3x2 matrix. More...
 
typedef mediump_imat3x3 imat3x3
 Signed integer 3x3 matrix. More...
 
typedef mediump_imat3x4 imat3x4
 Signed integer 3x4 matrix. More...
 
typedef mediump_imat4 imat4
 Signed integer 4x4 matrix. More...
 
typedef mediump_imat4x2 imat4x2
 Signed integer 4x2 matrix. More...
 
typedef mediump_imat4x3 imat4x3
 Signed integer 4x3 matrix. More...
 
typedef mediump_imat4x4 imat4x4
 Signed integer 4x4 matrix. More...
 
typedef mat< 2, 2, int, lowp > lowp_imat2
 Low-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int, lowp > lowp_imat2x2
 Low-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 2, 3, int, lowp > lowp_imat2x3
 Low-qualifier signed integer 2x3 matrix. More...
 
typedef mat< 2, 4, int, lowp > lowp_imat2x4
 Low-qualifier signed integer 2x4 matrix. More...
 
typedef mat< 3, 3, int, lowp > lowp_imat3
 Low-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 3, 2, int, lowp > lowp_imat3x2
 Low-qualifier signed integer 3x2 matrix. More...
 
typedef mat< 3, 3, int, lowp > lowp_imat3x3
 Low-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 3, 4, int, lowp > lowp_imat3x4
 Low-qualifier signed integer 3x4 matrix. More...
 
typedef mat< 4, 4, int, lowp > lowp_imat4
 Low-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 4, 2, int, lowp > lowp_imat4x2
 Low-qualifier signed integer 4x2 matrix. More...
 
typedef mat< 4, 3, int, lowp > lowp_imat4x3
 Low-qualifier signed integer 4x3 matrix. More...
 
typedef mat< 4, 4, int, lowp > lowp_imat4x4
 Low-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 2, 2, uint, lowp > lowp_umat2
 Low-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint, lowp > lowp_umat2x2
 Low-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 3, uint, lowp > lowp_umat2x3
 Low-qualifier unsigned integer 2x3 matrix. More...
 
typedef mat< 2, 4, uint, lowp > lowp_umat2x4
 Low-qualifier unsigned integer 2x4 matrix. More...
 
typedef mat< 3, 3, uint, lowp > lowp_umat3
 Low-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 2, uint, lowp > lowp_umat3x2
 Low-qualifier unsigned integer 3x2 matrix. More...
 
typedef mat< 3, 3, uint, lowp > lowp_umat3x3
 Low-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 4, uint, lowp > lowp_umat3x4
 Low-qualifier unsigned integer 3x4 matrix. More...
 
typedef mat< 4, 4, uint, lowp > lowp_umat4
 Low-qualifier unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 2, uint, lowp > lowp_umat4x2
 Low-qualifier unsigned integer 4x2 matrix. More...
 
typedef mat< 4, 3, uint, lowp > lowp_umat4x3
 Low-qualifier unsigned integer 4x3 matrix. More...
 
typedef mat< 4, 4, uint, lowp > lowp_umat4x4
 Low-qualifier unsigned integer 4x4 matrix. More...
 
typedef mat< 2, 2, int, mediump > mediump_imat2
 Medium-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int, mediump > mediump_imat2x2
 Medium-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 2, 3, int, mediump > mediump_imat2x3
 Medium-qualifier signed integer 2x3 matrix. More...
 
typedef mat< 2, 4, int, mediump > mediump_imat2x4
 Medium-qualifier signed integer 2x4 matrix. More...
 
typedef mat< 3, 3, int, mediump > mediump_imat3
 Medium-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 3, 2, int, mediump > mediump_imat3x2
 Medium-qualifier signed integer 3x2 matrix. More...
 
typedef mat< 3, 3, int, mediump > mediump_imat3x3
 Medium-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 3, 4, int, mediump > mediump_imat3x4
 Medium-qualifier signed integer 3x4 matrix. More...
 
typedef mat< 4, 4, int, mediump > mediump_imat4
 Medium-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 4, 2, int, mediump > mediump_imat4x2
 Medium-qualifier signed integer 4x2 matrix. More...
 
typedef mat< 4, 3, int, mediump > mediump_imat4x3
 Medium-qualifier signed integer 4x3 matrix. More...
 
typedef mat< 4, 4, int, mediump > mediump_imat4x4
 Medium-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 2, 2, uint, mediump > mediump_umat2
 Medium-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint, mediump > mediump_umat2x2
 Medium-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 3, uint, mediump > mediump_umat2x3
 Medium-qualifier unsigned integer 2x3 matrix. More...
 
typedef mat< 2, 4, uint, mediump > mediump_umat2x4
 Medium-qualifier unsigned integer 2x4 matrix. More...
 
typedef mat< 3, 3, uint, mediump > mediump_umat3
 Medium-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 2, uint, mediump > mediump_umat3x2
 Medium-qualifier unsigned integer 3x2 matrix. More...
 
typedef mat< 3, 3, uint, mediump > mediump_umat3x3
 Medium-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 4, uint, mediump > mediump_umat3x4
 Medium-qualifier unsigned integer 3x4 matrix. More...
 
typedef mat< 4, 4, uint, mediump > mediump_umat4
 Medium-qualifier unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 2, uint, mediump > mediump_umat4x2
 Medium-qualifier unsigned integer 4x2 matrix. More...
 
typedef mat< 4, 3, uint, mediump > mediump_umat4x3
 Medium-qualifier unsigned integer 4x3 matrix. More...
 
typedef mat< 4, 4, uint, mediump > mediump_umat4x4
 Medium-qualifier unsigned integer 4x4 matrix. More...
 
typedef mediump_umat2 umat2
 Unsigned integer 2x2 matrix. More...
 
typedef mediump_umat2x2 umat2x2
 Unsigned integer 2x2 matrix. More...
 
typedef mediump_umat2x3 umat2x3
 Unsigned integer 2x3 matrix. More...
 
typedef mediump_umat2x4 umat2x4
 Unsigned integer 2x4 matrix. More...
 
typedef mediump_umat3 umat3
 Unsigned integer 3x3 matrix. More...
 
typedef mediump_umat3x2 umat3x2
 Unsigned integer 3x2 matrix. More...
 
typedef mediump_umat3x3 umat3x3
 Unsigned integer 3x3 matrix. More...
 
typedef mediump_umat3x4 umat3x4
 Unsigned integer 3x4 matrix. More...
 
typedef mediump_umat4 umat4
 Unsigned integer 4x4 matrix. More...
 
typedef mediump_umat4x2 umat4x2
 Unsigned integer 4x2 matrix. More...
 
typedef mediump_umat4x3 umat4x3
 Unsigned integer 4x3 matrix. More...
 
typedef mediump_umat4x4 umat4x4
 Unsigned integer 4x4 matrix. More...
 
-

Detailed Description

-

GLM_GTC_matrix_integer

-
See also
Core features (dependence)
- -

Definition in file matrix_integer.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00100_source.html b/tests/OpenGL/package/glm/doc/api/a00100_source.html deleted file mode 100644 index 367a5f46..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00100_source.html +++ /dev/null @@ -1,477 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_integer.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_integer.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../mat2x2.hpp"
-
17 #include "../mat2x3.hpp"
-
18 #include "../mat2x4.hpp"
-
19 #include "../mat3x2.hpp"
-
20 #include "../mat3x3.hpp"
-
21 #include "../mat3x4.hpp"
-
22 #include "../mat4x2.hpp"
-
23 #include "../mat4x3.hpp"
-
24 #include "../mat4x4.hpp"
-
25 
-
26 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
27 # pragma message("GLM: GLM_GTC_matrix_integer extension included")
-
28 #endif
-
29 
-
30 namespace glm
-
31 {
-
34 
-
37  typedef mat<2, 2, int, highp> highp_imat2;
-
38 
-
41  typedef mat<3, 3, int, highp> highp_imat3;
-
42 
-
45  typedef mat<4, 4, int, highp> highp_imat4;
-
46 
-
49  typedef mat<2, 2, int, highp> highp_imat2x2;
-
50 
-
53  typedef mat<2, 3, int, highp> highp_imat2x3;
-
54 
-
57  typedef mat<2, 4, int, highp> highp_imat2x4;
-
58 
-
61  typedef mat<3, 2, int, highp> highp_imat3x2;
-
62 
-
65  typedef mat<3, 3, int, highp> highp_imat3x3;
-
66 
-
69  typedef mat<3, 4, int, highp> highp_imat3x4;
-
70 
-
73  typedef mat<4, 2, int, highp> highp_imat4x2;
-
74 
-
77  typedef mat<4, 3, int, highp> highp_imat4x3;
-
78 
-
81  typedef mat<4, 4, int, highp> highp_imat4x4;
-
82 
-
83 
-
86  typedef mat<2, 2, int, mediump> mediump_imat2;
-
87 
-
90  typedef mat<3, 3, int, mediump> mediump_imat3;
-
91 
-
94  typedef mat<4, 4, int, mediump> mediump_imat4;
-
95 
-
96 
-
99  typedef mat<2, 2, int, mediump> mediump_imat2x2;
-
100 
-
103  typedef mat<2, 3, int, mediump> mediump_imat2x3;
-
104 
-
107  typedef mat<2, 4, int, mediump> mediump_imat2x4;
-
108 
-
111  typedef mat<3, 2, int, mediump> mediump_imat3x2;
-
112 
-
115  typedef mat<3, 3, int, mediump> mediump_imat3x3;
-
116 
-
119  typedef mat<3, 4, int, mediump> mediump_imat3x4;
-
120 
-
123  typedef mat<4, 2, int, mediump> mediump_imat4x2;
-
124 
-
127  typedef mat<4, 3, int, mediump> mediump_imat4x3;
-
128 
-
131  typedef mat<4, 4, int, mediump> mediump_imat4x4;
-
132 
-
133 
-
136  typedef mat<2, 2, int, lowp> lowp_imat2;
-
137 
-
140  typedef mat<3, 3, int, lowp> lowp_imat3;
-
141 
-
144  typedef mat<4, 4, int, lowp> lowp_imat4;
-
145 
-
146 
-
149  typedef mat<2, 2, int, lowp> lowp_imat2x2;
-
150 
-
153  typedef mat<2, 3, int, lowp> lowp_imat2x3;
-
154 
-
157  typedef mat<2, 4, int, lowp> lowp_imat2x4;
-
158 
-
161  typedef mat<3, 2, int, lowp> lowp_imat3x2;
-
162 
-
165  typedef mat<3, 3, int, lowp> lowp_imat3x3;
-
166 
-
169  typedef mat<3, 4, int, lowp> lowp_imat3x4;
-
170 
-
173  typedef mat<4, 2, int, lowp> lowp_imat4x2;
-
174 
-
177  typedef mat<4, 3, int, lowp> lowp_imat4x3;
-
178 
-
181  typedef mat<4, 4, int, lowp> lowp_imat4x4;
-
182 
-
183 
-
186  typedef mat<2, 2, uint, highp> highp_umat2;
-
187 
-
190  typedef mat<3, 3, uint, highp> highp_umat3;
-
191 
-
194  typedef mat<4, 4, uint, highp> highp_umat4;
-
195 
-
198  typedef mat<2, 2, uint, highp> highp_umat2x2;
-
199 
-
202  typedef mat<2, 3, uint, highp> highp_umat2x3;
-
203 
-
206  typedef mat<2, 4, uint, highp> highp_umat2x4;
-
207 
-
210  typedef mat<3, 2, uint, highp> highp_umat3x2;
-
211 
-
214  typedef mat<3, 3, uint, highp> highp_umat3x3;
-
215 
-
218  typedef mat<3, 4, uint, highp> highp_umat3x4;
-
219 
-
222  typedef mat<4, 2, uint, highp> highp_umat4x2;
-
223 
-
226  typedef mat<4, 3, uint, highp> highp_umat4x3;
-
227 
-
230  typedef mat<4, 4, uint, highp> highp_umat4x4;
-
231 
-
232 
-
235  typedef mat<2, 2, uint, mediump> mediump_umat2;
-
236 
-
239  typedef mat<3, 3, uint, mediump> mediump_umat3;
-
240 
-
243  typedef mat<4, 4, uint, mediump> mediump_umat4;
-
244 
-
245 
-
248  typedef mat<2, 2, uint, mediump> mediump_umat2x2;
-
249 
-
252  typedef mat<2, 3, uint, mediump> mediump_umat2x3;
-
253 
-
256  typedef mat<2, 4, uint, mediump> mediump_umat2x4;
-
257 
-
260  typedef mat<3, 2, uint, mediump> mediump_umat3x2;
-
261 
-
264  typedef mat<3, 3, uint, mediump> mediump_umat3x3;
-
265 
-
268  typedef mat<3, 4, uint, mediump> mediump_umat3x4;
-
269 
-
272  typedef mat<4, 2, uint, mediump> mediump_umat4x2;
-
273 
-
276  typedef mat<4, 3, uint, mediump> mediump_umat4x3;
-
277 
-
280  typedef mat<4, 4, uint, mediump> mediump_umat4x4;
-
281 
-
282 
-
285  typedef mat<2, 2, uint, lowp> lowp_umat2;
-
286 
-
289  typedef mat<3, 3, uint, lowp> lowp_umat3;
-
290 
-
293  typedef mat<4, 4, uint, lowp> lowp_umat4;
-
294 
-
295 
-
298  typedef mat<2, 2, uint, lowp> lowp_umat2x2;
-
299 
-
302  typedef mat<2, 3, uint, lowp> lowp_umat2x3;
-
303 
-
306  typedef mat<2, 4, uint, lowp> lowp_umat2x4;
-
307 
-
310  typedef mat<3, 2, uint, lowp> lowp_umat3x2;
-
311 
-
314  typedef mat<3, 3, uint, lowp> lowp_umat3x3;
-
315 
-
318  typedef mat<3, 4, uint, lowp> lowp_umat3x4;
-
319 
-
322  typedef mat<4, 2, uint, lowp> lowp_umat4x2;
-
323 
-
326  typedef mat<4, 3, uint, lowp> lowp_umat4x3;
-
327 
-
330  typedef mat<4, 4, uint, lowp> lowp_umat4x4;
-
331 
-
332 #if(defined(GLM_PRECISION_HIGHP_INT))
-
333  typedef highp_imat2 imat2;
-
334  typedef highp_imat3 imat3;
-
335  typedef highp_imat4 imat4;
-
336  typedef highp_imat2x2 imat2x2;
-
337  typedef highp_imat2x3 imat2x3;
-
338  typedef highp_imat2x4 imat2x4;
-
339  typedef highp_imat3x2 imat3x2;
-
340  typedef highp_imat3x3 imat3x3;
-
341  typedef highp_imat3x4 imat3x4;
-
342  typedef highp_imat4x2 imat4x2;
-
343  typedef highp_imat4x3 imat4x3;
-
344  typedef highp_imat4x4 imat4x4;
-
345 #elif(defined(GLM_PRECISION_LOWP_INT))
-
346  typedef lowp_imat2 imat2;
-
347  typedef lowp_imat3 imat3;
-
348  typedef lowp_imat4 imat4;
-
349  typedef lowp_imat2x2 imat2x2;
-
350  typedef lowp_imat2x3 imat2x3;
-
351  typedef lowp_imat2x4 imat2x4;
-
352  typedef lowp_imat3x2 imat3x2;
-
353  typedef lowp_imat3x3 imat3x3;
-
354  typedef lowp_imat3x4 imat3x4;
-
355  typedef lowp_imat4x2 imat4x2;
-
356  typedef lowp_imat4x3 imat4x3;
-
357  typedef lowp_imat4x4 imat4x4;
-
358 #else //if(defined(GLM_PRECISION_MEDIUMP_INT))
-
359 
-
362  typedef mediump_imat2 imat2;
-
363 
-
366  typedef mediump_imat3 imat3;
-
367 
-
370  typedef mediump_imat4 imat4;
-
371 
-
374  typedef mediump_imat2x2 imat2x2;
-
375 
-
378  typedef mediump_imat2x3 imat2x3;
-
379 
-
382  typedef mediump_imat2x4 imat2x4;
-
383 
-
386  typedef mediump_imat3x2 imat3x2;
-
387 
-
390  typedef mediump_imat3x3 imat3x3;
-
391 
-
394  typedef mediump_imat3x4 imat3x4;
-
395 
-
398  typedef mediump_imat4x2 imat4x2;
-
399 
-
402  typedef mediump_imat4x3 imat4x3;
-
403 
-
406  typedef mediump_imat4x4 imat4x4;
-
407 #endif//GLM_PRECISION
-
408 
-
409 #if(defined(GLM_PRECISION_HIGHP_UINT))
-
410  typedef highp_umat2 umat2;
-
411  typedef highp_umat3 umat3;
-
412  typedef highp_umat4 umat4;
-
413  typedef highp_umat2x2 umat2x2;
-
414  typedef highp_umat2x3 umat2x3;
-
415  typedef highp_umat2x4 umat2x4;
-
416  typedef highp_umat3x2 umat3x2;
-
417  typedef highp_umat3x3 umat3x3;
-
418  typedef highp_umat3x4 umat3x4;
-
419  typedef highp_umat4x2 umat4x2;
-
420  typedef highp_umat4x3 umat4x3;
-
421  typedef highp_umat4x4 umat4x4;
-
422 #elif(defined(GLM_PRECISION_LOWP_UINT))
-
423  typedef lowp_umat2 umat2;
-
424  typedef lowp_umat3 umat3;
-
425  typedef lowp_umat4 umat4;
-
426  typedef lowp_umat2x2 umat2x2;
-
427  typedef lowp_umat2x3 umat2x3;
-
428  typedef lowp_umat2x4 umat2x4;
-
429  typedef lowp_umat3x2 umat3x2;
-
430  typedef lowp_umat3x3 umat3x3;
-
431  typedef lowp_umat3x4 umat3x4;
-
432  typedef lowp_umat4x2 umat4x2;
-
433  typedef lowp_umat4x3 umat4x3;
-
434  typedef lowp_umat4x4 umat4x4;
-
435 #else //if(defined(GLM_PRECISION_MEDIUMP_UINT))
-
436 
-
439  typedef mediump_umat2 umat2;
-
440 
-
443  typedef mediump_umat3 umat3;
-
444 
-
447  typedef mediump_umat4 umat4;
-
448 
-
451  typedef mediump_umat2x2 umat2x2;
-
452 
-
455  typedef mediump_umat2x3 umat2x3;
-
456 
-
459  typedef mediump_umat2x4 umat2x4;
-
460 
-
463  typedef mediump_umat3x2 umat3x2;
-
464 
-
467  typedef mediump_umat3x3 umat3x3;
-
468 
-
471  typedef mediump_umat3x4 umat3x4;
-
472 
-
475  typedef mediump_umat4x2 umat4x2;
-
476 
-
479  typedef mediump_umat4x3 umat4x3;
-
480 
-
483  typedef mediump_umat4x4 umat4x4;
-
484 #endif//GLM_PRECISION
-
485 
-
487 }//namespace glm
-
mediump_imat4x4 imat4x4
Signed integer 4x4 matrix.
-
mediump_imat2x2 imat2x2
Signed integer 2x2 matrix.
-
mediump_umat4 umat4
Unsigned integer 4x4 matrix.
-
mediump_umat4x2 umat4x2
Unsigned integer 4x2 matrix.
-
mat< 4, 4, uint, lowp > lowp_umat4x4
Low-qualifier unsigned integer 4x4 matrix.
-
mat< 4, 2, int, mediump > mediump_imat4x2
Medium-qualifier signed integer 4x2 matrix.
-
mat< 4, 4, uint, lowp > lowp_umat4
Low-qualifier unsigned integer 4x4 matrix.
-
mat< 3, 2, int, highp > highp_imat3x2
High-qualifier signed integer 3x2 matrix.
-
mat< 3, 3, uint, highp > highp_umat3x3
High-qualifier unsigned integer 3x3 matrix.
-
mat< 2, 2, uint, lowp > lowp_umat2x2
Low-qualifier unsigned integer 2x2 matrix.
-
mediump_umat3x3 umat3x3
Unsigned integer 3x3 matrix.
-
mat< 2, 4, uint, highp > highp_umat2x4
High-qualifier unsigned integer 2x4 matrix.
-
mediump_umat3x2 umat3x2
Unsigned integer 3x2 matrix.
-
mat< 3, 2, int, lowp > lowp_imat3x2
Low-qualifier signed integer 3x2 matrix.
-
mat< 3, 3, uint, highp > highp_umat3
High-qualifier unsigned integer 3x3 matrix.
-
mat< 4, 3, int, mediump > mediump_imat4x3
Medium-qualifier signed integer 4x3 matrix.
-
mediump_imat3 imat3
Signed integer 3x3 matrix.
-
mat< 2, 2, int, mediump > mediump_imat2
Medium-qualifier signed integer 2x2 matrix.
-
mat< 3, 4, uint, mediump > mediump_umat3x4
Medium-qualifier unsigned integer 3x4 matrix.
-
mat< 4, 4, int, lowp > lowp_imat4x4
Low-qualifier signed integer 4x4 matrix.
-
mat< 2, 4, int, highp > highp_imat2x4
High-qualifier signed integer 2x4 matrix.
-
mediump_umat2x3 umat2x3
Unsigned integer 2x3 matrix.
-
mat< 4, 3, int, lowp > lowp_imat4x3
Low-qualifier signed integer 4x3 matrix.
-
mat< 3, 3, uint, lowp > lowp_umat3
Low-qualifier unsigned integer 3x3 matrix.
-
mat< 4, 4, uint, mediump > mediump_umat4x4
Medium-qualifier unsigned integer 4x4 matrix.
-
mat< 3, 2, uint, mediump > mediump_umat3x2
Medium-qualifier unsigned integer 3x2 matrix.
-
mat< 2, 4, uint, mediump > mediump_umat2x4
Medium-qualifier unsigned integer 2x4 matrix.
-
mat< 4, 4, int, highp > highp_imat4x4
High-qualifier signed integer 4x4 matrix.
-
mat< 2, 4, uint, lowp > lowp_umat2x4
Low-qualifier unsigned integer 2x4 matrix.
-
mediump_imat4x3 imat4x3
Signed integer 4x3 matrix.
-
mat< 3, 3, uint, mediump > mediump_umat3x3
Medium-qualifier unsigned integer 3x3 matrix.
-
mat< 2, 2, int, highp > highp_imat2
High-qualifier signed integer 2x2 matrix.
-
mediump_umat2 umat2
Unsigned integer 2x2 matrix.
-
mat< 3, 4, uint, lowp > lowp_umat3x4
Low-qualifier unsigned integer 3x4 matrix.
-
mat< 4, 2, uint, mediump > mediump_umat4x2
Medium-qualifier unsigned integer 4x2 matrix.
-
mediump_imat4x2 imat4x2
Signed integer 4x2 matrix.
-
mat< 2, 3, int, mediump > mediump_imat2x3
Medium-qualifier signed integer 2x3 matrix.
-
mat< 2, 2, uint, mediump > mediump_umat2
Medium-qualifier unsigned integer 2x2 matrix.
-
mediump_imat2 imat2
Signed integer 2x2 matrix.
-
mat< 4, 3, uint, mediump > mediump_umat4x3
Medium-qualifier unsigned integer 4x3 matrix.
-
mat< 3, 3, int, mediump > mediump_imat3
Medium-qualifier signed integer 3x3 matrix.
-
mat< 2, 2, uint, highp > highp_umat2
High-qualifier unsigned integer 2x2 matrix.
-
mediump_imat3x4 imat3x4
Signed integer 3x4 matrix.
-
mat< 3, 2, uint, highp > highp_umat3x2
High-qualifier unsigned integer 3x2 matrix.
-
mat< 2, 2, int, highp > highp_imat2x2
High-qualifier signed integer 2x2 matrix.
-
mat< 3, 4, uint, highp > highp_umat3x4
High-qualifier unsigned integer 3x4 matrix.
-
mat< 3, 3, int, mediump > mediump_imat3x3
Medium-qualifier signed integer 3x3 matrix.
-
mat< 4, 4, uint, highp > highp_umat4x4
High-qualifier unsigned integer 4x4 matrix.
-
mediump_imat2x4 imat2x4
Signed integer 2x4 matrix.
-
mediump_umat2x4 umat2x4
Unsigned integer 2x4 matrix.
-
mat< 2, 4, int, mediump > mediump_imat2x4
Medium-qualifier signed integer 2x4 matrix.
-
mat< 2, 2, int, lowp > lowp_imat2
Low-qualifier signed integer 2x2 matrix.
-
mat< 4, 2, int, lowp > lowp_imat4x2
Low-qualifier signed integer 4x2 matrix.
-
mat< 4, 3, uint, lowp > lowp_umat4x3
Low-qualifier unsigned integer 4x3 matrix.
-
mediump_imat4 imat4
Signed integer 4x4 matrix.
-
mediump_imat3x2 imat3x2
Signed integer 3x2 matrix.
-
mat< 2, 3, uint, lowp > lowp_umat2x3
Low-qualifier unsigned integer 2x3 matrix.
-
mat< 3, 2, int, mediump > mediump_imat3x2
Medium-qualifier signed integer 3x2 matrix.
-
mediump_umat4x4 umat4x4
Unsigned integer 4x4 matrix.
-
mat< 4, 3, int, highp > highp_imat4x3
High-qualifier signed integer 4x3 matrix.
-
mediump_umat4x3 umat4x3
Unsigned integer 4x3 matrix.
-
mat< 4, 2, uint, lowp > lowp_umat4x2
Low-qualifier unsigned integer 4x2 matrix.
-
mat< 3, 2, uint, lowp > lowp_umat3x2
Low-qualifier unsigned integer 3x2 matrix.
-
mat< 2, 2, uint, highp > highp_umat2x2
High-qualifier unsigned integer 2x2 matrix.
-
mat< 3, 3, int, lowp > lowp_imat3x3
Low-qualifier signed integer 3x3 matrix.
-
mat< 3, 3, int, highp > highp_imat3x3
High-qualifier signed integer 3x3 matrix.
-
mat< 2, 3, uint, mediump > mediump_umat2x3
Medium-qualifier unsigned integer 2x3 matrix.
-
mat< 4, 2, uint, highp > highp_umat4x2
High-qualifier unsigned integer 4x2 matrix.
-
mat< 3, 3, uint, lowp > lowp_umat3x3
Low-qualifier unsigned integer 3x3 matrix.
-
mediump_imat2x3 imat2x3
Signed integer 2x3 matrix.
-
mat< 2, 3, int, lowp > lowp_imat2x3
Low-qualifier signed integer 2x3 matrix.
-
mat< 4, 4, uint, highp > highp_umat4
High-qualifier unsigned integer 4x4 matrix.
-
mat< 3, 3, int, highp > highp_imat3
High-qualifier signed integer 3x3 matrix.
-
mat< 3, 3, uint, mediump > mediump_umat3
Medium-qualifier unsigned integer 3x3 matrix.
-
mat< 2, 2, int, mediump > mediump_imat2x2
Medium-qualifier signed integer 2x2 matrix.
-
mat< 2, 3, int, highp > highp_imat2x3
High-qualifier signed integer 2x3 matrix.
-
mat< 4, 2, int, highp > highp_imat4x2
High-qualifier signed integer 4x2 matrix.
-
mat< 3, 4, int, lowp > lowp_imat3x4
Low-qualifier signed integer 3x4 matrix.
-
mediump_umat3 umat3
Unsigned integer 3x3 matrix.
-
mat< 2, 2, int, lowp > lowp_imat2x2
Low-qualifier signed integer 2x2 matrix.
-
mat< 2, 3, uint, highp > highp_umat2x3
High-qualifier unsigned integer 2x3 matrix.
-
mat< 4, 4, int, highp > highp_imat4
High-qualifier signed integer 4x4 matrix.
-
mat< 2, 4, int, lowp > lowp_imat2x4
Low-qualifier signed integer 2x4 matrix.
-
mat< 3, 4, int, mediump > mediump_imat3x4
Medium-qualifier signed integer 3x4 matrix.
-
mat< 4, 4, int, mediump > mediump_imat4x4
Medium-qualifier signed integer 4x4 matrix.
-
mat< 4, 4, int, mediump > mediump_imat4
Medium-qualifier signed integer 4x4 matrix.
-
mediump_imat3x3 imat3x3
Signed integer 3x3 matrix.
-
mat< 3, 3, int, lowp > lowp_imat3
Low-qualifier signed integer 3x3 matrix.
-
mat< 2, 2, uint, lowp > lowp_umat2
Low-qualifier unsigned integer 2x2 matrix.
-
mat< 4, 3, uint, highp > highp_umat4x3
High-qualifier unsigned integer 4x3 matrix.
-
mediump_umat2x2 umat2x2
Unsigned integer 2x2 matrix.
-
mat< 4, 4, uint, mediump > mediump_umat4
Medium-qualifier unsigned integer 4x4 matrix.
-
mat< 4, 4, int, lowp > lowp_imat4
Low-qualifier signed integer 4x4 matrix.
-
mediump_umat3x4 umat3x4
Unsigned integer 3x4 matrix.
-
mat< 3, 4, int, highp > highp_imat3x4
High-qualifier signed integer 3x4 matrix.
-
mat< 2, 2, uint, mediump > mediump_umat2x2
Medium-qualifier unsigned integer 2x2 matrix.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00101.html b/tests/OpenGL/package/glm/doc/api/a00101.html deleted file mode 100644 index b19e56e1..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00101.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_interpolation.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_interpolation.hpp File Reference
-
-
- -

GLM_GTX_matrix_interpolation -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00101_source.html b/tests/OpenGL/package/glm/doc/api/a00101_source.html deleted file mode 100644 index a7d92b04..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00101_source.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_interpolation.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_interpolation.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../glm.hpp"
-
18 
-
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
20 # ifndef GLM_ENABLE_EXPERIMENTAL
-
21 # pragma message("GLM: GLM_GTX_matrix_interpolation is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
22 # else
-
23 # pragma message("GLM: GLM_GTX_matrix_interpolation extension included")
-
24 # endif
-
25 #endif
-
26 
-
27 namespace glm
-
28 {
-
31 
-
34  template<typename T, qualifier Q>
-
35  GLM_FUNC_DECL void axisAngle(
-
36  mat<4, 4, T, Q> const& Mat, vec<3, T, Q> & Axis, T & Angle);
-
37 
-
40  template<typename T, qualifier Q>
-
41  GLM_FUNC_DECL mat<4, 4, T, Q> axisAngleMatrix(
-
42  vec<3, T, Q> const& Axis, T const Angle);
-
43 
-
46  template<typename T, qualifier Q>
-
47  GLM_FUNC_DECL mat<4, 4, T, Q> extractMatrixRotation(
-
48  mat<4, 4, T, Q> const& Mat);
-
49 
-
53  template<typename T, qualifier Q>
-
54  GLM_FUNC_DECL mat<4, 4, T, Q> interpolate(
-
55  mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2, T const Delta);
-
56 
-
58 }//namespace glm
-
59 
-
60 #include "matrix_interpolation.inl"
-
GLM_FUNC_DECL mat< 4, 4, T, Q > extractMatrixRotation(mat< 4, 4, T, Q > const &Mat)
Extracts the rotation part of a matrix.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > interpolate(mat< 4, 4, T, Q > const &m1, mat< 4, 4, T, Q > const &m2, T const Delta)
Build a interpolation of 4 * 4 matrixes.
-
GLM_FUNC_DECL void axisAngle(mat< 4, 4, T, Q > const &Mat, vec< 3, T, Q > &Axis, T &Angle)
Get the axis and angle of the rotation from a matrix.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > axisAngleMatrix(vec< 3, T, Q > const &Axis, T const Angle)
Build a matrix from axis and angle.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00102.html b/tests/OpenGL/package/glm/doc/api/a00102.html deleted file mode 100644 index 598e69b1..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00102.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_inverse.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_inverse.hpp File Reference
-
-
- -

GLM_GTC_matrix_inverse -More...

- -

Go to the source code of this file.

- - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTC_matrix_inverse

-
See also
Core features (dependence)
- -

Definition in file matrix_inverse.hpp.

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

GLM_GTX_matrix_major_storage -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_matrix_major_storage

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

Definition in file matrix_major_storage.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00103_source.html b/tests/OpenGL/package/glm/doc/api/a00103_source.html deleted file mode 100644 index 9ec9278e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00103_source.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_major_storage.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_major_storage.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../glm.hpp"
-
18 
-
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
20 # ifndef GLM_ENABLE_EXPERIMENTAL
-
21 # pragma message("GLM: GLM_GTX_matrix_major_storage is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
22 # else
-
23 # pragma message("GLM: GLM_GTX_matrix_major_storage extension included")
-
24 # endif
-
25 #endif
-
26 
-
27 namespace glm
-
28 {
-
31 
-
34  template<typename T, qualifier Q>
-
35  GLM_FUNC_DECL mat<2, 2, T, Q> rowMajor2(
-
36  vec<2, T, Q> const& v1,
-
37  vec<2, T, Q> const& v2);
-
38 
-
41  template<typename T, qualifier Q>
-
42  GLM_FUNC_DECL mat<2, 2, T, Q> rowMajor2(
-
43  mat<2, 2, T, Q> const& m);
-
44 
-
47  template<typename T, qualifier Q>
-
48  GLM_FUNC_DECL mat<3, 3, T, Q> rowMajor3(
-
49  vec<3, T, Q> const& v1,
-
50  vec<3, T, Q> const& v2,
-
51  vec<3, T, Q> const& v3);
-
52 
-
55  template<typename T, qualifier Q>
-
56  GLM_FUNC_DECL mat<3, 3, T, Q> rowMajor3(
-
57  mat<3, 3, T, Q> const& m);
-
58 
-
61  template<typename T, qualifier Q>
-
62  GLM_FUNC_DECL mat<4, 4, T, Q> rowMajor4(
-
63  vec<4, T, Q> const& v1,
-
64  vec<4, T, Q> const& v2,
-
65  vec<4, T, Q> const& v3,
-
66  vec<4, T, Q> const& v4);
-
67 
-
70  template<typename T, qualifier Q>
-
71  GLM_FUNC_DECL mat<4, 4, T, Q> rowMajor4(
-
72  mat<4, 4, T, Q> const& m);
-
73 
-
76  template<typename T, qualifier Q>
-
77  GLM_FUNC_DECL mat<2, 2, T, Q> colMajor2(
-
78  vec<2, T, Q> const& v1,
-
79  vec<2, T, Q> const& v2);
-
80 
-
83  template<typename T, qualifier Q>
-
84  GLM_FUNC_DECL mat<2, 2, T, Q> colMajor2(
-
85  mat<2, 2, T, Q> const& m);
-
86 
-
89  template<typename T, qualifier Q>
-
90  GLM_FUNC_DECL mat<3, 3, T, Q> colMajor3(
-
91  vec<3, T, Q> const& v1,
-
92  vec<3, T, Q> const& v2,
-
93  vec<3, T, Q> const& v3);
-
94 
-
97  template<typename T, qualifier Q>
-
98  GLM_FUNC_DECL mat<3, 3, T, Q> colMajor3(
-
99  mat<3, 3, T, Q> const& m);
-
100 
-
103  template<typename T, qualifier Q>
-
104  GLM_FUNC_DECL mat<4, 4, T, Q> colMajor4(
-
105  vec<4, T, Q> const& v1,
-
106  vec<4, T, Q> const& v2,
-
107  vec<4, T, Q> const& v3,
-
108  vec<4, T, Q> const& v4);
-
109 
-
112  template<typename T, qualifier Q>
-
113  GLM_FUNC_DECL mat<4, 4, T, Q> colMajor4(
-
114  mat<4, 4, T, Q> const& m);
-
115 
-
117 }//namespace glm
-
118 
-
119 #include "matrix_major_storage.inl"
-
GLM_FUNC_DECL mat< 4, 4, T, Q > rowMajor4(mat< 4, 4, T, Q > const &m)
Build a row major matrix from other matrix.
-
GLM_FUNC_DECL mat< 2, 2, T, Q > rowMajor2(mat< 2, 2, T, Q > const &m)
Build a row major matrix from other matrix.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > colMajor4(mat< 4, 4, T, Q > const &m)
Build a column major matrix from other matrix.
-
GLM_FUNC_DECL mat< 3, 3, T, Q > colMajor3(mat< 3, 3, T, Q > const &m)
Build a column major matrix from other matrix.
-
GLM_FUNC_DECL mat< 2, 2, T, Q > colMajor2(mat< 2, 2, T, Q > const &m)
Build a column major matrix from other matrix.
-
GLM_FUNC_DECL mat< 3, 3, T, Q > rowMajor3(mat< 3, 3, T, Q > const &m)
Build a row major matrix from other matrix.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00104.html b/tests/OpenGL/package/glm/doc/api/a00104.html deleted file mode 100644 index 63ceeba0..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00104.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_operation.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_operation.hpp File Reference
-
-
- -

GLM_GTX_matrix_operation -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_matrix_operation

-
See also
Core features (dependence)
- -

Definition in file matrix_operation.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00104_source.html b/tests/OpenGL/package/glm/doc/api/a00104_source.html deleted file mode 100644 index 9f987b5d..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00104_source.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_operation.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_operation.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../glm.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # ifndef GLM_ENABLE_EXPERIMENTAL
-
20 # pragma message("GLM: GLM_GTX_matrix_operation is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
21 # else
-
22 # pragma message("GLM: GLM_GTX_matrix_operation extension included")
-
23 # endif
-
24 #endif
-
25 
-
26 namespace glm
-
27 {
-
30 
-
33  template<typename T, qualifier Q>
-
34  GLM_FUNC_DECL mat<2, 2, T, Q> diagonal2x2(
-
35  vec<2, T, Q> const& v);
-
36 
-
39  template<typename T, qualifier Q>
-
40  GLM_FUNC_DECL mat<2, 3, T, Q> diagonal2x3(
-
41  vec<2, T, Q> const& v);
-
42 
-
45  template<typename T, qualifier Q>
-
46  GLM_FUNC_DECL mat<2, 4, T, Q> diagonal2x4(
-
47  vec<2, T, Q> const& v);
-
48 
-
51  template<typename T, qualifier Q>
-
52  GLM_FUNC_DECL mat<3, 2, T, Q> diagonal3x2(
-
53  vec<2, T, Q> const& v);
-
54 
-
57  template<typename T, qualifier Q>
-
58  GLM_FUNC_DECL mat<3, 3, T, Q> diagonal3x3(
-
59  vec<3, T, Q> const& v);
-
60 
-
63  template<typename T, qualifier Q>
-
64  GLM_FUNC_DECL mat<3, 4, T, Q> diagonal3x4(
-
65  vec<3, T, Q> const& v);
-
66 
-
69  template<typename T, qualifier Q>
-
70  GLM_FUNC_DECL mat<4, 2, T, Q> diagonal4x2(
-
71  vec<2, T, Q> const& v);
-
72 
-
75  template<typename T, qualifier Q>
-
76  GLM_FUNC_DECL mat<4, 3, T, Q> diagonal4x3(
-
77  vec<3, T, Q> const& v);
-
78 
-
81  template<typename T, qualifier Q>
-
82  GLM_FUNC_DECL mat<4, 4, T, Q> diagonal4x4(
-
83  vec<4, T, Q> const& v);
-
84 
-
87  template<typename T, qualifier Q>
-
88  GLM_FUNC_DECL mat<2, 2, T, Q> adjugate(mat<2, 2, T, Q> const& m);
-
89 
-
92  template<typename T, qualifier Q>
-
93  GLM_FUNC_DECL mat<3, 3, T, Q> adjugate(mat<3, 3, T, Q> const& m);
-
94 
-
97  template<typename T, qualifier Q>
-
98  GLM_FUNC_DECL mat<4, 4, T, Q> adjugate(mat<4, 4, T, Q> const& m);
-
99 
-
101 }//namespace glm
-
102 
-
103 #include "matrix_operation.inl"
-
GLM_FUNC_DECL mat< 4, 3, T, Q > diagonal4x3(vec< 3, T, Q > const &v)
Build a diagonal matrix.
-
GLM_FUNC_DECL mat< 2, 2, T, Q > diagonal2x2(vec< 2, T, Q > const &v)
Build a diagonal matrix.
-
GLM_FUNC_DECL mat< 3, 4, T, Q > diagonal3x4(vec< 3, T, Q > const &v)
Build a diagonal matrix.
-
GLM_FUNC_DECL mat< 3, 2, T, Q > diagonal3x2(vec< 2, T, Q > const &v)
Build a diagonal matrix.
-
GLM_FUNC_DECL mat< 2, 3, T, Q > diagonal2x3(vec< 2, T, Q > const &v)
Build a diagonal matrix.
-
GLM_FUNC_DECL mat< 3, 3, T, Q > diagonal3x3(vec< 3, T, Q > const &v)
Build a diagonal matrix.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > adjugate(mat< 4, 4, T, Q > const &m)
Build an adjugate matrix.
-
GLM_FUNC_DECL mat< 2, 4, T, Q > diagonal2x4(vec< 2, T, Q > const &v)
Build a diagonal matrix.
-
GLM_FUNC_DECL mat< 4, 2, T, Q > diagonal4x2(vec< 2, T, Q > const &v)
Build a diagonal matrix.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > diagonal4x4(vec< 4, T, Q > const &v)
Build a diagonal matrix.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00105.html b/tests/OpenGL/package/glm/doc/api/a00105.html deleted file mode 100644 index 0c941e14..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00105.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_projection.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_projection.hpp File Reference
-
-
- -

GLM_EXT_matrix_projection -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

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

GLM_GTX_matrix_query -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_matrix_query

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

Definition in file matrix_query.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00106_source.html b/tests/OpenGL/package/glm/doc/api/a00106_source.html deleted file mode 100644 index 06d2d277..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00106_source.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_query.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_query.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../glm.hpp"
-
18 #include "../gtx/vector_query.hpp"
-
19 #include <limits>
-
20 
-
21 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
22 # ifndef GLM_ENABLE_EXPERIMENTAL
-
23 # pragma message("GLM: GLM_GTX_matrix_query is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
24 # else
-
25 # pragma message("GLM: GLM_GTX_matrix_query extension included")
-
26 # endif
-
27 #endif
-
28 
-
29 namespace glm
-
30 {
-
33 
-
36  template<typename T, qualifier Q>
-
37  GLM_FUNC_DECL bool isNull(mat<2, 2, T, Q> const& m, T const& epsilon);
-
38 
-
41  template<typename T, qualifier Q>
-
42  GLM_FUNC_DECL bool isNull(mat<3, 3, T, Q> const& m, T const& epsilon);
-
43 
-
46  template<typename T, qualifier Q>
-
47  GLM_FUNC_DECL bool isNull(mat<4, 4, T, Q> const& m, T const& epsilon);
-
48 
-
51  template<length_t C, length_t R, typename T, qualifier Q, template<length_t, length_t, typename, qualifier> class matType>
-
52  GLM_FUNC_DECL bool isIdentity(matType<C, R, T, Q> const& m, T const& epsilon);
-
53 
-
56  template<typename T, qualifier Q>
-
57  GLM_FUNC_DECL bool isNormalized(mat<2, 2, T, Q> const& m, T const& epsilon);
-
58 
-
61  template<typename T, qualifier Q>
-
62  GLM_FUNC_DECL bool isNormalized(mat<3, 3, T, Q> const& m, T const& epsilon);
-
63 
-
66  template<typename T, qualifier Q>
-
67  GLM_FUNC_DECL bool isNormalized(mat<4, 4, T, Q> const& m, T const& epsilon);
-
68 
-
71  template<length_t C, length_t R, typename T, qualifier Q, template<length_t, length_t, typename, qualifier> class matType>
-
72  GLM_FUNC_DECL bool isOrthogonal(matType<C, R, T, Q> const& m, T const& epsilon);
-
73 
-
75 }//namespace glm
-
76 
-
77 #include "matrix_query.inl"
-
GLM_FUNC_DECL bool isNormalized(mat< 4, 4, T, Q > const &m, T const &epsilon)
Return whether a matrix is a normalized matrix.
-
GLM_FUNC_DECL bool isIdentity(matType< C, R, T, Q > const &m, T const &epsilon)
Return whether a matrix is an identity matrix.
-
GLM_FUNC_DECL bool isNull(mat< 4, 4, T, Q > const &m, T const &epsilon)
Return whether a matrix is a null matrix.
-
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon()
Return the epsilon constant for floating point types.
-
GLM_FUNC_DECL bool isOrthogonal(matType< C, R, T, Q > const &m, T const &epsilon)
Return whether a matrix is an orthonormalized matrix.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00107.html b/tests/OpenGL/package/glm/doc/api/a00107.html deleted file mode 100644 index 8138f889..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00107.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_relational.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_relational.hpp File Reference
-
-
- -

GLM_EXT_matrix_relational -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

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

GLM_EXT_matrix_transform -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

-template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType identity ()
 Builds an identity matrix.
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > lookAt (vec< 3, T, Q > const &eye, vec< 3, T, Q > const &center, vec< 3, T, Q > const &up)
 Build a look at view matrix based on the default handedness. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > lookAtLH (vec< 3, T, Q > const &eye, vec< 3, T, Q > const &center, vec< 3, T, Q > const &up)
 Build a left handed look at view matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > lookAtRH (vec< 3, T, Q > const &eye, vec< 3, T, Q > const &center, vec< 3, T, Q > const &up)
 Build a right handed look at view matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > rotate (mat< 4, 4, T, Q > const &m, T angle, vec< 3, T, Q > const &axis)
 Builds a rotation 4 * 4 matrix created from an axis vector and an angle. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > scale (mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
 Builds a scale 4 * 4 matrix created from 3 scalars. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > translate (mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
 Builds a translation 4 * 4 matrix created from a vector of 3 components. More...
 
-

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00108_source.html b/tests/OpenGL/package/glm/doc/api/a00108_source.html deleted file mode 100644 index 2098420a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00108_source.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_transform.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
ext/matrix_transform.hpp
-
-
-Go to the documentation of this file.
1 
-
20 #pragma once
-
21 
-
22 // Dependencies
-
23 #include "../gtc/constants.hpp"
-
24 #include "../geometric.hpp"
-
25 #include "../trigonometric.hpp"
-
26 #include "../matrix.hpp"
-
27 
-
28 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
29 # pragma message("GLM: GLM_EXT_matrix_transform extension included")
-
30 #endif
-
31 
-
32 namespace glm
-
33 {
-
36 
-
38  template<typename genType>
-
39  GLM_FUNC_DECL GLM_CONSTEXPR genType identity();
-
40 
-
63  template<typename T, qualifier Q>
-
64  GLM_FUNC_DECL mat<4, 4, T, Q> translate(
-
65  mat<4, 4, T, Q> const& m, vec<3, T, Q> const& v);
-
66 
-
79  template<typename T, qualifier Q>
-
80  GLM_FUNC_DECL mat<4, 4, T, Q> rotate(
-
81  mat<4, 4, T, Q> const& m, T angle, vec<3, T, Q> const& axis);
-
82 
-
94  template<typename T, qualifier Q>
-
95  GLM_FUNC_DECL mat<4, 4, T, Q> scale(
-
96  mat<4, 4, T, Q> const& m, vec<3, T, Q> const& v);
-
97 
-
108  template<typename T, qualifier Q>
-
109  GLM_FUNC_DECL mat<4, 4, T, Q> lookAtRH(
-
110  vec<3, T, Q> const& eye, vec<3, T, Q> const& center, vec<3, T, Q> const& up);
-
111 
-
122  template<typename T, qualifier Q>
-
123  GLM_FUNC_DECL mat<4, 4, T, Q> lookAtLH(
-
124  vec<3, T, Q> const& eye, vec<3, T, Q> const& center, vec<3, T, Q> const& up);
-
125 
-
137  template<typename T, qualifier Q>
-
138  GLM_FUNC_DECL mat<4, 4, T, Q> lookAt(
-
139  vec<3, T, Q> const& eye, vec<3, T, Q> const& center, vec<3, T, Q> const& up);
-
140 
-
142 }//namespace glm
-
143 
-
144 #include "matrix_transform.inl"
-
GLM_FUNC_DECL mat< 4, 4, T, Q > lookAtLH(vec< 3, T, Q > const &eye, vec< 3, T, Q > const &center, vec< 3, T, Q > const &up)
Build a left handed look at view matrix.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > lookAtRH(vec< 3, T, Q > const &eye, vec< 3, T, Q > const &center, vec< 3, T, Q > const &up)
Build a right handed look at view matrix.
-
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > translate(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
Builds a translation 4 * 4 matrix created from a vector of 3 components.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > rotate(mat< 4, 4, T, Q > const &m, T angle, vec< 3, T, Q > const &axis)
Builds a rotation 4 * 4 matrix created from an axis vector and an angle.
-
GLM_FUNC_DECL GLM_CONSTEXPR genType identity()
Builds an identity matrix.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > scale(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
Builds a scale 4 * 4 matrix created from 3 scalars.
-
GLM_FUNC_DECL vec< 3, T, Q > axis(qua< T, Q > const &x)
Returns the q rotation axis.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > lookAt(vec< 3, T, Q > const &eye, vec< 3, T, Q > const &center, vec< 3, T, Q > const &up)
Build a look at view matrix based on the default handedness.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00109.html b/tests/OpenGL/package/glm/doc/api/a00109.html deleted file mode 100644 index e6b7775f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00109.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_transform.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
gtc/matrix_transform.hpp File Reference
-
- - - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00109_source.html b/tests/OpenGL/package/glm/doc/api/a00109_source.html deleted file mode 100644 index 89220024..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00109_source.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_transform.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
gtc/matrix_transform.hpp
-
-
-Go to the documentation of this file.
1 
-
21 #pragma once
-
22 
-
23 // Dependencies
-
24 #include "../mat4x4.hpp"
-
25 #include "../vec2.hpp"
-
26 #include "../vec3.hpp"
-
27 #include "../vec4.hpp"
-
28 #include "../ext/matrix_projection.hpp"
-
29 #include "../ext/matrix_clip_space.hpp"
-
30 #include "../ext/matrix_transform.hpp"
-
31 
-
32 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
33 # pragma message("GLM: GLM_GTC_matrix_transform extension included")
-
34 #endif
-
35 
-
36 #include "matrix_transform.inl"
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00110.html b/tests/OpenGL/package/glm/doc/api/a00110.html deleted file mode 100644 index 8b3525cd..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00110.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_transform_2d.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
matrix_transform_2d.hpp File Reference
-
-
- -

GLM_GTX_matrix_transform_2d -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_matrix_transform_2d

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

Definition in file matrix_transform_2d.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00110_source.html b/tests/OpenGL/package/glm/doc/api/a00110_source.html deleted file mode 100644 index 29815147..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00110_source.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - -0.9.9 API documentation: matrix_transform_2d.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
matrix_transform_2d.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../mat3x3.hpp"
-
18 #include "../vec2.hpp"
-
19 
-
20 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
21 # ifndef GLM_ENABLE_EXPERIMENTAL
-
22 # pragma message("GLM: GLM_GTX_matrix_transform_2d is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
23 # else
-
24 # pragma message("GLM: GLM_GTX_matrix_transform_2d extension included")
-
25 # endif
-
26 #endif
-
27 
-
28 namespace glm
-
29 {
-
32 
-
37  template<typename T, qualifier Q>
-
38  GLM_FUNC_QUALIFIER mat<3, 3, T, Q> translate(
-
39  mat<3, 3, T, Q> const& m,
-
40  vec<2, T, Q> const& v);
-
41 
-
46  template<typename T, qualifier Q>
-
47  GLM_FUNC_QUALIFIER mat<3, 3, T, Q> rotate(
-
48  mat<3, 3, T, Q> const& m,
-
49  T angle);
-
50 
-
55  template<typename T, qualifier Q>
-
56  GLM_FUNC_QUALIFIER mat<3, 3, T, Q> scale(
-
57  mat<3, 3, T, Q> const& m,
-
58  vec<2, T, Q> const& v);
-
59 
-
64  template<typename T, qualifier Q>
-
65  GLM_FUNC_QUALIFIER mat<3, 3, T, Q> shearX(
-
66  mat<3, 3, T, Q> const& m,
-
67  T y);
-
68 
-
73  template<typename T, qualifier Q>
-
74  GLM_FUNC_QUALIFIER mat<3, 3, T, Q> shearY(
-
75  mat<3, 3, T, Q> const& m,
-
76  T x);
-
77 
-
79 }//namespace glm
-
80 
-
81 #include "matrix_transform_2d.inl"
-
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
-
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > translate(mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)
Builds a translation 3 * 3 matrix created from a vector of 2 components.
-
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > rotate(mat< 3, 3, T, Q > const &m, T angle)
Builds a rotation 3 * 3 matrix created from an angle.
-
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > shearY(mat< 3, 3, T, Q > const &m, T x)
Builds a vertical (parallel to the y axis) shear 3 * 3 matrix.
-
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > scale(mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)
Builds a scale 3 * 3 matrix created from a vector of 2 components.
-
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > shearX(mat< 3, 3, T, Q > const &m, T y)
Builds an horizontal (parallel to the x axis) shear 3 * 3 matrix.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00111.html b/tests/OpenGL/package/glm/doc/api/a00111.html deleted file mode 100644 index 2c8ae4d7..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00111.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - -0.9.9 API documentation: mixed_product.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
mixed_product.hpp File Reference
-
-
- -

GLM_GTX_mixed_producte -More...

- -

Go to the source code of this file.

- - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_mixed_producte

-
See also
Core features (dependence)
- -

Definition in file mixed_product.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00111_source.html b/tests/OpenGL/package/glm/doc/api/a00111_source.html deleted file mode 100644 index e16cba2e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00111_source.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - -0.9.9 API documentation: mixed_product.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
mixed_product.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../glm.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # ifndef GLM_ENABLE_EXPERIMENTAL
-
20 # pragma message("GLM: GLM_GTX_mixed_product is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
21 # else
-
22 # pragma message("GLM: GLM_GTX_mixed_product extension included")
-
23 # endif
-
24 #endif
-
25 
-
26 namespace glm
-
27 {
-
30 
-
32  template<typename T, qualifier Q>
-
33  GLM_FUNC_DECL T mixedProduct(
-
34  vec<3, T, Q> const& v1,
-
35  vec<3, T, Q> const& v2,
-
36  vec<3, T, Q> const& v3);
-
37 
-
39 }// namespace glm
-
40 
-
41 #include "mixed_product.inl"
-
GLM_FUNC_DECL T mixedProduct(vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)
Mixed product of 3 vectors (from GLM_GTX_mixed_product extension)
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00112.html b/tests/OpenGL/package/glm/doc/api/a00112.html deleted file mode 100644 index 3aecbc53..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00112.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - -0.9.9 API documentation: noise.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
noise.hpp File Reference
-
-
- -

GLM_GTC_noise -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTC_noise

-
See also
Core features (dependence)
- -

Definition in file noise.hpp.

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

GLM_GTX_norm -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_norm

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

Definition in file norm.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00113_source.html b/tests/OpenGL/package/glm/doc/api/a00113_source.html deleted file mode 100644 index 190a4857..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00113_source.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - -0.9.9 API documentation: norm.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
norm.hpp
-
-
-Go to the documentation of this file.
1 
-
15 #pragma once
-
16 
-
17 // Dependency:
-
18 #include "../geometric.hpp"
-
19 #include "../gtx/quaternion.hpp"
-
20 #include "../gtx/component_wise.hpp"
-
21 
-
22 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
23 # ifndef GLM_ENABLE_EXPERIMENTAL
-
24 # pragma message("GLM: GLM_GTX_norm is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
25 # else
-
26 # pragma message("GLM: GLM_GTX_norm extension included")
-
27 # endif
-
28 #endif
-
29 
-
30 namespace glm
-
31 {
-
34 
-
37  template<length_t L, typename T, qualifier Q>
-
38  GLM_FUNC_DECL T length2(vec<L, T, Q> const& x);
-
39 
-
42  template<length_t L, typename T, qualifier Q>
-
43  GLM_FUNC_DECL T distance2(vec<L, T, Q> const& p0, vec<L, T, Q> const& p1);
-
44 
-
47  template<typename T, qualifier Q>
-
48  GLM_FUNC_DECL T l1Norm(vec<3, T, Q> const& x, vec<3, T, Q> const& y);
-
49 
-
52  template<typename T, qualifier Q>
-
53  GLM_FUNC_DECL T l1Norm(vec<3, T, Q> const& v);
-
54 
-
57  template<typename T, qualifier Q>
-
58  GLM_FUNC_DECL T l2Norm(vec<3, T, Q> const& x, vec<3, T, Q> const& y);
-
59 
-
62  template<typename T, qualifier Q>
-
63  GLM_FUNC_DECL T l2Norm(vec<3, T, Q> const& x);
-
64 
-
67  template<typename T, qualifier Q>
-
68  GLM_FUNC_DECL T lxNorm(vec<3, T, Q> const& x, vec<3, T, Q> const& y, unsigned int Depth);
-
69 
-
72  template<typename T, qualifier Q>
-
73  GLM_FUNC_DECL T lxNorm(vec<3, T, Q> const& x, unsigned int Depth);
-
74 
-
77  template<typename T, qualifier Q>
-
78  GLM_FUNC_DECL T lMaxNorm(vec<3, T, Q> const& x, vec<3, T, Q> const& y);
-
79 
-
82  template<typename T, qualifier Q>
-
83  GLM_FUNC_DECL T lMaxNorm(vec<3, T, Q> const& x);
-
84 
-
86 }//namespace glm
-
87 
-
88 #include "norm.inl"
-
GLM_FUNC_DECL T length2(vec< L, T, Q > const &x)
Returns the squared length of x.
-
GLM_FUNC_DECL T l1Norm(vec< 3, T, Q > const &v)
Returns the L1 norm of v.
-
GLM_FUNC_DECL T distance2(vec< L, T, Q > const &p0, vec< L, T, Q > const &p1)
Returns the squared distance between p0 and p1, i.e., length2(p0 - p1).
-
GLM_FUNC_DECL T lMaxNorm(vec< 3, T, Q > const &x)
Returns the LMax norm of v.
-
GLM_FUNC_DECL T lxNorm(vec< 3, T, Q > const &x, unsigned int Depth)
Returns the L norm of v.
-
GLM_FUNC_DECL T l2Norm(vec< 3, T, Q > const &x)
Returns the L2 norm of v.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00114.html b/tests/OpenGL/package/glm/doc/api/a00114.html deleted file mode 100644 index fccfbc6b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00114.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - -0.9.9 API documentation: normal.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
normal.hpp File Reference
-
-
- -

GLM_GTX_normal -More...

- -

Go to the source code of this file.

- - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_normal

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

Definition in file normal.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00114_source.html b/tests/OpenGL/package/glm/doc/api/a00114_source.html deleted file mode 100644 index 322b3278..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00114_source.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -0.9.9 API documentation: normal.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
normal.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../glm.hpp"
-
18 
-
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
20 # ifndef GLM_ENABLE_EXPERIMENTAL
-
21 # pragma message("GLM: GLM_GTX_normal is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
22 # else
-
23 # pragma message("GLM: GLM_GTX_normal extension included")
-
24 # endif
-
25 #endif
-
26 
-
27 namespace glm
-
28 {
-
31 
-
35  template<typename T, qualifier Q>
-
36  GLM_FUNC_DECL vec<3, T, Q> triangleNormal(vec<3, T, Q> const& p1, vec<3, T, Q> const& p2, vec<3, T, Q> const& p3);
-
37 
-
39 }//namespace glm
-
40 
-
41 #include "normal.inl"
-
GLM_FUNC_DECL vec< 3, T, Q > triangleNormal(vec< 3, T, Q > const &p1, vec< 3, T, Q > const &p2, vec< 3, T, Q > const &p3)
Computes triangle normal from triangle points.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00115.html b/tests/OpenGL/package/glm/doc/api/a00115.html deleted file mode 100644 index 82e82a9a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00115.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -0.9.9 API documentation: normalize_dot.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
normalize_dot.hpp File Reference
-
-
- -

GLM_GTX_normalize_dot -More...

- -

Go to the source code of this file.

- - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_normalize_dot

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

Definition in file normalize_dot.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00115_source.html b/tests/OpenGL/package/glm/doc/api/a00115_source.html deleted file mode 100644 index 9ad6977e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00115_source.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - -0.9.9 API documentation: normalize_dot.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
normalize_dot.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../gtx/fast_square_root.hpp"
-
18 
-
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
20 # ifndef GLM_ENABLE_EXPERIMENTAL
-
21 # pragma message("GLM: GLM_GTX_normalize_dot is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
22 # else
-
23 # pragma message("GLM: GLM_GTX_normalize_dot extension included")
-
24 # endif
-
25 #endif
-
26 
-
27 namespace glm
-
28 {
-
31 
-
36  template<length_t L, typename T, qualifier Q>
-
37  GLM_FUNC_DECL T normalizeDot(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
-
38 
-
43  template<length_t L, typename T, qualifier Q>
-
44  GLM_FUNC_DECL T fastNormalizeDot(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
-
45 
-
47 }//namespace glm
-
48 
-
49 #include "normalize_dot.inl"
-
GLM_FUNC_DECL T normalizeDot(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Normalize parameters and returns the dot product of x and y.
-
GLM_FUNC_DECL T fastNormalizeDot(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Normalize parameters and returns the dot product of x and y.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00116.html b/tests/OpenGL/package/glm/doc/api/a00116.html deleted file mode 100644 index b0713fe2..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00116.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - -0.9.9 API documentation: number_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
number_precision.hpp File Reference
-
-
- -

GLM_GTX_number_precision -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

-typedef f32 f32mat1
 Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
-typedef f32 f32mat1x1
 Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
-typedef f32 f32vec1
 Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
-typedef f64 f64mat1
 Double-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
-typedef f64 f64mat1x1
 Double-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
-typedef f64 f64vec1
 Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
-typedef u16 u16vec1
 16bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
 
-typedef u32 u32vec1
 32bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
 
-typedef u64 u64vec1
 64bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
 
-typedef u8 u8vec1
 8bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
 
-

Detailed Description

-

GLM_GTX_number_precision

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

Definition in file number_precision.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00116_source.html b/tests/OpenGL/package/glm/doc/api/a00116_source.html deleted file mode 100644 index d9a852e7..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00116_source.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - -0.9.9 API documentation: number_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
number_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
15 #pragma once
-
16 
-
17 // Dependency:
-
18 #include "../glm.hpp"
-
19 #include "../gtc/type_precision.hpp"
-
20 
-
21 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
22 # ifndef GLM_ENABLE_EXPERIMENTAL
-
23 # pragma message("GLM: GLM_GTX_number_precision is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
24 # else
-
25 # pragma message("GLM: GLM_GTX_number_precision extension included")
-
26 # endif
-
27 #endif
-
28 
-
29 namespace glm{
-
30 namespace gtx
-
31 {
-
33  // Unsigned int vector types
-
34 
-
37 
-
38  typedef u8 u8vec1;
-
39  typedef u16 u16vec1;
-
40  typedef u32 u32vec1;
-
41  typedef u64 u64vec1;
-
42 
-
44  // Float vector types
-
45 
-
46  typedef f32 f32vec1;
-
47  typedef f64 f64vec1;
-
48 
-
50  // Float matrix types
-
51 
-
52  typedef f32 f32mat1;
-
53  typedef f32 f32mat1x1;
-
54  typedef f64 f64mat1;
-
55  typedef f64 f64mat1x1;
-
56 
-
58 }//namespace gtx
-
59 }//namespace glm
-
60 
-
61 #include "number_precision.inl"
-
uint32 u32
Default qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:120
-
uint64 u64
Default qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:134
-
f32 f32mat1x1
Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension) ...
-
f64 f64mat1
Double-qualifier floating-point scalar. (from GLM_GTX_number_precision extension) ...
-
u16 u16vec1
16bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
-
uint8 u8
Default qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:92
-
f32 f32mat1
Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension) ...
-
f32 f32vec1
Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension) ...
-
f64 f64vec1
Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension) ...
-
f64 f64mat1x1
Double-qualifier floating-point scalar. (from GLM_GTX_number_precision extension) ...
-
u64 u64vec1
64bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
-
u32 u32vec1
32bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
-
float f32
Default 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:150
-
uint16 u16
Default qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:106
-
u8 u8vec1
8bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
-
double f64
Default 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:166
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00117.html b/tests/OpenGL/package/glm/doc/api/a00117.html deleted file mode 100644 index d6198dfc..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00117.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - -0.9.9 API documentation: optimum_pow.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
optimum_pow.hpp File Reference
-
-
- -

GLM_GTX_optimum_pow -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_optimum_pow

-
See also
Core features (dependence)
- -

Definition in file optimum_pow.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00117_source.html b/tests/OpenGL/package/glm/doc/api/a00117_source.html deleted file mode 100644 index 4031c3f1..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00117_source.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - -0.9.9 API documentation: optimum_pow.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
optimum_pow.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../glm.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # ifndef GLM_ENABLE_EXPERIMENTAL
-
20 # pragma message("GLM: GLM_GTX_optimum_pow is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
21 # else
-
22 # pragma message("GLM: GLM_GTX_optimum_pow extension included")
-
23 # endif
-
24 #endif
-
25 
-
26 namespace glm{
-
27 namespace gtx
-
28 {
-
31 
-
35  template<typename genType>
-
36  GLM_FUNC_DECL genType pow2(genType const& x);
-
37 
-
41  template<typename genType>
-
42  GLM_FUNC_DECL genType pow3(genType const& x);
-
43 
-
47  template<typename genType>
-
48  GLM_FUNC_DECL genType pow4(genType const& x);
-
49 
-
51 }//namespace gtx
-
52 }//namespace glm
-
53 
-
54 #include "optimum_pow.inl"
-
GLM_FUNC_DECL genType pow3(genType const &x)
Returns x raised to the power of 3.
-
GLM_FUNC_DECL genType pow4(genType const &x)
Returns x raised to the power of 4.
-
GLM_FUNC_DECL genType pow2(genType const &x)
Returns x raised to the power of 2.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00118.html b/tests/OpenGL/package/glm/doc/api/a00118.html deleted file mode 100644 index 7ea9817c..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00118.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -0.9.9 API documentation: orthonormalize.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
orthonormalize.hpp File Reference
-
-
- -

GLM_GTX_orthonormalize -More...

- -

Go to the source code of this file.

- - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_orthonormalize

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

Definition in file orthonormalize.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00118_source.html b/tests/OpenGL/package/glm/doc/api/a00118_source.html deleted file mode 100644 index 4ee3ce64..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00118_source.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - -0.9.9 API documentation: orthonormalize.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
orthonormalize.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../vec3.hpp"
-
18 #include "../mat3x3.hpp"
-
19 #include "../geometric.hpp"
-
20 
-
21 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
22 # ifndef GLM_ENABLE_EXPERIMENTAL
-
23 # pragma message("GLM: GLM_GTX_orthonormalize is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
24 # else
-
25 # pragma message("GLM: GLM_GTX_orthonormalize extension included")
-
26 # endif
-
27 #endif
-
28 
-
29 namespace glm
-
30 {
-
33 
-
37  template<typename T, qualifier Q>
-
38  GLM_FUNC_DECL mat<3, 3, T, Q> orthonormalize(mat<3, 3, T, Q> const& m);
-
39 
-
43  template<typename T, qualifier Q>
-
44  GLM_FUNC_DECL vec<3, T, Q> orthonormalize(vec<3, T, Q> const& x, vec<3, T, Q> const& y);
-
45 
-
47 }//namespace glm
-
48 
-
49 #include "orthonormalize.inl"
-
GLM_FUNC_DECL vec< 3, T, Q > orthonormalize(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)
Orthonormalizes x according y.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00119.html b/tests/OpenGL/package/glm/doc/api/a00119.html deleted file mode 100644 index e8c7feb2..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00119.html +++ /dev/null @@ -1,333 +0,0 @@ - - - - - - -0.9.9 API documentation: packing.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
gtc/packing.hpp File Reference
-
-
- -

GLM_GTC_packing -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

GLM_FUNC_DECL uint32 packF2x11_1x10 (vec3 const &v)
 First, converts the first two components of the normalized floating-point value v into 11-bit signless floating-point values. More...
 
GLM_FUNC_DECL uint32 packF3x9_E1x5 (vec3 const &v)
 First, converts the first two components of the normalized floating-point value v into 11-bit signless floating-point values. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, uint16, Q > packHalf (vec< L, float, Q > const &v)
 Returns an unsigned integer vector obtained by converting the components of a floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification. More...
 
GLM_FUNC_DECL uint16 packHalf1x16 (float v)
 Returns an unsigned integer obtained by converting the components of a floating-point scalar to the 16-bit floating-point representation found in the OpenGL Specification, and then packing this 16-bit value into a 16-bit unsigned integer. More...
 
GLM_FUNC_DECL uint64 packHalf4x16 (vec4 const &v)
 Returns an unsigned integer obtained by converting the components of a four-component floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification, and then packing these four 16-bit values into a 64-bit unsigned integer. More...
 
GLM_FUNC_DECL uint32 packI3x10_1x2 (ivec4 const &v)
 Returns an unsigned integer obtained by converting the components of a four-component signed integer vector to the 10-10-10-2-bit signed integer representation found in the OpenGL Specification, and then packing these four values into a 32-bit unsigned integer. More...
 
GLM_FUNC_DECL int packInt2x16 (i16vec2 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
GLM_FUNC_DECL int64 packInt2x32 (i32vec2 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
GLM_FUNC_DECL int16 packInt2x8 (i8vec2 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
GLM_FUNC_DECL int64 packInt4x16 (i16vec4 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
GLM_FUNC_DECL int32 packInt4x8 (i8vec4 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > packRGBM (vec< 3, T, Q > const &rgb)
 Returns an unsigned integer vector obtained by converting the components of a floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification. More...
 
template<typename intType , length_t L, typename floatType , qualifier Q>
GLM_FUNC_DECL vec< L, intType, Q > packSnorm (vec< L, floatType, Q > const &v)
 Convert each component of the normalized floating-point vector into signed integer values. More...
 
GLM_FUNC_DECL uint16 packSnorm1x16 (float v)
 First, converts the normalized floating-point value v into 16-bit integer value. More...
 
GLM_FUNC_DECL uint8 packSnorm1x8 (float s)
 First, converts the normalized floating-point value v into 8-bit integer value. More...
 
GLM_FUNC_DECL uint16 packSnorm2x8 (vec2 const &v)
 First, converts each component of the normalized floating-point value v into 8-bit integer values. More...
 
GLM_FUNC_DECL uint32 packSnorm3x10_1x2 (vec4 const &v)
 First, converts the first three components of the normalized floating-point value v into 10-bit signed integer values. More...
 
GLM_FUNC_DECL uint64 packSnorm4x16 (vec4 const &v)
 First, converts each component of the normalized floating-point value v into 16-bit integer values. More...
 
GLM_FUNC_DECL uint32 packU3x10_1x2 (uvec4 const &v)
 Returns an unsigned integer obtained by converting the components of a four-component unsigned integer vector to the 10-10-10-2-bit unsigned integer representation found in the OpenGL Specification, and then packing these four values into a 32-bit unsigned integer. More...
 
GLM_FUNC_DECL uint packUint2x16 (u16vec2 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
GLM_FUNC_DECL uint64 packUint2x32 (u32vec2 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
GLM_FUNC_DECL uint16 packUint2x8 (u8vec2 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
GLM_FUNC_DECL uint64 packUint4x16 (u16vec4 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
GLM_FUNC_DECL uint32 packUint4x8 (u8vec4 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
template<typename uintType , length_t L, typename floatType , qualifier Q>
GLM_FUNC_DECL vec< L, uintType, Q > packUnorm (vec< L, floatType, Q > const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint16 packUnorm1x16 (float v)
 First, converts the normalized floating-point value v into a 16-bit integer value. More...
 
GLM_FUNC_DECL uint16 packUnorm1x5_1x6_1x5 (vec3 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint8 packUnorm1x8 (float v)
 First, converts the normalized floating-point value v into a 8-bit integer value. More...
 
GLM_FUNC_DECL uint8 packUnorm2x3_1x2 (vec3 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint8 packUnorm2x4 (vec2 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint16 packUnorm2x8 (vec2 const &v)
 First, converts each component of the normalized floating-point value v into 8-bit integer values. More...
 
GLM_FUNC_DECL uint32 packUnorm3x10_1x2 (vec4 const &v)
 First, converts the first three components of the normalized floating-point value v into 10-bit unsigned integer values. More...
 
GLM_FUNC_DECL uint16 packUnorm3x5_1x1 (vec4 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint64 packUnorm4x16 (vec4 const &v)
 First, converts each component of the normalized floating-point value v into 16-bit integer values. More...
 
GLM_FUNC_DECL uint16 packUnorm4x4 (vec4 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL vec3 unpackF2x11_1x10 (uint32 p)
 First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and one 10-bit signless floating-point value . More...
 
GLM_FUNC_DECL vec3 unpackF3x9_E1x5 (uint32 p)
 First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and one 10-bit signless floating-point value . More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, float, Q > unpackHalf (vec< L, uint16, Q > const &p)
 Returns a floating-point vector with components obtained by reinterpreting an integer vector as 16-bit floating-point numbers and converting them to 32-bit floating-point values. More...
 
GLM_FUNC_DECL float unpackHalf1x16 (uint16 v)
 Returns a floating-point scalar with components obtained by unpacking a 16-bit unsigned integer into a 16-bit value, interpreted as a 16-bit floating-point number according to the OpenGL Specification, and converting it to 32-bit floating-point values. More...
 
GLM_FUNC_DECL vec4 unpackHalf4x16 (uint64 p)
 Returns a four-component floating-point vector with components obtained by unpacking a 64-bit unsigned integer into four 16-bit values, interpreting those values as 16-bit floating-point numbers according to the OpenGL Specification, and converting them to 32-bit floating-point values. More...
 
GLM_FUNC_DECL ivec4 unpackI3x10_1x2 (uint32 p)
 Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit signed integers. More...
 
GLM_FUNC_DECL i16vec2 unpackInt2x16 (int p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL i32vec2 unpackInt2x32 (int64 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL i8vec2 unpackInt2x8 (int16 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL i16vec4 unpackInt4x16 (int64 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL i8vec4 unpackInt4x8 (int32 p)
 Convert a packed integer into an integer vector. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > unpackRGBM (vec< 4, T, Q > const &rgbm)
 Returns a floating-point vector with components obtained by reinterpreting an integer vector as 16-bit floating-point numbers and converting them to 32-bit floating-point values. More...
 
template<typename floatType , length_t L, typename intType , qualifier Q>
GLM_FUNC_DECL vec< L, floatType, Q > unpackSnorm (vec< L, intType, Q > const &v)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL float unpackSnorm1x16 (uint16 p)
 First, unpacks a single 16-bit unsigned integer p into a single 16-bit signed integers. More...
 
GLM_FUNC_DECL float unpackSnorm1x8 (uint8 p)
 First, unpacks a single 8-bit unsigned integer p into a single 8-bit signed integers. More...
 
GLM_FUNC_DECL vec2 unpackSnorm2x8 (uint16 p)
 First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit signed integers. More...
 
GLM_FUNC_DECL vec4 unpackSnorm3x10_1x2 (uint32 p)
 First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers. More...
 
GLM_FUNC_DECL vec4 unpackSnorm4x16 (uint64 p)
 First, unpacks a single 64-bit unsigned integer p into four 16-bit signed integers. More...
 
GLM_FUNC_DECL uvec4 unpackU3x10_1x2 (uint32 p)
 Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit unsigned integers. More...
 
GLM_FUNC_DECL u16vec2 unpackUint2x16 (uint p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL u32vec2 unpackUint2x32 (uint64 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL u8vec2 unpackUint2x8 (uint16 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL u16vec4 unpackUint4x16 (uint64 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL u8vec4 unpackUint4x8 (uint32 p)
 Convert a packed integer into an integer vector. More...
 
template<typename floatType , length_t L, typename uintType , qualifier Q>
GLM_FUNC_DECL vec< L, floatType, Q > unpackUnorm (vec< L, uintType, Q > const &v)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL float unpackUnorm1x16 (uint16 p)
 First, unpacks a single 16-bit unsigned integer p into a of 16-bit unsigned integers. More...
 
GLM_FUNC_DECL vec3 unpackUnorm1x5_1x6_1x5 (uint16 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL float unpackUnorm1x8 (uint8 p)
 Convert a single 8-bit integer to a normalized floating-point value. More...
 
GLM_FUNC_DECL vec3 unpackUnorm2x3_1x2 (uint8 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL vec2 unpackUnorm2x4 (uint8 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL vec2 unpackUnorm2x8 (uint16 p)
 First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit unsigned integers. More...
 
GLM_FUNC_DECL vec4 unpackUnorm3x10_1x2 (uint32 p)
 First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers. More...
 
GLM_FUNC_DECL vec4 unpackUnorm3x5_1x1 (uint16 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL vec4 unpackUnorm4x16 (uint64 p)
 First, unpacks a single 64-bit unsigned integer p into four 16-bit unsigned integers. More...
 
GLM_FUNC_DECL vec4 unpackUnorm4x4 (uint16 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
-

Detailed Description

-

GLM_GTC_packing

-
See also
Core features (dependence)
- -

Definition in file gtc/packing.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00119_source.html b/tests/OpenGL/package/glm/doc/api/a00119_source.html deleted file mode 100644 index 93889375..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00119_source.html +++ /dev/null @@ -1,356 +0,0 @@ - - - - - - -0.9.9 API documentation: packing.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
gtc/packing.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "type_precision.hpp"
-
18 
-
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
20 # pragma message("GLM: GLM_GTC_packing extension included")
-
21 #endif
-
22 
-
23 namespace glm
-
24 {
-
27 
-
39  GLM_FUNC_DECL uint8 packUnorm1x8(float v);
-
40 
-
51  GLM_FUNC_DECL float unpackUnorm1x8(uint8 p);
-
52 
-
67  GLM_FUNC_DECL uint16 packUnorm2x8(vec2 const& v);
-
68 
-
83  GLM_FUNC_DECL vec2 unpackUnorm2x8(uint16 p);
-
84 
-
96  GLM_FUNC_DECL uint8 packSnorm1x8(float s);
-
97 
-
109  GLM_FUNC_DECL float unpackSnorm1x8(uint8 p);
-
110 
-
125  GLM_FUNC_DECL uint16 packSnorm2x8(vec2 const& v);
-
126 
-
141  GLM_FUNC_DECL vec2 unpackSnorm2x8(uint16 p);
-
142 
-
154  GLM_FUNC_DECL uint16 packUnorm1x16(float v);
-
155 
-
167  GLM_FUNC_DECL float unpackUnorm1x16(uint16 p);
-
168 
-
183  GLM_FUNC_DECL uint64 packUnorm4x16(vec4 const& v);
-
184 
-
199  GLM_FUNC_DECL vec4 unpackUnorm4x16(uint64 p);
-
200 
-
212  GLM_FUNC_DECL uint16 packSnorm1x16(float v);
-
213 
-
225  GLM_FUNC_DECL float unpackSnorm1x16(uint16 p);
-
226 
-
241  GLM_FUNC_DECL uint64 packSnorm4x16(vec4 const& v);
-
242 
-
257  GLM_FUNC_DECL vec4 unpackSnorm4x16(uint64 p);
-
258 
-
268  GLM_FUNC_DECL uint16 packHalf1x16(float v);
-
269 
-
279  GLM_FUNC_DECL float unpackHalf1x16(uint16 v);
-
280 
-
292  GLM_FUNC_DECL uint64 packHalf4x16(vec4 const& v);
-
293 
-
305  GLM_FUNC_DECL vec4 unpackHalf4x16(uint64 p);
-
306 
-
318  GLM_FUNC_DECL uint32 packI3x10_1x2(ivec4 const& v);
-
319 
-
329  GLM_FUNC_DECL ivec4 unpackI3x10_1x2(uint32 p);
-
330 
-
342  GLM_FUNC_DECL uint32 packU3x10_1x2(uvec4 const& v);
-
343 
-
353  GLM_FUNC_DECL uvec4 unpackU3x10_1x2(uint32 p);
-
354 
-
371  GLM_FUNC_DECL uint32 packSnorm3x10_1x2(vec4 const& v);
-
372 
-
388  GLM_FUNC_DECL vec4 unpackSnorm3x10_1x2(uint32 p);
-
389 
-
406  GLM_FUNC_DECL uint32 packUnorm3x10_1x2(vec4 const& v);
-
407 
-
423  GLM_FUNC_DECL vec4 unpackUnorm3x10_1x2(uint32 p);
-
424 
-
434  GLM_FUNC_DECL uint32 packF2x11_1x10(vec3 const& v);
-
435 
-
444  GLM_FUNC_DECL vec3 unpackF2x11_1x10(uint32 p);
-
445 
-
446 
-
458  GLM_FUNC_DECL uint32 packF3x9_E1x5(vec3 const& v);
-
459 
-
470  GLM_FUNC_DECL vec3 unpackF3x9_E1x5(uint32 p);
-
471 
-
480  template<length_t L, typename T, qualifier Q>
-
481  GLM_FUNC_DECL vec<4, T, Q> packRGBM(vec<3, T, Q> const& rgb);
-
482 
-
490  template<length_t L, typename T, qualifier Q>
-
491  GLM_FUNC_DECL vec<3, T, Q> unpackRGBM(vec<4, T, Q> const& rgbm);
-
492 
-
501  template<length_t L, qualifier Q>
-
502  GLM_FUNC_DECL vec<L, uint16, Q> packHalf(vec<L, float, Q> const& v);
-
503 
-
511  template<length_t L, qualifier Q>
-
512  GLM_FUNC_DECL vec<L, float, Q> unpackHalf(vec<L, uint16, Q> const& p);
-
513 
-
518  template<typename uintType, length_t L, typename floatType, qualifier Q>
-
519  GLM_FUNC_DECL vec<L, uintType, Q> packUnorm(vec<L, floatType, Q> const& v);
-
520 
-
525  template<typename floatType, length_t L, typename uintType, qualifier Q>
-
526  GLM_FUNC_DECL vec<L, floatType, Q> unpackUnorm(vec<L, uintType, Q> const& v);
-
527 
-
532  template<typename intType, length_t L, typename floatType, qualifier Q>
-
533  GLM_FUNC_DECL vec<L, intType, Q> packSnorm(vec<L, floatType, Q> const& v);
-
534 
-
539  template<typename floatType, length_t L, typename intType, qualifier Q>
-
540  GLM_FUNC_DECL vec<L, floatType, Q> unpackSnorm(vec<L, intType, Q> const& v);
-
541 
-
546  GLM_FUNC_DECL uint8 packUnorm2x4(vec2 const& v);
-
547 
-
552  GLM_FUNC_DECL vec2 unpackUnorm2x4(uint8 p);
-
553 
-
558  GLM_FUNC_DECL uint16 packUnorm4x4(vec4 const& v);
-
559 
-
564  GLM_FUNC_DECL vec4 unpackUnorm4x4(uint16 p);
-
565 
-
570  GLM_FUNC_DECL uint16 packUnorm1x5_1x6_1x5(vec3 const& v);
-
571 
-
576  GLM_FUNC_DECL vec3 unpackUnorm1x5_1x6_1x5(uint16 p);
-
577 
-
582  GLM_FUNC_DECL uint16 packUnorm3x5_1x1(vec4 const& v);
-
583 
-
588  GLM_FUNC_DECL vec4 unpackUnorm3x5_1x1(uint16 p);
-
589 
-
594  GLM_FUNC_DECL uint8 packUnorm2x3_1x2(vec3 const& v);
-
595 
-
600  GLM_FUNC_DECL vec3 unpackUnorm2x3_1x2(uint8 p);
-
601 
-
602 
-
603 
-
608  GLM_FUNC_DECL int16 packInt2x8(i8vec2 const& v);
-
609 
-
614  GLM_FUNC_DECL i8vec2 unpackInt2x8(int16 p);
-
615 
-
620  GLM_FUNC_DECL uint16 packUint2x8(u8vec2 const& v);
-
621 
-
626  GLM_FUNC_DECL u8vec2 unpackUint2x8(uint16 p);
-
627 
-
632  GLM_FUNC_DECL int32 packInt4x8(i8vec4 const& v);
-
633 
-
638  GLM_FUNC_DECL i8vec4 unpackInt4x8(int32 p);
-
639 
-
644  GLM_FUNC_DECL uint32 packUint4x8(u8vec4 const& v);
-
645 
-
650  GLM_FUNC_DECL u8vec4 unpackUint4x8(uint32 p);
-
651 
-
656  GLM_FUNC_DECL int packInt2x16(i16vec2 const& v);
-
657 
-
662  GLM_FUNC_DECL i16vec2 unpackInt2x16(int p);
-
663 
-
668  GLM_FUNC_DECL int64 packInt4x16(i16vec4 const& v);
-
669 
-
674  GLM_FUNC_DECL i16vec4 unpackInt4x16(int64 p);
-
675 
-
680  GLM_FUNC_DECL uint packUint2x16(u16vec2 const& v);
-
681 
-
686  GLM_FUNC_DECL u16vec2 unpackUint2x16(uint p);
-
687 
-
692  GLM_FUNC_DECL uint64 packUint4x16(u16vec4 const& v);
-
693 
-
698  GLM_FUNC_DECL u16vec4 unpackUint4x16(uint64 p);
-
699 
-
704  GLM_FUNC_DECL int64 packInt2x32(i32vec2 const& v);
-
705 
-
710  GLM_FUNC_DECL i32vec2 unpackInt2x32(int64 p);
-
711 
-
716  GLM_FUNC_DECL uint64 packUint2x32(u32vec2 const& v);
-
717 
-
722  GLM_FUNC_DECL u32vec2 unpackUint2x32(uint64 p);
-
723 
-
724 
-
726 }// namespace glm
-
727 
-
728 #include "packing.inl"
-
GLM_FUNC_DECL uint16 packUnorm4x4(vec4 const &v)
Convert each component of the normalized floating-point vector into unsigned integer values...
-
GLM_FUNC_DECL uint16 packUint2x8(u8vec2 const &v)
Convert each component from an integer vector into a packed unsigned integer.
-
GLM_FUNC_DECL uint8 packUnorm2x4(vec2 const &v)
Convert each component of the normalized floating-point vector into unsigned integer values...
-
GLM_FUNC_DECL vec4 unpackUnorm4x16(uint64 p)
First, unpacks a single 64-bit unsigned integer p into four 16-bit unsigned integers.
-
GLM_FUNC_DECL i16vec2 unpackInt2x16(int p)
Convert a packed integer into an integer vector.
-
GLM_FUNC_DECL i8vec4 unpackInt4x8(int32 p)
Convert a packed integer into an integer vector.
-
vec< 2, float, defaultp > vec2
2 components vector of single-precision floating-point numbers.
-
GLM_FUNC_DECL u16vec4 unpackUint4x16(uint64 p)
Convert a packed integer into an integer vector.
-
vec< 2, i8, defaultp > i8vec2
8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:238
-
GLM_FUNC_DECL u32vec2 unpackUint2x32(uint64 p)
Convert a packed integer into an integer vector.
-
GLM_FUNC_DECL vec< L, float, Q > unpackHalf(vec< L, uint16, Q > const &p)
Returns a floating-point vector with components obtained by reinterpreting an integer vector as 16-bi...
-
GLM_FUNC_DECL uint64 packUnorm4x16(vec4 const &v)
First, converts each component of the normalized floating-point value v into 16-bit integer values...
-
GLM_FUNC_DECL vec< L, uintType, Q > packUnorm(vec< L, floatType, Q > const &v)
Convert each component of the normalized floating-point vector into unsigned integer values...
-
GLM_FUNC_DECL vec3 unpackF2x11_1x10(uint32 p)
First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and ...
-
GLM_FUNC_DECL uint8 packUnorm1x8(float v)
First, converts the normalized floating-point value v into a 8-bit integer value. ...
-
GLM_FUNC_DECL u8vec2 unpackUint2x8(uint16 p)
Convert a packed integer into an integer vector.
-
GLM_FUNC_DECL vec4 unpackUnorm3x10_1x2(uint32 p)
First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers.
-
GLM_FUNC_DECL vec2 unpackUnorm2x4(uint8 p)
Convert a packed integer to a normalized floating-point vector.
-
GLM_FUNC_DECL vec< 4, T, Q > packRGBM(vec< 3, T, Q > const &rgb)
Returns an unsigned integer vector obtained by converting the components of a floating-point vector t...
-
vec< 4, i16, defaultp > i16vec4
16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:260
-
GLM_FUNC_DECL vec4 unpackSnorm4x16(uint64 p)
First, unpacks a single 64-bit unsigned integer p into four 16-bit signed integers.
-
GLM_FUNC_DECL uint32 packUnorm3x10_1x2(vec4 const &v)
First, converts the first three components of the normalized floating-point value v into 10-bit unsig...
-
vec< 4, u8, defaultp > u8vec4
Default qualifier 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:342
-
vec< 4, i8, defaultp > i8vec4
8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:240
-
vec< 4, int, defaultp > ivec4
4 components vector of signed integer numbers.
Definition: vector_int4.hpp:15
-
GLM_FUNC_DECL i32vec2 unpackInt2x32(int64 p)
Convert a packed integer into an integer vector.
-
GLM_FUNC_DECL uint8 packUnorm2x3_1x2(vec3 const &v)
Convert each component of the normalized floating-point vector into unsigned integer values...
-
GLM_FUNC_DECL uint16 packUnorm1x16(float v)
First, converts the normalized floating-point value v into a 16-bit integer value.
-
vec< 4, float, defaultp > vec4
4 components vector of single-precision floating-point numbers.
-
vec< 2, i32, defaultp > i32vec2
32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:278
-
GLM_FUNC_DECL float unpackUnorm1x8(uint8 p)
Convert a single 8-bit integer to a normalized floating-point value.
-
GLM_FUNC_DECL float unpackSnorm1x8(uint8 p)
First, unpacks a single 8-bit unsigned integer p into a single 8-bit signed integers.
-
GLM_FUNC_DECL float unpackHalf1x16(uint16 v)
Returns a floating-point scalar with components obtained by unpacking a 16-bit unsigned integer into ...
-
GLM_FUNC_DECL i16vec4 unpackInt4x16(int64 p)
Convert a packed integer into an integer vector.
-
GLM_FUNC_DECL float unpackUnorm1x16(uint16 p)
First, unpacks a single 16-bit unsigned integer p into a of 16-bit unsigned integers.
-
GLM_FUNC_DECL vec2 unpackSnorm2x8(uint16 p)
First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit signed integers.
-
vec< 2, i16, defaultp > i16vec2
16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:258
-
GLM_FUNC_DECL ivec4 unpackI3x10_1x2(uint32 p)
Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit signed integers...
-
GLM_FUNC_DECL uint16 packSnorm1x16(float v)
First, converts the normalized floating-point value v into 16-bit integer value.
-
GLM_FUNC_DECL vec3 unpackF3x9_E1x5(uint32 p)
First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and ...
-
GLM_FUNC_DECL vec< L, floatType, Q > unpackUnorm(vec< L, uintType, Q > const &v)
Convert a packed integer to a normalized floating-point vector.
-
GLM_FUNC_DECL vec< L, intType, Q > packSnorm(vec< L, floatType, Q > const &v)
Convert each component of the normalized floating-point vector into signed integer values...
-
GLM_FUNC_DECL uint16 packUnorm1x5_1x6_1x5(vec3 const &v)
Convert each component of the normalized floating-point vector into unsigned integer values...
-
GLM_FUNC_DECL vec4 unpackUnorm3x5_1x1(uint16 p)
Convert a packed integer to a normalized floating-point vector.
-
vec< 2, u8, defaultp > u8vec2
Default qualifier 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:340
-
GLM_FUNC_DECL vec4 unpackSnorm3x10_1x2(uint32 p)
First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers.
-
GLM_FUNC_DECL uint32 packSnorm3x10_1x2(vec4 const &v)
First, converts the first three components of the normalized floating-point value v into 10-bit signe...
-
GLM_FUNC_DECL int64 packInt4x16(i16vec4 const &v)
Convert each component from an integer vector into a packed integer.
-
GLM_FUNC_DECL vec3 unpackUnorm1x5_1x6_1x5(uint16 p)
Convert a packed integer to a normalized floating-point vector.
-
GLM_FUNC_DECL uint32 packF3x9_E1x5(vec3 const &v)
First, converts the first two components of the normalized floating-point value v into 11-bit signles...
-
GLM_FUNC_DECL uint16 packUnorm2x8(vec2 const &v)
First, converts each component of the normalized floating-point value v into 8-bit integer values...
-
GLM_FUNC_DECL uint64 packUint4x16(u16vec4 const &v)
Convert each component from an integer vector into a packed unsigned integer.
-
vec< 3, float, defaultp > vec3
3 components vector of single-precision floating-point numbers.
-
GLM_FUNC_DECL uint16 packUnorm3x5_1x1(vec4 const &v)
Convert each component of the normalized floating-point vector into unsigned integer values...
-
GLM_FUNC_DECL vec2 unpackUnorm2x8(uint16 p)
First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit unsigned integers.
-
GLM_FUNC_DECL u16vec2 unpackUint2x16(uint p)
Convert a packed integer into an integer vector.
-
GLM_FUNC_DECL uint packUint2x16(u16vec2 const &v)
Convert each component from an integer vector into a packed unsigned integer.
-
GLM_FUNC_DECL uint64 packSnorm4x16(vec4 const &v)
First, converts each component of the normalized floating-point value v into 16-bit integer values...
-
GLM_FUNC_DECL uint64 packUint2x32(u32vec2 const &v)
Convert each component from an integer vector into a packed unsigned integer.
-
vec< 4, unsigned int, defaultp > uvec4
4 components vector of unsigned integer numbers.
-
GLM_FUNC_DECL vec4 unpackHalf4x16(uint64 p)
Returns a four-component floating-point vector with components obtained by unpacking a 64-bit unsigne...
-
detail::uint64 uint64
64 bit unsigned integer type.
-
GLM_FUNC_DECL vec4 unpackUnorm4x4(uint16 p)
Convert a packed integer to a normalized floating-point vector.
-
GLM_FUNC_DECL uint64 packHalf4x16(vec4 const &v)
Returns an unsigned integer obtained by converting the components of a four-component floating-point ...
-
GLM_GTC_type_precision
-
GLM_FUNC_DECL i8vec2 unpackInt2x8(int16 p)
Convert a packed integer into an integer vector.
-
detail::int64 int64
64 bit signed integer type.
-
GLM_FUNC_DECL vec3 unpackUnorm2x3_1x2(uint8 p)
Convert a packed integer to a normalized floating-point vector.
-
GLM_FUNC_DECL uint32 packF2x11_1x10(vec3 const &v)
First, converts the first two components of the normalized floating-point value v into 11-bit signles...
-
GLM_FUNC_DECL uvec4 unpackU3x10_1x2(uint32 p)
Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit unsigned integers...
-
GLM_FUNC_DECL uint16 packHalf1x16(float v)
Returns an unsigned integer obtained by converting the components of a floating-point scalar to the 1...
-
GLM_FUNC_DECL vec< L, floatType, Q > unpackSnorm(vec< L, intType, Q > const &v)
Convert a packed integer to a normalized floating-point vector.
-
GLM_FUNC_DECL vec< 3, T, Q > unpackRGBM(vec< 4, T, Q > const &rgbm)
Returns a floating-point vector with components obtained by reinterpreting an integer vector as 16-bi...
-
GLM_FUNC_DECL uint16 packSnorm2x8(vec2 const &v)
First, converts each component of the normalized floating-point value v into 8-bit integer values...
-
GLM_FUNC_DECL uint8 packSnorm1x8(float s)
First, converts the normalized floating-point value v into 8-bit integer value.
-
GLM_FUNC_DECL u8vec4 unpackUint4x8(uint32 p)
Convert a packed integer into an integer vector.
-
GLM_FUNC_DECL uint32 packI3x10_1x2(ivec4 const &v)
Returns an unsigned integer obtained by converting the components of a four-component signed integer ...
-
GLM_FUNC_DECL int16 packInt2x8(i8vec2 const &v)
Convert each component from an integer vector into a packed integer.
-
GLM_FUNC_DECL int64 packInt2x32(i32vec2 const &v)
Convert each component from an integer vector into a packed integer.
-
GLM_FUNC_DECL uint32 packUint4x8(u8vec4 const &v)
Convert each component from an integer vector into a packed unsigned integer.
-
GLM_FUNC_DECL uint32 packU3x10_1x2(uvec4 const &v)
Returns an unsigned integer obtained by converting the components of a four-component unsigned intege...
-
vec< 2, u32, defaultp > u32vec2
Default qualifier 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:380
-
GLM_FUNC_DECL int packInt2x16(i16vec2 const &v)
Convert each component from an integer vector into a packed integer.
-
GLM_FUNC_DECL vec< L, uint16, Q > packHalf(vec< L, float, Q > const &v)
Returns an unsigned integer vector obtained by converting the components of a floating-point vector t...
-
vec< 4, u16, defaultp > u16vec4
Default qualifier 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:362
-
GLM_FUNC_DECL int32 packInt4x8(i8vec4 const &v)
Convert each component from an integer vector into a packed integer.
-
vec< 2, u16, defaultp > u16vec2
Default qualifier 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:360
-
GLM_FUNC_DECL float unpackSnorm1x16(uint16 p)
First, unpacks a single 16-bit unsigned integer p into a single 16-bit signed integers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00120.html b/tests/OpenGL/package/glm/doc/api/a00120.html deleted file mode 100644 index 4265a239..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00120.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - -0.9.9 API documentation: packing.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
packing.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

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

GLM_GTX_perpendicular -More...

- -

Go to the source code of this file.

- - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_perpendicular

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

Definition in file perpendicular.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00121_source.html b/tests/OpenGL/package/glm/doc/api/a00121_source.html deleted file mode 100644 index 23b639ce..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00121_source.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -0.9.9 API documentation: perpendicular.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
perpendicular.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../glm.hpp"
-
18 #include "../gtx/projection.hpp"
-
19 
-
20 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
21 # ifndef GLM_ENABLE_EXPERIMENTAL
-
22 # pragma message("GLM: GLM_GTX_perpendicular is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
23 # else
-
24 # pragma message("GLM: GLM_GTX_perpendicular extension included")
-
25 # endif
-
26 #endif
-
27 
-
28 namespace glm
-
29 {
-
32 
-
35  template<typename genType>
-
36  GLM_FUNC_DECL genType perp(genType const& x, genType const& Normal);
-
37 
-
39 }//namespace glm
-
40 
-
41 #include "perpendicular.inl"
-
GLM_FUNC_DECL genType perp(genType const &x, genType const &Normal)
Projects x a perpendicular axis of Normal.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00122.html b/tests/OpenGL/package/glm/doc/api/a00122.html deleted file mode 100644 index 0727653d..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00122.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: polar_coordinates.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
polar_coordinates.hpp File Reference
-
-
- -

GLM_GTX_polar_coordinates -More...

- -

Go to the source code of this file.

- - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_polar_coordinates

-
See also
Core features (dependence)
- -

Definition in file polar_coordinates.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00122_source.html b/tests/OpenGL/package/glm/doc/api/a00122_source.html deleted file mode 100644 index 5765202c..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00122_source.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - -0.9.9 API documentation: polar_coordinates.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
polar_coordinates.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../glm.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # ifndef GLM_ENABLE_EXPERIMENTAL
-
20 # pragma message("GLM: GLM_GTX_polar_coordinates is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
21 # else
-
22 # pragma message("GLM: GLM_GTX_polar_coordinates extension included")
-
23 # endif
-
24 #endif
-
25 
-
26 namespace glm
-
27 {
-
30 
-
34  template<typename T, qualifier Q>
-
35  GLM_FUNC_DECL vec<3, T, Q> polar(
-
36  vec<3, T, Q> const& euclidean);
-
37 
-
41  template<typename T, qualifier Q>
-
42  GLM_FUNC_DECL vec<3, T, Q> euclidean(
-
43  vec<2, T, Q> const& polar);
-
44 
-
46 }//namespace glm
-
47 
-
48 #include "polar_coordinates.inl"
-
GLM_FUNC_DECL vec< 3, T, Q > polar(vec< 3, T, Q > const &euclidean)
Convert Euclidean to Polar coordinates, x is the xz distance, y, the latitude and z the longitude...
-
GLM_FUNC_DECL vec< 3, T, Q > euclidean(vec< 2, T, Q > const &polar)
Convert Polar to Euclidean coordinates.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00123.html b/tests/OpenGL/package/glm/doc/api/a00123.html deleted file mode 100644 index fd40a989..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00123.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - -0.9.9 API documentation: projection.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
projection.hpp File Reference
-
-
- -

GLM_GTX_projection -More...

- -

Go to the source code of this file.

- - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_projection

-
See also
Core features (dependence)
- -

Definition in file projection.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00123_source.html b/tests/OpenGL/package/glm/doc/api/a00123_source.html deleted file mode 100644 index b51acc05..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00123_source.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -0.9.9 API documentation: projection.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
projection.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../geometric.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # ifndef GLM_ENABLE_EXPERIMENTAL
-
20 # pragma message("GLM: GLM_GTX_projection is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
21 # else
-
22 # pragma message("GLM: GLM_GTX_projection extension included")
-
23 # endif
-
24 #endif
-
25 
-
26 namespace glm
-
27 {
-
30 
-
37  template<typename genType>
-
38  GLM_FUNC_DECL genType proj(genType const& x, genType const& Normal);
-
39 
-
41 }//namespace glm
-
42 
-
43 #include "projection.inl"
-
GLM_FUNC_DECL genType proj(genType const &x, genType const &Normal)
Projects x on Normal.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00124_source.html b/tests/OpenGL/package/glm/doc/api/a00124_source.html deleted file mode 100644 index e648d3e4..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00124_source.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - -0.9.9 API documentation: qualifier.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
qualifier.hpp
-
-
-
1 #pragma once
-
2 
-
3 #include "setup.hpp"
-
4 
-
5 namespace glm
-
6 {
-
8  enum qualifier
-
9  {
-
10  packed_highp,
-
11  packed_mediump,
-
12  packed_lowp,
-
13 
-
14 # if GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE
-
15  aligned_highp,
-
16  aligned_mediump,
-
17  aligned_lowp, // ///< Typed data is aligned in memory allowing SIMD optimizations and operations are executed with high precision in term of ULPs to maximize performance
-
18  aligned = aligned_highp,
-
19 # endif
-
20 
-
21  highp = packed_highp,
-
22  mediump = packed_mediump,
-
23  lowp = packed_lowp,
-
24  packed = packed_highp,
-
25 
-
26 # if GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE && defined(GLM_FORCE_DEFAULT_ALIGNED_GENTYPES)
-
27  defaultp = aligned_highp
-
28 # else
-
29  defaultp = highp
-
30 # endif
-
31  };
-
32 
-
33  typedef qualifier precision;
-
34 
-
35  template<length_t L, typename T, qualifier Q = defaultp> struct vec;
-
36  template<length_t C, length_t R, typename T, qualifier Q = defaultp> struct mat;
-
37  template<typename T, qualifier Q = defaultp> struct qua;
-
38 
-
39 # if GLM_HAS_TEMPLATE_ALIASES
-
40  template <typename T, qualifier Q = defaultp> using tvec1 = vec<1, T, Q>;
-
41  template <typename T, qualifier Q = defaultp> using tvec2 = vec<2, T, Q>;
-
42  template <typename T, qualifier Q = defaultp> using tvec3 = vec<3, T, Q>;
-
43  template <typename T, qualifier Q = defaultp> using tvec4 = vec<4, T, Q>;
-
44  template <typename T, qualifier Q = defaultp> using tmat2x2 = mat<2, 2, T, Q>;
-
45  template <typename T, qualifier Q = defaultp> using tmat2x3 = mat<2, 3, T, Q>;
-
46  template <typename T, qualifier Q = defaultp> using tmat2x4 = mat<2, 4, T, Q>;
-
47  template <typename T, qualifier Q = defaultp> using tmat3x2 = mat<3, 2, T, Q>;
-
48  template <typename T, qualifier Q = defaultp> using tmat3x3 = mat<3, 3, T, Q>;
-
49  template <typename T, qualifier Q = defaultp> using tmat3x4 = mat<3, 4, T, Q>;
-
50  template <typename T, qualifier Q = defaultp> using tmat4x2 = mat<4, 2, T, Q>;
-
51  template <typename T, qualifier Q = defaultp> using tmat4x3 = mat<4, 3, T, Q>;
-
52  template <typename T, qualifier Q = defaultp> using tmat4x4 = mat<4, 4, T, Q>;
-
53  template <typename T, qualifier Q = defaultp> using tquat = qua<T, Q>;
-
54 # endif
-
55 
-
56 namespace detail
-
57 {
-
58  template<glm::qualifier P>
-
59  struct is_aligned
-
60  {
-
61  static const bool value = false;
-
62  };
-
63 
-
64 # if GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE
-
65  template<>
-
66  struct is_aligned<glm::aligned_lowp>
-
67  {
-
68  static const bool value = true;
-
69  };
-
70 
-
71  template<>
-
72  struct is_aligned<glm::aligned_mediump>
-
73  {
-
74  static const bool value = true;
-
75  };
-
76 
-
77  template<>
-
78  struct is_aligned<glm::aligned_highp>
-
79  {
-
80  static const bool value = true;
-
81  };
-
82 # endif
-
83 
-
84  template<length_t L, typename T, bool is_aligned>
-
85  struct storage
-
86  {
-
87  typedef struct type {
-
88  T data[L];
-
89  } type;
-
90  };
-
91 
-
92 # if GLM_HAS_ALIGNOF
-
93  template<length_t L, typename T>
-
94  struct storage<L, T, true>
-
95  {
-
96  typedef struct alignas(L * sizeof(T)) type {
-
97  T data[L];
-
98  } type;
-
99  };
-
100 
-
101  template<typename T>
-
102  struct storage<3, T, true>
-
103  {
-
104  typedef struct alignas(4 * sizeof(T)) type {
-
105  T data[4];
-
106  } type;
-
107  };
-
108 # endif
-
109 
-
110 # if GLM_ARCH & GLM_ARCH_SSE2_BIT
-
111  template<>
-
112  struct storage<4, float, true>
-
113  {
-
114  typedef glm_f32vec4 type;
-
115  };
-
116 
-
117  template<>
-
118  struct storage<4, int, true>
-
119  {
-
120  typedef glm_i32vec4 type;
-
121  };
-
122 
-
123  template<>
-
124  struct storage<4, unsigned int, true>
-
125  {
-
126  typedef glm_u32vec4 type;
-
127  };
-
128 
-
129  template<>
-
130  struct storage<2, double, true>
-
131  {
-
132  typedef glm_f64vec2 type;
-
133  };
-
134 
-
135  template<>
-
136  struct storage<2, detail::int64, true>
-
137  {
-
138  typedef glm_i64vec2 type;
-
139  };
-
140 
-
141  template<>
-
142  struct storage<2, detail::uint64, true>
-
143  {
-
144  typedef glm_u64vec2 type;
-
145  };
-
146 # endif
-
147 
-
148 # if (GLM_ARCH & GLM_ARCH_AVX_BIT)
-
149  template<>
-
150  struct storage<4, double, true>
-
151  {
-
152  typedef glm_f64vec4 type;
-
153  };
-
154 # endif
-
155 
-
156 # if (GLM_ARCH & GLM_ARCH_AVX2_BIT)
-
157  template<>
-
158  struct storage<4, detail::int64, true>
-
159  {
-
160  typedef glm_i64vec4 type;
-
161  };
-
162 
-
163  template<>
-
164  struct storage<4, detail::uint64, true>
-
165  {
-
166  typedef glm_u64vec4 type;
-
167  };
-
168 # endif
-
169 
-
170 # if GLM_ARCH & GLM_ARCH_NEON_BIT
-
171  template<>
-
172  struct storage<4, float, true>
-
173  {
-
174  typedef glm_f32vec4 type;
-
175  };
-
176 
-
177  template<>
-
178  struct storage<4, int, true>
-
179  {
-
180  typedef glm_i32vec4 type;
-
181  };
-
182 
-
183  template<>
-
184  struct storage<4, unsigned int, true>
-
185  {
-
186  typedef glm_u32vec4 type;
-
187  };
-
188 # endif
-
189 
-
190  enum genTypeEnum
-
191  {
-
192  GENTYPE_VEC,
-
193  GENTYPE_MAT,
-
194  GENTYPE_QUAT
-
195  };
-
196 
-
197  template <typename genType>
-
198  struct genTypeTrait
-
199  {};
-
200 
-
201  template <length_t C, length_t R, typename T>
-
202  struct genTypeTrait<mat<C, R, T> >
-
203  {
-
204  static const genTypeEnum GENTYPE = GENTYPE_MAT;
-
205  };
-
206 
-
207  template<typename genType, genTypeEnum type>
-
208  struct init_gentype
-
209  {
-
210  };
-
211 
-
212  template<typename genType>
-
213  struct init_gentype<genType, GENTYPE_QUAT>
-
214  {
-
215  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static genType identity()
-
216  {
-
217  return genType(1, 0, 0, 0);
-
218  }
-
219  };
-
220 
-
221  template<typename genType>
-
222  struct init_gentype<genType, GENTYPE_MAT>
-
223  {
-
224  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static genType identity()
-
225  {
-
226  return genType(1);
-
227  }
-
228  };
-
229 }//namespace detail
-
230 }//namespace glm
-
GLM_FUNC_DECL GLM_CONSTEXPR genType identity()
Builds an identity matrix.
-
detail::uint64 uint64
64 bit unsigned integer type.
-
detail::int64 int64
64 bit signed integer type.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00125.html b/tests/OpenGL/package/glm/doc/api/a00125.html deleted file mode 100644 index 42e3bad6..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00125.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - -0.9.9 API documentation: quaternion.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
gtc/quaternion.hpp File Reference
-
-
- -

GLM_GTC_quaternion -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > eulerAngles (qua< T, Q > const &x)
 Returns euler angles, pitch as x, yaw as y, roll as z. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > greaterThan (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison of result x > y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > greaterThanEqual (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison of result x >= y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > lessThan (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison result of x < y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > lessThanEqual (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison of result x <= y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > mat3_cast (qua< T, Q > const &x)
 Converts a quaternion to a 3 * 3 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > mat4_cast (qua< T, Q > const &x)
 Converts a quaternion to a 4 * 4 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T pitch (qua< T, Q > const &x)
 Returns pitch value of euler angles expressed in radians. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quat_cast (mat< 3, 3, T, Q > const &x)
 Converts a pure rotation 3 * 3 matrix to a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quat_cast (mat< 4, 4, T, Q > const &x)
 Converts a pure rotation 4 * 4 matrix to a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quatLookAt (vec< 3, T, Q > const &direction, vec< 3, T, Q > const &up)
 Build a look at quaternion based on the default handedness. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quatLookAtLH (vec< 3, T, Q > const &direction, vec< 3, T, Q > const &up)
 Build a left-handed look at quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quatLookAtRH (vec< 3, T, Q > const &direction, vec< 3, T, Q > const &up)
 Build a right-handed look at quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T roll (qua< T, Q > const &x)
 Returns roll value of euler angles expressed in radians. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T yaw (qua< T, Q > const &x)
 Returns yaw value of euler angles expressed in radians. More...
 
-

Detailed Description

-

GLM_GTC_quaternion

-
See also
Core features (dependence)
-
-GLM_GTC_constants (dependence)
- -

Definition in file gtc/quaternion.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00125_source.html b/tests/OpenGL/package/glm/doc/api/a00125_source.html deleted file mode 100644 index 8bd0c8fe..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00125_source.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - -0.9.9 API documentation: quaternion.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
gtc/quaternion.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../gtc/constants.hpp"
-
18 #include "../gtc/matrix_transform.hpp"
-
19 #include "../ext/vector_relational.hpp"
-
20 #include "../ext/quaternion_common.hpp"
-
21 #include "../ext/quaternion_float.hpp"
-
22 #include "../ext/quaternion_float_precision.hpp"
-
23 #include "../ext/quaternion_double.hpp"
-
24 #include "../ext/quaternion_double_precision.hpp"
-
25 #include "../ext/quaternion_relational.hpp"
-
26 #include "../ext/quaternion_geometric.hpp"
-
27 #include "../ext/quaternion_trigonometric.hpp"
-
28 #include "../ext/quaternion_transform.hpp"
-
29 #include "../detail/type_mat3x3.hpp"
-
30 #include "../detail/type_mat4x4.hpp"
-
31 #include "../detail/type_vec3.hpp"
-
32 #include "../detail/type_vec4.hpp"
-
33 
-
34 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
35 # pragma message("GLM: GLM_GTC_quaternion extension included")
-
36 #endif
-
37 
-
38 namespace glm
-
39 {
-
42 
-
49  template<typename T, qualifier Q>
-
50  GLM_FUNC_DECL vec<3, T, Q> eulerAngles(qua<T, Q> const& x);
-
51 
-
57  template<typename T, qualifier Q>
-
58  GLM_FUNC_DECL T roll(qua<T, Q> const& x);
-
59 
-
65  template<typename T, qualifier Q>
-
66  GLM_FUNC_DECL T pitch(qua<T, Q> const& x);
-
67 
-
73  template<typename T, qualifier Q>
-
74  GLM_FUNC_DECL T yaw(qua<T, Q> const& x);
-
75 
-
81  template<typename T, qualifier Q>
-
82  GLM_FUNC_DECL mat<3, 3, T, Q> mat3_cast(qua<T, Q> const& x);
-
83 
-
89  template<typename T, qualifier Q>
-
90  GLM_FUNC_DECL mat<4, 4, T, Q> mat4_cast(qua<T, Q> const& x);
-
91 
-
97  template<typename T, qualifier Q>
-
98  GLM_FUNC_DECL qua<T, Q> quat_cast(mat<3, 3, T, Q> const& x);
-
99 
-
105  template<typename T, qualifier Q>
-
106  GLM_FUNC_DECL qua<T, Q> quat_cast(mat<4, 4, T, Q> const& x);
-
107 
-
114  template<typename T, qualifier Q>
-
115  GLM_FUNC_DECL vec<4, bool, Q> lessThan(qua<T, Q> const& x, qua<T, Q> const& y);
-
116 
-
123  template<typename T, qualifier Q>
-
124  GLM_FUNC_DECL vec<4, bool, Q> lessThanEqual(qua<T, Q> const& x, qua<T, Q> const& y);
-
125 
-
132  template<typename T, qualifier Q>
-
133  GLM_FUNC_DECL vec<4, bool, Q> greaterThan(qua<T, Q> const& x, qua<T, Q> const& y);
-
134 
-
141  template<typename T, qualifier Q>
-
142  GLM_FUNC_DECL vec<4, bool, Q> greaterThanEqual(qua<T, Q> const& x, qua<T, Q> const& y);
-
143 
-
148  template<typename T, qualifier Q>
-
149  GLM_FUNC_DECL qua<T, Q> quatLookAt(
-
150  vec<3, T, Q> const& direction,
-
151  vec<3, T, Q> const& up);
-
152 
-
157  template<typename T, qualifier Q>
-
158  GLM_FUNC_DECL qua<T, Q> quatLookAtRH(
-
159  vec<3, T, Q> const& direction,
-
160  vec<3, T, Q> const& up);
-
161 
-
166  template<typename T, qualifier Q>
-
167  GLM_FUNC_DECL qua<T, Q> quatLookAtLH(
-
168  vec<3, T, Q> const& direction,
-
169  vec<3, T, Q> const& up);
-
171 } //namespace glm
-
172 
-
173 #include "quaternion.inl"
-
GLM_FUNC_DECL mat< 4, 4, T, Q > mat4_cast(qua< T, Q > const &x)
Converts a quaternion to a 4 * 4 matrix.
-
GLM_FUNC_DECL vec< 4, bool, Q > greaterThan(qua< T, Q > const &x, qua< T, Q > const &y)
Returns the component-wise comparison of result x > y.
-
GLM_FUNC_DECL vec< 4, bool, Q > greaterThanEqual(qua< T, Q > const &x, qua< T, Q > const &y)
Returns the component-wise comparison of result x >= y.
-
GLM_FUNC_DECL vec< 4, bool, Q > lessThanEqual(qua< T, Q > const &x, qua< T, Q > const &y)
Returns the component-wise comparison of result x <= y.
-
GLM_FUNC_DECL T roll(qua< T, Q > const &x)
Returns roll value of euler angles expressed in radians.
-
GLM_FUNC_DECL qua< T, Q > quatLookAt(vec< 3, T, Q > const &direction, vec< 3, T, Q > const &up)
Build a look at quaternion based on the default handedness.
-
GLM_FUNC_DECL qua< T, Q > quat_cast(mat< 4, 4, T, Q > const &x)
Converts a pure rotation 4 * 4 matrix to a quaternion.
-
GLM_FUNC_DECL mat< 3, 3, T, Q > mat3_cast(qua< T, Q > const &x)
Converts a quaternion to a 3 * 3 matrix.
-
GLM_FUNC_DECL vec< 3, T, Q > eulerAngles(qua< T, Q > const &x)
Returns euler angles, pitch as x, yaw as y, roll as z.
-
GLM_FUNC_DECL vec< 4, bool, Q > lessThan(qua< T, Q > const &x, qua< T, Q > const &y)
Returns the component-wise comparison result of x < y.
-
GLM_FUNC_DECL T yaw(qua< T, Q > const &x)
Returns yaw value of euler angles expressed in radians.
-
GLM_FUNC_DECL qua< T, Q > quatLookAtLH(vec< 3, T, Q > const &direction, vec< 3, T, Q > const &up)
Build a left-handed look at quaternion.
-
GLM_FUNC_DECL qua< T, Q > quatLookAtRH(vec< 3, T, Q > const &direction, vec< 3, T, Q > const &up)
Build a right-handed look at quaternion.
-
GLM_FUNC_DECL T pitch(qua< T, Q > const &x)
Returns pitch value of euler angles expressed in radians.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00126.html b/tests/OpenGL/package/glm/doc/api/a00126.html deleted file mode 100644 index 726daf77..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00126.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - -0.9.9 API documentation: quaternion.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
gtx/quaternion.hpp File Reference
-
-
- -

GLM_GTX_quaternion -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > cross (qua< T, Q > const &q, vec< 3, T, Q > const &v)
 Compute a cross product between a quaternion and a vector. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > cross (vec< 3, T, Q > const &v, qua< T, Q > const &q)
 Compute a cross product between a vector and a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T extractRealComponent (qua< T, Q > const &q)
 Extract the real component of a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > fastMix (qua< T, Q > const &x, qua< T, Q > const &y, T const &a)
 Quaternion normalized linear interpolation. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > intermediate (qua< T, Q > const &prev, qua< T, Q > const &curr, qua< T, Q > const &next)
 Returns an intermediate control point for squad interpolation. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T length2 (qua< T, Q > const &q)
 Returns the squared length of x. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quat_identity ()
 Create an identity quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rotate (qua< T, Q > const &q, vec< 3, T, Q > const &v)
 Returns quarternion square root. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > rotate (qua< T, Q > const &q, vec< 4, T, Q > const &v)
 Rotates a 4 components vector by a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > rotation (vec< 3, T, Q > const &orig, vec< 3, T, Q > const &dest)
 Compute the rotation between two vectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > shortMix (qua< T, Q > const &x, qua< T, Q > const &y, T const &a)
 Quaternion interpolation using the rotation short path. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > squad (qua< T, Q > const &q1, qua< T, Q > const &q2, qua< T, Q > const &s1, qua< T, Q > const &s2, T const &h)
 Compute a point on a path according squad equation. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > toMat3 (qua< T, Q > const &x)
 Converts a quaternion to a 3 * 3 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > toMat4 (qua< T, Q > const &x)
 Converts a quaternion to a 4 * 4 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > toQuat (mat< 3, 3, T, Q > const &x)
 Converts a 3 * 3 matrix to a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > toQuat (mat< 4, 4, T, Q > const &x)
 Converts a 4 * 4 matrix to a quaternion. More...
 
-

Detailed Description

-

GLM_GTX_quaternion

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

Definition in file gtx/quaternion.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00126_source.html b/tests/OpenGL/package/glm/doc/api/a00126_source.html deleted file mode 100644 index 0206c496..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00126_source.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - -0.9.9 API documentation: quaternion.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
gtx/quaternion.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../glm.hpp"
-
18 #include "../gtc/constants.hpp"
-
19 #include "../gtc/quaternion.hpp"
-
20 #include "../ext/quaternion_exponential.hpp"
-
21 #include "../gtx/norm.hpp"
-
22 
-
23 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
24 # ifndef GLM_ENABLE_EXPERIMENTAL
-
25 # pragma message("GLM: GLM_GTX_quaternion is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
26 # else
-
27 # pragma message("GLM: GLM_GTX_quaternion extension included")
-
28 # endif
-
29 #endif
-
30 
-
31 namespace glm
-
32 {
-
35 
-
39  template<typename T, qualifier Q>
-
40  GLM_FUNC_DECL qua<T, Q> quat_identity();
-
41 
-
45  template<typename T, qualifier Q>
-
46  GLM_FUNC_DECL vec<3, T, Q> cross(
-
47  qua<T, Q> const& q,
-
48  vec<3, T, Q> const& v);
-
49 
-
53  template<typename T, qualifier Q>
-
54  GLM_FUNC_DECL vec<3, T, Q> cross(
-
55  vec<3, T, Q> const& v,
-
56  qua<T, Q> const& q);
-
57 
-
62  template<typename T, qualifier Q>
-
63  GLM_FUNC_DECL qua<T, Q> squad(
-
64  qua<T, Q> const& q1,
-
65  qua<T, Q> const& q2,
-
66  qua<T, Q> const& s1,
-
67  qua<T, Q> const& s2,
-
68  T const& h);
-
69 
-
73  template<typename T, qualifier Q>
-
74  GLM_FUNC_DECL qua<T, Q> intermediate(
-
75  qua<T, Q> const& prev,
-
76  qua<T, Q> const& curr,
-
77  qua<T, Q> const& next);
-
78 
-
82  //template<typename T, qualifier Q>
-
83  //qua<T, Q> sqrt(
-
84  // qua<T, Q> const& q);
-
85 
-
89  template<typename T, qualifier Q>
-
90  GLM_FUNC_DECL vec<3, T, Q> rotate(
-
91  qua<T, Q> const& q,
-
92  vec<3, T, Q> const& v);
-
93 
-
97  template<typename T, qualifier Q>
-
98  GLM_FUNC_DECL vec<4, T, Q> rotate(
-
99  qua<T, Q> const& q,
-
100  vec<4, T, Q> const& v);
-
101 
-
105  template<typename T, qualifier Q>
-
106  GLM_FUNC_DECL T extractRealComponent(
-
107  qua<T, Q> const& q);
-
108 
-
112  template<typename T, qualifier Q>
-
113  GLM_FUNC_DECL mat<3, 3, T, Q> toMat3(
-
114  qua<T, Q> const& x){return mat3_cast(x);}
-
115 
-
119  template<typename T, qualifier Q>
-
120  GLM_FUNC_DECL mat<4, 4, T, Q> toMat4(
-
121  qua<T, Q> const& x){return mat4_cast(x);}
-
122 
-
126  template<typename T, qualifier Q>
-
127  GLM_FUNC_DECL qua<T, Q> toQuat(
-
128  mat<3, 3, T, Q> const& x){return quat_cast(x);}
-
129 
-
133  template<typename T, qualifier Q>
-
134  GLM_FUNC_DECL qua<T, Q> toQuat(
-
135  mat<4, 4, T, Q> const& x){return quat_cast(x);}
-
136 
-
140  template<typename T, qualifier Q>
-
141  GLM_FUNC_DECL qua<T, Q> shortMix(
-
142  qua<T, Q> const& x,
-
143  qua<T, Q> const& y,
-
144  T const& a);
-
145 
-
149  template<typename T, qualifier Q>
-
150  GLM_FUNC_DECL qua<T, Q> fastMix(
-
151  qua<T, Q> const& x,
-
152  qua<T, Q> const& y,
-
153  T const& a);
-
154 
-
160  template<typename T, qualifier Q>
-
161  GLM_FUNC_DECL qua<T, Q> rotation(
-
162  vec<3, T, Q> const& orig,
-
163  vec<3, T, Q> const& dest);
-
164 
-
168  template<typename T, qualifier Q>
-
169  GLM_FUNC_DECL T length2(qua<T, Q> const& q);
-
170 
-
172 }//namespace glm
-
173 
-
174 #include "quaternion.inl"
-
GLM_FUNC_DECL mat< 4, 4, T, Q > mat4_cast(qua< T, Q > const &x)
Converts a quaternion to a 4 * 4 matrix.
-
GLM_FUNC_DECL qua< T, Q > shortMix(qua< T, Q > const &x, qua< T, Q > const &y, T const &a)
Quaternion interpolation using the rotation short path.
-
GLM_FUNC_DECL qua< T, Q > quat_identity()
Create an identity quaternion.
-
GLM_FUNC_DECL qua< T, Q > quat_cast(mat< 3, 3, T, Q > const &x)
Converts a pure rotation 3 * 3 matrix to a quaternion.
-
GLM_FUNC_DECL qua< T, Q > intermediate(qua< T, Q > const &prev, qua< T, Q > const &curr, qua< T, Q > const &next)
Returns an intermediate control point for squad interpolation.
-
GLM_FUNC_DECL mat< 3, 3, T, Q > mat3_cast(qua< T, Q > const &x)
Converts a quaternion to a 3 * 3 matrix.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > toMat4(qua< T, Q > const &x)
Converts a quaternion to a 4 * 4 matrix.
-
GLM_FUNC_DECL T extractRealComponent(qua< T, Q > const &q)
Extract the real component of a quaternion.
-
GLM_FUNC_DECL mat< 3, 3, T, Q > toMat3(qua< T, Q > const &x)
Converts a quaternion to a 3 * 3 matrix.
-
GLM_FUNC_DECL qua< T, Q > squad(qua< T, Q > const &q1, qua< T, Q > const &q2, qua< T, Q > const &s1, qua< T, Q > const &s2, T const &h)
Compute a point on a path according squad equation.
-
GLM_FUNC_DECL vec< 3, T, Q > cross(vec< 3, T, Q > const &v, qua< T, Q > const &q)
Compute a cross product between a vector and a quaternion.
-
GLM_FUNC_DECL qua< T, Q > toQuat(mat< 4, 4, T, Q > const &x)
Converts a 4 * 4 matrix to a quaternion.
-
GLM_FUNC_DECL qua< T, Q > rotation(vec< 3, T, Q > const &orig, vec< 3, T, Q > const &dest)
Compute the rotation between two vectors.
-
GLM_FUNC_DECL vec< 4, T, Q > rotate(qua< T, Q > const &q, vec< 4, T, Q > const &v)
Rotates a 4 components vector by a quaternion.
-
GLM_FUNC_DECL qua< T, Q > fastMix(qua< T, Q > const &x, qua< T, Q > const &y, T const &a)
Quaternion normalized linear interpolation.
-
GLM_FUNC_DECL T length2(qua< T, Q > const &q)
Returns the squared length of x.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00127.html b/tests/OpenGL/package/glm/doc/api/a00127.html deleted file mode 100644 index a9465549..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00127.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - -0.9.9 API documentation: quaternion_common.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
quaternion_common.hpp File Reference
-
-
- -

GLM_EXT_quaternion_common -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00127_source.html b/tests/OpenGL/package/glm/doc/api/a00127_source.html deleted file mode 100644 index 098f39a5..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00127_source.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -0.9.9 API documentation: quaternion_common.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
quaternion_common.hpp
-
-
-Go to the documentation of this file.
1 
-
21 #pragma once
-
22 
-
23 // Dependency:
-
24 #include "../ext/scalar_constants.hpp"
-
25 #include "../ext/quaternion_geometric.hpp"
-
26 #include "../common.hpp"
-
27 #include "../trigonometric.hpp"
-
28 #include "../exponential.hpp"
-
29 #include <limits>
-
30 
-
31 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
32 # pragma message("GLM: GLM_EXT_quaternion_common extension included")
-
33 #endif
-
34 
-
35 namespace glm
-
36 {
-
39 
-
52  template<typename T, qualifier Q>
-
53  GLM_FUNC_DECL qua<T, Q> mix(qua<T, Q> const& x, qua<T, Q> const& y, T a);
-
54 
-
64  template<typename T, qualifier Q>
-
65  GLM_FUNC_DECL qua<T, Q> lerp(qua<T, Q> const& x, qua<T, Q> const& y, T a);
-
66 
-
76  template<typename T, qualifier Q>
-
77  GLM_FUNC_DECL qua<T, Q> slerp(qua<T, Q> const& x, qua<T, Q> const& y, T a);
-
78 
-
83  template<typename T, qualifier Q>
-
84  GLM_FUNC_DECL qua<T, Q> conjugate(qua<T, Q> const& q);
-
85 
-
90  template<typename T, qualifier Q>
-
91  GLM_FUNC_DECL qua<T, Q> inverse(qua<T, Q> const& q);
-
92 
-
103  template<typename T, qualifier Q>
-
104  GLM_FUNC_DECL vec<4, bool, Q> isnan(qua<T, Q> const& x);
-
105 
-
114  template<typename T, qualifier Q>
-
115  GLM_FUNC_DECL vec<4, bool, Q> isinf(qua<T, Q> const& x);
-
116 
-
118 } //namespace glm
-
119 
-
120 #include "quaternion_common.inl"
-
GLM_FUNC_DECL vec< 4, bool, Q > isinf(qua< T, Q > const &x)
Returns true if x holds a positive infinity or negative infinity representation in the underlying imp...
-
GLM_FUNC_DECL vec< 4, bool, Q > isnan(qua< T, Q > const &x)
Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of...
-
GLM_FUNC_DECL qua< T, Q > conjugate(qua< T, Q > const &q)
Returns the q conjugate.
-
GLM_FUNC_DECL qua< T, Q > slerp(qua< T, Q > const &x, qua< T, Q > const &y, T a)
Spherical linear interpolation of two quaternions.
-
GLM_FUNC_DECL qua< T, Q > inverse(qua< T, Q > const &q)
Returns the q inverse.
-
GLM_FUNC_DECL qua< T, Q > lerp(qua< T, Q > const &x, qua< T, Q > const &y, T a)
Linear interpolation of two quaternions.
-
GLM_FUNC_DECL qua< T, Q > mix(qua< T, Q > const &x, qua< T, Q > const &y, T a)
Spherical linear interpolation of two quaternions.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00128.html b/tests/OpenGL/package/glm/doc/api/a00128.html deleted file mode 100644 index f4b74996..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00128.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - -0.9.9 API documentation: quaternion_double.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
quaternion_double.hpp File Reference
-
-
- -

GLM_EXT_quaternion_double -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00128_source.html b/tests/OpenGL/package/glm/doc/api/a00128_source.html deleted file mode 100644 index 9780ecff..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00128_source.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - -0.9.9 API documentation: quaternion_double.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
quaternion_double.hpp
-
-
-Go to the documentation of this file.
1 
-
20 #pragma once
-
21 
-
22 // Dependency:
-
23 #include "../detail/type_quat.hpp"
-
24 
-
25 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
26 # pragma message("GLM: GLM_EXT_quaternion_double extension included")
-
27 #endif
-
28 
-
29 namespace glm
-
30 {
-
33 
-
35  typedef qua<double, defaultp> dquat;
-
36 
-
38 } //namespace glm
-
39 
-
qua< double, defaultp > dquat
Quaternion of double-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00129.html b/tests/OpenGL/package/glm/doc/api/a00129.html deleted file mode 100644 index a03f0e6a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00129.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: quaternion_double_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
quaternion_double_precision.hpp File Reference
-
-
- -

GLM_EXT_quaternion_double_precision -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

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

GLM_EXT_quaternion_exponential -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

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

GLM_EXT_quaternion_float -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00131_source.html b/tests/OpenGL/package/glm/doc/api/a00131_source.html deleted file mode 100644 index 740f98cf..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00131_source.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - -0.9.9 API documentation: quaternion_float.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
quaternion_float.hpp
-
-
-Go to the documentation of this file.
1 
-
20 #pragma once
-
21 
-
22 // Dependency:
-
23 #include "../detail/type_quat.hpp"
-
24 
-
25 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
26 # pragma message("GLM: GLM_EXT_quaternion_float extension included")
-
27 #endif
-
28 
-
29 namespace glm
-
30 {
-
33 
-
35  typedef qua<float, defaultp> quat;
-
36 
-
38 } //namespace glm
-
39 
-
qua< float, defaultp > quat
Quaternion of single-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00132.html b/tests/OpenGL/package/glm/doc/api/a00132.html deleted file mode 100644 index 8adc1ef5..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00132.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - -0.9.9 API documentation: quaternion_float_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
quaternion_float_precision.hpp File Reference
-
-
- -

GLM_EXT_quaternion_float_precision -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

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

GLM_EXT_quaternion_geometric -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

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

GLM_EXT_quaternion_relational -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

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

GLM_EXT_quaternion_transform -More...

- -

Go to the source code of this file.

- - - - - - -

-Functions

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

Detailed Description

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

GLM_EXT_quaternion_trigonometric -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00136_source.html b/tests/OpenGL/package/glm/doc/api/a00136_source.html deleted file mode 100644 index 7ed33c08..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00136_source.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - -0.9.9 API documentation: quaternion_trigonometric.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
quaternion_trigonometric.hpp
-
-
-Go to the documentation of this file.
1 
-
18 #pragma once
-
19 
-
20 // Dependency:
-
21 #include "../trigonometric.hpp"
-
22 #include "../exponential.hpp"
-
23 #include "scalar_constants.hpp"
-
24 #include "vector_relational.hpp"
-
25 #include <limits>
-
26 
-
27 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
28 # pragma message("GLM: GLM_EXT_quaternion_trigonometric extension included")
-
29 #endif
-
30 
-
31 namespace glm
-
32 {
-
35 
-
40  template<typename T, qualifier Q>
-
41  GLM_FUNC_DECL T angle(qua<T, Q> const& x);
-
42 
-
47  template<typename T, qualifier Q>
-
48  GLM_FUNC_DECL vec<3, T, Q> axis(qua<T, Q> const& x);
-
49 
-
57  template<typename T, qualifier Q>
-
58  GLM_FUNC_DECL qua<T, Q> angleAxis(T const& angle, vec<3, T, Q> const& axis);
-
59 
-
61 } //namespace glm
-
62 
-
63 #include "quaternion_trigonometric.inl"
-
GLM_EXT_vector_relational
-
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
-
GLM_FUNC_DECL qua< T, Q > angleAxis(T const &angle, vec< 3, T, Q > const &axis)
Build a quaternion from an angle and a normalized axis.
-
GLM_EXT_scalar_constants
-
GLM_FUNC_DECL vec< 3, T, Q > axis(qua< T, Q > const &x)
Returns the q rotation axis.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00137.html b/tests/OpenGL/package/glm/doc/api/a00137.html deleted file mode 100644 index af6cbb34..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00137.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - -0.9.9 API documentation: random.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
random.hpp File Reference
-
-
- -

GLM_GTC_random -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTC_random

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

Definition in file random.hpp.

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

GLM_GTX_range -More...

- -

Go to the source code of this file.

-

Detailed Description

-

GLM_GTX_range

-
Author
Joshua Moerman
- -

Definition in file range.hpp.

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

GLM_GTX_raw_data -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - -

-Typedefs

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

Detailed Description

-

GLM_GTX_raw_data

-
See also
Core features (dependence)
- -

Definition in file raw_data.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00139_source.html b/tests/OpenGL/package/glm/doc/api/a00139_source.html deleted file mode 100644 index be1d9f6e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00139_source.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - -0.9.9 API documentation: raw_data.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
raw_data.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependencies
-
16 #include "../ext/scalar_uint_sized.hpp"
-
17 #include "../detail/setup.hpp"
-
18 
-
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
20 # ifndef GLM_ENABLE_EXPERIMENTAL
-
21 # pragma message("GLM: GLM_GTX_raw_data is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
22 # else
-
23 # pragma message("GLM: GLM_GTX_raw_data extension included")
-
24 # endif
-
25 #endif
-
26 
-
27 namespace glm
-
28 {
-
31 
-
34  typedef detail::uint8 byte;
-
35 
-
38  typedef detail::uint16 word;
-
39 
-
42  typedef detail::uint32 dword;
-
43 
-
46  typedef detail::uint64 qword;
-
47 
-
49 }// namespace glm
-
50 
-
51 #include "raw_data.inl"
-
detail::uint32 dword
Type for dword numbers.
Definition: raw_data.hpp:42
-
detail::uint8 byte
Type for byte numbers.
Definition: raw_data.hpp:34
-
detail::uint64 qword
Type for qword numbers.
Definition: raw_data.hpp:46
-
detail::uint16 word
Type for word numbers.
Definition: raw_data.hpp:38
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00140.html b/tests/OpenGL/package/glm/doc/api/a00140.html deleted file mode 100644 index 15286609..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00140.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - -0.9.9 API documentation: reciprocal.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
reciprocal.hpp File Reference
-
-
- -

GLM_GTC_reciprocal -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTC_reciprocal

-
See also
Core features (dependence)
- -

Definition in file reciprocal.hpp.

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

GLM_GTX_rotate_normalized_axis -More...

- -

Go to the source code of this file.

- - - - - - - - - - -

-Functions

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00141_source.html b/tests/OpenGL/package/glm/doc/api/a00141_source.html deleted file mode 100644 index 874e182d..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00141_source.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - -0.9.9 API documentation: rotate_normalized_axis.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
rotate_normalized_axis.hpp
-
-
-Go to the documentation of this file.
1 
-
15 #pragma once
-
16 
-
17 // Dependency:
-
18 #include "../glm.hpp"
-
19 #include "../gtc/epsilon.hpp"
-
20 #include "../gtc/quaternion.hpp"
-
21 
-
22 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
23 # ifndef GLM_ENABLE_EXPERIMENTAL
-
24 # pragma message("GLM: GLM_GTX_rotate_normalized_axis is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
25 # else
-
26 # pragma message("GLM: GLM_GTX_rotate_normalized_axis extension included")
-
27 # endif
-
28 #endif
-
29 
-
30 namespace glm
-
31 {
-
34 
-
46  template<typename T, qualifier Q>
-
47  GLM_FUNC_DECL mat<4, 4, T, Q> rotateNormalizedAxis(
-
48  mat<4, 4, T, Q> const& m,
-
49  T const& angle,
-
50  vec<3, T, Q> const& axis);
-
51 
-
59  template<typename T, qualifier Q>
-
60  GLM_FUNC_DECL qua<T, Q> rotateNormalizedAxis(
-
61  qua<T, Q> const& q,
-
62  T const& angle,
-
63  vec<3, T, Q> const& axis);
-
64 
-
66 }//namespace glm
-
67 
-
68 #include "rotate_normalized_axis.inl"
-
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
-
GLM_FUNC_DECL qua< T, Q > rotateNormalizedAxis(qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)
Rotates a quaternion from a vector of 3 components normalized axis and an angle.
-
GLM_FUNC_DECL vec< 3, T, Q > axis(qua< T, Q > const &x)
Returns the q rotation axis.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00142.html b/tests/OpenGL/package/glm/doc/api/a00142.html deleted file mode 100644 index 31a60381..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00142.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -0.9.9 API documentation: rotate_vector.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
rotate_vector.hpp File Reference
-
-
- -

GLM_GTX_rotate_vector -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_rotate_vector

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

Definition in file rotate_vector.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00142_source.html b/tests/OpenGL/package/glm/doc/api/a00142_source.html deleted file mode 100644 index dfa75fff..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00142_source.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - -0.9.9 API documentation: rotate_vector.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
rotate_vector.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../gtx/transform.hpp"
-
18 #include "../gtc/epsilon.hpp"
-
19 #include "../ext/vector_relational.hpp"
-
20 #include "../glm.hpp"
-
21 
-
22 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
23 # ifndef GLM_ENABLE_EXPERIMENTAL
-
24 # pragma message("GLM: GLM_GTX_rotate_vector is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
25 # else
-
26 # pragma message("GLM: GLM_GTX_rotate_vector extension included")
-
27 # endif
-
28 #endif
-
29 
-
30 namespace glm
-
31 {
-
34 
-
42  template<typename T, qualifier Q>
-
43  GLM_FUNC_DECL vec<3, T, Q> slerp(
-
44  vec<3, T, Q> const& x,
-
45  vec<3, T, Q> const& y,
-
46  T const& a);
-
47 
-
50  template<typename T, qualifier Q>
-
51  GLM_FUNC_DECL vec<2, T, Q> rotate(
-
52  vec<2, T, Q> const& v,
-
53  T const& angle);
-
54 
-
57  template<typename T, qualifier Q>
-
58  GLM_FUNC_DECL vec<3, T, Q> rotate(
-
59  vec<3, T, Q> const& v,
-
60  T const& angle,
-
61  vec<3, T, Q> const& normal);
-
62 
-
65  template<typename T, qualifier Q>
-
66  GLM_FUNC_DECL vec<4, T, Q> rotate(
-
67  vec<4, T, Q> const& v,
-
68  T const& angle,
-
69  vec<3, T, Q> const& normal);
-
70 
-
73  template<typename T, qualifier Q>
-
74  GLM_FUNC_DECL vec<3, T, Q> rotateX(
-
75  vec<3, T, Q> const& v,
-
76  T const& angle);
-
77 
-
80  template<typename T, qualifier Q>
-
81  GLM_FUNC_DECL vec<3, T, Q> rotateY(
-
82  vec<3, T, Q> const& v,
-
83  T const& angle);
-
84 
-
87  template<typename T, qualifier Q>
-
88  GLM_FUNC_DECL vec<3, T, Q> rotateZ(
-
89  vec<3, T, Q> const& v,
-
90  T const& angle);
-
91 
-
94  template<typename T, qualifier Q>
-
95  GLM_FUNC_DECL vec<4, T, Q> rotateX(
-
96  vec<4, T, Q> const& v,
-
97  T const& angle);
-
98 
-
101  template<typename T, qualifier Q>
-
102  GLM_FUNC_DECL vec<4, T, Q> rotateY(
-
103  vec<4, T, Q> const& v,
-
104  T const& angle);
-
105 
-
108  template<typename T, qualifier Q>
-
109  GLM_FUNC_DECL vec<4, T, Q> rotateZ(
-
110  vec<4, T, Q> const& v,
-
111  T const& angle);
-
112 
-
115  template<typename T, qualifier Q>
-
116  GLM_FUNC_DECL mat<4, 4, T, Q> orientation(
-
117  vec<3, T, Q> const& Normal,
-
118  vec<3, T, Q> const& Up);
-
119 
-
121 }//namespace glm
-
122 
-
123 #include "rotate_vector.inl"
-
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
-
GLM_FUNC_DECL vec< 4, T, Q > rotateZ(vec< 4, T, Q > const &v, T const &angle)
Rotate a four dimensional vector around the Z axis.
-
GLM_FUNC_DECL vec< 4, T, Q > rotateY(vec< 4, T, Q > const &v, T const &angle)
Rotate a four dimensional vector around the Y axis.
-
GLM_FUNC_DECL vec< 4, T, Q > rotateX(vec< 4, T, Q > const &v, T const &angle)
Rotate a four dimensional vector around the X axis.
-
GLM_FUNC_DECL vec< 3, T, Q > slerp(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, T const &a)
Returns Spherical interpolation between two vectors.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > orientation(vec< 3, T, Q > const &Normal, vec< 3, T, Q > const &Up)
Build a rotation matrix from a normal and a up vector.
-
GLM_FUNC_DECL vec< 4, T, Q > rotate(vec< 4, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)
Rotate a four dimensional vector around an axis.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00143.html b/tests/OpenGL/package/glm/doc/api/a00143.html deleted file mode 100644 index 4853ae53..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00143.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - -0.9.9 API documentation: round.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
round.hpp File Reference
-
-
- -

GLM_GTC_round -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTC_round

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

Definition in file round.hpp.

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

GLM_EXT_scalar_common -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T >
GLM_FUNC_DECL T fmax (T a, T b)
 Returns the maximum component-wise values of 2 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T fmax (T a, T b, T C)
 Returns the maximum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T fmax (T a, T b, T C, T D)
 Returns the maximum component-wise values of 4 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T fmin (T a, T b)
 Returns the minimum component-wise values of 2 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T fmin (T a, T b, T c)
 Returns the minimum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T fmin (T a, T b, T c, T d)
 Returns the minimum component-wise values of 4 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T max (T a, T b, T c)
 Returns the maximum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T max (T a, T b, T c, T d)
 Returns the maximum component-wise values of 4 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T min (T a, T b, T c)
 Returns the minimum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T min (T a, T b, T c, T d)
 Returns the minimum component-wise values of 4 inputs. More...
 
-

Detailed Description

-

GLM_EXT_scalar_common

- -

Definition in file scalar_common.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00144_source.html b/tests/OpenGL/package/glm/doc/api/a00144_source.html deleted file mode 100644 index 13df516a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00144_source.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - -0.9.9 API documentation: scalar_common.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
scalar_common.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../common.hpp"
-
18 
-
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
20 # pragma message("GLM: GLM_EXT_scalar_common extension included")
-
21 #endif
-
22 
-
23 namespace glm
-
24 {
-
27 
-
31  template<typename T>
-
32  GLM_FUNC_DECL T min(T a, T b, T c);
-
33 
-
37  template<typename T>
-
38  GLM_FUNC_DECL T min(T a, T b, T c, T d);
-
39 
-
43  template<typename T>
-
44  GLM_FUNC_DECL T max(T a, T b, T c);
-
45 
-
49  template<typename T>
-
50  GLM_FUNC_DECL T max(T a, T b, T c, T d);
-
51 
-
57  template<typename T>
-
58  GLM_FUNC_DECL T fmin(T a, T b);
-
59 
-
65  template<typename T>
-
66  GLM_FUNC_DECL T fmin(T a, T b, T c);
-
67 
-
73  template<typename T>
-
74  GLM_FUNC_DECL T fmin(T a, T b, T c, T d);
-
75 
-
81  template<typename T>
-
82  GLM_FUNC_DECL T fmax(T a, T b);
-
83 
-
89  template<typename T>
-
90  GLM_FUNC_DECL T fmax(T a, T b, T C);
-
91 
-
97  template<typename T>
-
98  GLM_FUNC_DECL T fmax(T a, T b, T C, T D);
-
99 
-
101 }//namespace glm
-
102 
-
103 #include "scalar_common.inl"
-
GLM_FUNC_DECL T min(T a, T b, T c, T d)
Returns the minimum component-wise values of 4 inputs.
-
GLM_FUNC_DECL T max(T a, T b, T c, T d)
Returns the maximum component-wise values of 4 inputs.
-
GLM_FUNC_DECL T fmax(T a, T b, T C, T D)
Returns the maximum component-wise values of 4 inputs.
-
GLM_FUNC_DECL T fmin(T a, T b, T c, T d)
Returns the minimum component-wise values of 4 inputs.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00145.html b/tests/OpenGL/package/glm/doc/api/a00145.html deleted file mode 100644 index 4ce4ff3c..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00145.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -0.9.9 API documentation: scalar_constants.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
scalar_constants.hpp File Reference
-
-
- -

GLM_EXT_scalar_constants -More...

- -

Go to the source code of this file.

- - - - - - - - - - -

-Functions

-template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon ()
 Return the epsilon constant for floating point types.
 
-template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType pi ()
 Return the pi constant for floating point types.
 
-

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00145_source.html b/tests/OpenGL/package/glm/doc/api/a00145_source.html deleted file mode 100644 index 084396a8..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00145_source.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - -0.9.9 API documentation: scalar_constants.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
scalar_constants.hpp
-
-
-Go to the documentation of this file.
1 
-
11 #pragma once
-
12 
-
13 // Dependencies
-
14 #include "../detail/setup.hpp"
-
15 
-
16 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
17 # pragma message("GLM: GLM_EXT_scalar_constants extension included")
-
18 #endif
-
19 
-
20 namespace glm
-
21 {
-
24 
-
26  template<typename genType>
-
27  GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon();
-
28 
-
30  template<typename genType>
-
31  GLM_FUNC_DECL GLM_CONSTEXPR genType pi();
-
32 
-
34 } //namespace glm
-
35 
-
36 #include "scalar_constants.inl"
-
GLM_FUNC_DECL GLM_CONSTEXPR genType pi()
Return the pi constant for floating point types.
-
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon()
Return the epsilon constant for floating point types.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00146.html b/tests/OpenGL/package/glm/doc/api/a00146.html deleted file mode 100644 index 4f227064..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00146.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - -0.9.9 API documentation: scalar_int_sized.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
scalar_int_sized.hpp File Reference
-
-
- -

GLM_EXT_scalar_int_sized -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - -

-Typedefs

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

Detailed Description

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

GLM_EXT_scalar_integer -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_EXT_scalar_integer

-
See also
Core features (dependence)
- -

Definition in file scalar_integer.hpp.

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

Experimental extensions -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Experimental extensions

-
Author
Joshua Moerman
-

Include <glm/gtx/scalar_multiplication.hpp> to use the features of this extension.

-

Enables scalar multiplication for all types

-

Since GLSL is very strict about types, the following (often used) combinations do not work: double * vec4 int * vec4 vec4 / int So we'll fix that! Of course "float * vec4" should remain the same (hence the enable_if magic)

- -

Definition in file scalar_multiplication.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00148_source.html b/tests/OpenGL/package/glm/doc/api/a00148_source.html deleted file mode 100644 index a4a9c590..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00148_source.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - -0.9.9 API documentation: scalar_multiplication.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
scalar_multiplication.hpp
-
-
-Go to the documentation of this file.
1 
-
15 #pragma once
-
16 
-
17 #include "../detail/setup.hpp"
-
18 
-
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
20 # ifndef GLM_ENABLE_EXPERIMENTAL
-
21 # pragma message("GLM: GLM_GTX_scalar_multiplication is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
22 # else
-
23 # pragma message("GLM: GLM_GTX_scalar_multiplication extension included")
-
24 # endif
-
25 #endif
-
26 
-
27 #include "../vec2.hpp"
-
28 #include "../vec3.hpp"
-
29 #include "../vec4.hpp"
-
30 #include "../mat2x2.hpp"
-
31 #include <type_traits>
-
32 
-
33 namespace glm
-
34 {
-
35  template<typename T, typename Vec>
-
36  using return_type_scalar_multiplication = typename std::enable_if<
-
37  !std::is_same<T, float>::value // T may not be a float
-
38  && std::is_arithmetic<T>::value, Vec // But it may be an int or double (no vec3 or mat3, ...)
-
39  >::type;
-
40 
-
41 #define GLM_IMPLEMENT_SCAL_MULT(Vec) \
-
42  template<typename T> \
-
43  return_type_scalar_multiplication<T, Vec> \
-
44  operator*(T const& s, Vec rh){ \
-
45  return rh *= static_cast<float>(s); \
-
46  } \
-
47  \
-
48  template<typename T> \
-
49  return_type_scalar_multiplication<T, Vec> \
-
50  operator*(Vec lh, T const& s){ \
-
51  return lh *= static_cast<float>(s); \
-
52  } \
-
53  \
-
54  template<typename T> \
-
55  return_type_scalar_multiplication<T, Vec> \
-
56  operator/(Vec lh, T const& s){ \
-
57  return lh *= 1.0f / s; \
-
58  }
-
59 
-
60 GLM_IMPLEMENT_SCAL_MULT(vec2)
-
61 GLM_IMPLEMENT_SCAL_MULT(vec3)
-
62 GLM_IMPLEMENT_SCAL_MULT(vec4)
-
63 
-
64 GLM_IMPLEMENT_SCAL_MULT(mat2)
-
65 GLM_IMPLEMENT_SCAL_MULT(mat2x3)
-
66 GLM_IMPLEMENT_SCAL_MULT(mat2x4)
-
67 GLM_IMPLEMENT_SCAL_MULT(mat3x2)
-
68 GLM_IMPLEMENT_SCAL_MULT(mat3)
-
69 GLM_IMPLEMENT_SCAL_MULT(mat3x4)
-
70 GLM_IMPLEMENT_SCAL_MULT(mat4x2)
-
71 GLM_IMPLEMENT_SCAL_MULT(mat4x3)
-
72 GLM_IMPLEMENT_SCAL_MULT(mat4)
-
73 
-
74 #undef GLM_IMPLEMENT_SCAL_MULT
-
75 } // namespace glm
-
vec< 2, float, defaultp > vec2
2 components vector of single-precision floating-point numbers.
-
mat< 2, 4, float, defaultp > mat2x4
2 columns of 4 components matrix of single-precision floating-point numbers.
-
mat< 3, 2, float, defaultp > mat3x2
3 columns of 2 components matrix of single-precision floating-point numbers.
-
mat< 3, 4, float, defaultp > mat3x4
3 columns of 4 components matrix of single-precision floating-point numbers.
-
mat< 4, 3, float, defaultp > mat4x3
4 columns of 3 components matrix of single-precision floating-point numbers.
-
mat< 4, 2, float, defaultp > mat4x2
4 columns of 2 components matrix of single-precision floating-point numbers.
-
vec< 4, float, defaultp > vec4
4 components vector of single-precision floating-point numbers.
-
mat< 4, 4, float, defaultp > mat4
4 columns of 4 components matrix of single-precision floating-point numbers.
-
vec< 3, float, defaultp > vec3
3 components vector of single-precision floating-point numbers.
-
mat< 2, 3, float, defaultp > mat2x3
2 columns of 3 components matrix of single-precision floating-point numbers.
-
mat< 2, 2, float, defaultp > mat2
2 columns of 2 components matrix of single-precision floating-point numbers.
-
mat< 3, 3, float, defaultp > mat3
3 columns of 3 components matrix of single-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00149.html b/tests/OpenGL/package/glm/doc/api/a00149.html deleted file mode 100644 index f7aa38c3..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00149.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - -0.9.9 API documentation: scalar_relational.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
ext/scalar_relational.hpp File Reference
-
-
- -

GLM_EXT_scalar_relational -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - -

-Functions

template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR bool equal (genType const &x, genType const &y, genType const &epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR bool equal (genType const &x, genType const &y, int ULPs)
 Returns the component-wise comparison between two scalars in term of ULPs. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR bool notEqual (genType const &x, genType const &y, genType const &epsilon)
 Returns the component-wise comparison of |x - y| >= epsilon. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR bool notEqual (genType const &x, genType const &y, int ULPs)
 Returns the component-wise comparison between two scalars in term of ULPs. More...
 
-

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00149_source.html b/tests/OpenGL/package/glm/doc/api/a00149_source.html deleted file mode 100644 index c013efd3..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00149_source.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - -0.9.9 API documentation: scalar_relational.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
ext/scalar_relational.hpp
-
-
-Go to the documentation of this file.
1 
-
15 #pragma once
-
16 
-
17 // Dependencies
-
18 #include "../detail/qualifier.hpp"
-
19 
-
20 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
21 # pragma message("GLM: GLM_EXT_scalar_relational extension included")
-
22 #endif
-
23 
-
24 namespace glm
-
25 {
-
30  template<typename genType>
-
31  GLM_FUNC_DECL GLM_CONSTEXPR bool equal(genType const& x, genType const& y, genType const& epsilon);
-
32 
-
37  template<typename genType>
-
38  GLM_FUNC_DECL GLM_CONSTEXPR bool notEqual(genType const& x, genType const& y, genType const& epsilon);
-
39 
-
48  template<typename genType>
-
49  GLM_FUNC_DECL GLM_CONSTEXPR bool equal(genType const& x, genType const& y, int ULPs);
-
50 
-
59  template<typename genType>
-
60  GLM_FUNC_DECL GLM_CONSTEXPR bool notEqual(genType const& x, genType const& y, int ULPs);
-
61 
-
63 }//namespace glm
-
64 
-
65 #include "scalar_relational.inl"
-
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)
Perform a component-wise not-equal-to comparison of two matrices.
-
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)
Perform a component-wise equal-to comparison of two matrices.
-
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon()
Return the epsilon constant for floating point types.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00150.html b/tests/OpenGL/package/glm/doc/api/a00150.html deleted file mode 100644 index ff6d2a07..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00150.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -0.9.9 API documentation: scalar_relational.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
gtx/scalar_relational.hpp File Reference
-
- - - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00150_source.html b/tests/OpenGL/package/glm/doc/api/a00150_source.html deleted file mode 100644 index 5997155a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00150_source.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - -0.9.9 API documentation: scalar_relational.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
gtx/scalar_relational.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../glm.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # ifndef GLM_ENABLE_EXPERIMENTAL
-
20 # pragma message("GLM: GLM_GTX_extend is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
21 # else
-
22 # pragma message("GLM: GLM_GTX_extend extension included")
-
23 # endif
-
24 #endif
-
25 
-
26 namespace glm
-
27 {
-
30 
-
31 
-
32 
-
34 }//namespace glm
-
35 
-
36 #include "scalar_relational.inl"
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00151.html b/tests/OpenGL/package/glm/doc/api/a00151.html deleted file mode 100644 index 9954dbde..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00151.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - -0.9.9 API documentation: scalar_uint_sized.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
scalar_uint_sized.hpp File Reference
-
-
- -

GLM_EXT_scalar_uint_sized -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - -

-Typedefs

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

Detailed Description

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

GLM_EXT_scalar_ulp -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_EXT_scalar_ulp

- -

Definition in file scalar_ulp.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00152_source.html b/tests/OpenGL/package/glm/doc/api/a00152_source.html deleted file mode 100644 index 0d664c81..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00152_source.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - -0.9.9 API documentation: scalar_ulp.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
scalar_ulp.hpp
-
-
-Go to the documentation of this file.
1 
-
16 #pragma once
-
17 
-
18 // Dependencies
-
19 #include "../ext/scalar_int_sized.hpp"
-
20 #include "../common.hpp"
-
21 #include "../detail/qualifier.hpp"
-
22 
-
23 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
24 # pragma message("GLM: GLM_EXT_scalar_ulp extension included")
-
25 #endif
-
26 
-
27 namespace glm
-
28 {
-
34  template<typename genType>
-
35  GLM_FUNC_DECL genType nextFloat(genType x);
-
36 
-
42  template<typename genType>
-
43  GLM_FUNC_DECL genType prevFloat(genType x);
-
44 
-
50  template<typename genType>
-
51  GLM_FUNC_DECL genType nextFloat(genType x, int ULPs);
-
52 
-
58  template<typename genType>
-
59  GLM_FUNC_DECL genType prevFloat(genType x, int ULPs);
-
60 
-
64  GLM_FUNC_DECL int floatDistance(float x, float y);
-
65 
-
69  GLM_FUNC_DECL int64 floatDistance(double x, double y);
-
70 
-
72 }//namespace glm
-
73 
-
74 #include "scalar_ulp.inl"
-
detail::int64 int64
64 bit signed integer type.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00153_source.html b/tests/OpenGL/package/glm/doc/api/a00153_source.html deleted file mode 100644 index fe206eee..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00153_source.html +++ /dev/null @@ -1,1212 +0,0 @@ - - - - - - -0.9.9 API documentation: setup.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
setup.hpp
-
-
-
1 #ifndef GLM_SETUP_INCLUDED
-
2 
-
3 #include <cassert>
-
4 #include <cstddef>
-
5 
-
6 #define GLM_VERSION_MAJOR 0
-
7 #define GLM_VERSION_MINOR 9
-
8 #define GLM_VERSION_PATCH 9
-
9 #define GLM_VERSION_REVISION 6
-
10 #define GLM_VERSION 996
-
11 #define GLM_VERSION_MESSAGE "GLM: version 0.9.9.6"
-
12 
-
13 #define GLM_SETUP_INCLUDED GLM_VERSION
-
14 
-
16 // Active states
-
17 
-
18 #define GLM_DISABLE 0
-
19 #define GLM_ENABLE 1
-
20 
-
22 // Messages
-
23 
-
24 #if defined(GLM_FORCE_MESSAGES)
-
25 # define GLM_MESSAGES GLM_ENABLE
-
26 #else
-
27 # define GLM_MESSAGES GLM_DISABLE
-
28 #endif
-
29 
-
31 // Detect the platform
-
32 
-
33 #include "../simd/platform.h"
-
34 
-
36 // Build model
-
37 
-
38 #if defined(__arch64__) || defined(__LP64__) || defined(_M_X64) || defined(__ppc64__) || defined(__x86_64__)
-
39 # define GLM_MODEL GLM_MODEL_64
-
40 #elif defined(__i386__) || defined(__ppc__)
-
41 # define GLM_MODEL GLM_MODEL_32
-
42 #else
-
43 # define GLM_MODEL GLM_MODEL_32
-
44 #endif//
-
45 
-
46 #if !defined(GLM_MODEL) && GLM_COMPILER != 0
-
47 # error "GLM_MODEL undefined, your compiler may not be supported by GLM. Add #define GLM_MODEL 0 to ignore this message."
-
48 #endif//GLM_MODEL
-
49 
-
51 // C++ Version
-
52 
-
53 // User defines: GLM_FORCE_CXX98, GLM_FORCE_CXX03, GLM_FORCE_CXX11, GLM_FORCE_CXX14, GLM_FORCE_CXX17, GLM_FORCE_CXX2A
-
54 
-
55 #define GLM_LANG_CXX98_FLAG (1 << 1)
-
56 #define GLM_LANG_CXX03_FLAG (1 << 2)
-
57 #define GLM_LANG_CXX0X_FLAG (1 << 3)
-
58 #define GLM_LANG_CXX11_FLAG (1 << 4)
-
59 #define GLM_LANG_CXX14_FLAG (1 << 5)
-
60 #define GLM_LANG_CXX17_FLAG (1 << 6)
-
61 #define GLM_LANG_CXX2A_FLAG (1 << 7)
-
62 #define GLM_LANG_CXXMS_FLAG (1 << 8)
-
63 #define GLM_LANG_CXXGNU_FLAG (1 << 9)
-
64 
-
65 #define GLM_LANG_CXX98 GLM_LANG_CXX98_FLAG
-
66 #define GLM_LANG_CXX03 (GLM_LANG_CXX98 | GLM_LANG_CXX03_FLAG)
-
67 #define GLM_LANG_CXX0X (GLM_LANG_CXX03 | GLM_LANG_CXX0X_FLAG)
-
68 #define GLM_LANG_CXX11 (GLM_LANG_CXX0X | GLM_LANG_CXX11_FLAG)
-
69 #define GLM_LANG_CXX14 (GLM_LANG_CXX11 | GLM_LANG_CXX14_FLAG)
-
70 #define GLM_LANG_CXX17 (GLM_LANG_CXX14 | GLM_LANG_CXX17_FLAG)
-
71 #define GLM_LANG_CXX2A (GLM_LANG_CXX17 | GLM_LANG_CXX2A_FLAG)
-
72 #define GLM_LANG_CXXMS GLM_LANG_CXXMS_FLAG
-
73 #define GLM_LANG_CXXGNU GLM_LANG_CXXGNU_FLAG
-
74 
-
75 #if (defined(_MSC_EXTENSIONS))
-
76 # define GLM_LANG_EXT GLM_LANG_CXXMS_FLAG
-
77 #elif ((GLM_COMPILER & (GLM_COMPILER_CLANG | GLM_COMPILER_GCC)) && (GLM_ARCH & GLM_ARCH_SIMD_BIT))
-
78 # define GLM_LANG_EXT GLM_LANG_CXXMS_FLAG
-
79 #else
-
80 # define GLM_LANG_EXT 0
-
81 #endif
-
82 
-
83 #if (defined(GLM_FORCE_CXX_UNKNOWN))
-
84 # define GLM_LANG 0
-
85 #elif defined(GLM_FORCE_CXX2A)
-
86 # define GLM_LANG (GLM_LANG_CXX2A | GLM_LANG_EXT)
-
87 # define GLM_LANG_STL11_FORCED
-
88 #elif defined(GLM_FORCE_CXX17)
-
89 # define GLM_LANG (GLM_LANG_CXX17 | GLM_LANG_EXT)
-
90 # define GLM_LANG_STL11_FORCED
-
91 #elif defined(GLM_FORCE_CXX14)
-
92 # define GLM_LANG (GLM_LANG_CXX14 | GLM_LANG_EXT)
-
93 # define GLM_LANG_STL11_FORCED
-
94 #elif defined(GLM_FORCE_CXX11)
-
95 # define GLM_LANG (GLM_LANG_CXX11 | GLM_LANG_EXT)
-
96 # define GLM_LANG_STL11_FORCED
-
97 #elif defined(GLM_FORCE_CXX03)
-
98 # define GLM_LANG (GLM_LANG_CXX03 | GLM_LANG_EXT)
-
99 #elif defined(GLM_FORCE_CXX98)
-
100 # define GLM_LANG (GLM_LANG_CXX98 | GLM_LANG_EXT)
-
101 #else
-
102 # if GLM_COMPILER & GLM_COMPILER_VC && defined(_MSVC_LANG)
-
103 # if GLM_COMPILER >= GLM_COMPILER_VC15_7
-
104 # define GLM_LANG_PLATFORM _MSVC_LANG
-
105 # elif GLM_COMPILER >= GLM_COMPILER_VC15
-
106 # if _MSVC_LANG > 201402L
-
107 # define GLM_LANG_PLATFORM 201402L
-
108 # else
-
109 # define GLM_LANG_PLATFORM _MSVC_LANG
-
110 # endif
-
111 # else
-
112 # define GLM_LANG_PLATFORM 0
-
113 # endif
-
114 # else
-
115 # define GLM_LANG_PLATFORM 0
-
116 # endif
-
117 
-
118 # if __cplusplus > 201703L || GLM_LANG_PLATFORM > 201703L
-
119 # define GLM_LANG (GLM_LANG_CXX2A | GLM_LANG_EXT)
-
120 # elif __cplusplus == 201703L || GLM_LANG_PLATFORM == 201703L
-
121 # define GLM_LANG (GLM_LANG_CXX17 | GLM_LANG_EXT)
-
122 # elif __cplusplus == 201402L || __cplusplus == 201500L || GLM_LANG_PLATFORM == 201402L
-
123 # define GLM_LANG (GLM_LANG_CXX14 | GLM_LANG_EXT)
-
124 # elif __cplusplus == 201103L || GLM_LANG_PLATFORM == 201103L
-
125 # define GLM_LANG (GLM_LANG_CXX11 | GLM_LANG_EXT)
-
126 # elif defined(__INTEL_CXX11_MODE__) || defined(_MSC_VER) || defined(__GXX_EXPERIMENTAL_CXX0X__)
-
127 # define GLM_LANG (GLM_LANG_CXX0X | GLM_LANG_EXT)
-
128 # elif __cplusplus == 199711L
-
129 # define GLM_LANG (GLM_LANG_CXX98 | GLM_LANG_EXT)
-
130 # else
-
131 # define GLM_LANG (0 | GLM_LANG_EXT)
-
132 # endif
-
133 #endif
-
134 
-
136 // Has of C++ features
-
137 
-
138 // http://clang.llvm.org/cxx_status.html
-
139 // http://gcc.gnu.org/projects/cxx0x.html
-
140 // http://msdn.microsoft.com/en-us/library/vstudio/hh567368(v=vs.120).aspx
-
141 
-
142 // Android has multiple STLs but C++11 STL detection doesn't always work #284 #564
-
143 #if GLM_PLATFORM == GLM_PLATFORM_ANDROID && !defined(GLM_LANG_STL11_FORCED)
-
144 # define GLM_HAS_CXX11_STL 0
-
145 #elif GLM_COMPILER & GLM_COMPILER_CLANG
-
146 # if (defined(_LIBCPP_VERSION) || (GLM_LANG & GLM_LANG_CXX11_FLAG) || defined(GLM_LANG_STL11_FORCED))
-
147 # define GLM_HAS_CXX11_STL 1
-
148 # else
-
149 # define GLM_HAS_CXX11_STL 0
-
150 # endif
-
151 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
-
152 # define GLM_HAS_CXX11_STL 1
-
153 #else
-
154 # define GLM_HAS_CXX11_STL ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
-
155  ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC48)) || \
-
156  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC12)) || \
-
157  ((GLM_PLATFORM != GLM_PLATFORM_WINDOWS) && (GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL15))))
-
158 #endif
-
159 
-
160 // N1720
-
161 #if GLM_COMPILER & GLM_COMPILER_CLANG
-
162 # define GLM_HAS_STATIC_ASSERT __has_feature(cxx_static_assert)
-
163 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
-
164 # define GLM_HAS_STATIC_ASSERT 1
-
165 #else
-
166 # define GLM_HAS_STATIC_ASSERT ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
-
167  ((GLM_COMPILER & GLM_COMPILER_CUDA)) || \
-
168  ((GLM_COMPILER & GLM_COMPILER_VC))))
-
169 #endif
-
170 
-
171 // N1988
-
172 #if GLM_LANG & GLM_LANG_CXX11_FLAG
-
173 # define GLM_HAS_EXTENDED_INTEGER_TYPE 1
-
174 #else
-
175 # define GLM_HAS_EXTENDED_INTEGER_TYPE (\
-
176  ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_VC)) || \
-
177  ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_CUDA)) || \
-
178  ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_CLANG)))
-
179 #endif
-
180 
-
181 // N2672 Initializer lists http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm
-
182 #if GLM_COMPILER & GLM_COMPILER_CLANG
-
183 # define GLM_HAS_INITIALIZER_LISTS __has_feature(cxx_generalized_initializers)
-
184 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
-
185 # define GLM_HAS_INITIALIZER_LISTS 1
-
186 #else
-
187 # define GLM_HAS_INITIALIZER_LISTS ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
-
188  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC15)) || \
-
189  ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL14)) || \
-
190  ((GLM_COMPILER & GLM_COMPILER_CUDA))))
-
191 #endif
-
192 
-
193 // N2544 Unrestricted unions http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf
-
194 #if GLM_COMPILER & GLM_COMPILER_CLANG
-
195 # define GLM_HAS_UNRESTRICTED_UNIONS __has_feature(cxx_unrestricted_unions)
-
196 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
-
197 # define GLM_HAS_UNRESTRICTED_UNIONS 1
-
198 #else
-
199 # define GLM_HAS_UNRESTRICTED_UNIONS (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
-
200  (GLM_COMPILER & GLM_COMPILER_VC) || \
-
201  ((GLM_COMPILER & GLM_COMPILER_CUDA)))
-
202 #endif
-
203 
-
204 // N2346
-
205 #if GLM_COMPILER & GLM_COMPILER_CLANG
-
206 # define GLM_HAS_DEFAULTED_FUNCTIONS __has_feature(cxx_defaulted_functions)
-
207 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
-
208 # define GLM_HAS_DEFAULTED_FUNCTIONS 1
-
209 #else
-
210 # define GLM_HAS_DEFAULTED_FUNCTIONS ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
-
211  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC12)) || \
-
212  ((GLM_COMPILER & GLM_COMPILER_INTEL)) || \
-
213  (GLM_COMPILER & GLM_COMPILER_CUDA)))
-
214 #endif
-
215 
-
216 // N2118
-
217 #if GLM_COMPILER & GLM_COMPILER_CLANG
-
218 # define GLM_HAS_RVALUE_REFERENCES __has_feature(cxx_rvalue_references)
-
219 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
-
220 # define GLM_HAS_RVALUE_REFERENCES 1
-
221 #else
-
222 # define GLM_HAS_RVALUE_REFERENCES ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
-
223  ((GLM_COMPILER & GLM_COMPILER_VC)) || \
-
224  ((GLM_COMPILER & GLM_COMPILER_CUDA))))
-
225 #endif
-
226 
-
227 // N2437 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf
-
228 #if GLM_COMPILER & GLM_COMPILER_CLANG
-
229 # define GLM_HAS_EXPLICIT_CONVERSION_OPERATORS __has_feature(cxx_explicit_conversions)
-
230 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
-
231 # define GLM_HAS_EXPLICIT_CONVERSION_OPERATORS 1
-
232 #else
-
233 # define GLM_HAS_EXPLICIT_CONVERSION_OPERATORS ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
-
234  ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL14)) || \
-
235  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC12)) || \
-
236  ((GLM_COMPILER & GLM_COMPILER_CUDA))))
-
237 #endif
-
238 
-
239 // N2258 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf
-
240 #if GLM_COMPILER & GLM_COMPILER_CLANG
-
241 # define GLM_HAS_TEMPLATE_ALIASES __has_feature(cxx_alias_templates)
-
242 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
-
243 # define GLM_HAS_TEMPLATE_ALIASES 1
-
244 #else
-
245 # define GLM_HAS_TEMPLATE_ALIASES ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
-
246  ((GLM_COMPILER & GLM_COMPILER_INTEL)) || \
-
247  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC12)) || \
-
248  ((GLM_COMPILER & GLM_COMPILER_CUDA))))
-
249 #endif
-
250 
-
251 // N2930 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2930.html
-
252 #if GLM_COMPILER & GLM_COMPILER_CLANG
-
253 # define GLM_HAS_RANGE_FOR __has_feature(cxx_range_for)
-
254 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
-
255 # define GLM_HAS_RANGE_FOR 1
-
256 #else
-
257 # define GLM_HAS_RANGE_FOR ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
-
258  ((GLM_COMPILER & GLM_COMPILER_INTEL)) || \
-
259  ((GLM_COMPILER & GLM_COMPILER_VC)) || \
-
260  ((GLM_COMPILER & GLM_COMPILER_CUDA))))
-
261 #endif
-
262 
-
263 // N2341 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
-
264 #if GLM_COMPILER & GLM_COMPILER_CLANG
-
265 # define GLM_HAS_ALIGNOF __has_feature(cxx_alignas)
-
266 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
-
267 # define GLM_HAS_ALIGNOF 1
-
268 #else
-
269 # define GLM_HAS_ALIGNOF ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
-
270  ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL15)) || \
-
271  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC14)) || \
-
272  ((GLM_COMPILER & GLM_COMPILER_CUDA))))
-
273 #endif
-
274 
-
275 // N2235 Generalized Constant Expressions http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf
-
276 // N3652 Extended Constant Expressions http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3652.html
-
277 #if (GLM_ARCH & GLM_ARCH_SIMD_BIT) // Compiler SIMD intrinsics don't support constexpr...
-
278 # define GLM_HAS_CONSTEXPR 0
-
279 #elif (GLM_COMPILER & GLM_COMPILER_CLANG)
-
280 # define GLM_HAS_CONSTEXPR __has_feature(cxx_relaxed_constexpr)
-
281 #elif (GLM_LANG & GLM_LANG_CXX14_FLAG)
-
282 # define GLM_HAS_CONSTEXPR 1
-
283 #else
-
284 # define GLM_HAS_CONSTEXPR ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && GLM_HAS_INITIALIZER_LISTS && (\
-
285  ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL17)) || \
-
286  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC15))))
-
287 #endif
-
288 
-
289 #if GLM_HAS_CONSTEXPR
-
290 # define GLM_CONSTEXPR constexpr
-
291 #else
-
292 # define GLM_CONSTEXPR
-
293 #endif
-
294 
-
295 //
-
296 #if GLM_HAS_CONSTEXPR
-
297 # if (GLM_COMPILER & GLM_COMPILER_CLANG)
-
298 # if __has_feature(cxx_if_constexpr)
-
299 # define GLM_HAS_IF_CONSTEXPR 1
-
300 # else
-
301 # define GLM_HAS_IF_CONSTEXPR 0
-
302 # endif
-
303 # elif (GLM_LANG & GLM_LANG_CXX17_FLAG)
-
304 # define GLM_HAS_IF_CONSTEXPR 1
-
305 # else
-
306 # define GLM_HAS_IF_CONSTEXPR 0
-
307 # endif
-
308 #else
-
309 # define GLM_HAS_IF_CONSTEXPR 0
-
310 #endif
-
311 
-
312 #if GLM_HAS_IF_CONSTEXPR
-
313 # define GLM_IF_CONSTEXPR if constexpr
-
314 #else
-
315 # define GLM_IF_CONSTEXPR if
-
316 #endif
-
317 
-
318 //
-
319 #if GLM_LANG & GLM_LANG_CXX11_FLAG
-
320 # define GLM_HAS_ASSIGNABLE 1
-
321 #else
-
322 # define GLM_HAS_ASSIGNABLE ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
-
323  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC15)) || \
-
324  ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC49))))
-
325 #endif
-
326 
-
327 //
-
328 #define GLM_HAS_TRIVIAL_QUERIES 0
-
329 
-
330 //
-
331 #if GLM_LANG & GLM_LANG_CXX11_FLAG
-
332 # define GLM_HAS_MAKE_SIGNED 1
-
333 #else
-
334 # define GLM_HAS_MAKE_SIGNED ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
-
335  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC12)) || \
-
336  ((GLM_COMPILER & GLM_COMPILER_CUDA))))
-
337 #endif
-
338 
-
339 //
-
340 #if defined(GLM_FORCE_INTRINSICS)
-
341 # define GLM_HAS_BITSCAN_WINDOWS ((GLM_PLATFORM & GLM_PLATFORM_WINDOWS) && (\
-
342  ((GLM_COMPILER & GLM_COMPILER_INTEL)) || \
-
343  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC14) && (GLM_ARCH & GLM_ARCH_X86_BIT))))
-
344 #else
-
345 # define GLM_HAS_BITSCAN_WINDOWS 0
-
346 #endif
-
347 
-
349 // OpenMP
-
350 #ifdef _OPENMP
-
351 # if GLM_COMPILER & GLM_COMPILER_GCC
-
352 # if GLM_COMPILER >= GLM_COMPILER_GCC61
-
353 # define GLM_HAS_OPENMP 45
-
354 # elif GLM_COMPILER >= GLM_COMPILER_GCC49
-
355 # define GLM_HAS_OPENMP 40
-
356 # elif GLM_COMPILER >= GLM_COMPILER_GCC47
-
357 # define GLM_HAS_OPENMP 31
-
358 # else
-
359 # define GLM_HAS_OPENMP 0
-
360 # endif
-
361 # elif GLM_COMPILER & GLM_COMPILER_CLANG
-
362 # if GLM_COMPILER >= GLM_COMPILER_CLANG38
-
363 # define GLM_HAS_OPENMP 31
-
364 # else
-
365 # define GLM_HAS_OPENMP 0
-
366 # endif
-
367 # elif GLM_COMPILER & GLM_COMPILER_VC
-
368 # define GLM_HAS_OPENMP 20
-
369 # elif GLM_COMPILER & GLM_COMPILER_INTEL
-
370 # if GLM_COMPILER >= GLM_COMPILER_INTEL16
-
371 # define GLM_HAS_OPENMP 40
-
372 # else
-
373 # define GLM_HAS_OPENMP 0
-
374 # endif
-
375 # else
-
376 # define GLM_HAS_OPENMP 0
-
377 # endif
-
378 #else
-
379 # define GLM_HAS_OPENMP 0
-
380 #endif
-
381 
-
383 // nullptr
-
384 
-
385 #if GLM_LANG & GLM_LANG_CXX0X_FLAG
-
386 # define GLM_CONFIG_NULLPTR GLM_ENABLE
-
387 #else
-
388 # define GLM_CONFIG_NULLPTR GLM_DISABLE
-
389 #endif
-
390 
-
391 #if GLM_CONFIG_NULLPTR == GLM_ENABLE
-
392 # define GLM_NULLPTR nullptr
-
393 #else
-
394 # define GLM_NULLPTR 0
-
395 #endif
-
396 
-
398 // Static assert
-
399 
-
400 #if GLM_HAS_STATIC_ASSERT
-
401 # define GLM_STATIC_ASSERT(x, message) static_assert(x, message)
-
402 #elif GLM_COMPILER & GLM_COMPILER_VC
-
403 # define GLM_STATIC_ASSERT(x, message) typedef char __CASSERT__##__LINE__[(x) ? 1 : -1]
-
404 #else
-
405 # define GLM_STATIC_ASSERT(x, message) assert(x)
-
406 #endif//GLM_LANG
-
407 
-
409 // Qualifiers
-
410 
-
411 #if GLM_COMPILER & GLM_COMPILER_CUDA
-
412 # define GLM_CUDA_FUNC_DEF __device__ __host__
-
413 # define GLM_CUDA_FUNC_DECL __device__ __host__
-
414 #else
-
415 # define GLM_CUDA_FUNC_DEF
-
416 # define GLM_CUDA_FUNC_DECL
-
417 #endif
-
418 
-
419 #if defined(GLM_FORCE_INLINE)
-
420 # if GLM_COMPILER & GLM_COMPILER_VC
-
421 # define GLM_INLINE __forceinline
-
422 # define GLM_NEVER_INLINE __declspec((noinline))
-
423 # elif GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG)
-
424 # define GLM_INLINE inline __attribute__((__always_inline__))
-
425 # define GLM_NEVER_INLINE __attribute__((__noinline__))
-
426 # elif GLM_COMPILER & GLM_COMPILER_CUDA
-
427 # define GLM_INLINE __forceinline__
-
428 # define GLM_NEVER_INLINE __noinline__
-
429 # else
-
430 # define GLM_INLINE inline
-
431 # define GLM_NEVER_INLINE
-
432 # endif//GLM_COMPILER
-
433 #else
-
434 # define GLM_INLINE inline
-
435 # define GLM_NEVER_INLINE
-
436 #endif//defined(GLM_FORCE_INLINE)
-
437 
-
438 #define GLM_FUNC_DECL GLM_CUDA_FUNC_DECL
-
439 #define GLM_FUNC_QUALIFIER GLM_CUDA_FUNC_DEF GLM_INLINE
-
440 
-
442 // Swizzle operators
-
443 
-
444 // User defines: GLM_FORCE_SWIZZLE
-
445 
-
446 #define GLM_SWIZZLE_DISABLED 0
-
447 #define GLM_SWIZZLE_OPERATOR 1
-
448 #define GLM_SWIZZLE_FUNCTION 2
-
449 
-
450 #if defined(GLM_FORCE_XYZW_ONLY)
-
451 # undef GLM_FORCE_SWIZZLE
-
452 #endif
-
453 
-
454 #if defined(GLM_SWIZZLE)
-
455 # pragma message("GLM: GLM_SWIZZLE is deprecated, use GLM_FORCE_SWIZZLE instead.")
-
456 # define GLM_FORCE_SWIZZLE
-
457 #endif
-
458 
-
459 #if defined(GLM_FORCE_SWIZZLE) && (GLM_LANG & GLM_LANG_CXXMS_FLAG)
-
460 # define GLM_CONFIG_SWIZZLE GLM_SWIZZLE_OPERATOR
-
461 #elif defined(GLM_FORCE_SWIZZLE)
-
462 # define GLM_CONFIG_SWIZZLE GLM_SWIZZLE_FUNCTION
-
463 #else
-
464 # define GLM_CONFIG_SWIZZLE GLM_SWIZZLE_DISABLED
-
465 #endif
-
466 
-
468 // Allows using not basic types as genType
-
469 
-
470 // #define GLM_FORCE_UNRESTRICTED_GENTYPE
-
471 
-
472 #ifdef GLM_FORCE_UNRESTRICTED_GENTYPE
-
473 # define GLM_CONFIG_UNRESTRICTED_GENTYPE GLM_ENABLE
-
474 #else
-
475 # define GLM_CONFIG_UNRESTRICTED_GENTYPE GLM_DISABLE
-
476 #endif
-
477 
-
479 // Clip control, define GLM_FORCE_DEPTH_ZERO_TO_ONE before including GLM
-
480 // to use a clip space between 0 to 1.
-
481 // Coordinate system, define GLM_FORCE_LEFT_HANDED before including GLM
-
482 // to use left handed coordinate system by default.
-
483 
-
484 #define GLM_CLIP_CONTROL_ZO_BIT (1 << 0) // ZERO_TO_ONE
-
485 #define GLM_CLIP_CONTROL_NO_BIT (1 << 1) // NEGATIVE_ONE_TO_ONE
-
486 #define GLM_CLIP_CONTROL_LH_BIT (1 << 2) // LEFT_HANDED, For DirectX, Metal, Vulkan
-
487 #define GLM_CLIP_CONTROL_RH_BIT (1 << 3) // RIGHT_HANDED, For OpenGL, default in GLM
-
488 
-
489 #define GLM_CLIP_CONTROL_LH_ZO (GLM_CLIP_CONTROL_LH_BIT | GLM_CLIP_CONTROL_ZO_BIT)
-
490 #define GLM_CLIP_CONTROL_LH_NO (GLM_CLIP_CONTROL_LH_BIT | GLM_CLIP_CONTROL_NO_BIT)
-
491 #define GLM_CLIP_CONTROL_RH_ZO (GLM_CLIP_CONTROL_RH_BIT | GLM_CLIP_CONTROL_ZO_BIT)
-
492 #define GLM_CLIP_CONTROL_RH_NO (GLM_CLIP_CONTROL_RH_BIT | GLM_CLIP_CONTROL_NO_BIT)
-
493 
-
494 #ifdef GLM_FORCE_DEPTH_ZERO_TO_ONE
-
495 # ifdef GLM_FORCE_LEFT_HANDED
-
496 # define GLM_CONFIG_CLIP_CONTROL GLM_CLIP_CONTROL_LH_ZO
-
497 # else
-
498 # define GLM_CONFIG_CLIP_CONTROL GLM_CLIP_CONTROL_RH_ZO
-
499 # endif
-
500 #else
-
501 # ifdef GLM_FORCE_LEFT_HANDED
-
502 # define GLM_CONFIG_CLIP_CONTROL GLM_CLIP_CONTROL_LH_NO
-
503 # else
-
504 # define GLM_CONFIG_CLIP_CONTROL GLM_CLIP_CONTROL_RH_NO
-
505 # endif
-
506 #endif
-
507 
-
509 // Qualifiers
-
510 
-
511 #if (GLM_COMPILER & GLM_COMPILER_VC) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_WINDOWS))
-
512 # define GLM_DEPRECATED __declspec(deprecated)
-
513 # define GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef __declspec(align(alignment)) type name
-
514 #elif GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG | GLM_COMPILER_INTEL)
-
515 # define GLM_DEPRECATED __attribute__((__deprecated__))
-
516 # define GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef type name __attribute__((aligned(alignment)))
-
517 #elif GLM_COMPILER & GLM_COMPILER_CUDA
-
518 # define GLM_DEPRECATED
-
519 # define GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef type name __align__(x)
-
520 #else
-
521 # define GLM_DEPRECATED
-
522 # define GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef type name
-
523 #endif
-
524 
-
526 
-
527 #ifdef GLM_FORCE_EXPLICIT_CTOR
-
528 # define GLM_EXPLICIT explicit
-
529 #else
-
530 # define GLM_EXPLICIT
-
531 #endif
-
532 
-
534 // SYCL
-
535 
-
536 #if GLM_COMPILER==GLM_COMPILER_SYCL
-
537 
-
538 #include <CL/sycl.hpp>
-
539 #include <limits>
-
540 
-
541 namespace glm {
-
542 namespace std {
-
543  // Import SYCL's functions into the namespace glm::std to force their usages.
-
544  // It's important to use the math built-in function (sin, exp, ...)
-
545  // of SYCL instead the std ones.
-
546  using namespace cl::sycl;
-
547 
-
549  // Import some "harmless" std's stuffs used by glm into
-
550  // the new glm::std namespace.
-
551  template<typename T>
-
552  using numeric_limits = ::std::numeric_limits<T>;
-
553 
-
554  using ::std::size_t;
-
555 
- - - - -
560 
- - - - -
565 
-
566  using ::std::make_unsigned;
-
568 } //namespace std
-
569 } //namespace glm
-
570 
-
571 #endif
-
572 
-
574 
-
576 // Length type: all length functions returns a length_t type.
-
577 // When GLM_FORCE_SIZE_T_LENGTH is defined, length_t is a typedef of size_t otherwise
-
578 // length_t is a typedef of int like GLSL defines it.
-
579 
-
580 #define GLM_LENGTH_INT 1
-
581 #define GLM_LENGTH_SIZE_T 2
-
582 
-
583 #ifdef GLM_FORCE_SIZE_T_LENGTH
-
584 # define GLM_CONFIG_LENGTH_TYPE GLM_LENGTH_SIZE_T
-
585 #else
-
586 # define GLM_CONFIG_LENGTH_TYPE GLM_LENGTH_INT
-
587 #endif
-
588 
-
589 namespace glm
-
590 {
-
591  using std::size_t;
-
592 # if GLM_CONFIG_LENGTH_TYPE == GLM_LENGTH_SIZE_T
-
593  typedef size_t length_t;
-
594 # else
-
595  typedef int length_t;
-
596 # endif
-
597 }//namespace glm
-
598 
-
600 // constexpr
-
601 
-
602 #if GLM_HAS_CONSTEXPR
-
603 # define GLM_CONFIG_CONSTEXP GLM_ENABLE
-
604 
-
605  namespace glm
-
606  {
-
607  template<typename T, std::size_t N>
-
608  constexpr std::size_t countof(T const (&)[N])
-
609  {
-
610  return N;
-
611  }
-
612  }//namespace glm
-
613 # define GLM_COUNTOF(arr) glm::countof(arr)
-
614 #elif defined(_MSC_VER)
-
615 # define GLM_CONFIG_CONSTEXP GLM_DISABLE
-
616 
-
617 # define GLM_COUNTOF(arr) _countof(arr)
-
618 #else
-
619 # define GLM_CONFIG_CONSTEXP GLM_DISABLE
-
620 
-
621 # define GLM_COUNTOF(arr) sizeof(arr) / sizeof(arr[0])
-
622 #endif
-
623 
-
625 // uint
-
626 
-
627 namespace glm{
-
628 namespace detail
-
629 {
-
630  template<typename T>
-
631  struct is_int
-
632  {
-
633  enum test {value = 0};
-
634  };
-
635 
-
636  template<>
-
637  struct is_int<unsigned int>
-
638  {
-
639  enum test {value = ~0};
-
640  };
-
641 
-
642  template<>
-
643  struct is_int<signed int>
-
644  {
-
645  enum test {value = ~0};
-
646  };
-
647 }//namespace detail
-
648 
-
649  typedef unsigned int uint;
-
650 }//namespace glm
-
651 
-
653 // 64-bit int
-
654 
-
655 #if GLM_HAS_EXTENDED_INTEGER_TYPE
-
656 # include <cstdint>
-
657 #endif
-
658 
-
659 namespace glm{
-
660 namespace detail
-
661 {
-
662 # if GLM_HAS_EXTENDED_INTEGER_TYPE
-
663  typedef std::uint64_t uint64;
-
664  typedef std::int64_t int64;
-
665 # elif (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) // C99 detected, 64 bit types available
-
666  typedef uint64_t uint64;
-
667  typedef int64_t int64;
-
668 # elif GLM_COMPILER & GLM_COMPILER_VC
-
669  typedef unsigned __int64 uint64;
-
670  typedef signed __int64 int64;
-
671 # elif GLM_COMPILER & GLM_COMPILER_GCC
-
672 # pragma GCC diagnostic ignored "-Wlong-long"
-
673  __extension__ typedef unsigned long long uint64;
-
674  __extension__ typedef signed long long int64;
-
675 # elif (GLM_COMPILER & GLM_COMPILER_CLANG)
-
676 # pragma clang diagnostic ignored "-Wc++11-long-long"
-
677  typedef unsigned long long uint64;
-
678  typedef signed long long int64;
-
679 # else//unknown compiler
-
680  typedef unsigned long long uint64;
-
681  typedef signed long long int64;
-
682 # endif
-
683 }//namespace detail
-
684 }//namespace glm
-
685 
-
687 // make_unsigned
-
688 
-
689 #if GLM_HAS_MAKE_SIGNED
-
690 # include <type_traits>
-
691 
-
692 namespace glm{
-
693 namespace detail
-
694 {
-
695  using std::make_unsigned;
-
696 }//namespace detail
-
697 }//namespace glm
-
698 
-
699 #else
-
700 
-
701 namespace glm{
-
702 namespace detail
-
703 {
-
704  template<typename genType>
-
705  struct make_unsigned
-
706  {};
-
707 
-
708  template<>
-
709  struct make_unsigned<char>
-
710  {
-
711  typedef unsigned char type;
-
712  };
-
713 
-
714  template<>
-
715  struct make_unsigned<signed char>
-
716  {
-
717  typedef unsigned char type;
-
718  };
-
719 
-
720  template<>
-
721  struct make_unsigned<short>
-
722  {
-
723  typedef unsigned short type;
-
724  };
-
725 
-
726  template<>
-
727  struct make_unsigned<int>
-
728  {
-
729  typedef unsigned int type;
-
730  };
-
731 
-
732  template<>
-
733  struct make_unsigned<long>
-
734  {
-
735  typedef unsigned long type;
-
736  };
-
737 
-
738  template<>
-
739  struct make_unsigned<int64>
-
740  {
-
741  typedef uint64 type;
-
742  };
-
743 
-
744  template<>
-
745  struct make_unsigned<unsigned char>
-
746  {
-
747  typedef unsigned char type;
-
748  };
-
749 
-
750  template<>
-
751  struct make_unsigned<unsigned short>
-
752  {
-
753  typedef unsigned short type;
-
754  };
-
755 
-
756  template<>
-
757  struct make_unsigned<unsigned int>
-
758  {
-
759  typedef unsigned int type;
-
760  };
-
761 
-
762  template<>
-
763  struct make_unsigned<unsigned long>
-
764  {
-
765  typedef unsigned long type;
-
766  };
-
767 
-
768  template<>
-
769  struct make_unsigned<uint64>
-
770  {
-
771  typedef uint64 type;
-
772  };
-
773 }//namespace detail
-
774 }//namespace glm
-
775 #endif
-
776 
-
778 // Only use x, y, z, w as vector type components
-
779 
-
780 #ifdef GLM_FORCE_XYZW_ONLY
-
781 # define GLM_CONFIG_XYZW_ONLY GLM_ENABLE
-
782 #else
-
783 # define GLM_CONFIG_XYZW_ONLY GLM_DISABLE
-
784 #endif
-
785 
-
787 // Configure the use of defaulted initialized types
-
788 
-
789 #define GLM_CTOR_INIT_DISABLE 0
-
790 #define GLM_CTOR_INITIALIZER_LIST 1
-
791 #define GLM_CTOR_INITIALISATION 2
-
792 
-
793 #if defined(GLM_FORCE_CTOR_INIT) && GLM_HAS_INITIALIZER_LISTS
-
794 # define GLM_CONFIG_CTOR_INIT GLM_CTOR_INITIALIZER_LIST
-
795 #elif defined(GLM_FORCE_CTOR_INIT) && !GLM_HAS_INITIALIZER_LISTS
-
796 # define GLM_CONFIG_CTOR_INIT GLM_CTOR_INITIALISATION
-
797 #else
-
798 # define GLM_CONFIG_CTOR_INIT GLM_CTOR_INIT_DISABLE
-
799 #endif
-
800 
-
802 // Use SIMD instruction sets
-
803 
-
804 #if GLM_HAS_ALIGNOF && (GLM_LANG & GLM_LANG_CXXMS_FLAG) && (GLM_ARCH & GLM_ARCH_SIMD_BIT)
-
805 # define GLM_CONFIG_SIMD GLM_ENABLE
-
806 #else
-
807 # define GLM_CONFIG_SIMD GLM_DISABLE
-
808 #endif
-
809 
-
811 // Configure the use of defaulted function
-
812 
-
813 #if GLM_HAS_DEFAULTED_FUNCTIONS && GLM_CONFIG_CTOR_INIT == GLM_CTOR_INIT_DISABLE
-
814 # define GLM_CONFIG_DEFAULTED_FUNCTIONS GLM_ENABLE
-
815 # define GLM_DEFAULT = default
-
816 #else
-
817 # define GLM_CONFIG_DEFAULTED_FUNCTIONS GLM_DISABLE
-
818 # define GLM_DEFAULT
-
819 #endif
-
820 
-
822 // Configure the use of aligned gentypes
-
823 
-
824 #ifdef GLM_FORCE_ALIGNED // Legacy define
-
825 # define GLM_FORCE_DEFAULT_ALIGNED_GENTYPES
-
826 #endif
-
827 
-
828 #ifdef GLM_FORCE_DEFAULT_ALIGNED_GENTYPES
-
829 # define GLM_FORCE_ALIGNED_GENTYPES
-
830 #endif
-
831 
-
832 #if GLM_HAS_ALIGNOF && (GLM_LANG & GLM_LANG_CXXMS_FLAG) && (defined(GLM_FORCE_ALIGNED_GENTYPES) || (GLM_CONFIG_SIMD == GLM_ENABLE))
-
833 # define GLM_CONFIG_ALIGNED_GENTYPES GLM_ENABLE
-
834 #else
-
835 # define GLM_CONFIG_ALIGNED_GENTYPES GLM_DISABLE
-
836 #endif
-
837 
-
839 // Configure the use of anonymous structure as implementation detail
-
840 
-
841 #if ((GLM_CONFIG_SIMD == GLM_ENABLE) || (GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR) || (GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE))
-
842 # define GLM_CONFIG_ANONYMOUS_STRUCT GLM_ENABLE
-
843 #else
-
844 # define GLM_CONFIG_ANONYMOUS_STRUCT GLM_DISABLE
-
845 #endif
-
846 
-
848 // Silent warnings
-
849 
-
850 #ifdef GLM_FORCE_SILENT_WARNINGS
-
851 # define GLM_SILENT_WARNINGS GLM_ENABLE
-
852 #else
-
853 # define GLM_SILENT_WARNINGS GLM_DISABLE
-
854 #endif
-
855 
-
857 // Precision
-
858 
-
859 #define GLM_HIGHP 1
-
860 #define GLM_MEDIUMP 2
-
861 #define GLM_LOWP 3
-
862 
-
863 #if defined(GLM_FORCE_PRECISION_HIGHP_BOOL) || defined(GLM_PRECISION_HIGHP_BOOL)
-
864 # define GLM_CONFIG_PRECISION_BOOL GLM_HIGHP
-
865 #elif defined(GLM_FORCE_PRECISION_MEDIUMP_BOOL) || defined(GLM_PRECISION_MEDIUMP_BOOL)
-
866 # define GLM_CONFIG_PRECISION_BOOL GLM_MEDIUMP
-
867 #elif defined(GLM_FORCE_PRECISION_LOWP_BOOL) || defined(GLM_PRECISION_LOWP_BOOL)
-
868 # define GLM_CONFIG_PRECISION_BOOL GLM_LOWP
-
869 #else
-
870 # define GLM_CONFIG_PRECISION_BOOL GLM_HIGHP
-
871 #endif
-
872 
-
873 #if defined(GLM_FORCE_PRECISION_HIGHP_INT) || defined(GLM_PRECISION_HIGHP_INT)
-
874 # define GLM_CONFIG_PRECISION_INT GLM_HIGHP
-
875 #elif defined(GLM_FORCE_PRECISION_MEDIUMP_INT) || defined(GLM_PRECISION_MEDIUMP_INT)
-
876 # define GLM_CONFIG_PRECISION_INT GLM_MEDIUMP
-
877 #elif defined(GLM_FORCE_PRECISION_LOWP_INT) || defined(GLM_PRECISION_LOWP_INT)
-
878 # define GLM_CONFIG_PRECISION_INT GLM_LOWP
-
879 #else
-
880 # define GLM_CONFIG_PRECISION_INT GLM_HIGHP
-
881 #endif
-
882 
-
883 #if defined(GLM_FORCE_PRECISION_HIGHP_UINT) || defined(GLM_PRECISION_HIGHP_UINT)
-
884 # define GLM_CONFIG_PRECISION_UINT GLM_HIGHP
-
885 #elif defined(GLM_FORCE_PRECISION_MEDIUMP_UINT) || defined(GLM_PRECISION_MEDIUMP_UINT)
-
886 # define GLM_CONFIG_PRECISION_UINT GLM_MEDIUMP
-
887 #elif defined(GLM_FORCE_PRECISION_LOWP_UINT) || defined(GLM_PRECISION_LOWP_UINT)
-
888 # define GLM_CONFIG_PRECISION_UINT GLM_LOWP
-
889 #else
-
890 # define GLM_CONFIG_PRECISION_UINT GLM_HIGHP
-
891 #endif
-
892 
-
893 #if defined(GLM_FORCE_PRECISION_HIGHP_FLOAT) || defined(GLM_PRECISION_HIGHP_FLOAT)
-
894 # define GLM_CONFIG_PRECISION_FLOAT GLM_HIGHP
-
895 #elif defined(GLM_FORCE_PRECISION_MEDIUMP_FLOAT) || defined(GLM_PRECISION_MEDIUMP_FLOAT)
-
896 # define GLM_CONFIG_PRECISION_FLOAT GLM_MEDIUMP
-
897 #elif defined(GLM_FORCE_PRECISION_LOWP_FLOAT) || defined(GLM_PRECISION_LOWP_FLOAT)
-
898 # define GLM_CONFIG_PRECISION_FLOAT GLM_LOWP
-
899 #else
-
900 # define GLM_CONFIG_PRECISION_FLOAT GLM_HIGHP
-
901 #endif
-
902 
-
903 #if defined(GLM_FORCE_PRECISION_HIGHP_DOUBLE) || defined(GLM_PRECISION_HIGHP_DOUBLE)
-
904 # define GLM_CONFIG_PRECISION_DOUBLE GLM_HIGHP
-
905 #elif defined(GLM_FORCE_PRECISION_MEDIUMP_DOUBLE) || defined(GLM_PRECISION_MEDIUMP_DOUBLE)
-
906 # define GLM_CONFIG_PRECISION_DOUBLE GLM_MEDIUMP
-
907 #elif defined(GLM_FORCE_PRECISION_LOWP_DOUBLE) || defined(GLM_PRECISION_LOWP_DOUBLE)
-
908 # define GLM_CONFIG_PRECISION_DOUBLE GLM_LOWP
-
909 #else
-
910 # define GLM_CONFIG_PRECISION_DOUBLE GLM_HIGHP
-
911 #endif
-
912 
-
914 // Check inclusions of different versions of GLM
-
915 
-
916 #elif ((GLM_SETUP_INCLUDED != GLM_VERSION) && !defined(GLM_FORCE_IGNORE_VERSION))
-
917 # error "GLM error: A different version of GLM is already included. Define GLM_FORCE_IGNORE_VERSION before including GLM headers to ignore this error."
-
918 #elif GLM_SETUP_INCLUDED == GLM_VERSION
-
919 
-
921 // Messages
-
922 
-
923 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_MESSAGE_DISPLAYED)
-
924 # define GLM_MESSAGE_DISPLAYED
-
925 # define GLM_STR_HELPER(x) #x
-
926 # define GLM_STR(x) GLM_STR_HELPER(x)
-
927 
-
928  // Report GLM version
-
929 # pragma message (GLM_STR(GLM_VERSION_MESSAGE))
-
930 
-
931  // Report C++ language
-
932 # if (GLM_LANG & GLM_LANG_CXX2A_FLAG) && (GLM_LANG & GLM_LANG_EXT)
-
933 # pragma message("GLM: C++ 2A with extensions")
-
934 # elif (GLM_LANG & GLM_LANG_CXX2A_FLAG)
-
935 # pragma message("GLM: C++ 2A")
-
936 # elif (GLM_LANG & GLM_LANG_CXX17_FLAG) && (GLM_LANG & GLM_LANG_EXT)
-
937 # pragma message("GLM: C++ 17 with extensions")
-
938 # elif (GLM_LANG & GLM_LANG_CXX17_FLAG)
-
939 # pragma message("GLM: C++ 17")
-
940 # elif (GLM_LANG & GLM_LANG_CXX14_FLAG) && (GLM_LANG & GLM_LANG_EXT)
-
941 # pragma message("GLM: C++ 14 with extensions")
-
942 # elif (GLM_LANG & GLM_LANG_CXX14_FLAG)
-
943 # pragma message("GLM: C++ 14")
-
944 # elif (GLM_LANG & GLM_LANG_CXX11_FLAG) && (GLM_LANG & GLM_LANG_EXT)
-
945 # pragma message("GLM: C++ 11 with extensions")
-
946 # elif (GLM_LANG & GLM_LANG_CXX11_FLAG)
-
947 # pragma message("GLM: C++ 11")
-
948 # elif (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_LANG & GLM_LANG_EXT)
-
949 # pragma message("GLM: C++ 0x with extensions")
-
950 # elif (GLM_LANG & GLM_LANG_CXX0X_FLAG)
-
951 # pragma message("GLM: C++ 0x")
-
952 # elif (GLM_LANG & GLM_LANG_CXX03_FLAG) && (GLM_LANG & GLM_LANG_EXT)
-
953 # pragma message("GLM: C++ 03 with extensions")
-
954 # elif (GLM_LANG & GLM_LANG_CXX03_FLAG)
-
955 # pragma message("GLM: C++ 03")
-
956 # elif (GLM_LANG & GLM_LANG_CXX98_FLAG) && (GLM_LANG & GLM_LANG_EXT)
-
957 # pragma message("GLM: C++ 98 with extensions")
-
958 # elif (GLM_LANG & GLM_LANG_CXX98_FLAG)
-
959 # pragma message("GLM: C++ 98")
-
960 # else
-
961 # pragma message("GLM: C++ language undetected")
-
962 # endif//GLM_LANG
-
963 
-
964  // Report compiler detection
-
965 # if GLM_COMPILER & GLM_COMPILER_CUDA
-
966 # pragma message("GLM: CUDA compiler detected")
-
967 # elif GLM_COMPILER & GLM_COMPILER_VC
-
968 # pragma message("GLM: Visual C++ compiler detected")
-
969 # elif GLM_COMPILER & GLM_COMPILER_CLANG
-
970 # pragma message("GLM: Clang compiler detected")
-
971 # elif GLM_COMPILER & GLM_COMPILER_INTEL
-
972 # pragma message("GLM: Intel Compiler detected")
-
973 # elif GLM_COMPILER & GLM_COMPILER_GCC
-
974 # pragma message("GLM: GCC compiler detected")
-
975 # else
-
976 # pragma message("GLM: Compiler not detected")
-
977 # endif
-
978 
-
979  // Report build target
-
980 # if (GLM_ARCH & GLM_ARCH_AVX2_BIT) && (GLM_MODEL == GLM_MODEL_64)
-
981 # pragma message("GLM: x86 64 bits with AVX2 instruction set build target")
-
982 # elif (GLM_ARCH & GLM_ARCH_AVX2_BIT) && (GLM_MODEL == GLM_MODEL_32)
-
983 # pragma message("GLM: x86 32 bits with AVX2 instruction set build target")
-
984 
-
985 # elif (GLM_ARCH & GLM_ARCH_AVX_BIT) && (GLM_MODEL == GLM_MODEL_64)
-
986 # pragma message("GLM: x86 64 bits with AVX instruction set build target")
-
987 # elif (GLM_ARCH & GLM_ARCH_AVX_BIT) && (GLM_MODEL == GLM_MODEL_32)
-
988 # pragma message("GLM: x86 32 bits with AVX instruction set build target")
-
989 
-
990 # elif (GLM_ARCH & GLM_ARCH_SSE42_BIT) && (GLM_MODEL == GLM_MODEL_64)
-
991 # pragma message("GLM: x86 64 bits with SSE4.2 instruction set build target")
-
992 # elif (GLM_ARCH & GLM_ARCH_SSE42_BIT) && (GLM_MODEL == GLM_MODEL_32)
-
993 # pragma message("GLM: x86 32 bits with SSE4.2 instruction set build target")
-
994 
-
995 # elif (GLM_ARCH & GLM_ARCH_SSE41_BIT) && (GLM_MODEL == GLM_MODEL_64)
-
996 # pragma message("GLM: x86 64 bits with SSE4.1 instruction set build target")
-
997 # elif (GLM_ARCH & GLM_ARCH_SSE41_BIT) && (GLM_MODEL == GLM_MODEL_32)
-
998 # pragma message("GLM: x86 32 bits with SSE4.1 instruction set build target")
-
999 
-
1000 # elif (GLM_ARCH & GLM_ARCH_SSSE3_BIT) && (GLM_MODEL == GLM_MODEL_64)
-
1001 # pragma message("GLM: x86 64 bits with SSSE3 instruction set build target")
-
1002 # elif (GLM_ARCH & GLM_ARCH_SSSE3_BIT) && (GLM_MODEL == GLM_MODEL_32)
-
1003 # pragma message("GLM: x86 32 bits with SSSE3 instruction set build target")
-
1004 
-
1005 # elif (GLM_ARCH & GLM_ARCH_SSE3_BIT) && (GLM_MODEL == GLM_MODEL_64)
-
1006 # pragma message("GLM: x86 64 bits with SSE3 instruction set build target")
-
1007 # elif (GLM_ARCH & GLM_ARCH_SSE3_BIT) && (GLM_MODEL == GLM_MODEL_32)
-
1008 # pragma message("GLM: x86 32 bits with SSE3 instruction set build target")
-
1009 
-
1010 # elif (GLM_ARCH & GLM_ARCH_SSE2_BIT) && (GLM_MODEL == GLM_MODEL_64)
-
1011 # pragma message("GLM: x86 64 bits with SSE2 instruction set build target")
-
1012 # elif (GLM_ARCH & GLM_ARCH_SSE2_BIT) && (GLM_MODEL == GLM_MODEL_32)
-
1013 # pragma message("GLM: x86 32 bits with SSE2 instruction set build target")
-
1014 
-
1015 # elif (GLM_ARCH & GLM_ARCH_X86_BIT) && (GLM_MODEL == GLM_MODEL_64)
-
1016 # pragma message("GLM: x86 64 bits build target")
-
1017 # elif (GLM_ARCH & GLM_ARCH_X86_BIT) && (GLM_MODEL == GLM_MODEL_32)
-
1018 # pragma message("GLM: x86 32 bits build target")
-
1019 
-
1020 # elif (GLM_ARCH & GLM_ARCH_NEON_BIT) && (GLM_MODEL == GLM_MODEL_64)
-
1021 # pragma message("GLM: ARM 64 bits with Neon instruction set build target")
-
1022 # elif (GLM_ARCH & GLM_ARCH_NEON_BIT) && (GLM_MODEL == GLM_MODEL_32)
-
1023 # pragma message("GLM: ARM 32 bits with Neon instruction set build target")
-
1024 
-
1025 # elif (GLM_ARCH & GLM_ARCH_ARM_BIT) && (GLM_MODEL == GLM_MODEL_64)
-
1026 # pragma message("GLM: ARM 64 bits build target")
-
1027 # elif (GLM_ARCH & GLM_ARCH_ARM_BIT) && (GLM_MODEL == GLM_MODEL_32)
-
1028 # pragma message("GLM: ARM 32 bits build target")
-
1029 
-
1030 # elif (GLM_ARCH & GLM_ARCH_MIPS_BIT) && (GLM_MODEL == GLM_MODEL_64)
-
1031 # pragma message("GLM: MIPS 64 bits build target")
-
1032 # elif (GLM_ARCH & GLM_ARCH_MIPS_BIT) && (GLM_MODEL == GLM_MODEL_32)
-
1033 # pragma message("GLM: MIPS 32 bits build target")
-
1034 
-
1035 # elif (GLM_ARCH & GLM_ARCH_PPC_BIT) && (GLM_MODEL == GLM_MODEL_64)
-
1036 # pragma message("GLM: PowerPC 64 bits build target")
-
1037 # elif (GLM_ARCH & GLM_ARCH_PPC_BIT) && (GLM_MODEL == GLM_MODEL_32)
-
1038 # pragma message("GLM: PowerPC 32 bits build target")
-
1039 # else
-
1040 # pragma message("GLM: Unknown build target")
-
1041 # endif//GLM_ARCH
-
1042 
-
1043  // Report platform name
-
1044 # if(GLM_PLATFORM & GLM_PLATFORM_QNXNTO)
-
1045 # pragma message("GLM: QNX platform detected")
-
1046 //# elif(GLM_PLATFORM & GLM_PLATFORM_IOS)
-
1047 //# pragma message("GLM: iOS platform detected")
-
1048 # elif(GLM_PLATFORM & GLM_PLATFORM_APPLE)
-
1049 # pragma message("GLM: Apple platform detected")
-
1050 # elif(GLM_PLATFORM & GLM_PLATFORM_WINCE)
-
1051 # pragma message("GLM: WinCE platform detected")
-
1052 # elif(GLM_PLATFORM & GLM_PLATFORM_WINDOWS)
-
1053 # pragma message("GLM: Windows platform detected")
-
1054 # elif(GLM_PLATFORM & GLM_PLATFORM_CHROME_NACL)
-
1055 # pragma message("GLM: Native Client detected")
-
1056 # elif(GLM_PLATFORM & GLM_PLATFORM_ANDROID)
-
1057 # pragma message("GLM: Android platform detected")
-
1058 # elif(GLM_PLATFORM & GLM_PLATFORM_LINUX)
-
1059 # pragma message("GLM: Linux platform detected")
-
1060 # elif(GLM_PLATFORM & GLM_PLATFORM_UNIX)
-
1061 # pragma message("GLM: UNIX platform detected")
-
1062 # elif(GLM_PLATFORM & GLM_PLATFORM_UNKNOWN)
-
1063 # pragma message("GLM: platform unknown")
-
1064 # else
-
1065 # pragma message("GLM: platform not detected")
-
1066 # endif
-
1067 
-
1068  // Report whether only xyzw component are used
-
1069 # if defined GLM_FORCE_XYZW_ONLY
-
1070 # pragma message("GLM: GLM_FORCE_XYZW_ONLY is defined. Only x, y, z and w component are available in vector type. This define disables swizzle operators and SIMD instruction sets.")
-
1071 # endif
-
1072 
-
1073  // Report swizzle operator support
-
1074 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
-
1075 # pragma message("GLM: GLM_FORCE_SWIZZLE is defined, swizzling operators enabled.")
-
1076 # elif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION
-
1077 # pragma message("GLM: GLM_FORCE_SWIZZLE is defined, swizzling functions enabled. Enable compiler C++ language extensions to enable swizzle operators.")
-
1078 # else
-
1079 # pragma message("GLM: GLM_FORCE_SWIZZLE is undefined. swizzling functions or operators are disabled.")
-
1080 # endif
-
1081 
-
1082  // Report .length() type
-
1083 # if GLM_CONFIG_LENGTH_TYPE == GLM_LENGTH_SIZE_T
-
1084 # pragma message("GLM: GLM_FORCE_SIZE_T_LENGTH is defined. .length() returns a glm::length_t, a typedef of std::size_t.")
-
1085 # else
-
1086 # pragma message("GLM: GLM_FORCE_SIZE_T_LENGTH is undefined. .length() returns a glm::length_t, a typedef of int following GLSL.")
-
1087 # endif
-
1088 
-
1089 # if GLM_CONFIG_UNRESTRICTED_GENTYPE == GLM_ENABLE
-
1090 # pragma message("GLM: GLM_FORCE_UNRESTRICTED_GENTYPE is defined. Removes GLSL restrictions on valid function genTypes.")
-
1091 # else
-
1092 # pragma message("GLM: GLM_FORCE_UNRESTRICTED_GENTYPE is undefined. Follows strictly GLSL on valid function genTypes.")
-
1093 # endif
-
1094 
-
1095 # if GLM_SILENT_WARNINGS == GLM_ENABLE
-
1096 # pragma message("GLM: GLM_FORCE_SILENT_WARNINGS is defined. Ignores C++ warnings from using C++ language extensions.")
-
1097 # else
-
1098 # pragma message("GLM: GLM_FORCE_SILENT_WARNINGS is undefined. Shows C++ warnings from using C++ language extensions.")
-
1099 # endif
-
1100 
-
1101 # ifdef GLM_FORCE_SINGLE_ONLY
-
1102 # pragma message("GLM: GLM_FORCE_SINGLE_ONLY is defined. Using only single precision floating-point types.")
-
1103 # endif
-
1104 
-
1105 # if defined(GLM_FORCE_ALIGNED_GENTYPES) && (GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE)
-
1106 # undef GLM_FORCE_ALIGNED_GENTYPES
-
1107 # pragma message("GLM: GLM_FORCE_ALIGNED_GENTYPES is defined, allowing aligned types. This prevents the use of C++ constexpr.")
-
1108 # elif defined(GLM_FORCE_ALIGNED_GENTYPES) && (GLM_CONFIG_ALIGNED_GENTYPES == GLM_DISABLE)
-
1109 # undef GLM_FORCE_ALIGNED_GENTYPES
-
1110 # pragma message("GLM: GLM_FORCE_ALIGNED_GENTYPES is defined but is disabled. It requires C++11 and language extensions.")
-
1111 # endif
-
1112 
-
1113 # if defined(GLM_FORCE_DEFAULT_ALIGNED_GENTYPES)
-
1114 # if GLM_CONFIG_ALIGNED_GENTYPES == GLM_DISABLE
-
1115 # undef GLM_FORCE_DEFAULT_ALIGNED_GENTYPES
-
1116 # pragma message("GLM: GLM_FORCE_DEFAULT_ALIGNED_GENTYPES is defined but is disabled. It requires C++11 and language extensions.")
-
1117 # elif GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE
-
1118 # pragma message("GLM: GLM_FORCE_DEFAULT_ALIGNED_GENTYPES is defined. All gentypes (e.g. vec3) will be aligned and padded by default.")
-
1119 # endif
-
1120 # endif
-
1121 
-
1122 # if GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_ZO_BIT
-
1123 # pragma message("GLM: GLM_FORCE_DEPTH_ZERO_TO_ONE is defined. Using zero to one depth clip space.")
-
1124 # else
-
1125 # pragma message("GLM: GLM_FORCE_DEPTH_ZERO_TO_ONE is undefined. Using negative one to one depth clip space.")
-
1126 # endif
-
1127 
-
1128 # if GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_LH_BIT
-
1129 # pragma message("GLM: GLM_FORCE_LEFT_HANDED is defined. Using left handed coordinate system.")
-
1130 # else
-
1131 # pragma message("GLM: GLM_FORCE_LEFT_HANDED is undefined. Using right handed coordinate system.")
-
1132 # endif
-
1133 #endif//GLM_MESSAGES
-
1134 
-
1135 #endif//GLM_SETUP_INCLUDED
-
int64 int64_t
64 bit signed integer type.
Definition: fwd.hpp:85
-
int8 int8_t
8 bit signed integer type.
Definition: fwd.hpp:43
-
uint32 uint32_t
Default qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:129
-
uint16 uint16_t
Default qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:115
-
uint8 uint8_t
Default qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:101
-
uint64 uint64_t
Default qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:143
-
int16 int16_t
16 bit signed integer type.
Definition: fwd.hpp:57
-
Definition: hash.hpp:49
-
int32 int32_t
32 bit signed integer type.
Definition: fwd.hpp:71
-
detail::uint64 uint64
64 bit unsigned integer type.
-
detail::int64 int64
64 bit signed integer type.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00154.html b/tests/OpenGL/package/glm/doc/api/a00154.html deleted file mode 100644 index 7da63a78..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00154.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - -0.9.9 API documentation: spline.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
spline.hpp File Reference
-
-
- -

GLM_GTX_spline -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_spline

-
See also
Core features (dependence)
- -

Definition in file spline.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00154_source.html b/tests/OpenGL/package/glm/doc/api/a00154_source.html deleted file mode 100644 index e2530bc3..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00154_source.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - -0.9.9 API documentation: spline.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
spline.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../glm.hpp"
-
17 #include "../gtx/optimum_pow.hpp"
-
18 
-
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
20 # ifndef GLM_ENABLE_EXPERIMENTAL
-
21 # pragma message("GLM: GLM_GTX_spline is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
22 # else
-
23 # pragma message("GLM: GLM_GTX_spline extension included")
-
24 # endif
-
25 #endif
-
26 
-
27 namespace glm
-
28 {
-
31 
-
34  template<typename genType>
-
35  GLM_FUNC_DECL genType catmullRom(
-
36  genType const& v1,
-
37  genType const& v2,
-
38  genType const& v3,
-
39  genType const& v4,
-
40  typename genType::value_type const& s);
-
41 
-
44  template<typename genType>
-
45  GLM_FUNC_DECL genType hermite(
-
46  genType const& v1,
-
47  genType const& t1,
-
48  genType const& v2,
-
49  genType const& t2,
-
50  typename genType::value_type const& s);
-
51 
-
54  template<typename genType>
-
55  GLM_FUNC_DECL genType cubic(
-
56  genType const& v1,
-
57  genType const& v2,
-
58  genType const& v3,
-
59  genType const& v4,
-
60  typename genType::value_type const& s);
-
61 
-
63 }//namespace glm
-
64 
-
65 #include "spline.inl"
-
GLM_FUNC_DECL genType hermite(genType const &v1, genType const &t1, genType const &v2, genType const &t2, typename genType::value_type const &s)
Return a point from a hermite curve.
-
GLM_FUNC_DECL genType cubic(genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
Return a point from a cubic curve.
-
GLM_FUNC_DECL genType catmullRom(genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
Return a point from a catmull rom curve.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00155.html b/tests/OpenGL/package/glm/doc/api/a00155.html deleted file mode 100644 index a193492b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00155.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - -0.9.9 API documentation: std_based_type.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
std_based_type.hpp File Reference
-
-
- -

GLM_GTX_std_based_type -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

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

Detailed Description

-

GLM_GTX_std_based_type

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

Definition in file std_based_type.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00155_source.html b/tests/OpenGL/package/glm/doc/api/a00155_source.html deleted file mode 100644 index 0f50c6fe..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00155_source.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - -0.9.9 API documentation: std_based_type.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
std_based_type.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../glm.hpp"
-
18 #include <cstdlib>
-
19 
-
20 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
21 # ifndef GLM_ENABLE_EXPERIMENTAL
-
22 # pragma message("GLM: GLM_GTX_std_based_type is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
23 # else
-
24 # pragma message("GLM: GLM_GTX_std_based_type extension included")
-
25 # endif
-
26 #endif
-
27 
-
28 namespace glm
-
29 {
-
32 
-
35  typedef vec<1, std::size_t, defaultp> size1;
-
36 
-
39  typedef vec<2, std::size_t, defaultp> size2;
-
40 
-
43  typedef vec<3, std::size_t, defaultp> size3;
-
44 
-
47  typedef vec<4, std::size_t, defaultp> size4;
-
48 
-
51  typedef vec<1, std::size_t, defaultp> size1_t;
-
52 
-
55  typedef vec<2, std::size_t, defaultp> size2_t;
-
56 
-
59  typedef vec<3, std::size_t, defaultp> size3_t;
-
60 
-
63  typedef vec<4, std::size_t, defaultp> size4_t;
-
64 
-
66 }//namespace glm
-
67 
-
68 #include "std_based_type.inl"
-
vec< 1, std::size_t, defaultp > size1
Vector type based of one std::size_t component.
-
vec< 3, std::size_t, defaultp > size3_t
Vector type based of three std::size_t components.
-
vec< 2, std::size_t, defaultp > size2_t
Vector type based of two std::size_t components.
-
vec< 4, std::size_t, defaultp > size4
Vector type based of four std::size_t components.
-
vec< 1, std::size_t, defaultp > size1_t
Vector type based of one std::size_t component.
-
vec< 3, std::size_t, defaultp > size3
Vector type based of three std::size_t components.
-
vec< 2, std::size_t, defaultp > size2
Vector type based of two std::size_t components.
-
vec< 4, std::size_t, defaultp > size4_t
Vector type based of four std::size_t components.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00156.html b/tests/OpenGL/package/glm/doc/api/a00156.html deleted file mode 100644 index ddaf252c..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00156.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: string_cast.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
string_cast.hpp File Reference
-
-
- -

GLM_GTX_string_cast -More...

- -

Go to the source code of this file.

- - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_string_cast

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

Definition in file string_cast.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00156_source.html b/tests/OpenGL/package/glm/doc/api/a00156_source.html deleted file mode 100644 index 4dba3bcd..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00156_source.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - -0.9.9 API documentation: string_cast.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
string_cast.hpp
-
-
-Go to the documentation of this file.
1 
-
17 #pragma once
-
18 
-
19 // Dependency:
-
20 #include "../glm.hpp"
-
21 #include "../gtc/type_precision.hpp"
-
22 #include "../gtc/quaternion.hpp"
-
23 #include "../gtx/dual_quaternion.hpp"
-
24 #include <string>
-
25 #include <cmath>
-
26 
-
27 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
28 # ifndef GLM_ENABLE_EXPERIMENTAL
-
29 # pragma message("GLM: GLM_GTX_string_cast is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
30 # else
-
31 # pragma message("GLM: GLM_GTX_string_cast extension included")
-
32 # endif
-
33 #endif
-
34 
-
35 #if(GLM_COMPILER & GLM_COMPILER_CUDA)
-
36 # error "GLM_GTX_string_cast is not supported on CUDA compiler"
-
37 #endif
-
38 
-
39 namespace glm
-
40 {
-
43 
-
46  template<typename genType>
-
47  GLM_FUNC_DECL std::string to_string(genType const& x);
-
48 
-
50 }//namespace glm
-
51 
-
52 #include "string_cast.inl"
-
GLM_FUNC_DECL std::string to_string(genType const &x)
Create a string from a GLM vector or matrix typed variable.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00157.html b/tests/OpenGL/package/glm/doc/api/a00157.html deleted file mode 100644 index 5a200203..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00157.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - -0.9.9 API documentation: texture.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
texture.hpp File Reference
-
-
- -

GLM_GTX_texture -More...

- -

Go to the source code of this file.

- - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_texture

-
See also
Core features (dependence)
- -

Definition in file texture.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00157_source.html b/tests/OpenGL/package/glm/doc/api/a00157_source.html deleted file mode 100644 index eabc4ba1..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00157_source.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - -0.9.9 API documentation: texture.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
texture.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../glm.hpp"
-
17 #include "../gtc/integer.hpp"
-
18 #include "../gtx/component_wise.hpp"
-
19 
-
20 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
21 # ifndef GLM_ENABLE_EXPERIMENTAL
-
22 # pragma message("GLM: GLM_GTX_texture is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
23 # else
-
24 # pragma message("GLM: GLM_GTX_texture extension included")
-
25 # endif
-
26 #endif
-
27 
-
28 namespace glm
-
29 {
-
32 
-
39  template <length_t L, typename T, qualifier Q>
-
40  T levels(vec<L, T, Q> const& Extent);
-
41 
-
43 }// namespace glm
-
44 
-
45 #include "texture.inl"
-
46 
-
T levels(vec< L, T, Q > const &Extent)
Compute the number of mipmaps levels necessary to create a mipmap complete texture.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00158.html b/tests/OpenGL/package/glm/doc/api/a00158.html deleted file mode 100644 index 99583720..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00158.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - -0.9.9 API documentation: transform.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
transform.hpp File Reference
-
-
- -

GLM_GTX_transform -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_transform

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

Definition in file transform.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00158_source.html b/tests/OpenGL/package/glm/doc/api/a00158_source.html deleted file mode 100644 index ce75b1ea..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00158_source.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - -0.9.9 API documentation: transform.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
transform.hpp
-
-
-Go to the documentation of this file.
1 
-
16 #pragma once
-
17 
-
18 // Dependency:
-
19 #include "../glm.hpp"
-
20 #include "../gtc/matrix_transform.hpp"
-
21 
-
22 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
23 # ifndef GLM_ENABLE_EXPERIMENTAL
-
24 # pragma message("GLM: GLM_GTX_transform is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
25 # else
-
26 # pragma message("GLM: GLM_GTX_transform extension included")
-
27 # endif
-
28 #endif
-
29 
-
30 namespace glm
-
31 {
-
34 
-
38  template<typename T, qualifier Q>
-
39  GLM_FUNC_DECL mat<4, 4, T, Q> translate(
-
40  vec<3, T, Q> const& v);
-
41 
-
45  template<typename T, qualifier Q>
-
46  GLM_FUNC_DECL mat<4, 4, T, Q> rotate(
-
47  T angle,
-
48  vec<3, T, Q> const& v);
-
49 
-
53  template<typename T, qualifier Q>
-
54  GLM_FUNC_DECL mat<4, 4, T, Q> scale(
-
55  vec<3, T, Q> const& v);
-
56 
-
58 }// namespace glm
-
59 
-
60 #include "transform.inl"
-
GLM_FUNC_DECL mat< 4, 4, T, Q > translate(vec< 3, T, Q > const &v)
Transforms a matrix with a translation 4 * 4 matrix created from 3 scalars.
-
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > scale(vec< 3, T, Q > const &v)
Transforms a matrix with a scale 4 * 4 matrix created from a vector of 3 components.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > rotate(T angle, vec< 3, T, Q > const &v)
Builds a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in radians...
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00159.html b/tests/OpenGL/package/glm/doc/api/a00159.html deleted file mode 100644 index 23a665a5..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00159.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - -0.9.9 API documentation: transform2.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
transform2.hpp File Reference
-
-
- -

GLM_GTX_transform2 -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_transform2

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

Definition in file transform2.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00159_source.html b/tests/OpenGL/package/glm/doc/api/a00159_source.html deleted file mode 100644 index 7724d4bf..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00159_source.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - -0.9.9 API documentation: transform2.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
transform2.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../glm.hpp"
-
18 #include "../gtx/transform.hpp"
-
19 
-
20 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
21 # ifndef GLM_ENABLE_EXPERIMENTAL
-
22 # pragma message("GLM: GLM_GTX_transform2 is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
23 # else
-
24 # pragma message("GLM: GLM_GTX_transform2 extension included")
-
25 # endif
-
26 #endif
-
27 
-
28 namespace glm
-
29 {
-
32 
-
35  template<typename T, qualifier Q>
-
36  GLM_FUNC_DECL mat<3, 3, T, Q> shearX2D(mat<3, 3, T, Q> const& m, T y);
-
37 
-
40  template<typename T, qualifier Q>
-
41  GLM_FUNC_DECL mat<3, 3, T, Q> shearY2D(mat<3, 3, T, Q> const& m, T x);
-
42 
-
45  template<typename T, qualifier Q>
-
46  GLM_FUNC_DECL mat<4, 4, T, Q> shearX3D(mat<4, 4, T, Q> const& m, T y, T z);
-
47 
-
50  template<typename T, qualifier Q>
-
51  GLM_FUNC_DECL mat<4, 4, T, Q> shearY3D(mat<4, 4, T, Q> const& m, T x, T z);
-
52 
-
55  template<typename T, qualifier Q>
-
56  GLM_FUNC_DECL mat<4, 4, T, Q> shearZ3D(mat<4, 4, T, Q> const& m, T x, T y);
-
57 
-
58  //template<typename T> GLM_FUNC_QUALIFIER mat<4, 4, T, Q> shear(const mat<4, 4, T, Q> & m, shearPlane, planePoint, angle)
-
59  // Identity + tan(angle) * cross(Normal, OnPlaneVector) 0
-
60  // - dot(PointOnPlane, normal) * OnPlaneVector 1
-
61 
-
62  // Reflect functions seem to don't work
-
63  //template<typename T> mat<3, 3, T, Q> reflect2D(const mat<3, 3, T, Q> & m, const vec<3, T, Q>& normal){return reflect2DGTX(m, normal);} //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension)
-
64  //template<typename T> mat<4, 4, T, Q> reflect3D(const mat<4, 4, T, Q> & m, const vec<3, T, Q>& normal){return reflect3DGTX(m, normal);} //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension)
-
65 
-
68  template<typename T, qualifier Q>
-
69  GLM_FUNC_DECL mat<3, 3, T, Q> proj2D(mat<3, 3, T, Q> const& m, vec<3, T, Q> const& normal);
-
70 
-
73  template<typename T, qualifier Q>
-
74  GLM_FUNC_DECL mat<4, 4, T, Q> proj3D(mat<4, 4, T, Q> const & m, vec<3, T, Q> const& normal);
-
75 
-
78  template<typename T, qualifier Q>
-
79  GLM_FUNC_DECL mat<4, 4, T, Q> scaleBias(T scale, T bias);
-
80 
-
83  template<typename T, qualifier Q>
-
84  GLM_FUNC_DECL mat<4, 4, T, Q> scaleBias(mat<4, 4, T, Q> const& m, T scale, T bias);
-
85 
-
87 }// namespace glm
-
88 
-
89 #include "transform2.inl"
-
GLM_FUNC_DECL mat< 3, 3, T, Q > shearX2D(mat< 3, 3, T, Q > const &m, T y)
Transforms a matrix with a shearing on X axis.
-
GLM_FUNC_DECL mat< 3, 3, T, Q > shearY2D(mat< 3, 3, T, Q > const &m, T x)
Transforms a matrix with a shearing on Y axis.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > proj3D(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &normal)
Build planar projection matrix along normal axis.
-
GLM_FUNC_DECL mat< 3, 3, T, Q > proj2D(mat< 3, 3, T, Q > const &m, vec< 3, T, Q > const &normal)
Build planar projection matrix along normal axis.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > shearZ3D(mat< 4, 4, T, Q > const &m, T x, T y)
Transforms a matrix with a shearing on Z axis.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > scale(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
Builds a scale 4 * 4 matrix created from 3 scalars.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > shearY3D(mat< 4, 4, T, Q > const &m, T x, T z)
Transforms a matrix with a shearing on Y axis.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > scaleBias(mat< 4, 4, T, Q > const &m, T scale, T bias)
Build a scale bias matrix.
-
GLM_FUNC_DECL mat< 4, 4, T, Q > shearX3D(mat< 4, 4, T, Q > const &m, T y, T z)
Transforms a matrix with a shearing on X axis From GLM_GTX_transform2 extension.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00160.html b/tests/OpenGL/package/glm/doc/api/a00160.html deleted file mode 100644 index b375eda0..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00160.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - -0.9.9 API documentation: trigonometric.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
trigonometric.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

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

GLM_GTC_type_aligned -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

-typedef aligned_highp_bvec1 aligned_bvec1
 1 component vector aligned in memory of bool values.
 
-typedef aligned_highp_bvec2 aligned_bvec2
 2 components vector aligned in memory of bool values.
 
-typedef aligned_highp_bvec3 aligned_bvec3
 3 components vector aligned in memory of bool values.
 
-typedef aligned_highp_bvec4 aligned_bvec4
 4 components vector aligned in memory of bool values.
 
-typedef aligned_highp_dmat2 aligned_dmat2
 2 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat2x2 aligned_dmat2x2
 2 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat2x3 aligned_dmat2x3
 2 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat2x4 aligned_dmat2x4
 2 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat3 aligned_dmat3
 3 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat3x2 aligned_dmat3x2
 3 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat3x3 aligned_dmat3x3
 3 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat3x4 aligned_dmat3x4
 3 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat4 aligned_dmat4
 4 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat4x2 aligned_dmat4x2
 4 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat4x3 aligned_dmat4x3
 4 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat4x4 aligned_dmat4x4
 4 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dvec1 aligned_dvec1
 1 component vector aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dvec2 aligned_dvec2
 2 components vector aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dvec3 aligned_dvec3
 3 components vector aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dvec4 aligned_dvec4
 4 components vector aligned in memory of double-precision floating-point numbers.
 
-typedef vec< 1, bool, aligned_highp > aligned_highp_bvec1
 1 component vector aligned in memory of bool values.
 
-typedef vec< 2, bool, aligned_highp > aligned_highp_bvec2
 2 components vector aligned in memory of bool values.
 
-typedef vec< 3, bool, aligned_highp > aligned_highp_bvec3
 3 components vector aligned in memory of bool values.
 
-typedef vec< 4, bool, aligned_highp > aligned_highp_bvec4
 4 components vector aligned in memory of bool values.
 
-typedef mat< 2, 2, double, aligned_highp > aligned_highp_dmat2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, double, aligned_highp > aligned_highp_dmat2x2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, double, aligned_highp > aligned_highp_dmat2x3
 2 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, double, aligned_highp > aligned_highp_dmat2x4
 2 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, aligned_highp > aligned_highp_dmat3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, double, aligned_highp > aligned_highp_dmat3x2
 3 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, aligned_highp > aligned_highp_dmat3x3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, double, aligned_highp > aligned_highp_dmat3x4
 3 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, aligned_highp > aligned_highp_dmat4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, double, aligned_highp > aligned_highp_dmat4x2
 4 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, double, aligned_highp > aligned_highp_dmat4x3
 4 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, aligned_highp > aligned_highp_dmat4x4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 1, double, aligned_highp > aligned_highp_dvec1
 1 component vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 2, double, aligned_highp > aligned_highp_dvec2
 2 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 3, double, aligned_highp > aligned_highp_dvec3
 3 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 4, double, aligned_highp > aligned_highp_dvec4
 4 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 1, int, aligned_highp > aligned_highp_ivec1
 1 component vector aligned in memory of signed integer numbers.
 
-typedef vec< 2, int, aligned_highp > aligned_highp_ivec2
 2 components vector aligned in memory of signed integer numbers.
 
-typedef vec< 3, int, aligned_highp > aligned_highp_ivec3
 3 components vector aligned in memory of signed integer numbers.
 
-typedef vec< 4, int, aligned_highp > aligned_highp_ivec4
 4 components vector aligned in memory of signed integer numbers.
 
-typedef mat< 2, 2, float, aligned_highp > aligned_highp_mat2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, float, aligned_highp > aligned_highp_mat2x2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, float, aligned_highp > aligned_highp_mat2x3
 2 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, float, aligned_highp > aligned_highp_mat2x4
 2 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, aligned_highp > aligned_highp_mat3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, float, aligned_highp > aligned_highp_mat3x2
 3 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, aligned_highp > aligned_highp_mat3x3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, float, aligned_highp > aligned_highp_mat3x4
 3 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, aligned_highp > aligned_highp_mat4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, float, aligned_highp > aligned_highp_mat4x2
 4 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, float, aligned_highp > aligned_highp_mat4x3
 4 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, aligned_highp > aligned_highp_mat4x4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 1, uint, aligned_highp > aligned_highp_uvec1
 1 component vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 2, uint, aligned_highp > aligned_highp_uvec2
 2 components vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 3, uint, aligned_highp > aligned_highp_uvec3
 3 components vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 4, uint, aligned_highp > aligned_highp_uvec4
 4 components vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 1, float, aligned_highp > aligned_highp_vec1
 1 component vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 2, float, aligned_highp > aligned_highp_vec2
 2 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 3, float, aligned_highp > aligned_highp_vec3
 3 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 4, float, aligned_highp > aligned_highp_vec4
 4 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef aligned_highp_ivec1 aligned_ivec1
 1 component vector aligned in memory of signed integer numbers.
 
-typedef aligned_highp_ivec2 aligned_ivec2
 2 components vector aligned in memory of signed integer numbers.
 
-typedef aligned_highp_ivec3 aligned_ivec3
 3 components vector aligned in memory of signed integer numbers.
 
-typedef aligned_highp_ivec4 aligned_ivec4
 4 components vector aligned in memory of signed integer numbers.
 
-typedef vec< 1, bool, aligned_lowp > aligned_lowp_bvec1
 1 component vector aligned in memory of bool values.
 
-typedef vec< 2, bool, aligned_lowp > aligned_lowp_bvec2
 2 components vector aligned in memory of bool values.
 
-typedef vec< 3, bool, aligned_lowp > aligned_lowp_bvec3
 3 components vector aligned in memory of bool values.
 
-typedef vec< 4, bool, aligned_lowp > aligned_lowp_bvec4
 4 components vector aligned in memory of bool values.
 
-typedef mat< 2, 2, double, aligned_lowp > aligned_lowp_dmat2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, double, aligned_lowp > aligned_lowp_dmat2x2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, double, aligned_lowp > aligned_lowp_dmat2x3
 2 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, double, aligned_lowp > aligned_lowp_dmat2x4
 2 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, aligned_lowp > aligned_lowp_dmat3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, double, aligned_lowp > aligned_lowp_dmat3x2
 3 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, aligned_lowp > aligned_lowp_dmat3x3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, double, aligned_lowp > aligned_lowp_dmat3x4
 3 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, aligned_lowp > aligned_lowp_dmat4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, double, aligned_lowp > aligned_lowp_dmat4x2
 4 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, double, aligned_lowp > aligned_lowp_dmat4x3
 4 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, aligned_lowp > aligned_lowp_dmat4x4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 1, double, aligned_lowp > aligned_lowp_dvec1
 1 component vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 2, double, aligned_lowp > aligned_lowp_dvec2
 2 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 3, double, aligned_lowp > aligned_lowp_dvec3
 3 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 4, double, aligned_lowp > aligned_lowp_dvec4
 4 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 1, int, aligned_lowp > aligned_lowp_ivec1
 1 component vector aligned in memory of signed integer numbers.
 
-typedef vec< 2, int, aligned_lowp > aligned_lowp_ivec2
 2 components vector aligned in memory of signed integer numbers.
 
-typedef vec< 3, int, aligned_lowp > aligned_lowp_ivec3
 3 components vector aligned in memory of signed integer numbers.
 
-typedef vec< 4, int, aligned_lowp > aligned_lowp_ivec4
 4 components vector aligned in memory of signed integer numbers.
 
-typedef mat< 2, 2, float, aligned_lowp > aligned_lowp_mat2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, float, aligned_lowp > aligned_lowp_mat2x2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, float, aligned_lowp > aligned_lowp_mat2x3
 2 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, float, aligned_lowp > aligned_lowp_mat2x4
 2 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, aligned_lowp > aligned_lowp_mat3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, float, aligned_lowp > aligned_lowp_mat3x2
 3 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, aligned_lowp > aligned_lowp_mat3x3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, float, aligned_lowp > aligned_lowp_mat3x4
 3 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, aligned_lowp > aligned_lowp_mat4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, float, aligned_lowp > aligned_lowp_mat4x2
 4 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, float, aligned_lowp > aligned_lowp_mat4x3
 4 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, aligned_lowp > aligned_lowp_mat4x4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 1, uint, aligned_lowp > aligned_lowp_uvec1
 1 component vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 2, uint, aligned_lowp > aligned_lowp_uvec2
 2 components vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 3, uint, aligned_lowp > aligned_lowp_uvec3
 3 components vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 4, uint, aligned_lowp > aligned_lowp_uvec4
 4 components vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 1, float, aligned_lowp > aligned_lowp_vec1
 1 component vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 2, float, aligned_lowp > aligned_lowp_vec2
 2 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 3, float, aligned_lowp > aligned_lowp_vec3
 3 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 4, float, aligned_lowp > aligned_lowp_vec4
 4 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef aligned_highp_mat2 aligned_mat2
 2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat2x2 aligned_mat2x2
 2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat2x3 aligned_mat2x3
 2 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat2x4 aligned_mat2x4
 2 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat3 aligned_mat3
 3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat3x2 aligned_mat3x2
 3 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat3x3 aligned_mat3x3
 3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat3x4 aligned_mat3x4
 3 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat4 aligned_mat4
 4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat4x2 aligned_mat4x2
 4 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat4x3 aligned_mat4x3
 4 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat4x4 aligned_mat4x4
 4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef vec< 1, bool, aligned_mediump > aligned_mediump_bvec1
 1 component vector aligned in memory of bool values.
 
-typedef vec< 2, bool, aligned_mediump > aligned_mediump_bvec2
 2 components vector aligned in memory of bool values.
 
-typedef vec< 3, bool, aligned_mediump > aligned_mediump_bvec3
 3 components vector aligned in memory of bool values.
 
-typedef vec< 4, bool, aligned_mediump > aligned_mediump_bvec4
 4 components vector aligned in memory of bool values.
 
-typedef mat< 2, 2, double, aligned_mediump > aligned_mediump_dmat2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, double, aligned_mediump > aligned_mediump_dmat2x2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, double, aligned_mediump > aligned_mediump_dmat2x3
 2 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, double, aligned_mediump > aligned_mediump_dmat2x4
 2 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, aligned_mediump > aligned_mediump_dmat3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, double, aligned_mediump > aligned_mediump_dmat3x2
 3 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, aligned_mediump > aligned_mediump_dmat3x3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, double, aligned_mediump > aligned_mediump_dmat3x4
 3 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, aligned_mediump > aligned_mediump_dmat4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, double, aligned_mediump > aligned_mediump_dmat4x2
 4 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, double, aligned_mediump > aligned_mediump_dmat4x3
 4 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, aligned_mediump > aligned_mediump_dmat4x4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 1, double, aligned_mediump > aligned_mediump_dvec1
 1 component vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 2, double, aligned_mediump > aligned_mediump_dvec2
 2 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 3, double, aligned_mediump > aligned_mediump_dvec3
 3 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 4, double, aligned_mediump > aligned_mediump_dvec4
 4 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 1, int, aligned_mediump > aligned_mediump_ivec1
 1 component vector aligned in memory of signed integer numbers.
 
-typedef vec< 2, int, aligned_mediump > aligned_mediump_ivec2
 2 components vector aligned in memory of signed integer numbers.
 
-typedef vec< 3, int, aligned_mediump > aligned_mediump_ivec3
 3 components vector aligned in memory of signed integer numbers.
 
-typedef vec< 4, int, aligned_mediump > aligned_mediump_ivec4
 4 components vector aligned in memory of signed integer numbers.
 
-typedef mat< 2, 2, float, aligned_mediump > aligned_mediump_mat2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, float, aligned_mediump > aligned_mediump_mat2x2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, float, aligned_mediump > aligned_mediump_mat2x3
 2 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, float, aligned_mediump > aligned_mediump_mat2x4
 2 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, aligned_mediump > aligned_mediump_mat3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, float, aligned_mediump > aligned_mediump_mat3x2
 3 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, aligned_mediump > aligned_mediump_mat3x3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, float, aligned_mediump > aligned_mediump_mat3x4
 3 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, aligned_mediump > aligned_mediump_mat4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, float, aligned_mediump > aligned_mediump_mat4x2
 4 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, float, aligned_mediump > aligned_mediump_mat4x3
 4 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, aligned_mediump > aligned_mediump_mat4x4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 1, uint, aligned_mediump > aligned_mediump_uvec1
 1 component vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 2, uint, aligned_mediump > aligned_mediump_uvec2
 2 components vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 3, uint, aligned_mediump > aligned_mediump_uvec3
 3 components vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 4, uint, aligned_mediump > aligned_mediump_uvec4
 4 components vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 1, float, aligned_mediump > aligned_mediump_vec1
 1 component vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 2, float, aligned_mediump > aligned_mediump_vec2
 2 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 3, float, aligned_mediump > aligned_mediump_vec3
 3 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 4, float, aligned_mediump > aligned_mediump_vec4
 4 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef aligned_highp_uvec1 aligned_uvec1
 1 component vector aligned in memory of unsigned integer numbers.
 
-typedef aligned_highp_uvec2 aligned_uvec2
 2 components vector aligned in memory of unsigned integer numbers.
 
-typedef aligned_highp_uvec3 aligned_uvec3
 3 components vector aligned in memory of unsigned integer numbers.
 
-typedef aligned_highp_uvec4 aligned_uvec4
 4 components vector aligned in memory of unsigned integer numbers.
 
-typedef aligned_highp_vec1 aligned_vec1
 1 component vector aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_vec2 aligned_vec2
 2 components vector aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_vec3 aligned_vec3
 3 components vector aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_vec4 aligned_vec4
 4 components vector aligned in memory of single-precision floating-point numbers.
 
-typedef packed_highp_bvec1 packed_bvec1
 1 components vector tightly packed in memory of bool values.
 
-typedef packed_highp_bvec2 packed_bvec2
 2 components vector tightly packed in memory of bool values.
 
-typedef packed_highp_bvec3 packed_bvec3
 3 components vector tightly packed in memory of bool values.
 
-typedef packed_highp_bvec4 packed_bvec4
 4 components vector tightly packed in memory of bool values.
 
-typedef packed_highp_dmat2 packed_dmat2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat2x2 packed_dmat2x2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat2x3 packed_dmat2x3
 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat2x4 packed_dmat2x4
 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat3 packed_dmat3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat3x2 packed_dmat3x2
 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat3x3 packed_dmat3x3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat3x4 packed_dmat3x4
 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat4 packed_dmat4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat4x2 packed_dmat4x2
 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat4x3 packed_dmat4x3
 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat4x4 packed_dmat4x4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dvec1 packed_dvec1
 1 component vector tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dvec2 packed_dvec2
 2 components vector tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dvec3 packed_dvec3
 3 components vector tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dvec4 packed_dvec4
 4 components vector tightly packed in memory of double-precision floating-point numbers.
 
-typedef vec< 1, bool, packed_highp > packed_highp_bvec1
 1 component vector tightly packed in memory of bool values.
 
-typedef vec< 2, bool, packed_highp > packed_highp_bvec2
 2 components vector tightly packed in memory of bool values.
 
-typedef vec< 3, bool, packed_highp > packed_highp_bvec3
 3 components vector tightly packed in memory of bool values.
 
-typedef vec< 4, bool, packed_highp > packed_highp_bvec4
 4 components vector tightly packed in memory of bool values.
 
-typedef mat< 2, 2, double, packed_highp > packed_highp_dmat2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, double, packed_highp > packed_highp_dmat2x2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, double, packed_highp > packed_highp_dmat2x3
 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, double, packed_highp > packed_highp_dmat2x4
 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, packed_highp > packed_highp_dmat3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, double, packed_highp > packed_highp_dmat3x2
 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, packed_highp > packed_highp_dmat3x3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, double, packed_highp > packed_highp_dmat3x4
 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, packed_highp > packed_highp_dmat4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, double, packed_highp > packed_highp_dmat4x2
 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, double, packed_highp > packed_highp_dmat4x3
 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, packed_highp > packed_highp_dmat4x4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 1, double, packed_highp > packed_highp_dvec1
 1 component vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 2, double, packed_highp > packed_highp_dvec2
 2 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 3, double, packed_highp > packed_highp_dvec3
 3 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 4, double, packed_highp > packed_highp_dvec4
 4 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 1, int, packed_highp > packed_highp_ivec1
 1 component vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 2, int, packed_highp > packed_highp_ivec2
 2 components vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 3, int, packed_highp > packed_highp_ivec3
 3 components vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 4, int, packed_highp > packed_highp_ivec4
 4 components vector tightly packed in memory of signed integer numbers.
 
-typedef mat< 2, 2, float, packed_highp > packed_highp_mat2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, float, packed_highp > packed_highp_mat2x2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, float, packed_highp > packed_highp_mat2x3
 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, float, packed_highp > packed_highp_mat2x4
 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, packed_highp > packed_highp_mat3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, float, packed_highp > packed_highp_mat3x2
 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, packed_highp > packed_highp_mat3x3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, float, packed_highp > packed_highp_mat3x4
 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, packed_highp > packed_highp_mat4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, float, packed_highp > packed_highp_mat4x2
 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, float, packed_highp > packed_highp_mat4x3
 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, packed_highp > packed_highp_mat4x4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 1, uint, packed_highp > packed_highp_uvec1
 1 component vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 2, uint, packed_highp > packed_highp_uvec2
 2 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 3, uint, packed_highp > packed_highp_uvec3
 3 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 4, uint, packed_highp > packed_highp_uvec4
 4 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 1, float, packed_highp > packed_highp_vec1
 1 component vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 2, float, packed_highp > packed_highp_vec2
 2 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 3, float, packed_highp > packed_highp_vec3
 3 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 4, float, packed_highp > packed_highp_vec4
 4 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef packed_highp_ivec1 packed_ivec1
 1 component vector tightly packed in memory of signed integer numbers.
 
-typedef packed_highp_ivec2 packed_ivec2
 2 components vector tightly packed in memory of signed integer numbers.
 
-typedef packed_highp_ivec3 packed_ivec3
 3 components vector tightly packed in memory of signed integer numbers.
 
-typedef packed_highp_ivec4 packed_ivec4
 4 components vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 1, bool, packed_lowp > packed_lowp_bvec1
 1 component vector tightly packed in memory of bool values.
 
-typedef vec< 2, bool, packed_lowp > packed_lowp_bvec2
 2 components vector tightly packed in memory of bool values.
 
-typedef vec< 3, bool, packed_lowp > packed_lowp_bvec3
 3 components vector tightly packed in memory of bool values.
 
-typedef vec< 4, bool, packed_lowp > packed_lowp_bvec4
 4 components vector tightly packed in memory of bool values.
 
-typedef mat< 2, 2, double, packed_lowp > packed_lowp_dmat2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, double, packed_lowp > packed_lowp_dmat2x2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, double, packed_lowp > packed_lowp_dmat2x3
 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, double, packed_lowp > packed_lowp_dmat2x4
 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, packed_lowp > packed_lowp_dmat3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, double, packed_lowp > packed_lowp_dmat3x2
 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, packed_lowp > packed_lowp_dmat3x3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, double, packed_lowp > packed_lowp_dmat3x4
 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, packed_lowp > packed_lowp_dmat4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, double, packed_lowp > packed_lowp_dmat4x2
 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, double, packed_lowp > packed_lowp_dmat4x3
 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, packed_lowp > packed_lowp_dmat4x4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 1, double, packed_lowp > packed_lowp_dvec1
 1 component vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 2, double, packed_lowp > packed_lowp_dvec2
 2 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 3, double, packed_lowp > packed_lowp_dvec3
 3 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 4, double, packed_lowp > packed_lowp_dvec4
 4 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 1, int, packed_lowp > packed_lowp_ivec1
 1 component vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 2, int, packed_lowp > packed_lowp_ivec2
 2 components vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 3, int, packed_lowp > packed_lowp_ivec3
 3 components vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 4, int, packed_lowp > packed_lowp_ivec4
 4 components vector tightly packed in memory of signed integer numbers.
 
-typedef mat< 2, 2, float, packed_lowp > packed_lowp_mat2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, float, packed_lowp > packed_lowp_mat2x2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, float, packed_lowp > packed_lowp_mat2x3
 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, float, packed_lowp > packed_lowp_mat2x4
 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, packed_lowp > packed_lowp_mat3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, float, packed_lowp > packed_lowp_mat3x2
 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, packed_lowp > packed_lowp_mat3x3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, float, packed_lowp > packed_lowp_mat3x4
 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, packed_lowp > packed_lowp_mat4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, float, packed_lowp > packed_lowp_mat4x2
 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, float, packed_lowp > packed_lowp_mat4x3
 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, packed_lowp > packed_lowp_mat4x4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 1, uint, packed_lowp > packed_lowp_uvec1
 1 component vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 2, uint, packed_lowp > packed_lowp_uvec2
 2 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 3, uint, packed_lowp > packed_lowp_uvec3
 3 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 4, uint, packed_lowp > packed_lowp_uvec4
 4 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 1, float, packed_lowp > packed_lowp_vec1
 1 component vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 2, float, packed_lowp > packed_lowp_vec2
 2 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 3, float, packed_lowp > packed_lowp_vec3
 3 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 4, float, packed_lowp > packed_lowp_vec4
 4 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef packed_highp_mat2 packed_mat2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat2x2 packed_mat2x2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat2x3 packed_mat2x3
 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat2x4 packed_mat2x4
 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat3 packed_mat3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat3x2 packed_mat3x2
 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat3x3 packed_mat3x3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat3x4 packed_mat3x4
 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat4 packed_mat4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat4x2 packed_mat4x2
 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat4x3 packed_mat4x3
 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat4x4 packed_mat4x4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef vec< 1, bool, packed_mediump > packed_mediump_bvec1
 1 component vector tightly packed in memory of bool values.
 
-typedef vec< 2, bool, packed_mediump > packed_mediump_bvec2
 2 components vector tightly packed in memory of bool values.
 
-typedef vec< 3, bool, packed_mediump > packed_mediump_bvec3
 3 components vector tightly packed in memory of bool values.
 
-typedef vec< 4, bool, packed_mediump > packed_mediump_bvec4
 4 components vector tightly packed in memory of bool values.
 
-typedef mat< 2, 2, double, packed_mediump > packed_mediump_dmat2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, double, packed_mediump > packed_mediump_dmat2x2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, double, packed_mediump > packed_mediump_dmat2x3
 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, double, packed_mediump > packed_mediump_dmat2x4
 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, packed_mediump > packed_mediump_dmat3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, double, packed_mediump > packed_mediump_dmat3x2
 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, packed_mediump > packed_mediump_dmat3x3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, double, packed_mediump > packed_mediump_dmat3x4
 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, packed_mediump > packed_mediump_dmat4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, double, packed_mediump > packed_mediump_dmat4x2
 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, double, packed_mediump > packed_mediump_dmat4x3
 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, packed_mediump > packed_mediump_dmat4x4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 1, double, packed_mediump > packed_mediump_dvec1
 1 component vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 2, double, packed_mediump > packed_mediump_dvec2
 2 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 3, double, packed_mediump > packed_mediump_dvec3
 3 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 4, double, packed_mediump > packed_mediump_dvec4
 4 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 1, int, packed_mediump > packed_mediump_ivec1
 1 component vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 2, int, packed_mediump > packed_mediump_ivec2
 2 components vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 3, int, packed_mediump > packed_mediump_ivec3
 3 components vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 4, int, packed_mediump > packed_mediump_ivec4
 4 components vector tightly packed in memory of signed integer numbers.
 
-typedef mat< 2, 2, float, packed_mediump > packed_mediump_mat2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, float, packed_mediump > packed_mediump_mat2x2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, float, packed_mediump > packed_mediump_mat2x3
 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, float, packed_mediump > packed_mediump_mat2x4
 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, packed_mediump > packed_mediump_mat3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, float, packed_mediump > packed_mediump_mat3x2
 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, packed_mediump > packed_mediump_mat3x3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, float, packed_mediump > packed_mediump_mat3x4
 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, packed_mediump > packed_mediump_mat4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, float, packed_mediump > packed_mediump_mat4x2
 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, float, packed_mediump > packed_mediump_mat4x3
 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, packed_mediump > packed_mediump_mat4x4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 1, uint, packed_mediump > packed_mediump_uvec1
 1 component vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 2, uint, packed_mediump > packed_mediump_uvec2
 2 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 3, uint, packed_mediump > packed_mediump_uvec3
 3 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 4, uint, packed_mediump > packed_mediump_uvec4
 4 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 1, float, packed_mediump > packed_mediump_vec1
 1 component vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 2, float, packed_mediump > packed_mediump_vec2
 2 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 3, float, packed_mediump > packed_mediump_vec3
 3 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 4, float, packed_mediump > packed_mediump_vec4
 4 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef packed_highp_uvec1 packed_uvec1
 1 component vector tightly packed in memory of unsigned integer numbers.
 
-typedef packed_highp_uvec2 packed_uvec2
 2 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef packed_highp_uvec3 packed_uvec3
 3 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef packed_highp_uvec4 packed_uvec4
 4 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef packed_highp_vec1 packed_vec1
 1 component vector tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_vec2 packed_vec2
 2 components vector tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_vec3 packed_vec3
 3 components vector tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_vec4 packed_vec4
 4 components vector tightly packed in memory of single-precision floating-point numbers.
 
-

Detailed Description

-

GLM_GTC_type_aligned

-
See also
Core features (dependence)
- -

Definition in file gtc/type_aligned.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00161_source.html b/tests/OpenGL/package/glm/doc/api/a00161_source.html deleted file mode 100644 index e3fac6e1..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00161_source.html +++ /dev/null @@ -1,1401 +0,0 @@ - - - - - - -0.9.9 API documentation: type_aligned.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
gtc/type_aligned.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 #if (GLM_CONFIG_ALIGNED_GENTYPES == GLM_DISABLE)
-
16 # error "GLM: Aligned gentypes require to enable C++ language extensions. Define GLM_FORCE_ALIGNED_GENTYPES before including GLM headers to use aligned types."
-
17 #endif
-
18 
-
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
20 # pragma message("GLM: GLM_GTC_type_aligned extension included")
-
21 #endif
-
22 
-
23 #include "../mat4x4.hpp"
-
24 #include "../mat4x3.hpp"
-
25 #include "../mat4x2.hpp"
-
26 #include "../mat3x4.hpp"
-
27 #include "../mat3x3.hpp"
-
28 #include "../mat3x2.hpp"
-
29 #include "../mat2x4.hpp"
-
30 #include "../mat2x3.hpp"
-
31 #include "../mat2x2.hpp"
-
32 #include "../gtc/vec1.hpp"
-
33 #include "../vec2.hpp"
-
34 #include "../vec3.hpp"
-
35 #include "../vec4.hpp"
-
36 
-
37 namespace glm
-
38 {
-
41 
-
42  // -- *vec1 --
-
43 
-
45  typedef vec<1, float, aligned_highp> aligned_highp_vec1;
-
46 
-
48  typedef vec<1, float, aligned_mediump> aligned_mediump_vec1;
-
49 
-
51  typedef vec<1, float, aligned_lowp> aligned_lowp_vec1;
-
52 
-
54  typedef vec<1, double, aligned_highp> aligned_highp_dvec1;
-
55 
-
57  typedef vec<1, double, aligned_mediump> aligned_mediump_dvec1;
-
58 
-
60  typedef vec<1, double, aligned_lowp> aligned_lowp_dvec1;
-
61 
-
63  typedef vec<1, int, aligned_highp> aligned_highp_ivec1;
-
64 
-
66  typedef vec<1, int, aligned_mediump> aligned_mediump_ivec1;
-
67 
-
69  typedef vec<1, int, aligned_lowp> aligned_lowp_ivec1;
-
70 
-
72  typedef vec<1, uint, aligned_highp> aligned_highp_uvec1;
-
73 
-
75  typedef vec<1, uint, aligned_mediump> aligned_mediump_uvec1;
-
76 
-
78  typedef vec<1, uint, aligned_lowp> aligned_lowp_uvec1;
-
79 
-
81  typedef vec<1, bool, aligned_highp> aligned_highp_bvec1;
-
82 
-
84  typedef vec<1, bool, aligned_mediump> aligned_mediump_bvec1;
-
85 
-
87  typedef vec<1, bool, aligned_lowp> aligned_lowp_bvec1;
-
88 
-
90  typedef vec<1, float, packed_highp> packed_highp_vec1;
-
91 
-
93  typedef vec<1, float, packed_mediump> packed_mediump_vec1;
-
94 
-
96  typedef vec<1, float, packed_lowp> packed_lowp_vec1;
-
97 
-
99  typedef vec<1, double, packed_highp> packed_highp_dvec1;
-
100 
-
102  typedef vec<1, double, packed_mediump> packed_mediump_dvec1;
-
103 
-
105  typedef vec<1, double, packed_lowp> packed_lowp_dvec1;
-
106 
-
108  typedef vec<1, int, packed_highp> packed_highp_ivec1;
-
109 
-
111  typedef vec<1, int, packed_mediump> packed_mediump_ivec1;
-
112 
-
114  typedef vec<1, int, packed_lowp> packed_lowp_ivec1;
-
115 
-
117  typedef vec<1, uint, packed_highp> packed_highp_uvec1;
-
118 
-
120  typedef vec<1, uint, packed_mediump> packed_mediump_uvec1;
-
121 
-
123  typedef vec<1, uint, packed_lowp> packed_lowp_uvec1;
-
124 
-
126  typedef vec<1, bool, packed_highp> packed_highp_bvec1;
-
127 
-
129  typedef vec<1, bool, packed_mediump> packed_mediump_bvec1;
-
130 
-
132  typedef vec<1, bool, packed_lowp> packed_lowp_bvec1;
-
133 
-
134  // -- *vec2 --
-
135 
-
137  typedef vec<2, float, aligned_highp> aligned_highp_vec2;
-
138 
-
140  typedef vec<2, float, aligned_mediump> aligned_mediump_vec2;
-
141 
-
143  typedef vec<2, float, aligned_lowp> aligned_lowp_vec2;
-
144 
-
146  typedef vec<2, double, aligned_highp> aligned_highp_dvec2;
-
147 
-
149  typedef vec<2, double, aligned_mediump> aligned_mediump_dvec2;
-
150 
-
152  typedef vec<2, double, aligned_lowp> aligned_lowp_dvec2;
-
153 
-
155  typedef vec<2, int, aligned_highp> aligned_highp_ivec2;
-
156 
-
158  typedef vec<2, int, aligned_mediump> aligned_mediump_ivec2;
-
159 
-
161  typedef vec<2, int, aligned_lowp> aligned_lowp_ivec2;
-
162 
-
164  typedef vec<2, uint, aligned_highp> aligned_highp_uvec2;
-
165 
-
167  typedef vec<2, uint, aligned_mediump> aligned_mediump_uvec2;
-
168 
-
170  typedef vec<2, uint, aligned_lowp> aligned_lowp_uvec2;
-
171 
-
173  typedef vec<2, bool, aligned_highp> aligned_highp_bvec2;
-
174 
-
176  typedef vec<2, bool, aligned_mediump> aligned_mediump_bvec2;
-
177 
-
179  typedef vec<2, bool, aligned_lowp> aligned_lowp_bvec2;
-
180 
-
182  typedef vec<2, float, packed_highp> packed_highp_vec2;
-
183 
-
185  typedef vec<2, float, packed_mediump> packed_mediump_vec2;
-
186 
-
188  typedef vec<2, float, packed_lowp> packed_lowp_vec2;
-
189 
-
191  typedef vec<2, double, packed_highp> packed_highp_dvec2;
-
192 
-
194  typedef vec<2, double, packed_mediump> packed_mediump_dvec2;
-
195 
-
197  typedef vec<2, double, packed_lowp> packed_lowp_dvec2;
-
198 
-
200  typedef vec<2, int, packed_highp> packed_highp_ivec2;
-
201 
-
203  typedef vec<2, int, packed_mediump> packed_mediump_ivec2;
-
204 
-
206  typedef vec<2, int, packed_lowp> packed_lowp_ivec2;
-
207 
-
209  typedef vec<2, uint, packed_highp> packed_highp_uvec2;
-
210 
-
212  typedef vec<2, uint, packed_mediump> packed_mediump_uvec2;
-
213 
-
215  typedef vec<2, uint, packed_lowp> packed_lowp_uvec2;
-
216 
-
218  typedef vec<2, bool, packed_highp> packed_highp_bvec2;
-
219 
-
221  typedef vec<2, bool, packed_mediump> packed_mediump_bvec2;
-
222 
-
224  typedef vec<2, bool, packed_lowp> packed_lowp_bvec2;
-
225 
-
226  // -- *vec3 --
-
227 
-
229  typedef vec<3, float, aligned_highp> aligned_highp_vec3;
-
230 
-
232  typedef vec<3, float, aligned_mediump> aligned_mediump_vec3;
-
233 
-
235  typedef vec<3, float, aligned_lowp> aligned_lowp_vec3;
-
236 
-
238  typedef vec<3, double, aligned_highp> aligned_highp_dvec3;
-
239 
-
241  typedef vec<3, double, aligned_mediump> aligned_mediump_dvec3;
-
242 
-
244  typedef vec<3, double, aligned_lowp> aligned_lowp_dvec3;
-
245 
-
247  typedef vec<3, int, aligned_highp> aligned_highp_ivec3;
-
248 
-
250  typedef vec<3, int, aligned_mediump> aligned_mediump_ivec3;
-
251 
-
253  typedef vec<3, int, aligned_lowp> aligned_lowp_ivec3;
-
254 
-
256  typedef vec<3, uint, aligned_highp> aligned_highp_uvec3;
-
257 
-
259  typedef vec<3, uint, aligned_mediump> aligned_mediump_uvec3;
-
260 
-
262  typedef vec<3, uint, aligned_lowp> aligned_lowp_uvec3;
-
263 
-
265  typedef vec<3, bool, aligned_highp> aligned_highp_bvec3;
-
266 
-
268  typedef vec<3, bool, aligned_mediump> aligned_mediump_bvec3;
-
269 
-
271  typedef vec<3, bool, aligned_lowp> aligned_lowp_bvec3;
-
272 
-
274  typedef vec<3, float, packed_highp> packed_highp_vec3;
-
275 
-
277  typedef vec<3, float, packed_mediump> packed_mediump_vec3;
-
278 
-
280  typedef vec<3, float, packed_lowp> packed_lowp_vec3;
-
281 
-
283  typedef vec<3, double, packed_highp> packed_highp_dvec3;
-
284 
-
286  typedef vec<3, double, packed_mediump> packed_mediump_dvec3;
-
287 
-
289  typedef vec<3, double, packed_lowp> packed_lowp_dvec3;
-
290 
-
292  typedef vec<3, int, packed_highp> packed_highp_ivec3;
-
293 
-
295  typedef vec<3, int, packed_mediump> packed_mediump_ivec3;
-
296 
-
298  typedef vec<3, int, packed_lowp> packed_lowp_ivec3;
-
299 
-
301  typedef vec<3, uint, packed_highp> packed_highp_uvec3;
-
302 
-
304  typedef vec<3, uint, packed_mediump> packed_mediump_uvec3;
-
305 
-
307  typedef vec<3, uint, packed_lowp> packed_lowp_uvec3;
-
308 
-
310  typedef vec<3, bool, packed_highp> packed_highp_bvec3;
-
311 
-
313  typedef vec<3, bool, packed_mediump> packed_mediump_bvec3;
-
314 
-
316  typedef vec<3, bool, packed_lowp> packed_lowp_bvec3;
-
317 
-
318  // -- *vec4 --
-
319 
-
321  typedef vec<4, float, aligned_highp> aligned_highp_vec4;
-
322 
-
324  typedef vec<4, float, aligned_mediump> aligned_mediump_vec4;
-
325 
-
327  typedef vec<4, float, aligned_lowp> aligned_lowp_vec4;
-
328 
-
330  typedef vec<4, double, aligned_highp> aligned_highp_dvec4;
-
331 
-
333  typedef vec<4, double, aligned_mediump> aligned_mediump_dvec4;
-
334 
-
336  typedef vec<4, double, aligned_lowp> aligned_lowp_dvec4;
-
337 
-
339  typedef vec<4, int, aligned_highp> aligned_highp_ivec4;
-
340 
-
342  typedef vec<4, int, aligned_mediump> aligned_mediump_ivec4;
-
343 
-
345  typedef vec<4, int, aligned_lowp> aligned_lowp_ivec4;
-
346 
-
348  typedef vec<4, uint, aligned_highp> aligned_highp_uvec4;
-
349 
-
351  typedef vec<4, uint, aligned_mediump> aligned_mediump_uvec4;
-
352 
-
354  typedef vec<4, uint, aligned_lowp> aligned_lowp_uvec4;
-
355 
-
357  typedef vec<4, bool, aligned_highp> aligned_highp_bvec4;
-
358 
-
360  typedef vec<4, bool, aligned_mediump> aligned_mediump_bvec4;
-
361 
-
363  typedef vec<4, bool, aligned_lowp> aligned_lowp_bvec4;
-
364 
-
366  typedef vec<4, float, packed_highp> packed_highp_vec4;
-
367 
-
369  typedef vec<4, float, packed_mediump> packed_mediump_vec4;
-
370 
-
372  typedef vec<4, float, packed_lowp> packed_lowp_vec4;
-
373 
-
375  typedef vec<4, double, packed_highp> packed_highp_dvec4;
-
376 
-
378  typedef vec<4, double, packed_mediump> packed_mediump_dvec4;
-
379 
-
381  typedef vec<4, double, packed_lowp> packed_lowp_dvec4;
-
382 
-
384  typedef vec<4, int, packed_highp> packed_highp_ivec4;
-
385 
-
387  typedef vec<4, int, packed_mediump> packed_mediump_ivec4;
-
388 
-
390  typedef vec<4, int, packed_lowp> packed_lowp_ivec4;
-
391 
-
393  typedef vec<4, uint, packed_highp> packed_highp_uvec4;
-
394 
-
396  typedef vec<4, uint, packed_mediump> packed_mediump_uvec4;
-
397 
-
399  typedef vec<4, uint, packed_lowp> packed_lowp_uvec4;
-
400 
-
402  typedef vec<4, bool, packed_highp> packed_highp_bvec4;
-
403 
-
405  typedef vec<4, bool, packed_mediump> packed_mediump_bvec4;
-
406 
-
408  typedef vec<4, bool, packed_lowp> packed_lowp_bvec4;
-
409 
-
410  // -- *mat2 --
-
411 
-
413  typedef mat<2, 2, float, aligned_highp> aligned_highp_mat2;
-
414 
-
416  typedef mat<2, 2, float, aligned_mediump> aligned_mediump_mat2;
-
417 
-
419  typedef mat<2, 2, float, aligned_lowp> aligned_lowp_mat2;
-
420 
-
422  typedef mat<2, 2, double, aligned_highp> aligned_highp_dmat2;
-
423 
-
425  typedef mat<2, 2, double, aligned_mediump> aligned_mediump_dmat2;
-
426 
-
428  typedef mat<2, 2, double, aligned_lowp> aligned_lowp_dmat2;
-
429 
-
431  typedef mat<2, 2, float, packed_highp> packed_highp_mat2;
-
432 
-
434  typedef mat<2, 2, float, packed_mediump> packed_mediump_mat2;
-
435 
-
437  typedef mat<2, 2, float, packed_lowp> packed_lowp_mat2;
-
438 
-
440  typedef mat<2, 2, double, packed_highp> packed_highp_dmat2;
-
441 
-
443  typedef mat<2, 2, double, packed_mediump> packed_mediump_dmat2;
-
444 
-
446  typedef mat<2, 2, double, packed_lowp> packed_lowp_dmat2;
-
447 
-
448  // -- *mat3 --
-
449 
-
451  typedef mat<3, 3, float, aligned_highp> aligned_highp_mat3;
-
452 
-
454  typedef mat<3, 3, float, aligned_mediump> aligned_mediump_mat3;
-
455 
-
457  typedef mat<3, 3, float, aligned_lowp> aligned_lowp_mat3;
-
458 
-
460  typedef mat<3, 3, double, aligned_highp> aligned_highp_dmat3;
-
461 
-
463  typedef mat<3, 3, double, aligned_mediump> aligned_mediump_dmat3;
-
464 
-
466  typedef mat<3, 3, double, aligned_lowp> aligned_lowp_dmat3;
-
467 
-
469  typedef mat<3, 3, float, packed_highp> packed_highp_mat3;
-
470 
-
472  typedef mat<3, 3, float, packed_mediump> packed_mediump_mat3;
-
473 
-
475  typedef mat<3, 3, float, packed_lowp> packed_lowp_mat3;
-
476 
-
478  typedef mat<3, 3, double, packed_highp> packed_highp_dmat3;
-
479 
-
481  typedef mat<3, 3, double, packed_mediump> packed_mediump_dmat3;
-
482 
-
484  typedef mat<3, 3, double, packed_lowp> packed_lowp_dmat3;
-
485 
-
486  // -- *mat4 --
-
487 
-
489  typedef mat<4, 4, float, aligned_highp> aligned_highp_mat4;
-
490 
-
492  typedef mat<4, 4, float, aligned_mediump> aligned_mediump_mat4;
-
493 
-
495  typedef mat<4, 4, float, aligned_lowp> aligned_lowp_mat4;
-
496 
-
498  typedef mat<4, 4, double, aligned_highp> aligned_highp_dmat4;
-
499 
-
501  typedef mat<4, 4, double, aligned_mediump> aligned_mediump_dmat4;
-
502 
-
504  typedef mat<4, 4, double, aligned_lowp> aligned_lowp_dmat4;
-
505 
-
507  typedef mat<4, 4, float, packed_highp> packed_highp_mat4;
-
508 
-
510  typedef mat<4, 4, float, packed_mediump> packed_mediump_mat4;
-
511 
-
513  typedef mat<4, 4, float, packed_lowp> packed_lowp_mat4;
-
514 
-
516  typedef mat<4, 4, double, packed_highp> packed_highp_dmat4;
-
517 
-
519  typedef mat<4, 4, double, packed_mediump> packed_mediump_dmat4;
-
520 
-
522  typedef mat<4, 4, double, packed_lowp> packed_lowp_dmat4;
-
523 
-
524  // -- *mat2x2 --
-
525 
-
527  typedef mat<2, 2, float, aligned_highp> aligned_highp_mat2x2;
-
528 
-
530  typedef mat<2, 2, float, aligned_mediump> aligned_mediump_mat2x2;
-
531 
-
533  typedef mat<2, 2, float, aligned_lowp> aligned_lowp_mat2x2;
-
534 
-
536  typedef mat<2, 2, double, aligned_highp> aligned_highp_dmat2x2;
-
537 
-
539  typedef mat<2, 2, double, aligned_mediump> aligned_mediump_dmat2x2;
-
540 
-
542  typedef mat<2, 2, double, aligned_lowp> aligned_lowp_dmat2x2;
-
543 
-
545  typedef mat<2, 2, float, packed_highp> packed_highp_mat2x2;
-
546 
-
548  typedef mat<2, 2, float, packed_mediump> packed_mediump_mat2x2;
-
549 
-
551  typedef mat<2, 2, float, packed_lowp> packed_lowp_mat2x2;
-
552 
-
554  typedef mat<2, 2, double, packed_highp> packed_highp_dmat2x2;
-
555 
-
557  typedef mat<2, 2, double, packed_mediump> packed_mediump_dmat2x2;
-
558 
-
560  typedef mat<2, 2, double, packed_lowp> packed_lowp_dmat2x2;
-
561 
-
562  // -- *mat2x3 --
-
563 
-
565  typedef mat<2, 3, float, aligned_highp> aligned_highp_mat2x3;
-
566 
-
568  typedef mat<2, 3, float, aligned_mediump> aligned_mediump_mat2x3;
-
569 
-
571  typedef mat<2, 3, float, aligned_lowp> aligned_lowp_mat2x3;
-
572 
-
574  typedef mat<2, 3, double, aligned_highp> aligned_highp_dmat2x3;
-
575 
-
577  typedef mat<2, 3, double, aligned_mediump> aligned_mediump_dmat2x3;
-
578 
-
580  typedef mat<2, 3, double, aligned_lowp> aligned_lowp_dmat2x3;
-
581 
-
583  typedef mat<2, 3, float, packed_highp> packed_highp_mat2x3;
-
584 
-
586  typedef mat<2, 3, float, packed_mediump> packed_mediump_mat2x3;
-
587 
-
589  typedef mat<2, 3, float, packed_lowp> packed_lowp_mat2x3;
-
590 
-
592  typedef mat<2, 3, double, packed_highp> packed_highp_dmat2x3;
-
593 
-
595  typedef mat<2, 3, double, packed_mediump> packed_mediump_dmat2x3;
-
596 
-
598  typedef mat<2, 3, double, packed_lowp> packed_lowp_dmat2x3;
-
599 
-
600  // -- *mat2x4 --
-
601 
-
603  typedef mat<2, 4, float, aligned_highp> aligned_highp_mat2x4;
-
604 
-
606  typedef mat<2, 4, float, aligned_mediump> aligned_mediump_mat2x4;
-
607 
-
609  typedef mat<2, 4, float, aligned_lowp> aligned_lowp_mat2x4;
-
610 
-
612  typedef mat<2, 4, double, aligned_highp> aligned_highp_dmat2x4;
-
613 
-
615  typedef mat<2, 4, double, aligned_mediump> aligned_mediump_dmat2x4;
-
616 
-
618  typedef mat<2, 4, double, aligned_lowp> aligned_lowp_dmat2x4;
-
619 
-
621  typedef mat<2, 4, float, packed_highp> packed_highp_mat2x4;
-
622 
-
624  typedef mat<2, 4, float, packed_mediump> packed_mediump_mat2x4;
-
625 
-
627  typedef mat<2, 4, float, packed_lowp> packed_lowp_mat2x4;
-
628 
-
630  typedef mat<2, 4, double, packed_highp> packed_highp_dmat2x4;
-
631 
-
633  typedef mat<2, 4, double, packed_mediump> packed_mediump_dmat2x4;
-
634 
-
636  typedef mat<2, 4, double, packed_lowp> packed_lowp_dmat2x4;
-
637 
-
638  // -- *mat3x2 --
-
639 
-
641  typedef mat<3, 2, float, aligned_highp> aligned_highp_mat3x2;
-
642 
-
644  typedef mat<3, 2, float, aligned_mediump> aligned_mediump_mat3x2;
-
645 
-
647  typedef mat<3, 2, float, aligned_lowp> aligned_lowp_mat3x2;
-
648 
-
650  typedef mat<3, 2, double, aligned_highp> aligned_highp_dmat3x2;
-
651 
-
653  typedef mat<3, 2, double, aligned_mediump> aligned_mediump_dmat3x2;
-
654 
-
656  typedef mat<3, 2, double, aligned_lowp> aligned_lowp_dmat3x2;
-
657 
-
659  typedef mat<3, 2, float, packed_highp> packed_highp_mat3x2;
-
660 
-
662  typedef mat<3, 2, float, packed_mediump> packed_mediump_mat3x2;
-
663 
-
665  typedef mat<3, 2, float, packed_lowp> packed_lowp_mat3x2;
-
666 
-
668  typedef mat<3, 2, double, packed_highp> packed_highp_dmat3x2;
-
669 
-
671  typedef mat<3, 2, double, packed_mediump> packed_mediump_dmat3x2;
-
672 
-
674  typedef mat<3, 2, double, packed_lowp> packed_lowp_dmat3x2;
-
675 
-
676  // -- *mat3x3 --
-
677 
-
679  typedef mat<3, 3, float, aligned_highp> aligned_highp_mat3x3;
-
680 
-
682  typedef mat<3, 3, float, aligned_mediump> aligned_mediump_mat3x3;
-
683 
-
685  typedef mat<3, 3, float, aligned_lowp> aligned_lowp_mat3x3;
-
686 
-
688  typedef mat<3, 3, double, aligned_highp> aligned_highp_dmat3x3;
-
689 
-
691  typedef mat<3, 3, double, aligned_mediump> aligned_mediump_dmat3x3;
-
692 
-
694  typedef mat<3, 3, double, aligned_lowp> aligned_lowp_dmat3x3;
-
695 
-
697  typedef mat<3, 3, float, packed_highp> packed_highp_mat3x3;
-
698 
-
700  typedef mat<3, 3, float, packed_mediump> packed_mediump_mat3x3;
-
701 
-
703  typedef mat<3, 3, float, packed_lowp> packed_lowp_mat3x3;
-
704 
-
706  typedef mat<3, 3, double, packed_highp> packed_highp_dmat3x3;
-
707 
-
709  typedef mat<3, 3, double, packed_mediump> packed_mediump_dmat3x3;
-
710 
-
712  typedef mat<3, 3, double, packed_lowp> packed_lowp_dmat3x3;
-
713 
-
714  // -- *mat3x4 --
-
715 
-
717  typedef mat<3, 4, float, aligned_highp> aligned_highp_mat3x4;
-
718 
-
720  typedef mat<3, 4, float, aligned_mediump> aligned_mediump_mat3x4;
-
721 
-
723  typedef mat<3, 4, float, aligned_lowp> aligned_lowp_mat3x4;
-
724 
-
726  typedef mat<3, 4, double, aligned_highp> aligned_highp_dmat3x4;
-
727 
-
729  typedef mat<3, 4, double, aligned_mediump> aligned_mediump_dmat3x4;
-
730 
-
732  typedef mat<3, 4, double, aligned_lowp> aligned_lowp_dmat3x4;
-
733 
-
735  typedef mat<3, 4, float, packed_highp> packed_highp_mat3x4;
-
736 
-
738  typedef mat<3, 4, float, packed_mediump> packed_mediump_mat3x4;
-
739 
-
741  typedef mat<3, 4, float, packed_lowp> packed_lowp_mat3x4;
-
742 
-
744  typedef mat<3, 4, double, packed_highp> packed_highp_dmat3x4;
-
745 
-
747  typedef mat<3, 4, double, packed_mediump> packed_mediump_dmat3x4;
-
748 
-
750  typedef mat<3, 4, double, packed_lowp> packed_lowp_dmat3x4;
-
751 
-
752  // -- *mat4x2 --
-
753 
-
755  typedef mat<4, 2, float, aligned_highp> aligned_highp_mat4x2;
-
756 
-
758  typedef mat<4, 2, float, aligned_mediump> aligned_mediump_mat4x2;
-
759 
-
761  typedef mat<4, 2, float, aligned_lowp> aligned_lowp_mat4x2;
-
762 
-
764  typedef mat<4, 2, double, aligned_highp> aligned_highp_dmat4x2;
-
765 
-
767  typedef mat<4, 2, double, aligned_mediump> aligned_mediump_dmat4x2;
-
768 
-
770  typedef mat<4, 2, double, aligned_lowp> aligned_lowp_dmat4x2;
-
771 
-
773  typedef mat<4, 2, float, packed_highp> packed_highp_mat4x2;
-
774 
-
776  typedef mat<4, 2, float, packed_mediump> packed_mediump_mat4x2;
-
777 
-
779  typedef mat<4, 2, float, packed_lowp> packed_lowp_mat4x2;
-
780 
-
782  typedef mat<4, 2, double, packed_highp> packed_highp_dmat4x2;
-
783 
-
785  typedef mat<4, 2, double, packed_mediump> packed_mediump_dmat4x2;
-
786 
-
788  typedef mat<4, 2, double, packed_lowp> packed_lowp_dmat4x2;
-
789 
-
790  // -- *mat4x3 --
-
791 
-
793  typedef mat<4, 3, float, aligned_highp> aligned_highp_mat4x3;
-
794 
-
796  typedef mat<4, 3, float, aligned_mediump> aligned_mediump_mat4x3;
-
797 
-
799  typedef mat<4, 3, float, aligned_lowp> aligned_lowp_mat4x3;
-
800 
-
802  typedef mat<4, 3, double, aligned_highp> aligned_highp_dmat4x3;
-
803 
-
805  typedef mat<4, 3, double, aligned_mediump> aligned_mediump_dmat4x3;
-
806 
-
808  typedef mat<4, 3, double, aligned_lowp> aligned_lowp_dmat4x3;
-
809 
-
811  typedef mat<4, 3, float, packed_highp> packed_highp_mat4x3;
-
812 
-
814  typedef mat<4, 3, float, packed_mediump> packed_mediump_mat4x3;
-
815 
-
817  typedef mat<4, 3, float, packed_lowp> packed_lowp_mat4x3;
-
818 
-
820  typedef mat<4, 3, double, packed_highp> packed_highp_dmat4x3;
-
821 
-
823  typedef mat<4, 3, double, packed_mediump> packed_mediump_dmat4x3;
-
824 
-
826  typedef mat<4, 3, double, packed_lowp> packed_lowp_dmat4x3;
-
827 
-
828  // -- *mat4x4 --
-
829 
-
831  typedef mat<4, 4, float, aligned_highp> aligned_highp_mat4x4;
-
832 
-
834  typedef mat<4, 4, float, aligned_mediump> aligned_mediump_mat4x4;
-
835 
-
837  typedef mat<4, 4, float, aligned_lowp> aligned_lowp_mat4x4;
-
838 
-
840  typedef mat<4, 4, double, aligned_highp> aligned_highp_dmat4x4;
-
841 
-
843  typedef mat<4, 4, double, aligned_mediump> aligned_mediump_dmat4x4;
-
844 
-
846  typedef mat<4, 4, double, aligned_lowp> aligned_lowp_dmat4x4;
-
847 
-
849  typedef mat<4, 4, float, packed_highp> packed_highp_mat4x4;
-
850 
-
852  typedef mat<4, 4, float, packed_mediump> packed_mediump_mat4x4;
-
853 
-
855  typedef mat<4, 4, float, packed_lowp> packed_lowp_mat4x4;
-
856 
-
858  typedef mat<4, 4, double, packed_highp> packed_highp_dmat4x4;
-
859 
-
861  typedef mat<4, 4, double, packed_mediump> packed_mediump_dmat4x4;
-
862 
-
864  typedef mat<4, 4, double, packed_lowp> packed_lowp_dmat4x4;
-
865 
-
866  // -- default --
-
867 
-
868 #if(defined(GLM_PRECISION_LOWP_FLOAT))
-
869  typedef aligned_lowp_vec1 aligned_vec1;
-
870  typedef aligned_lowp_vec2 aligned_vec2;
-
871  typedef aligned_lowp_vec3 aligned_vec3;
-
872  typedef aligned_lowp_vec4 aligned_vec4;
-
873  typedef packed_lowp_vec1 packed_vec1;
-
874  typedef packed_lowp_vec2 packed_vec2;
-
875  typedef packed_lowp_vec3 packed_vec3;
-
876  typedef packed_lowp_vec4 packed_vec4;
-
877 
-
878  typedef aligned_lowp_mat2 aligned_mat2;
-
879  typedef aligned_lowp_mat3 aligned_mat3;
-
880  typedef aligned_lowp_mat4 aligned_mat4;
-
881  typedef packed_lowp_mat2 packed_mat2;
-
882  typedef packed_lowp_mat3 packed_mat3;
-
883  typedef packed_lowp_mat4 packed_mat4;
-
884 
-
885  typedef aligned_lowp_mat2x2 aligned_mat2x2;
-
886  typedef aligned_lowp_mat2x3 aligned_mat2x3;
-
887  typedef aligned_lowp_mat2x4 aligned_mat2x4;
-
888  typedef aligned_lowp_mat3x2 aligned_mat3x2;
-
889  typedef aligned_lowp_mat3x3 aligned_mat3x3;
-
890  typedef aligned_lowp_mat3x4 aligned_mat3x4;
-
891  typedef aligned_lowp_mat4x2 aligned_mat4x2;
-
892  typedef aligned_lowp_mat4x3 aligned_mat4x3;
-
893  typedef aligned_lowp_mat4x4 aligned_mat4x4;
-
894  typedef packed_lowp_mat2x2 packed_mat2x2;
-
895  typedef packed_lowp_mat2x3 packed_mat2x3;
-
896  typedef packed_lowp_mat2x4 packed_mat2x4;
-
897  typedef packed_lowp_mat3x2 packed_mat3x2;
-
898  typedef packed_lowp_mat3x3 packed_mat3x3;
-
899  typedef packed_lowp_mat3x4 packed_mat3x4;
-
900  typedef packed_lowp_mat4x2 packed_mat4x2;
-
901  typedef packed_lowp_mat4x3 packed_mat4x3;
-
902  typedef packed_lowp_mat4x4 packed_mat4x4;
-
903 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
-
904  typedef aligned_mediump_vec1 aligned_vec1;
-
905  typedef aligned_mediump_vec2 aligned_vec2;
-
906  typedef aligned_mediump_vec3 aligned_vec3;
-
907  typedef aligned_mediump_vec4 aligned_vec4;
-
908  typedef packed_mediump_vec1 packed_vec1;
-
909  typedef packed_mediump_vec2 packed_vec2;
-
910  typedef packed_mediump_vec3 packed_vec3;
-
911  typedef packed_mediump_vec4 packed_vec4;
-
912 
-
913  typedef aligned_mediump_mat2 aligned_mat2;
-
914  typedef aligned_mediump_mat3 aligned_mat3;
-
915  typedef aligned_mediump_mat4 aligned_mat4;
-
916  typedef packed_mediump_mat2 packed_mat2;
-
917  typedef packed_mediump_mat3 packed_mat3;
-
918  typedef packed_mediump_mat4 packed_mat4;
-
919 
-
920  typedef aligned_mediump_mat2x2 aligned_mat2x2;
-
921  typedef aligned_mediump_mat2x3 aligned_mat2x3;
-
922  typedef aligned_mediump_mat2x4 aligned_mat2x4;
-
923  typedef aligned_mediump_mat3x2 aligned_mat3x2;
-
924  typedef aligned_mediump_mat3x3 aligned_mat3x3;
-
925  typedef aligned_mediump_mat3x4 aligned_mat3x4;
-
926  typedef aligned_mediump_mat4x2 aligned_mat4x2;
-
927  typedef aligned_mediump_mat4x3 aligned_mat4x3;
-
928  typedef aligned_mediump_mat4x4 aligned_mat4x4;
-
929  typedef packed_mediump_mat2x2 packed_mat2x2;
-
930  typedef packed_mediump_mat2x3 packed_mat2x3;
-
931  typedef packed_mediump_mat2x4 packed_mat2x4;
-
932  typedef packed_mediump_mat3x2 packed_mat3x2;
-
933  typedef packed_mediump_mat3x3 packed_mat3x3;
-
934  typedef packed_mediump_mat3x4 packed_mat3x4;
-
935  typedef packed_mediump_mat4x2 packed_mat4x2;
-
936  typedef packed_mediump_mat4x3 packed_mat4x3;
-
937  typedef packed_mediump_mat4x4 packed_mat4x4;
-
938 #else //defined(GLM_PRECISION_HIGHP_FLOAT)
-
939  typedef aligned_highp_vec1 aligned_vec1;
-
941 
-
943  typedef aligned_highp_vec2 aligned_vec2;
-
944 
-
946  typedef aligned_highp_vec3 aligned_vec3;
-
947 
-
949  typedef aligned_highp_vec4 aligned_vec4;
-
950 
-
952  typedef packed_highp_vec1 packed_vec1;
-
953 
-
955  typedef packed_highp_vec2 packed_vec2;
-
956 
-
958  typedef packed_highp_vec3 packed_vec3;
-
959 
-
961  typedef packed_highp_vec4 packed_vec4;
-
962 
-
964  typedef aligned_highp_mat2 aligned_mat2;
-
965 
-
967  typedef aligned_highp_mat3 aligned_mat3;
-
968 
-
970  typedef aligned_highp_mat4 aligned_mat4;
-
971 
-
973  typedef packed_highp_mat2 packed_mat2;
-
974 
-
976  typedef packed_highp_mat3 packed_mat3;
-
977 
-
979  typedef packed_highp_mat4 packed_mat4;
-
980 
-
982  typedef aligned_highp_mat2x2 aligned_mat2x2;
-
983 
-
985  typedef aligned_highp_mat2x3 aligned_mat2x3;
-
986 
-
988  typedef aligned_highp_mat2x4 aligned_mat2x4;
-
989 
-
991  typedef aligned_highp_mat3x2 aligned_mat3x2;
-
992 
-
994  typedef aligned_highp_mat3x3 aligned_mat3x3;
-
995 
-
997  typedef aligned_highp_mat3x4 aligned_mat3x4;
-
998 
-
1000  typedef aligned_highp_mat4x2 aligned_mat4x2;
-
1001 
-
1003  typedef aligned_highp_mat4x3 aligned_mat4x3;
-
1004 
-
1006  typedef aligned_highp_mat4x4 aligned_mat4x4;
-
1007 
-
1009  typedef packed_highp_mat2x2 packed_mat2x2;
-
1010 
-
1012  typedef packed_highp_mat2x3 packed_mat2x3;
-
1013 
-
1015  typedef packed_highp_mat2x4 packed_mat2x4;
-
1016 
-
1018  typedef packed_highp_mat3x2 packed_mat3x2;
-
1019 
-
1021  typedef packed_highp_mat3x3 packed_mat3x3;
-
1022 
-
1024  typedef packed_highp_mat3x4 packed_mat3x4;
-
1025 
-
1027  typedef packed_highp_mat4x2 packed_mat4x2;
-
1028 
-
1030  typedef packed_highp_mat4x3 packed_mat4x3;
-
1031 
-
1033  typedef packed_highp_mat4x4 packed_mat4x4;
-
1034 #endif//GLM_PRECISION
-
1035 
-
1036 #if(defined(GLM_PRECISION_LOWP_DOUBLE))
-
1037  typedef aligned_lowp_dvec1 aligned_dvec1;
-
1038  typedef aligned_lowp_dvec2 aligned_dvec2;
-
1039  typedef aligned_lowp_dvec3 aligned_dvec3;
-
1040  typedef aligned_lowp_dvec4 aligned_dvec4;
-
1041  typedef packed_lowp_dvec1 packed_dvec1;
-
1042  typedef packed_lowp_dvec2 packed_dvec2;
-
1043  typedef packed_lowp_dvec3 packed_dvec3;
-
1044  typedef packed_lowp_dvec4 packed_dvec4;
-
1045 
-
1046  typedef aligned_lowp_dmat2 aligned_dmat2;
-
1047  typedef aligned_lowp_dmat3 aligned_dmat3;
-
1048  typedef aligned_lowp_dmat4 aligned_dmat4;
-
1049  typedef packed_lowp_dmat2 packed_dmat2;
-
1050  typedef packed_lowp_dmat3 packed_dmat3;
-
1051  typedef packed_lowp_dmat4 packed_dmat4;
-
1052 
-
1053  typedef aligned_lowp_dmat2x2 aligned_dmat2x2;
-
1054  typedef aligned_lowp_dmat2x3 aligned_dmat2x3;
-
1055  typedef aligned_lowp_dmat2x4 aligned_dmat2x4;
-
1056  typedef aligned_lowp_dmat3x2 aligned_dmat3x2;
-
1057  typedef aligned_lowp_dmat3x3 aligned_dmat3x3;
-
1058  typedef aligned_lowp_dmat3x4 aligned_dmat3x4;
-
1059  typedef aligned_lowp_dmat4x2 aligned_dmat4x2;
-
1060  typedef aligned_lowp_dmat4x3 aligned_dmat4x3;
-
1061  typedef aligned_lowp_dmat4x4 aligned_dmat4x4;
-
1062  typedef packed_lowp_dmat2x2 packed_dmat2x2;
-
1063  typedef packed_lowp_dmat2x3 packed_dmat2x3;
-
1064  typedef packed_lowp_dmat2x4 packed_dmat2x4;
-
1065  typedef packed_lowp_dmat3x2 packed_dmat3x2;
-
1066  typedef packed_lowp_dmat3x3 packed_dmat3x3;
-
1067  typedef packed_lowp_dmat3x4 packed_dmat3x4;
-
1068  typedef packed_lowp_dmat4x2 packed_dmat4x2;
-
1069  typedef packed_lowp_dmat4x3 packed_dmat4x3;
-
1070  typedef packed_lowp_dmat4x4 packed_dmat4x4;
-
1071 #elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE))
-
1072  typedef aligned_mediump_dvec1 aligned_dvec1;
-
1073  typedef aligned_mediump_dvec2 aligned_dvec2;
-
1074  typedef aligned_mediump_dvec3 aligned_dvec3;
-
1075  typedef aligned_mediump_dvec4 aligned_dvec4;
-
1076  typedef packed_mediump_dvec1 packed_dvec1;
-
1077  typedef packed_mediump_dvec2 packed_dvec2;
-
1078  typedef packed_mediump_dvec3 packed_dvec3;
-
1079  typedef packed_mediump_dvec4 packed_dvec4;
-
1080 
-
1081  typedef aligned_mediump_dmat2 aligned_dmat2;
-
1082  typedef aligned_mediump_dmat3 aligned_dmat3;
-
1083  typedef aligned_mediump_dmat4 aligned_dmat4;
-
1084  typedef packed_mediump_dmat2 packed_dmat2;
-
1085  typedef packed_mediump_dmat3 packed_dmat3;
-
1086  typedef packed_mediump_dmat4 packed_dmat4;
-
1087 
-
1088  typedef aligned_mediump_dmat2x2 aligned_dmat2x2;
-
1089  typedef aligned_mediump_dmat2x3 aligned_dmat2x3;
-
1090  typedef aligned_mediump_dmat2x4 aligned_dmat2x4;
-
1091  typedef aligned_mediump_dmat3x2 aligned_dmat3x2;
-
1092  typedef aligned_mediump_dmat3x3 aligned_dmat3x3;
-
1093  typedef aligned_mediump_dmat3x4 aligned_dmat3x4;
-
1094  typedef aligned_mediump_dmat4x2 aligned_dmat4x2;
-
1095  typedef aligned_mediump_dmat4x3 aligned_dmat4x3;
-
1096  typedef aligned_mediump_dmat4x4 aligned_dmat4x4;
-
1097  typedef packed_mediump_dmat2x2 packed_dmat2x2;
-
1098  typedef packed_mediump_dmat2x3 packed_dmat2x3;
-
1099  typedef packed_mediump_dmat2x4 packed_dmat2x4;
-
1100  typedef packed_mediump_dmat3x2 packed_dmat3x2;
-
1101  typedef packed_mediump_dmat3x3 packed_dmat3x3;
-
1102  typedef packed_mediump_dmat3x4 packed_dmat3x4;
-
1103  typedef packed_mediump_dmat4x2 packed_dmat4x2;
-
1104  typedef packed_mediump_dmat4x3 packed_dmat4x3;
-
1105  typedef packed_mediump_dmat4x4 packed_dmat4x4;
-
1106 #else //defined(GLM_PRECISION_HIGHP_DOUBLE)
-
1107  typedef aligned_highp_dvec1 aligned_dvec1;
-
1109 
-
1111  typedef aligned_highp_dvec2 aligned_dvec2;
-
1112 
-
1114  typedef aligned_highp_dvec3 aligned_dvec3;
-
1115 
-
1117  typedef aligned_highp_dvec4 aligned_dvec4;
-
1118 
-
1120  typedef packed_highp_dvec1 packed_dvec1;
-
1121 
-
1123  typedef packed_highp_dvec2 packed_dvec2;
-
1124 
-
1126  typedef packed_highp_dvec3 packed_dvec3;
-
1127 
-
1129  typedef packed_highp_dvec4 packed_dvec4;
-
1130 
-
1132  typedef aligned_highp_dmat2 aligned_dmat2;
-
1133 
-
1135  typedef aligned_highp_dmat3 aligned_dmat3;
-
1136 
-
1138  typedef aligned_highp_dmat4 aligned_dmat4;
-
1139 
-
1141  typedef packed_highp_dmat2 packed_dmat2;
-
1142 
-
1144  typedef packed_highp_dmat3 packed_dmat3;
-
1145 
-
1147  typedef packed_highp_dmat4 packed_dmat4;
-
1148 
-
1150  typedef aligned_highp_dmat2x2 aligned_dmat2x2;
-
1151 
-
1153  typedef aligned_highp_dmat2x3 aligned_dmat2x3;
-
1154 
-
1156  typedef aligned_highp_dmat2x4 aligned_dmat2x4;
-
1157 
-
1159  typedef aligned_highp_dmat3x2 aligned_dmat3x2;
-
1160 
-
1162  typedef aligned_highp_dmat3x3 aligned_dmat3x3;
-
1163 
-
1165  typedef aligned_highp_dmat3x4 aligned_dmat3x4;
-
1166 
-
1168  typedef aligned_highp_dmat4x2 aligned_dmat4x2;
-
1169 
-
1171  typedef aligned_highp_dmat4x3 aligned_dmat4x3;
-
1172 
-
1174  typedef aligned_highp_dmat4x4 aligned_dmat4x4;
-
1175 
-
1177  typedef packed_highp_dmat2x2 packed_dmat2x2;
-
1178 
-
1180  typedef packed_highp_dmat2x3 packed_dmat2x3;
-
1181 
-
1183  typedef packed_highp_dmat2x4 packed_dmat2x4;
-
1184 
-
1186  typedef packed_highp_dmat3x2 packed_dmat3x2;
-
1187 
-
1189  typedef packed_highp_dmat3x3 packed_dmat3x3;
-
1190 
-
1192  typedef packed_highp_dmat3x4 packed_dmat3x4;
-
1193 
-
1195  typedef packed_highp_dmat4x2 packed_dmat4x2;
-
1196 
-
1198  typedef packed_highp_dmat4x3 packed_dmat4x3;
-
1199 
-
1201  typedef packed_highp_dmat4x4 packed_dmat4x4;
-
1202 #endif//GLM_PRECISION
-
1203 
-
1204 #if(defined(GLM_PRECISION_LOWP_INT))
-
1205  typedef aligned_lowp_ivec1 aligned_ivec1;
-
1206  typedef aligned_lowp_ivec2 aligned_ivec2;
-
1207  typedef aligned_lowp_ivec3 aligned_ivec3;
-
1208  typedef aligned_lowp_ivec4 aligned_ivec4;
-
1209 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
-
1210  typedef aligned_mediump_ivec1 aligned_ivec1;
-
1211  typedef aligned_mediump_ivec2 aligned_ivec2;
-
1212  typedef aligned_mediump_ivec3 aligned_ivec3;
-
1213  typedef aligned_mediump_ivec4 aligned_ivec4;
-
1214 #else //defined(GLM_PRECISION_HIGHP_INT)
-
1215  typedef aligned_highp_ivec1 aligned_ivec1;
-
1217 
-
1219  typedef aligned_highp_ivec2 aligned_ivec2;
-
1220 
-
1222  typedef aligned_highp_ivec3 aligned_ivec3;
-
1223 
-
1225  typedef aligned_highp_ivec4 aligned_ivec4;
-
1226 
-
1228  typedef packed_highp_ivec1 packed_ivec1;
-
1229 
-
1231  typedef packed_highp_ivec2 packed_ivec2;
-
1232 
-
1234  typedef packed_highp_ivec3 packed_ivec3;
-
1235 
-
1237  typedef packed_highp_ivec4 packed_ivec4;
-
1238 #endif//GLM_PRECISION
-
1239 
-
1240  // -- Unsigned integer definition --
-
1241 
-
1242 #if(defined(GLM_PRECISION_LOWP_UINT))
-
1243  typedef aligned_lowp_uvec1 aligned_uvec1;
-
1244  typedef aligned_lowp_uvec2 aligned_uvec2;
-
1245  typedef aligned_lowp_uvec3 aligned_uvec3;
-
1246  typedef aligned_lowp_uvec4 aligned_uvec4;
-
1247 #elif(defined(GLM_PRECISION_MEDIUMP_UINT))
-
1248  typedef aligned_mediump_uvec1 aligned_uvec1;
-
1249  typedef aligned_mediump_uvec2 aligned_uvec2;
-
1250  typedef aligned_mediump_uvec3 aligned_uvec3;
-
1251  typedef aligned_mediump_uvec4 aligned_uvec4;
-
1252 #else //defined(GLM_PRECISION_HIGHP_UINT)
-
1253  typedef aligned_highp_uvec1 aligned_uvec1;
-
1255 
-
1257  typedef aligned_highp_uvec2 aligned_uvec2;
-
1258 
-
1260  typedef aligned_highp_uvec3 aligned_uvec3;
-
1261 
-
1263  typedef aligned_highp_uvec4 aligned_uvec4;
-
1264 
-
1266  typedef packed_highp_uvec1 packed_uvec1;
-
1267 
-
1269  typedef packed_highp_uvec2 packed_uvec2;
-
1270 
-
1272  typedef packed_highp_uvec3 packed_uvec3;
-
1273 
-
1275  typedef packed_highp_uvec4 packed_uvec4;
-
1276 #endif//GLM_PRECISION
-
1277 
-
1278 #if(defined(GLM_PRECISION_LOWP_BOOL))
-
1279  typedef aligned_lowp_bvec1 aligned_bvec1;
-
1280  typedef aligned_lowp_bvec2 aligned_bvec2;
-
1281  typedef aligned_lowp_bvec3 aligned_bvec3;
-
1282  typedef aligned_lowp_bvec4 aligned_bvec4;
-
1283 #elif(defined(GLM_PRECISION_MEDIUMP_BOOL))
-
1284  typedef aligned_mediump_bvec1 aligned_bvec1;
-
1285  typedef aligned_mediump_bvec2 aligned_bvec2;
-
1286  typedef aligned_mediump_bvec3 aligned_bvec3;
-
1287  typedef aligned_mediump_bvec4 aligned_bvec4;
-
1288 #else //defined(GLM_PRECISION_HIGHP_BOOL)
-
1289  typedef aligned_highp_bvec1 aligned_bvec1;
-
1291 
-
1293  typedef aligned_highp_bvec2 aligned_bvec2;
-
1294 
-
1296  typedef aligned_highp_bvec3 aligned_bvec3;
-
1297 
-
1299  typedef aligned_highp_bvec4 aligned_bvec4;
-
1300 
-
1302  typedef packed_highp_bvec1 packed_bvec1;
-
1303 
-
1305  typedef packed_highp_bvec2 packed_bvec2;
-
1306 
-
1308  typedef packed_highp_bvec3 packed_bvec3;
-
1309 
-
1311  typedef packed_highp_bvec4 packed_bvec4;
-
1312 #endif//GLM_PRECISION
-
1313 
-
1315 }//namespace glm
-
packed_highp_uvec3 packed_uvec3
3 components vector tightly packed in memory of unsigned integer numbers.
-
packed_highp_mat2x2 packed_mat2x2
2 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
-
mat< 2, 4, float, aligned_lowp > aligned_lowp_mat2x4
2 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
-
vec< 4, bool, aligned_lowp > aligned_lowp_bvec4
4 components vector aligned in memory of bool values.
-
vec< 4, double, packed_highp > packed_highp_dvec4
4 components vector tightly packed in memory of double-precision floating-point numbers using high pr...
-
packed_highp_dmat2x3 packed_dmat2x3
2 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
-
vec< 3, bool, packed_lowp > packed_lowp_bvec3
3 components vector tightly packed in memory of bool values.
-
packed_highp_mat4 packed_mat4
4 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
-
aligned_highp_uvec2 aligned_uvec2
2 components vector aligned in memory of unsigned integer numbers.
-
vec< 2, bool, aligned_lowp > aligned_lowp_bvec2
2 components vector aligned in memory of bool values.
-
vec< 3, int, packed_highp > packed_highp_ivec3
3 components vector tightly packed in memory of signed integer numbers.
-
mat< 4, 2, double, packed_highp > packed_highp_dmat4x2
4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
-
packed_highp_dmat2 packed_dmat2
2 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
-
mat< 3, 3, double, packed_highp > packed_highp_dmat3
3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
-
mat< 4, 3, float, aligned_lowp > aligned_lowp_mat4x3
4 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
-
mat< 2, 4, double, packed_highp > packed_highp_dmat2x4
2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
-
vec< 2, int, aligned_mediump > aligned_mediump_ivec2
2 components vector aligned in memory of signed integer numbers.
-
mat< 4, 3, float, packed_mediump > packed_mediump_mat4x3
4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
-
packed_highp_ivec3 packed_ivec3
3 components vector tightly packed in memory of signed integer numbers.
-
mat< 3, 4, double, aligned_highp > aligned_highp_dmat3x4
3 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
-
mat< 3, 3, double, packed_mediump > packed_mediump_dmat3x3
3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
-
packed_highp_mat2 packed_mat2
2 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
-
mat< 3, 4, double, packed_lowp > packed_lowp_dmat3x4
3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
-
vec< 2, float, aligned_mediump > aligned_mediump_vec2
2 components vector aligned in memory of single-precision floating-point numbers using medium precisi...
-
mat< 4, 4, float, aligned_lowp > aligned_lowp_mat4x4
4 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
-
packed_highp_mat3 packed_mat3
3 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
-
packed_highp_dmat4 packed_dmat4
4 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
-
packed_highp_vec4 packed_vec4
4 components vector tightly packed in memory of single-precision floating-point numbers.
-
vec< 4, float, aligned_highp > aligned_highp_vec4
4 components vector aligned in memory of single-precision floating-point numbers using high precision...
-
mat< 4, 4, double, packed_highp > packed_highp_dmat4x4
4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
-
vec< 1, double, aligned_mediump > aligned_mediump_dvec1
1 component vector aligned in memory of double-precision floating-point numbers using medium precisio...
-
mat< 3, 3, double, aligned_highp > aligned_highp_dmat3x3
3 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
-
packed_highp_dvec3 packed_dvec3
3 components vector tightly packed in memory of double-precision floating-point numbers.
-
vec< 1, double, packed_mediump > packed_mediump_dvec1
1 component vector tightly packed in memory of double-precision floating-point numbers using medium p...
-
packed_highp_uvec1 packed_uvec1
1 component vector tightly packed in memory of unsigned integer numbers.
-
mat< 3, 4, float, packed_lowp > packed_lowp_mat3x4
3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
-
vec< 1, uint, aligned_lowp > aligned_lowp_uvec1
1 component vector aligned in memory of unsigned integer numbers.
-
mat< 2, 4, double, packed_lowp > packed_lowp_dmat2x4
2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
-
aligned_highp_ivec3 aligned_ivec3
3 components vector aligned in memory of signed integer numbers.
-
mat< 3, 4, double, packed_highp > packed_highp_dmat3x4
3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
-
packed_highp_vec2 packed_vec2
2 components vector tightly packed in memory of single-precision floating-point numbers.
-
vec< 1, uint, packed_highp > packed_highp_uvec1
1 component vector tightly packed in memory of unsigned integer numbers.
-
mat< 2, 2, float, packed_lowp > packed_lowp_mat2x2
2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
-
vec< 1, bool, packed_highp > packed_highp_bvec1
1 component vector tightly packed in memory of bool values.
-
aligned_highp_bvec4 aligned_bvec4
4 components vector aligned in memory of bool values.
-
aligned_highp_vec3 aligned_vec3
3 components vector aligned in memory of single-precision floating-point numbers. ...
-
mat< 3, 3, double, packed_lowp > packed_lowp_dmat3x3
3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
-
aligned_highp_uvec3 aligned_uvec3
3 components vector aligned in memory of unsigned integer numbers.
-
mat< 4, 2, double, aligned_mediump > aligned_mediump_dmat4x2
4 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
-
mat< 3, 3, float, aligned_highp > aligned_highp_mat3
3 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
-
vec< 2, uint, packed_mediump > packed_mediump_uvec2
2 components vector tightly packed in memory of unsigned integer numbers.
-
vec< 3, float, aligned_highp > aligned_highp_vec3
3 components vector aligned in memory of single-precision floating-point numbers using high precision...
-
aligned_highp_mat4x3 aligned_mat4x3
4 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
-
vec< 4, int, aligned_lowp > aligned_lowp_ivec4
4 components vector aligned in memory of signed integer numbers.
-
mat< 2, 2, float, aligned_highp > aligned_highp_mat2
2 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
-
packed_highp_vec1 packed_vec1
1 component vector tightly packed in memory of single-precision floating-point numbers.
-
vec< 2, int, aligned_lowp > aligned_lowp_ivec2
2 components vector aligned in memory of signed integer numbers.
-
mat< 4, 2, double, packed_lowp > packed_lowp_dmat4x2
4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
-
aligned_highp_dvec3 aligned_dvec3
3 components vector aligned in memory of double-precision floating-point numbers. ...
-
vec< 1, float, packed_lowp > packed_lowp_vec1
1 component vector tightly packed in memory of single-precision floating-point numbers using low prec...
-
vec< 3, bool, packed_mediump > packed_mediump_bvec3
3 components vector tightly packed in memory of bool values.
-
aligned_highp_dvec1 aligned_dvec1
1 component vector aligned in memory of double-precision floating-point numbers.
-
packed_highp_uvec4 packed_uvec4
4 components vector tightly packed in memory of unsigned integer numbers.
-
packed_highp_dmat3 packed_dmat3
3 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
-
vec< 2, float, aligned_highp > aligned_highp_vec2
2 components vector aligned in memory of single-precision floating-point numbers using high precision...
-
mat< 2, 2, double, aligned_highp > aligned_highp_dmat2x2
2 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
-
vec< 3, uint, aligned_lowp > aligned_lowp_uvec3
3 components vector aligned in memory of unsigned integer numbers.
-
vec< 1, double, aligned_lowp > aligned_lowp_dvec1
1 component vector aligned in memory of double-precision floating-point numbers using low precision a...
-
vec< 1, float, aligned_mediump > aligned_mediump_vec1
1 component vector aligned in memory of single-precision floating-point numbers using medium precisio...
-
mat< 4, 3, double, packed_lowp > packed_lowp_dmat4x3
4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
-
mat< 3, 4, double, aligned_lowp > aligned_lowp_dmat3x4
3 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
-
mat< 4, 2, float, packed_highp > packed_highp_mat4x2
4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
-
mat< 3, 2, float, aligned_mediump > aligned_mediump_mat3x2
3 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
-
mat< 4, 3, float, aligned_mediump > aligned_mediump_mat4x3
4 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
-
vec< 3, double, aligned_lowp > aligned_lowp_dvec3
3 components vector aligned in memory of double-precision floating-point numbers using low precision ...
-
mat< 2, 2, float, packed_mediump > packed_mediump_mat2
2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
-
packed_highp_mat3x3 packed_mat3x3
3 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
-
vec< 1, double, packed_highp > packed_highp_dvec1
1 component vector tightly packed in memory of double-precision floating-point numbers using high pre...
-
mat< 3, 2, double, aligned_lowp > aligned_lowp_dmat3x2
3 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
-
mat< 3, 3, float, packed_mediump > packed_mediump_mat3
3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
-
mat< 2, 2, float, aligned_lowp > aligned_lowp_mat2
2 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
-
packed_highp_dmat4x4 packed_dmat4x4
4 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
-
mat< 2, 3, double, aligned_lowp > aligned_lowp_dmat2x3
2 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
-
mat< 4, 4, float, packed_lowp > packed_lowp_mat4
4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
-
vec< 1, float, packed_highp > packed_highp_vec1
1 component vector tightly packed in memory of single-precision floating-point numbers using high pre...
-
mat< 2, 3, float, aligned_mediump > aligned_mediump_mat2x3
2 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
-
mat< 2, 2, float, packed_highp > packed_highp_mat2x2
2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
-
vec< 2, bool, aligned_mediump > aligned_mediump_bvec2
2 components vector aligned in memory of bool values.
-
mat< 2, 2, double, packed_lowp > packed_lowp_dmat2
2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
-
mat< 2, 2, double, aligned_mediump > aligned_mediump_dmat2
2 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
-
vec< 4, float, packed_mediump > packed_mediump_vec4
4 components vector tightly packed in memory of single-precision floating-point numbers using medium ...
-
aligned_highp_dmat4x2 aligned_dmat4x2
4 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
-
mat< 4, 4, double, packed_lowp > packed_lowp_dmat4x4
4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
-
mat< 2, 2, double, packed_highp > packed_highp_dmat2x2
2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
-
mat< 3, 3, float, packed_lowp > packed_lowp_mat3x3
3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
-
mat< 4, 3, float, packed_highp > packed_highp_mat4x3
4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
-
mat< 3, 3, float, aligned_mediump > aligned_mediump_mat3
3 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
-
mat< 4, 3, double, aligned_highp > aligned_highp_dmat4x3
4 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
-
vec< 1, bool, aligned_lowp > aligned_lowp_bvec1
1 component vector aligned in memory of bool values.
-
aligned_highp_mat2 aligned_mat2
2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
-
mat< 4, 4, double, aligned_mediump > aligned_mediump_dmat4x4
4 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
-
vec< 3, int, aligned_mediump > aligned_mediump_ivec3
3 components vector aligned in memory of signed integer numbers.
-
aligned_highp_bvec3 aligned_bvec3
3 components vector aligned in memory of bool values.
-
packed_highp_uvec2 packed_uvec2
2 components vector tightly packed in memory of unsigned integer numbers.
-
vec< 4, double, aligned_lowp > aligned_lowp_dvec4
4 components vector aligned in memory of double-precision floating-point numbers using low precision ...
-
mat< 3, 3, double, aligned_lowp > aligned_lowp_dmat3
3 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
-
mat< 4, 4, float, packed_mediump > packed_mediump_mat4x4
4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
-
vec< 4, uint, aligned_highp > aligned_highp_uvec4
4 components vector aligned in memory of unsigned integer numbers.
-
mat< 4, 3, double, packed_highp > packed_highp_dmat4x3
4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
-
mat< 4, 3, float, packed_lowp > packed_lowp_mat4x3
4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
-
vec< 2, float, aligned_lowp > aligned_lowp_vec2
2 components vector aligned in memory of single-precision floating-point numbers using low precision ...
-
vec< 1, int, packed_lowp > packed_lowp_ivec1
1 component vector tightly packed in memory of signed integer numbers.
-
vec< 3, bool, aligned_lowp > aligned_lowp_bvec3
3 components vector aligned in memory of bool values.
-
mat< 4, 4, double, aligned_mediump > aligned_mediump_dmat4
4 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
-
mat< 2, 4, float, packed_mediump > packed_mediump_mat2x4
2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
-
mat< 4, 4, double, packed_highp > packed_highp_dmat4
4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
-
mat< 4, 2, float, aligned_mediump > aligned_mediump_mat4x2
4 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
-
mat< 3, 4, float, packed_mediump > packed_mediump_mat3x4
3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
-
vec< 3, uint, packed_highp > packed_highp_uvec3
3 components vector tightly packed in memory of unsigned integer numbers.
-
aligned_highp_dmat2x2 aligned_dmat2x2
2 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
-
mat< 2, 2, double, packed_mediump > packed_mediump_dmat2
2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
-
mat< 3, 4, float, packed_highp > packed_highp_mat3x4
3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
-
packed_highp_mat3x4 packed_mat3x4
3 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
-
mat< 2, 4, double, packed_mediump > packed_mediump_dmat2x4
2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
-
vec< 1, uint, packed_mediump > packed_mediump_uvec1
1 component vector tightly packed in memory of unsigned integer numbers.
-
mat< 4, 4, double, aligned_lowp > aligned_lowp_dmat4
4 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
-
packed_highp_mat4x3 packed_mat4x3
4 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
-
vec< 4, int, packed_lowp > packed_lowp_ivec4
4 components vector tightly packed in memory of signed integer numbers.
-
vec< 4, int, packed_mediump > packed_mediump_ivec4
4 components vector tightly packed in memory of signed integer numbers.
-
vec< 2, double, aligned_mediump > aligned_mediump_dvec2
2 components vector aligned in memory of double-precision floating-point numbers using medium precisi...
-
packed_highp_ivec2 packed_ivec2
2 components vector tightly packed in memory of signed integer numbers.
-
aligned_highp_ivec1 aligned_ivec1
1 component vector aligned in memory of signed integer numbers.
-
vec< 3, int, packed_mediump > packed_mediump_ivec3
3 components vector tightly packed in memory of signed integer numbers.
-
vec< 3, uint, packed_lowp > packed_lowp_uvec3
3 components vector tightly packed in memory of unsigned integer numbers.
-
packed_highp_dmat4x2 packed_dmat4x2
4 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
-
vec< 4, bool, aligned_mediump > aligned_mediump_bvec4
4 components vector aligned in memory of bool values.
-
vec< 2, bool, aligned_highp > aligned_highp_bvec2
2 components vector aligned in memory of bool values.
-
vec< 4, float, packed_lowp > packed_lowp_vec4
4 components vector tightly packed in memory of single-precision floating-point numbers using low pre...
-
vec< 4, double, aligned_highp > aligned_highp_dvec4
4 components vector aligned in memory of double-precision floating-point numbers using high precision...
-
mat< 2, 3, double, packed_highp > packed_highp_dmat2x3
2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
-
mat< 2, 2, float, aligned_mediump > aligned_mediump_mat2
2 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
-
mat< 2, 4, double, aligned_mediump > aligned_mediump_dmat2x4
2 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
-
vec< 4, bool, packed_lowp > packed_lowp_bvec4
4 components vector tightly packed in memory of bool values.
-
vec< 2, double, packed_mediump > packed_mediump_dvec2
2 components vector tightly packed in memory of double-precision floating-point numbers using medium ...
-
vec< 2, double, aligned_highp > aligned_highp_dvec2
2 components vector aligned in memory of double-precision floating-point numbers using high precision...
-
mat< 2, 4, double, aligned_lowp > aligned_lowp_dmat2x4
2 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
-
aligned_highp_mat2x3 aligned_mat2x3
2 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
-
mat< 2, 2, float, packed_lowp > packed_lowp_mat2
2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
-
vec< 4, int, aligned_mediump > aligned_mediump_ivec4
4 components vector aligned in memory of signed integer numbers.
-
vec< 2, bool, packed_lowp > packed_lowp_bvec2
2 components vector tightly packed in memory of bool values.
-
vec< 2, int, packed_highp > packed_highp_ivec2
2 components vector tightly packed in memory of signed integer numbers.
-
packed_highp_dmat3x4 packed_dmat3x4
3 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
-
mat< 3, 3, double, packed_mediump > packed_mediump_dmat3
3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
-
mat< 4, 3, double, aligned_lowp > aligned_lowp_dmat4x3
4 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
-
mat< 4, 4, double, aligned_highp > aligned_highp_dmat4x4
4 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
-
mat< 4, 2, double, packed_mediump > packed_mediump_dmat4x2
4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
-
packed_highp_mat4x4 packed_mat4x4
4 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
-
mat< 4, 4, float, packed_highp > packed_highp_mat4
4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
-
mat< 4, 4, double, aligned_highp > aligned_highp_dmat4
4 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
-
mat< 3, 2, double, aligned_highp > aligned_highp_dmat3x2
3 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
-
vec< 1, double, packed_lowp > packed_lowp_dvec1
1 component vector tightly packed in memory of double-precision floating-point numbers using low prec...
-
mat< 4, 4, float, aligned_lowp > aligned_lowp_mat4
4 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
-
vec< 3, uint, packed_mediump > packed_mediump_uvec3
3 components vector tightly packed in memory of unsigned integer numbers.
-
aligned_highp_dmat4x3 aligned_dmat4x3
4 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
-
mat< 4, 2, double, aligned_lowp > aligned_lowp_dmat4x2
4 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
-
mat< 2, 3, double, packed_mediump > packed_mediump_dmat2x3
2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
-
mat< 4, 2, double, aligned_highp > aligned_highp_dmat4x2
4 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
-
aligned_highp_mat3x4 aligned_mat3x4
3 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
-
mat< 4, 4, double, aligned_lowp > aligned_lowp_dmat4x4
4 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
-
mat< 4, 4, float, aligned_mediump > aligned_mediump_mat4x4
4 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
-
aligned_highp_mat4 aligned_mat4
4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
-
mat< 2, 2, double, packed_lowp > packed_lowp_dmat2x2
2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
-
vec< 2, int, packed_mediump > packed_mediump_ivec2
2 components vector tightly packed in memory of signed integer numbers.
-
packed_highp_dmat3x2 packed_dmat3x2
3 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
-
mat< 4, 4, double, packed_mediump > packed_mediump_dmat4
4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
-
vec< 3, float, aligned_lowp > aligned_lowp_vec3
3 components vector aligned in memory of single-precision floating-point numbers using low precision ...
-
mat< 2, 4, float, packed_highp > packed_highp_mat2x4
2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
-
mat< 2, 3, float, aligned_highp > aligned_highp_mat2x3
2 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
-
mat< 3, 3, float, packed_mediump > packed_mediump_mat3x3
3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
-
vec< 4, float, packed_highp > packed_highp_vec4
4 components vector tightly packed in memory of single-precision floating-point numbers using high pr...
-
aligned_highp_uvec1 aligned_uvec1
1 component vector aligned in memory of unsigned integer numbers.
-
mat< 4, 4, float, aligned_highp > aligned_highp_mat4x4
4 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
-
mat< 4, 2, float, packed_mediump > packed_mediump_mat4x2
4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
-
mat< 3, 2, float, aligned_lowp > aligned_lowp_mat3x2
3 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
-
mat< 3, 3, float, packed_lowp > packed_lowp_mat3
3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
-
vec< 4, bool, packed_highp > packed_highp_bvec4
4 components vector tightly packed in memory of bool values.
-
aligned_highp_vec1 aligned_vec1
1 component vector aligned in memory of single-precision floating-point numbers.
-
packed_highp_vec3 packed_vec3
3 components vector tightly packed in memory of single-precision floating-point numbers.
-
packed_highp_mat2x3 packed_mat2x3
2 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
-
vec< 3, bool, aligned_mediump > aligned_mediump_bvec3
3 components vector aligned in memory of bool values.
-
vec< 1, uint, aligned_mediump > aligned_mediump_uvec1
1 component vector aligned in memory of unsigned integer numbers.
-
aligned_highp_bvec2 aligned_bvec2
2 components vector aligned in memory of bool values.
-
packed_highp_dmat2x2 packed_dmat2x2
2 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
-
mat< 4, 2, float, packed_lowp > packed_lowp_mat4x2
4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
-
packed_highp_dmat2x4 packed_dmat2x4
2 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
-
vec< 3, uint, aligned_highp > aligned_highp_uvec3
3 components vector aligned in memory of unsigned integer numbers.
-
vec< 2, bool, packed_mediump > packed_mediump_bvec2
2 components vector tightly packed in memory of bool values.
-
aligned_highp_bvec1 aligned_bvec1
1 component vector aligned in memory of bool values.
-
aligned_highp_mat3x2 aligned_mat3x2
3 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
-
vec< 1, int, aligned_lowp > aligned_lowp_ivec1
1 component vector aligned in memory of signed integer numbers.
-
mat< 3, 3, double, aligned_mediump > aligned_mediump_dmat3x3
3 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
-
mat< 3, 2, float, packed_lowp > packed_lowp_mat3x2
3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
-
mat< 2, 3, float, packed_highp > packed_highp_mat2x3
2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
-
mat< 4, 4, float, packed_lowp > packed_lowp_mat4x4
4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
-
aligned_highp_uvec4 aligned_uvec4
4 components vector aligned in memory of unsigned integer numbers.
-
packed_highp_bvec2 packed_bvec2
2 components vector tightly packed in memory of bool values.
-
mat< 3, 3, float, aligned_highp > aligned_highp_mat3x3
3 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
-
packed_highp_bvec4 packed_bvec4
4 components vector tightly packed in memory of bool values.
-
aligned_highp_ivec4 aligned_ivec4
4 components vector aligned in memory of signed integer numbers.
-
mat< 3, 3, float, packed_highp > packed_highp_mat3x3
3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
-
vec< 4, int, packed_highp > packed_highp_ivec4
4 components vector tightly packed in memory of signed integer numbers.
-
packed_highp_mat3x2 packed_mat3x2
3 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
-
vec< 2, uint, aligned_highp > aligned_highp_uvec2
2 components vector aligned in memory of unsigned integer numbers.
-
aligned_highp_dmat3 aligned_dmat3
3 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
-
vec< 3, int, aligned_highp > aligned_highp_ivec3
3 components vector aligned in memory of signed integer numbers.
-
mat< 2, 2, double, aligned_lowp > aligned_lowp_dmat2x2
2 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
-
mat< 3, 2, float, aligned_highp > aligned_highp_mat3x2
3 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
-
vec< 1, uint, aligned_highp > aligned_highp_uvec1
1 component vector aligned in memory of unsigned integer numbers.
-
aligned_highp_mat2x4 aligned_mat2x4
2 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
-
mat< 4, 4, float, aligned_mediump > aligned_mediump_mat4
4 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
-
packed_highp_dvec1 packed_dvec1
1 component vector tightly packed in memory of double-precision floating-point numbers.
-
aligned_highp_dmat2x4 aligned_dmat2x4
2 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
-
mat< 2, 2, double, packed_mediump > packed_mediump_dmat2x2
2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
-
vec< 3, double, packed_lowp > packed_lowp_dvec3
3 components vector tightly packed in memory of double-precision floating-point numbers using low pre...
-
vec< 4, uint, aligned_lowp > aligned_lowp_uvec4
4 components vector aligned in memory of unsigned integer numbers.
-
vec< 4, uint, packed_highp > packed_highp_uvec4
4 components vector tightly packed in memory of unsigned integer numbers.
-
mat< 2, 4, float, packed_lowp > packed_lowp_mat2x4
2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
-
aligned_highp_vec2 aligned_vec2
2 components vector aligned in memory of single-precision floating-point numbers. ...
-
aligned_highp_mat2x2 aligned_mat2x2
2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
-
mat< 3, 3, double, packed_lowp > packed_lowp_dmat3
3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
-
aligned_highp_dmat3x3 aligned_dmat3x3
3 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
-
vec< 2, double, packed_highp > packed_highp_dvec2
2 components vector tightly packed in memory of double-precision floating-point numbers using high pr...
-
mat< 2, 2, double, aligned_mediump > aligned_mediump_dmat2x2
2 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
-
vec< 1, uint, packed_lowp > packed_lowp_uvec1
1 component vector tightly packed in memory of unsigned integer numbers.
-
vec< 2, uint, packed_lowp > packed_lowp_uvec2
2 components vector tightly packed in memory of unsigned integer numbers.
-
packed_highp_dmat4x3 packed_dmat4x3
4 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
-
mat< 3, 3, double, aligned_lowp > aligned_lowp_dmat3x3
3 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
-
mat< 3, 3, float, packed_highp > packed_highp_mat3
3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
-
aligned_highp_dmat2x3 aligned_dmat2x3
2 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
-
mat< 2, 2, float, aligned_mediump > aligned_mediump_mat2x2
2 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
-
mat< 2, 2, float, aligned_lowp > aligned_lowp_mat2x2
2 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
-
vec< 1, bool, packed_mediump > packed_mediump_bvec1
1 component vector tightly packed in memory of bool values.
-
mat< 4, 4, double, packed_lowp > packed_lowp_dmat4
4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
-
packed_highp_ivec1 packed_ivec1
1 component vector tightly packed in memory of signed integer numbers.
-
vec< 1, bool, packed_lowp > packed_lowp_bvec1
1 component vector tightly packed in memory of bool values.
-
aligned_highp_dmat3x2 aligned_dmat3x2
3 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
-
mat< 3, 2, double, packed_highp > packed_highp_dmat3x2
3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
-
aligned_highp_ivec2 aligned_ivec2
2 components vector aligned in memory of signed integer numbers.
-
aligned_highp_dmat4x4 aligned_dmat4x4
4 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
-
mat< 3, 3, double, packed_highp > packed_highp_dmat3x3
3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
-
vec< 4, bool, aligned_highp > aligned_highp_bvec4
4 components vector aligned in memory of bool values.
-
vec< 4, bool, packed_mediump > packed_mediump_bvec4
4 components vector tightly packed in memory of bool values.
-
mat< 2, 2, float, packed_highp > packed_highp_mat2
2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
-
packed_highp_mat2x4 packed_mat2x4
2 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
-
mat< 4, 2, float, aligned_lowp > aligned_lowp_mat4x2
4 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
-
vec< 1, bool, aligned_mediump > aligned_mediump_bvec1
1 component vector aligned in memory of bool values.
-
mat< 2, 4, double, aligned_highp > aligned_highp_dmat2x4
2 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
-
mat< 3, 3, float, aligned_mediump > aligned_mediump_mat3x3
3 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
-
mat< 4, 4, float, packed_mediump > packed_mediump_mat4
4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
-
vec< 1, float, packed_mediump > packed_mediump_vec1
1 component vector tightly packed in memory of single-precision floating-point numbers using medium p...
-
aligned_highp_mat4x4 aligned_mat4x4
4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
-
aligned_highp_mat4x2 aligned_mat4x2
4 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
-
vec< 3, float, packed_highp > packed_highp_vec3
3 components vector tightly packed in memory of single-precision floating-point numbers using high pr...
-
aligned_highp_dvec4 aligned_dvec4
4 components vector aligned in memory of double-precision floating-point numbers. ...
-
vec< 1, int, aligned_highp > aligned_highp_ivec1
1 component vector aligned in memory of signed integer numbers.
-
mat< 3, 3, float, aligned_lowp > aligned_lowp_mat3
3 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
-
mat< 2, 2, double, aligned_highp > aligned_highp_dmat2
2 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
-
aligned_highp_dmat3x4 aligned_dmat3x4
3 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
-
packed_highp_bvec3 packed_bvec3
3 components vector tightly packed in memory of bool values.
-
mat< 4, 4, float, packed_highp > packed_highp_mat4x4
4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
-
vec< 3, float, packed_mediump > packed_mediump_vec3
3 components vector tightly packed in memory of single-precision floating-point numbers using medium ...
-
vec< 2, uint, aligned_lowp > aligned_lowp_uvec2
2 components vector aligned in memory of unsigned integer numbers.
-
vec< 1, bool, aligned_highp > aligned_highp_bvec1
1 component vector aligned in memory of bool values.
-
vec< 2, bool, packed_highp > packed_highp_bvec2
2 components vector tightly packed in memory of bool values.
-
vec< 1, int, packed_highp > packed_highp_ivec1
1 component vector tightly packed in memory of signed integer numbers.
-
mat< 2, 4, float, aligned_highp > aligned_highp_mat2x4
2 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
-
vec< 2, int, packed_lowp > packed_lowp_ivec2
2 components vector tightly packed in memory of signed integer numbers.
-
vec< 3, double, packed_highp > packed_highp_dvec3
3 components vector tightly packed in memory of double-precision floating-point numbers using high pr...
-
vec< 2, int, aligned_highp > aligned_highp_ivec2
2 components vector aligned in memory of signed integer numbers.
-
aligned_highp_dmat2 aligned_dmat2
2 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
-
mat< 3, 2, double, packed_mediump > packed_mediump_dmat3x2
3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
-
vec< 3, uint, aligned_mediump > aligned_mediump_uvec3
3 components vector aligned in memory of unsigned integer numbers.
-
vec< 4, double, packed_lowp > packed_lowp_dvec4
4 components vector tightly packed in memory of double-precision floating-point numbers using low pre...
-
vec< 3, double, packed_mediump > packed_mediump_dvec3
3 components vector tightly packed in memory of double-precision floating-point numbers using medium ...
-
mat< 2, 3, double, aligned_mediump > aligned_mediump_dmat2x3
2 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
-
vec< 3, int, aligned_lowp > aligned_lowp_ivec3
3 components vector aligned in memory of signed integer numbers.
-
mat< 2, 2, float, aligned_highp > aligned_highp_mat2x2
2 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
-
mat< 4, 3, float, aligned_highp > aligned_highp_mat4x3
4 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
-
vec< 3, bool, aligned_highp > aligned_highp_bvec3
3 components vector aligned in memory of bool values.
-
vec< 3, float, packed_lowp > packed_lowp_vec3
3 components vector tightly packed in memory of single-precision floating-point numbers using low pre...
-
vec< 2, uint, aligned_mediump > aligned_mediump_uvec2
2 components vector aligned in memory of unsigned integer numbers.
-
vec< 1, int, packed_mediump > packed_mediump_ivec1
1 component vector tightly packed in memory of signed integer numbers.
-
mat< 3, 3, double, aligned_highp > aligned_highp_dmat3
3 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
-
vec< 4, uint, packed_mediump > packed_mediump_uvec4
4 components vector tightly packed in memory of unsigned integer numbers.
-
mat< 3, 2, double, aligned_mediump > aligned_mediump_dmat3x2
3 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
-
mat< 3, 4, double, aligned_mediump > aligned_mediump_dmat3x4
3 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
-
mat< 4, 3, double, packed_mediump > packed_mediump_dmat4x3
4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
-
vec< 2, uint, packed_highp > packed_highp_uvec2
2 components vector tightly packed in memory of unsigned integer numbers.
-
vec< 4, uint, aligned_mediump > aligned_mediump_uvec4
4 components vector aligned in memory of unsigned integer numbers.
-
vec< 4, double, packed_mediump > packed_mediump_dvec4
4 components vector tightly packed in memory of double-precision floating-point numbers using medium ...
-
aligned_highp_vec4 aligned_vec4
4 components vector aligned in memory of single-precision floating-point numbers. ...
-
vec< 4, int, aligned_highp > aligned_highp_ivec4
4 components vector aligned in memory of signed integer numbers.
-
vec< 2, double, aligned_lowp > aligned_lowp_dvec2
2 components vector aligned in memory of double-precision floating-point numbers using low precision ...
-
packed_highp_bvec1 packed_bvec1
1 components vector tightly packed in memory of bool values.
-
mat< 2, 3, float, packed_lowp > packed_lowp_mat2x3
2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
-
vec< 1, float, aligned_lowp > aligned_lowp_vec1
1 component vector aligned in memory of single-precision floating-point numbers using low precision a...
-
vec< 2, float, packed_lowp > packed_lowp_vec2
2 components vector tightly packed in memory of single-precision floating-point numbers using low pre...
-
vec< 1, double, aligned_highp > aligned_highp_dvec1
1 component vector aligned in memory of double-precision floating-point numbers using high precision ...
-
mat< 2, 3, float, packed_mediump > packed_mediump_mat2x3
2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
-
mat< 3, 2, float, packed_mediump > packed_mediump_mat3x2
3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
-
vec< 4, float, aligned_mediump > aligned_mediump_vec4
4 components vector aligned in memory of single-precision floating-point numbers using medium precisi...
-
packed_highp_dvec4 packed_dvec4
4 components vector tightly packed in memory of double-precision floating-point numbers.
-
vec< 4, double, aligned_mediump > aligned_mediump_dvec4
4 components vector aligned in memory of double-precision floating-point numbers using medium precisi...
-
mat< 4, 4, double, packed_mediump > packed_mediump_dmat4x4
4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
-
mat< 3, 4, double, packed_mediump > packed_mediump_dmat3x4
3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
-
mat< 3, 4, float, aligned_highp > aligned_highp_mat3x4
3 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
-
mat< 4, 4, float, aligned_highp > aligned_highp_mat4
4 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
-
mat< 2, 3, double, packed_lowp > packed_lowp_dmat2x3
2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
-
mat< 3, 4, float, aligned_mediump > aligned_mediump_mat3x4
3 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
-
packed_highp_dmat3x3 packed_dmat3x3
3 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
-
aligned_highp_mat3x3 aligned_mat3x3
3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
-
vec< 3, int, packed_lowp > packed_lowp_ivec3
3 components vector tightly packed in memory of signed integer numbers.
-
aligned_highp_dmat4 aligned_dmat4
4 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
-
mat< 4, 2, float, aligned_highp > aligned_highp_mat4x2
4 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
-
vec< 2, float, packed_highp > packed_highp_vec2
2 components vector tightly packed in memory of single-precision floating-point numbers using high pr...
-
mat< 2, 2, double, aligned_lowp > aligned_lowp_dmat2
2 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
-
vec< 4, uint, packed_lowp > packed_lowp_uvec4
4 components vector tightly packed in memory of unsigned integer numbers.
-
packed_highp_ivec4 packed_ivec4
4 components vector tightly packed in memory of signed integer numbers.
-
packed_highp_dvec2 packed_dvec2
2 components vector tightly packed in memory of double-precision floating-point numbers.
-
mat< 3, 3, float, aligned_lowp > aligned_lowp_mat3x3
3 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
-
mat< 3, 2, double, packed_lowp > packed_lowp_dmat3x2
3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
-
mat< 3, 2, float, packed_highp > packed_highp_mat3x2
3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
-
mat< 3, 3, double, aligned_mediump > aligned_mediump_dmat3
3 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
-
mat< 2, 3, float, aligned_lowp > aligned_lowp_mat2x3
2 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
-
vec< 1, int, aligned_mediump > aligned_mediump_ivec1
1 component vector aligned in memory of signed integer numbers.
-
mat< 2, 2, double, packed_highp > packed_highp_dmat2
2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
-
vec< 2, float, packed_mediump > packed_mediump_vec2
2 components vector tightly packed in memory of single-precision floating-point numbers using medium ...
-
aligned_highp_mat3 aligned_mat3
3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
-
mat< 4, 3, double, aligned_mediump > aligned_mediump_dmat4x3
4 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
-
mat< 2, 2, float, packed_mediump > packed_mediump_mat2x2
2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
-
mat< 2, 3, double, aligned_highp > aligned_highp_dmat2x3
2 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
-
aligned_highp_dvec2 aligned_dvec2
2 components vector aligned in memory of double-precision floating-point numbers. ...
-
mat< 3, 4, float, aligned_lowp > aligned_lowp_mat3x4
3 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
-
packed_highp_mat4x2 packed_mat4x2
4 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
-
vec< 4, float, aligned_lowp > aligned_lowp_vec4
4 components vector aligned in memory of single-precision floating-point numbers using low precision ...
-
vec< 3, bool, packed_highp > packed_highp_bvec3
3 components vector tightly packed in memory of bool values.
-
vec< 2, double, packed_lowp > packed_lowp_dvec2
2 components vector tightly packed in memory of double-precision floating-point numbers using low pre...
-
vec< 3, double, aligned_mediump > aligned_mediump_dvec3
3 components vector aligned in memory of double-precision floating-point numbers using medium precisi...
-
vec< 3, float, aligned_mediump > aligned_mediump_vec3
3 components vector aligned in memory of single-precision floating-point numbers using medium precisi...
-
mat< 2, 4, float, aligned_mediump > aligned_mediump_mat2x4
2 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
-
Definition: common.hpp:20
-
vec< 3, double, aligned_highp > aligned_highp_dvec3
3 components vector aligned in memory of double-precision floating-point numbers using high precision...
-
vec< 1, float, aligned_highp > aligned_highp_vec1
1 component vector aligned in memory of single-precision floating-point numbers using high precision ...
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00162.html b/tests/OpenGL/package/glm/doc/api/a00162.html deleted file mode 100644 index 39c63374..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00162.html +++ /dev/null @@ -1,735 +0,0 @@ - - - - - - -0.9.9 API documentation: type_aligned.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
gtx/type_aligned.hpp File Reference
-
-
- -

GLM_GTX_type_aligned -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

 GLM_ALIGNED_TYPEDEF (lowp_int8, aligned_lowp_int8, 1)
 Low qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int16, aligned_lowp_int16, 2)
 Low qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int32, aligned_lowp_int32, 4)
 Low qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int64, aligned_lowp_int64, 8)
 Low qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int8_t, aligned_lowp_int8_t, 1)
 Low qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int16_t, aligned_lowp_int16_t, 2)
 Low qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int32_t, aligned_lowp_int32_t, 4)
 Low qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int64_t, aligned_lowp_int64_t, 8)
 Low qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_i8, aligned_lowp_i8, 1)
 Low qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_i16, aligned_lowp_i16, 2)
 Low qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_i32, aligned_lowp_i32, 4)
 Low qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_i64, aligned_lowp_i64, 8)
 Low qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int8, aligned_mediump_int8, 1)
 Medium qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int16, aligned_mediump_int16, 2)
 Medium qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int32, aligned_mediump_int32, 4)
 Medium qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int64, aligned_mediump_int64, 8)
 Medium qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int8_t, aligned_mediump_int8_t, 1)
 Medium qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int16_t, aligned_mediump_int16_t, 2)
 Medium qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int32_t, aligned_mediump_int32_t, 4)
 Medium qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int64_t, aligned_mediump_int64_t, 8)
 Medium qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_i8, aligned_mediump_i8, 1)
 Medium qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_i16, aligned_mediump_i16, 2)
 Medium qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_i32, aligned_mediump_i32, 4)
 Medium qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_i64, aligned_mediump_i64, 8)
 Medium qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int8, aligned_highp_int8, 1)
 High qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int16, aligned_highp_int16, 2)
 High qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int32, aligned_highp_int32, 4)
 High qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int64, aligned_highp_int64, 8)
 High qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int8_t, aligned_highp_int8_t, 1)
 High qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int16_t, aligned_highp_int16_t, 2)
 High qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int32_t, aligned_highp_int32_t, 4)
 High qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int64_t, aligned_highp_int64_t, 8)
 High qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_i8, aligned_highp_i8, 1)
 High qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_i16, aligned_highp_i16, 2)
 High qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_i32, aligned_highp_i32, 4)
 High qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_i64, aligned_highp_i64, 8)
 High qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int8, aligned_int8, 1)
 Default qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int16, aligned_int16, 2)
 Default qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int32, aligned_int32, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int64, aligned_int64, 8)
 Default qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int8_t, aligned_int8_t, 1)
 Default qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int16_t, aligned_int16_t, 2)
 Default qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int32_t, aligned_int32_t, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int64_t, aligned_int64_t, 8)
 Default qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i8, aligned_i8, 1)
 Default qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i16, aligned_i16, 2)
 Default qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i32, aligned_i32, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i64, aligned_i64, 8)
 Default qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (ivec1, aligned_ivec1, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (ivec2, aligned_ivec2, 8)
 Default qualifier 32 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (ivec3, aligned_ivec3, 16)
 Default qualifier 32 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (ivec4, aligned_ivec4, 16)
 Default qualifier 32 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i8vec1, aligned_i8vec1, 1)
 Default qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i8vec2, aligned_i8vec2, 2)
 Default qualifier 8 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i8vec3, aligned_i8vec3, 4)
 Default qualifier 8 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i8vec4, aligned_i8vec4, 4)
 Default qualifier 8 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i16vec1, aligned_i16vec1, 2)
 Default qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i16vec2, aligned_i16vec2, 4)
 Default qualifier 16 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i16vec3, aligned_i16vec3, 8)
 Default qualifier 16 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i16vec4, aligned_i16vec4, 8)
 Default qualifier 16 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i32vec1, aligned_i32vec1, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i32vec2, aligned_i32vec2, 8)
 Default qualifier 32 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i32vec3, aligned_i32vec3, 16)
 Default qualifier 32 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i32vec4, aligned_i32vec4, 16)
 Default qualifier 32 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i64vec1, aligned_i64vec1, 8)
 Default qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i64vec2, aligned_i64vec2, 16)
 Default qualifier 64 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i64vec3, aligned_i64vec3, 32)
 Default qualifier 64 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i64vec4, aligned_i64vec4, 32)
 Default qualifier 64 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint8, aligned_lowp_uint8, 1)
 Low qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint16, aligned_lowp_uint16, 2)
 Low qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint32, aligned_lowp_uint32, 4)
 Low qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint64, aligned_lowp_uint64, 8)
 Low qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint8_t, aligned_lowp_uint8_t, 1)
 Low qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint16_t, aligned_lowp_uint16_t, 2)
 Low qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint32_t, aligned_lowp_uint32_t, 4)
 Low qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint64_t, aligned_lowp_uint64_t, 8)
 Low qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_u8, aligned_lowp_u8, 1)
 Low qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_u16, aligned_lowp_u16, 2)
 Low qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_u32, aligned_lowp_u32, 4)
 Low qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_u64, aligned_lowp_u64, 8)
 Low qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint8, aligned_mediump_uint8, 1)
 Medium qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint16, aligned_mediump_uint16, 2)
 Medium qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint32, aligned_mediump_uint32, 4)
 Medium qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint64, aligned_mediump_uint64, 8)
 Medium qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint8_t, aligned_mediump_uint8_t, 1)
 Medium qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint16_t, aligned_mediump_uint16_t, 2)
 Medium qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint32_t, aligned_mediump_uint32_t, 4)
 Medium qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint64_t, aligned_mediump_uint64_t, 8)
 Medium qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_u8, aligned_mediump_u8, 1)
 Medium qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_u16, aligned_mediump_u16, 2)
 Medium qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_u32, aligned_mediump_u32, 4)
 Medium qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_u64, aligned_mediump_u64, 8)
 Medium qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint8, aligned_highp_uint8, 1)
 High qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint16, aligned_highp_uint16, 2)
 High qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint32, aligned_highp_uint32, 4)
 High qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint64, aligned_highp_uint64, 8)
 High qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint8_t, aligned_highp_uint8_t, 1)
 High qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint16_t, aligned_highp_uint16_t, 2)
 High qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint32_t, aligned_highp_uint32_t, 4)
 High qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint64_t, aligned_highp_uint64_t, 8)
 High qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_u8, aligned_highp_u8, 1)
 High qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_u16, aligned_highp_u16, 2)
 High qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_u32, aligned_highp_u32, 4)
 High qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_u64, aligned_highp_u64, 8)
 High qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint8, aligned_uint8, 1)
 Default qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint16, aligned_uint16, 2)
 Default qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint32, aligned_uint32, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint64, aligned_uint64, 8)
 Default qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint8_t, aligned_uint8_t, 1)
 Default qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint16_t, aligned_uint16_t, 2)
 Default qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint32_t, aligned_uint32_t, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint64_t, aligned_uint64_t, 8)
 Default qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u8, aligned_u8, 1)
 Default qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u16, aligned_u16, 2)
 Default qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u32, aligned_u32, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u64, aligned_u64, 8)
 Default qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uvec1, aligned_uvec1, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uvec2, aligned_uvec2, 8)
 Default qualifier 32 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (uvec3, aligned_uvec3, 16)
 Default qualifier 32 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (uvec4, aligned_uvec4, 16)
 Default qualifier 32 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u8vec1, aligned_u8vec1, 1)
 Default qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u8vec2, aligned_u8vec2, 2)
 Default qualifier 8 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u8vec3, aligned_u8vec3, 4)
 Default qualifier 8 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u8vec4, aligned_u8vec4, 4)
 Default qualifier 8 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u16vec1, aligned_u16vec1, 2)
 Default qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u16vec2, aligned_u16vec2, 4)
 Default qualifier 16 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u16vec3, aligned_u16vec3, 8)
 Default qualifier 16 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u16vec4, aligned_u16vec4, 8)
 Default qualifier 16 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u32vec1, aligned_u32vec1, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u32vec2, aligned_u32vec2, 8)
 Default qualifier 32 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u32vec3, aligned_u32vec3, 16)
 Default qualifier 32 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u32vec4, aligned_u32vec4, 16)
 Default qualifier 32 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u64vec1, aligned_u64vec1, 8)
 Default qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u64vec2, aligned_u64vec2, 16)
 Default qualifier 64 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u64vec3, aligned_u64vec3, 32)
 Default qualifier 64 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u64vec4, aligned_u64vec4, 32)
 Default qualifier 64 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (float32, aligned_float32, 4)
 32 bit single-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float32_t, aligned_float32_t, 4)
 32 bit single-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float32, aligned_f32, 4)
 32 bit single-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float64, aligned_float64, 8)
 64 bit double-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float64_t, aligned_float64_t, 8)
 64 bit double-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float64, aligned_f64, 8)
 64 bit double-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (vec1, aligned_vec1, 4)
 Single-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (vec2, aligned_vec2, 8)
 Single-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (vec3, aligned_vec3, 16)
 Single-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (vec4, aligned_vec4, 16)
 Single-qualifier floating-point aligned vector of 4 components. More...
 
 GLM_ALIGNED_TYPEDEF (fvec1, aligned_fvec1, 4)
 Single-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (fvec2, aligned_fvec2, 8)
 Single-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (fvec3, aligned_fvec3, 16)
 Single-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (fvec4, aligned_fvec4, 16)
 Single-qualifier floating-point aligned vector of 4 components. More...
 
 GLM_ALIGNED_TYPEDEF (f32vec1, aligned_f32vec1, 4)
 Single-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (f32vec2, aligned_f32vec2, 8)
 Single-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (f32vec3, aligned_f32vec3, 16)
 Single-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (f32vec4, aligned_f32vec4, 16)
 Single-qualifier floating-point aligned vector of 4 components. More...
 
 GLM_ALIGNED_TYPEDEF (dvec1, aligned_dvec1, 8)
 Double-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (dvec2, aligned_dvec2, 16)
 Double-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (dvec3, aligned_dvec3, 32)
 Double-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (dvec4, aligned_dvec4, 32)
 Double-qualifier floating-point aligned vector of 4 components. More...
 
 GLM_ALIGNED_TYPEDEF (f64vec1, aligned_f64vec1, 8)
 Double-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (f64vec2, aligned_f64vec2, 16)
 Double-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (f64vec3, aligned_f64vec3, 32)
 Double-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (f64vec4, aligned_f64vec4, 32)
 Double-qualifier floating-point aligned vector of 4 components. More...
 
 GLM_ALIGNED_TYPEDEF (mat2, aligned_mat2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (mat3, aligned_mat3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (mat4, aligned_mat4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat2x2, aligned_fmat2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat3x3, aligned_fmat3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat4x4, aligned_fmat4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat2x2, aligned_fmat2x2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat2x3, aligned_fmat2x3, 16)
 Single-qualifier floating-point aligned 2x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat2x4, aligned_fmat2x4, 16)
 Single-qualifier floating-point aligned 2x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat3x2, aligned_fmat3x2, 16)
 Single-qualifier floating-point aligned 3x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat3x3, aligned_fmat3x3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat3x4, aligned_fmat3x4, 16)
 Single-qualifier floating-point aligned 3x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat4x2, aligned_fmat4x2, 16)
 Single-qualifier floating-point aligned 4x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat4x3, aligned_fmat4x3, 16)
 Single-qualifier floating-point aligned 4x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat4x4, aligned_fmat4x4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat2x2, aligned_f32mat2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat3x3, aligned_f32mat3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat4x4, aligned_f32mat4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat2x2, aligned_f32mat2x2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat2x3, aligned_f32mat2x3, 16)
 Single-qualifier floating-point aligned 2x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat2x4, aligned_f32mat2x4, 16)
 Single-qualifier floating-point aligned 2x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat3x2, aligned_f32mat3x2, 16)
 Single-qualifier floating-point aligned 3x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat3x3, aligned_f32mat3x3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat3x4, aligned_f32mat3x4, 16)
 Single-qualifier floating-point aligned 3x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat4x2, aligned_f32mat4x2, 16)
 Single-qualifier floating-point aligned 4x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat4x3, aligned_f32mat4x3, 16)
 Single-qualifier floating-point aligned 4x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat4x4, aligned_f32mat4x4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat2x2, aligned_f64mat2, 32)
 Double-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat3x3, aligned_f64mat3, 32)
 Double-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat4x4, aligned_f64mat4, 32)
 Double-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat2x2, aligned_f64mat2x2, 32)
 Double-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat2x3, aligned_f64mat2x3, 32)
 Double-qualifier floating-point aligned 2x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat2x4, aligned_f64mat2x4, 32)
 Double-qualifier floating-point aligned 2x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat3x2, aligned_f64mat3x2, 32)
 Double-qualifier floating-point aligned 3x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat3x3, aligned_f64mat3x3, 32)
 Double-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat3x4, aligned_f64mat3x4, 32)
 Double-qualifier floating-point aligned 3x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat4x2, aligned_f64mat4x2, 32)
 Double-qualifier floating-point aligned 4x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat4x3, aligned_f64mat4x3, 32)
 Double-qualifier floating-point aligned 4x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat4x4, aligned_f64mat4x4, 32)
 Double-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (quat, aligned_quat, 16)
 Single-qualifier floating-point aligned quaternion. More...
 
 GLM_ALIGNED_TYPEDEF (quat, aligned_fquat, 16)
 Single-qualifier floating-point aligned quaternion. More...
 
 GLM_ALIGNED_TYPEDEF (dquat, aligned_dquat, 32)
 Double-qualifier floating-point aligned quaternion. More...
 
 GLM_ALIGNED_TYPEDEF (f32quat, aligned_f32quat, 16)
 Single-qualifier floating-point aligned quaternion. More...
 
 GLM_ALIGNED_TYPEDEF (f64quat, aligned_f64quat, 32)
 Double-qualifier floating-point aligned quaternion. More...
 
-

Detailed Description

-

GLM_GTX_type_aligned

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

Definition in file gtx/type_aligned.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00162_source.html b/tests/OpenGL/package/glm/doc/api/a00162_source.html deleted file mode 100644 index 01745768..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00162_source.html +++ /dev/null @@ -1,842 +0,0 @@ - - - - - - -0.9.9 API documentation: type_aligned.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
gtx/type_aligned.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../gtc/type_precision.hpp"
-
18 #include "../gtc/quaternion.hpp"
-
19 
-
20 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
21 # ifndef GLM_ENABLE_EXPERIMENTAL
-
22 # pragma message("GLM: GLM_GTX_type_aligned is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
23 # else
-
24 # pragma message("GLM: GLM_GTX_type_aligned extension included")
-
25 # endif
-
26 #endif
-
27 
-
28 namespace glm
-
29 {
-
31  // Signed int vector types
-
32 
-
35 
-
38  GLM_ALIGNED_TYPEDEF(lowp_int8, aligned_lowp_int8, 1);
-
39 
-
42  GLM_ALIGNED_TYPEDEF(lowp_int16, aligned_lowp_int16, 2);
-
43 
-
46  GLM_ALIGNED_TYPEDEF(lowp_int32, aligned_lowp_int32, 4);
-
47 
-
50  GLM_ALIGNED_TYPEDEF(lowp_int64, aligned_lowp_int64, 8);
-
51 
-
52 
-
55  GLM_ALIGNED_TYPEDEF(lowp_int8_t, aligned_lowp_int8_t, 1);
-
56 
-
59  GLM_ALIGNED_TYPEDEF(lowp_int16_t, aligned_lowp_int16_t, 2);
-
60 
-
63  GLM_ALIGNED_TYPEDEF(lowp_int32_t, aligned_lowp_int32_t, 4);
-
64 
-
67  GLM_ALIGNED_TYPEDEF(lowp_int64_t, aligned_lowp_int64_t, 8);
-
68 
-
69 
-
72  GLM_ALIGNED_TYPEDEF(lowp_i8, aligned_lowp_i8, 1);
-
73 
-
76  GLM_ALIGNED_TYPEDEF(lowp_i16, aligned_lowp_i16, 2);
-
77 
-
80  GLM_ALIGNED_TYPEDEF(lowp_i32, aligned_lowp_i32, 4);
-
81 
-
84  GLM_ALIGNED_TYPEDEF(lowp_i64, aligned_lowp_i64, 8);
-
85 
-
86 
-
89  GLM_ALIGNED_TYPEDEF(mediump_int8, aligned_mediump_int8, 1);
-
90 
-
93  GLM_ALIGNED_TYPEDEF(mediump_int16, aligned_mediump_int16, 2);
-
94 
-
97  GLM_ALIGNED_TYPEDEF(mediump_int32, aligned_mediump_int32, 4);
-
98 
-
101  GLM_ALIGNED_TYPEDEF(mediump_int64, aligned_mediump_int64, 8);
-
102 
-
103 
-
106  GLM_ALIGNED_TYPEDEF(mediump_int8_t, aligned_mediump_int8_t, 1);
-
107 
-
110  GLM_ALIGNED_TYPEDEF(mediump_int16_t, aligned_mediump_int16_t, 2);
-
111 
-
114  GLM_ALIGNED_TYPEDEF(mediump_int32_t, aligned_mediump_int32_t, 4);
-
115 
-
118  GLM_ALIGNED_TYPEDEF(mediump_int64_t, aligned_mediump_int64_t, 8);
-
119 
-
120 
-
123  GLM_ALIGNED_TYPEDEF(mediump_i8, aligned_mediump_i8, 1);
-
124 
-
127  GLM_ALIGNED_TYPEDEF(mediump_i16, aligned_mediump_i16, 2);
-
128 
-
131  GLM_ALIGNED_TYPEDEF(mediump_i32, aligned_mediump_i32, 4);
-
132 
-
135  GLM_ALIGNED_TYPEDEF(mediump_i64, aligned_mediump_i64, 8);
-
136 
-
137 
-
140  GLM_ALIGNED_TYPEDEF(highp_int8, aligned_highp_int8, 1);
-
141 
-
144  GLM_ALIGNED_TYPEDEF(highp_int16, aligned_highp_int16, 2);
-
145 
-
148  GLM_ALIGNED_TYPEDEF(highp_int32, aligned_highp_int32, 4);
-
149 
-
152  GLM_ALIGNED_TYPEDEF(highp_int64, aligned_highp_int64, 8);
-
153 
-
154 
-
157  GLM_ALIGNED_TYPEDEF(highp_int8_t, aligned_highp_int8_t, 1);
-
158 
-
161  GLM_ALIGNED_TYPEDEF(highp_int16_t, aligned_highp_int16_t, 2);
-
162 
-
165  GLM_ALIGNED_TYPEDEF(highp_int32_t, aligned_highp_int32_t, 4);
-
166 
-
169  GLM_ALIGNED_TYPEDEF(highp_int64_t, aligned_highp_int64_t, 8);
-
170 
-
171 
-
174  GLM_ALIGNED_TYPEDEF(highp_i8, aligned_highp_i8, 1);
-
175 
-
178  GLM_ALIGNED_TYPEDEF(highp_i16, aligned_highp_i16, 2);
-
179 
-
182  GLM_ALIGNED_TYPEDEF(highp_i32, aligned_highp_i32, 4);
-
183 
-
186  GLM_ALIGNED_TYPEDEF(highp_i64, aligned_highp_i64, 8);
-
187 
-
188 
-
191  GLM_ALIGNED_TYPEDEF(int8, aligned_int8, 1);
-
192 
-
195  GLM_ALIGNED_TYPEDEF(int16, aligned_int16, 2);
-
196 
-
199  GLM_ALIGNED_TYPEDEF(int32, aligned_int32, 4);
-
200 
-
203  GLM_ALIGNED_TYPEDEF(int64, aligned_int64, 8);
-
204 
-
205 
-
208  GLM_ALIGNED_TYPEDEF(int8_t, aligned_int8_t, 1);
-
209 
-
212  GLM_ALIGNED_TYPEDEF(int16_t, aligned_int16_t, 2);
-
213 
-
216  GLM_ALIGNED_TYPEDEF(int32_t, aligned_int32_t, 4);
-
217 
-
220  GLM_ALIGNED_TYPEDEF(int64_t, aligned_int64_t, 8);
-
221 
-
222 
-
225  GLM_ALIGNED_TYPEDEF(i8, aligned_i8, 1);
-
226 
-
229  GLM_ALIGNED_TYPEDEF(i16, aligned_i16, 2);
-
230 
-
233  GLM_ALIGNED_TYPEDEF(i32, aligned_i32, 4);
-
234 
-
237  GLM_ALIGNED_TYPEDEF(i64, aligned_i64, 8);
-
238 
-
239 
- -
243 
- -
247 
- -
251 
- -
255 
-
256 
-
259  GLM_ALIGNED_TYPEDEF(i8vec1, aligned_i8vec1, 1);
-
260 
-
263  GLM_ALIGNED_TYPEDEF(i8vec2, aligned_i8vec2, 2);
-
264 
-
267  GLM_ALIGNED_TYPEDEF(i8vec3, aligned_i8vec3, 4);
-
268 
-
271  GLM_ALIGNED_TYPEDEF(i8vec4, aligned_i8vec4, 4);
-
272 
-
273 
-
276  GLM_ALIGNED_TYPEDEF(i16vec1, aligned_i16vec1, 2);
-
277 
-
280  GLM_ALIGNED_TYPEDEF(i16vec2, aligned_i16vec2, 4);
-
281 
-
284  GLM_ALIGNED_TYPEDEF(i16vec3, aligned_i16vec3, 8);
-
285 
-
288  GLM_ALIGNED_TYPEDEF(i16vec4, aligned_i16vec4, 8);
-
289 
-
290 
-
293  GLM_ALIGNED_TYPEDEF(i32vec1, aligned_i32vec1, 4);
-
294 
-
297  GLM_ALIGNED_TYPEDEF(i32vec2, aligned_i32vec2, 8);
-
298 
-
301  GLM_ALIGNED_TYPEDEF(i32vec3, aligned_i32vec3, 16);
-
302 
-
305  GLM_ALIGNED_TYPEDEF(i32vec4, aligned_i32vec4, 16);
-
306 
-
307 
-
310  GLM_ALIGNED_TYPEDEF(i64vec1, aligned_i64vec1, 8);
-
311 
-
314  GLM_ALIGNED_TYPEDEF(i64vec2, aligned_i64vec2, 16);
-
315 
-
318  GLM_ALIGNED_TYPEDEF(i64vec3, aligned_i64vec3, 32);
-
319 
-
322  GLM_ALIGNED_TYPEDEF(i64vec4, aligned_i64vec4, 32);
-
323 
-
324 
-
326  // Unsigned int vector types
-
327 
-
330  GLM_ALIGNED_TYPEDEF(lowp_uint8, aligned_lowp_uint8, 1);
-
331 
-
334  GLM_ALIGNED_TYPEDEF(lowp_uint16, aligned_lowp_uint16, 2);
-
335 
-
338  GLM_ALIGNED_TYPEDEF(lowp_uint32, aligned_lowp_uint32, 4);
-
339 
-
342  GLM_ALIGNED_TYPEDEF(lowp_uint64, aligned_lowp_uint64, 8);
-
343 
-
344 
-
347  GLM_ALIGNED_TYPEDEF(lowp_uint8_t, aligned_lowp_uint8_t, 1);
-
348 
-
351  GLM_ALIGNED_TYPEDEF(lowp_uint16_t, aligned_lowp_uint16_t, 2);
-
352 
-
355  GLM_ALIGNED_TYPEDEF(lowp_uint32_t, aligned_lowp_uint32_t, 4);
-
356 
-
359  GLM_ALIGNED_TYPEDEF(lowp_uint64_t, aligned_lowp_uint64_t, 8);
-
360 
-
361 
-
364  GLM_ALIGNED_TYPEDEF(lowp_u8, aligned_lowp_u8, 1);
-
365 
-
368  GLM_ALIGNED_TYPEDEF(lowp_u16, aligned_lowp_u16, 2);
-
369 
-
372  GLM_ALIGNED_TYPEDEF(lowp_u32, aligned_lowp_u32, 4);
-
373 
-
376  GLM_ALIGNED_TYPEDEF(lowp_u64, aligned_lowp_u64, 8);
-
377 
-
378 
-
381  GLM_ALIGNED_TYPEDEF(mediump_uint8, aligned_mediump_uint8, 1);
-
382 
-
385  GLM_ALIGNED_TYPEDEF(mediump_uint16, aligned_mediump_uint16, 2);
-
386 
-
389  GLM_ALIGNED_TYPEDEF(mediump_uint32, aligned_mediump_uint32, 4);
-
390 
-
393  GLM_ALIGNED_TYPEDEF(mediump_uint64, aligned_mediump_uint64, 8);
-
394 
-
395 
-
398  GLM_ALIGNED_TYPEDEF(mediump_uint8_t, aligned_mediump_uint8_t, 1);
-
399 
-
402  GLM_ALIGNED_TYPEDEF(mediump_uint16_t, aligned_mediump_uint16_t, 2);
-
403 
-
406  GLM_ALIGNED_TYPEDEF(mediump_uint32_t, aligned_mediump_uint32_t, 4);
-
407 
-
410  GLM_ALIGNED_TYPEDEF(mediump_uint64_t, aligned_mediump_uint64_t, 8);
-
411 
-
412 
-
415  GLM_ALIGNED_TYPEDEF(mediump_u8, aligned_mediump_u8, 1);
-
416 
-
419  GLM_ALIGNED_TYPEDEF(mediump_u16, aligned_mediump_u16, 2);
-
420 
-
423  GLM_ALIGNED_TYPEDEF(mediump_u32, aligned_mediump_u32, 4);
-
424 
-
427  GLM_ALIGNED_TYPEDEF(mediump_u64, aligned_mediump_u64, 8);
-
428 
-
429 
-
432  GLM_ALIGNED_TYPEDEF(highp_uint8, aligned_highp_uint8, 1);
-
433 
-
436  GLM_ALIGNED_TYPEDEF(highp_uint16, aligned_highp_uint16, 2);
-
437 
-
440  GLM_ALIGNED_TYPEDEF(highp_uint32, aligned_highp_uint32, 4);
-
441 
-
444  GLM_ALIGNED_TYPEDEF(highp_uint64, aligned_highp_uint64, 8);
-
445 
-
446 
-
449  GLM_ALIGNED_TYPEDEF(highp_uint8_t, aligned_highp_uint8_t, 1);
-
450 
-
453  GLM_ALIGNED_TYPEDEF(highp_uint16_t, aligned_highp_uint16_t, 2);
-
454 
-
457  GLM_ALIGNED_TYPEDEF(highp_uint32_t, aligned_highp_uint32_t, 4);
-
458 
-
461  GLM_ALIGNED_TYPEDEF(highp_uint64_t, aligned_highp_uint64_t, 8);
-
462 
-
463 
-
466  GLM_ALIGNED_TYPEDEF(highp_u8, aligned_highp_u8, 1);
-
467 
-
470  GLM_ALIGNED_TYPEDEF(highp_u16, aligned_highp_u16, 2);
-
471 
-
474  GLM_ALIGNED_TYPEDEF(highp_u32, aligned_highp_u32, 4);
-
475 
-
478  GLM_ALIGNED_TYPEDEF(highp_u64, aligned_highp_u64, 8);
-
479 
-
480 
-
483  GLM_ALIGNED_TYPEDEF(uint8, aligned_uint8, 1);
-
484 
-
487  GLM_ALIGNED_TYPEDEF(uint16, aligned_uint16, 2);
-
488 
-
491  GLM_ALIGNED_TYPEDEF(uint32, aligned_uint32, 4);
-
492 
-
495  GLM_ALIGNED_TYPEDEF(uint64, aligned_uint64, 8);
-
496 
-
497 
-
500  GLM_ALIGNED_TYPEDEF(uint8_t, aligned_uint8_t, 1);
-
501 
-
504  GLM_ALIGNED_TYPEDEF(uint16_t, aligned_uint16_t, 2);
-
505 
-
508  GLM_ALIGNED_TYPEDEF(uint32_t, aligned_uint32_t, 4);
-
509 
-
512  GLM_ALIGNED_TYPEDEF(uint64_t, aligned_uint64_t, 8);
-
513 
-
514 
-
517  GLM_ALIGNED_TYPEDEF(u8, aligned_u8, 1);
-
518 
-
521  GLM_ALIGNED_TYPEDEF(u16, aligned_u16, 2);
-
522 
-
525  GLM_ALIGNED_TYPEDEF(u32, aligned_u32, 4);
-
526 
-
529  GLM_ALIGNED_TYPEDEF(u64, aligned_u64, 8);
-
530 
-
531 
- -
535 
- -
539 
- -
543 
- -
547 
-
548 
-
551  GLM_ALIGNED_TYPEDEF(u8vec1, aligned_u8vec1, 1);
-
552 
-
555  GLM_ALIGNED_TYPEDEF(u8vec2, aligned_u8vec2, 2);
-
556 
-
559  GLM_ALIGNED_TYPEDEF(u8vec3, aligned_u8vec3, 4);
-
560 
-
563  GLM_ALIGNED_TYPEDEF(u8vec4, aligned_u8vec4, 4);
-
564 
-
565 
-
568  GLM_ALIGNED_TYPEDEF(u16vec1, aligned_u16vec1, 2);
-
569 
-
572  GLM_ALIGNED_TYPEDEF(u16vec2, aligned_u16vec2, 4);
-
573 
-
576  GLM_ALIGNED_TYPEDEF(u16vec3, aligned_u16vec3, 8);
-
577 
-
580  GLM_ALIGNED_TYPEDEF(u16vec4, aligned_u16vec4, 8);
-
581 
-
582 
-
585  GLM_ALIGNED_TYPEDEF(u32vec1, aligned_u32vec1, 4);
-
586 
-
589  GLM_ALIGNED_TYPEDEF(u32vec2, aligned_u32vec2, 8);
-
590 
-
593  GLM_ALIGNED_TYPEDEF(u32vec3, aligned_u32vec3, 16);
-
594 
-
597  GLM_ALIGNED_TYPEDEF(u32vec4, aligned_u32vec4, 16);
-
598 
-
599 
-
602  GLM_ALIGNED_TYPEDEF(u64vec1, aligned_u64vec1, 8);
-
603 
-
606  GLM_ALIGNED_TYPEDEF(u64vec2, aligned_u64vec2, 16);
-
607 
-
610  GLM_ALIGNED_TYPEDEF(u64vec3, aligned_u64vec3, 32);
-
611 
-
614  GLM_ALIGNED_TYPEDEF(u64vec4, aligned_u64vec4, 32);
-
615 
-
616 
-
618  // Float vector types
-
619 
-
622  GLM_ALIGNED_TYPEDEF(float32, aligned_float32, 4);
-
623 
-
626  GLM_ALIGNED_TYPEDEF(float32_t, aligned_float32_t, 4);
-
627 
-
630  GLM_ALIGNED_TYPEDEF(float32, aligned_f32, 4);
-
631 
-
632 # ifndef GLM_FORCE_SINGLE_ONLY
-
633 
-
636  GLM_ALIGNED_TYPEDEF(float64, aligned_float64, 8);
-
637 
-
640  GLM_ALIGNED_TYPEDEF(float64_t, aligned_float64_t, 8);
-
641 
-
644  GLM_ALIGNED_TYPEDEF(float64, aligned_f64, 8);
-
645 
-
646 # endif//GLM_FORCE_SINGLE_ONLY
-
647 
-
648 
- -
652 
- -
656 
- -
660 
- -
664 
-
665 
-
668  GLM_ALIGNED_TYPEDEF(fvec1, aligned_fvec1, 4);
-
669 
-
672  GLM_ALIGNED_TYPEDEF(fvec2, aligned_fvec2, 8);
-
673 
-
676  GLM_ALIGNED_TYPEDEF(fvec3, aligned_fvec3, 16);
-
677 
-
680  GLM_ALIGNED_TYPEDEF(fvec4, aligned_fvec4, 16);
-
681 
-
682 
-
685  GLM_ALIGNED_TYPEDEF(f32vec1, aligned_f32vec1, 4);
-
686 
-
689  GLM_ALIGNED_TYPEDEF(f32vec2, aligned_f32vec2, 8);
-
690 
-
693  GLM_ALIGNED_TYPEDEF(f32vec3, aligned_f32vec3, 16);
-
694 
-
697  GLM_ALIGNED_TYPEDEF(f32vec4, aligned_f32vec4, 16);
-
698 
-
699 
- -
703 
- -
707 
- -
711 
- -
715 
-
716 
-
717 # ifndef GLM_FORCE_SINGLE_ONLY
-
718 
-
721  GLM_ALIGNED_TYPEDEF(f64vec1, aligned_f64vec1, 8);
-
722 
-
725  GLM_ALIGNED_TYPEDEF(f64vec2, aligned_f64vec2, 16);
-
726 
-
729  GLM_ALIGNED_TYPEDEF(f64vec3, aligned_f64vec3, 32);
-
730 
-
733  GLM_ALIGNED_TYPEDEF(f64vec4, aligned_f64vec4, 32);
-
734 
-
735 # endif//GLM_FORCE_SINGLE_ONLY
-
736 
-
738  // Float matrix types
-
739 
-
742  //typedef detail::tmat1<f32> mat1;
-
743 
- -
747 
- -
751 
- -
755 
-
756 
-
759  //typedef detail::tmat1x1<f32> mat1;
-
760 
- -
764 
- -
768 
- -
772 
-
773 
-
776  //typedef detail::tmat1x1<f32> fmat1;
-
777 
-
780  GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2, 16);
-
781 
-
784  GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3, 16);
-
785 
-
788  GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4, 16);
-
789 
-
790 
-
793  //typedef f32 fmat1x1;
-
794 
-
797  GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2x2, 16);
-
798 
-
801  GLM_ALIGNED_TYPEDEF(fmat2x3, aligned_fmat2x3, 16);
-
802 
-
805  GLM_ALIGNED_TYPEDEF(fmat2x4, aligned_fmat2x4, 16);
-
806 
-
809  GLM_ALIGNED_TYPEDEF(fmat3x2, aligned_fmat3x2, 16);
-
810 
-
813  GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3x3, 16);
-
814 
-
817  GLM_ALIGNED_TYPEDEF(fmat3x4, aligned_fmat3x4, 16);
-
818 
-
821  GLM_ALIGNED_TYPEDEF(fmat4x2, aligned_fmat4x2, 16);
-
822 
-
825  GLM_ALIGNED_TYPEDEF(fmat4x3, aligned_fmat4x3, 16);
-
826 
-
829  GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4x4, 16);
-
830 
-
831 
-
834  //typedef detail::tmat1x1<f32, defaultp> f32mat1;
-
835 
-
838  GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2, 16);
-
839 
-
842  GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3, 16);
-
843 
-
846  GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4, 16);
-
847 
-
848 
-
851  //typedef f32 f32mat1x1;
-
852 
-
855  GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2x2, 16);
-
856 
-
859  GLM_ALIGNED_TYPEDEF(f32mat2x3, aligned_f32mat2x3, 16);
-
860 
-
863  GLM_ALIGNED_TYPEDEF(f32mat2x4, aligned_f32mat2x4, 16);
-
864 
-
867  GLM_ALIGNED_TYPEDEF(f32mat3x2, aligned_f32mat3x2, 16);
-
868 
-
871  GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3x3, 16);
-
872 
-
875  GLM_ALIGNED_TYPEDEF(f32mat3x4, aligned_f32mat3x4, 16);
-
876 
-
879  GLM_ALIGNED_TYPEDEF(f32mat4x2, aligned_f32mat4x2, 16);
-
880 
-
883  GLM_ALIGNED_TYPEDEF(f32mat4x3, aligned_f32mat4x3, 16);
-
884 
-
887  GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4x4, 16);
-
888 
-
889 
-
890 # ifndef GLM_FORCE_SINGLE_ONLY
-
891 
-
894  //typedef detail::tmat1x1<f64, defaultp> f64mat1;
-
895 
-
898  GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2, 32);
-
899 
-
902  GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3, 32);
-
903 
-
906  GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4, 32);
-
907 
-
908 
-
911  //typedef f64 f64mat1x1;
-
912 
-
915  GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2x2, 32);
-
916 
-
919  GLM_ALIGNED_TYPEDEF(f64mat2x3, aligned_f64mat2x3, 32);
-
920 
-
923  GLM_ALIGNED_TYPEDEF(f64mat2x4, aligned_f64mat2x4, 32);
-
924 
-
927  GLM_ALIGNED_TYPEDEF(f64mat3x2, aligned_f64mat3x2, 32);
-
928 
-
931  GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3x3, 32);
-
932 
-
935  GLM_ALIGNED_TYPEDEF(f64mat3x4, aligned_f64mat3x4, 32);
-
936 
-
939  GLM_ALIGNED_TYPEDEF(f64mat4x2, aligned_f64mat4x2, 32);
-
940 
-
943  GLM_ALIGNED_TYPEDEF(f64mat4x3, aligned_f64mat4x3, 32);
-
944 
-
947  GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4x4, 32);
-
948 
-
949 # endif//GLM_FORCE_SINGLE_ONLY
-
950 
-
951 
-
953  // Quaternion types
-
954 
-
957  GLM_ALIGNED_TYPEDEF(quat, aligned_quat, 16);
-
958 
-
961  GLM_ALIGNED_TYPEDEF(quat, aligned_fquat, 16);
-
962 
-
965  GLM_ALIGNED_TYPEDEF(dquat, aligned_dquat, 32);
-
966 
-
969  GLM_ALIGNED_TYPEDEF(f32quat, aligned_f32quat, 16);
-
970 
-
971 # ifndef GLM_FORCE_SINGLE_ONLY
-
972 
-
975  GLM_ALIGNED_TYPEDEF(f64quat, aligned_f64quat, 32);
-
976 
-
977 # endif//GLM_FORCE_SINGLE_ONLY
-
978 
-
980 }//namespace glm
-
981 
-
982 #include "type_aligned.inl"
-
mat< 4, 4, float, defaultp > mat4x4
4 columns of 4 components matrix of single-precision floating-point numbers.
-
uint64 highp_u64
High qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:133
-
vec< 3, f32, defaultp > f32vec3
Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:463
-
mat< 2, 2, float, defaultp > mat2x2
2 columns of 2 components matrix of single-precision floating-point numbers.
-
uint32 mediump_uint32_t
Medium qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:127
-
aligned_highp_uvec2 aligned_uvec2
2 components vector aligned in memory of unsigned integer numbers.
-
uint64 lowp_uint64
Low qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:136
-
vec< 1, f32, defaultp > f32vec1
Single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:461
-
uint8 lowp_u8
Low qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:89
-
uint32 u32
Default qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:120
-
vec< 1, i32, defaultp > i32vec1
32 bit signed integer scalar type.
Definition: fwd.hpp:277
-
uint16 highp_uint16
High qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:110
-
mat< 3, 4, f64, defaultp > f64mat3x4
Double-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:787
-
vec< 3, i16, defaultp > i16vec3
16 bit signed integer vector of 3 components type.
Definition: fwd.hpp:259
-
uint32 lowp_uint32_t
Low qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:126
-
uint32 mediump_uint32
Medium qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:123
-
uint64 highp_uint64
High qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:138
-
uint32 lowp_uint32
Low qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:122
-
vec< 2, float, defaultp > vec2
2 components vector of single-precision floating-point numbers.
-
vec< 4, i64, defaultp > i64vec4
64 bit signed integer vector of 4 components type.
Definition: fwd.hpp:300
-
vec< 3, u16, defaultp > u16vec3
Default qualifier 16 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:361
-
aligned_highp_ivec3 aligned_ivec3
3 components vector aligned in memory of signed integer numbers.
-
vec< 2, i8, defaultp > i8vec2
8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:238
-
aligned_highp_vec3 aligned_vec3
3 components vector aligned in memory of single-precision floating-point numbers. ...
-
vec< 3, unsigned int, defaultp > uvec3
3 components vector of unsigned integer numbers.
-
aligned_highp_uvec3 aligned_uvec3
3 components vector aligned in memory of unsigned integer numbers.
-
int64 highp_int64
High qualifier 64 bit signed integer type.
Definition: fwd.hpp:80
-
int16 lowp_int16_t
Low qualifier 16 bit signed integer type.
Definition: fwd.hpp:54
-
mat< 4, 2, f32, defaultp > f32mat4x2
Single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:702
-
uint32 mediump_u32
Medium qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:118
-
GLM_ALIGNED_TYPEDEF(f64quat, aligned_f64quat, 32)
Double-qualifier floating-point aligned quaternion.
-
aligned_highp_dvec3 aligned_dvec3
3 components vector aligned in memory of double-precision floating-point numbers. ...
-
aligned_highp_dvec1 aligned_dvec1
1 component vector aligned in memory of double-precision floating-point numbers.
-
vec< 3, int, defaultp > ivec3
3 components vector of signed integer numbers.
Definition: vector_int3.hpp:15
-
vec< 3, u64, defaultp > u64vec3
Default qualifier 64 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:401
-
uint8 lowp_uint8
Low qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:94
-
uint64 lowp_u64
Low qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:131
-
int8 mediump_int8
Medium qualifier 8 bit signed integer type.
Definition: fwd.hpp:37
-
int64 lowp_int64
Low qualifier 64 bit signed integer type.
Definition: fwd.hpp:78
-
vec< 2, u64, defaultp > u64vec2
Default qualifier 64 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:400
-
mat< 3, 4, f32, defaultp > f32mat3x4
Single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:707
-
uint64 u64
Default qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:134
-
vec< 1, f64, defaultp > f64vec1
Double-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:501
-
vec< 1, i16, defaultp > i16vec1
16 bit signed integer scalar type.
Definition: fwd.hpp:257
-
double float64
Double-qualifier floating-point scalar.
Definition: fwd.hpp:171
-
mat< 4, 2, f32, defaultp > fmat4x2
Single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:662
-
mat< 3, 4, f32, defaultp > fmat3x4
Single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:667
-
mat< 2, 4, f32, defaultp > f32mat2x4
Single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:706
-
vec< 4, i16, defaultp > i16vec4
16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:260
-
uint8 lowp_uint8_t
Low qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:98
-
uint32 highp_uint32_t
High qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:128
-
mat< 3, 3, f32, defaultp > fmat3x3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:664
-
mat< 2, 3, f32, defaultp > f32mat2x3
Single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:703
-
int16 mediump_int16
Medium qualifier 16 bit signed integer type.
Definition: fwd.hpp:51
-
uint16 mediump_u16
Medium qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:104
-
qua< f64, defaultp > f64quat
Double-qualifier floating-point quaternion.
Definition: fwd.hpp:815
-
qua< double, defaultp > dquat
Quaternion of double-precision floating-point numbers.
-
vec< 1, u64, defaultp > u64vec1
Default qualifier 64 bit unsigned integer scalar type.
Definition: fwd.hpp:399
-
int64 int64_t
64 bit signed integer type.
Definition: fwd.hpp:85
-
aligned_highp_mat2 aligned_mat2
2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
-
vec< 1, u8, defaultp > u8vec1
Default qualifier 8 bit unsigned integer scalar type.
Definition: fwd.hpp:339
-
vec< 4, u8, defaultp > u8vec4
Default qualifier 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:342
-
int8 int8_t
8 bit signed integer type.
Definition: fwd.hpp:43
-
int32 i32
32 bit signed integer type.
Definition: fwd.hpp:62
-
mat< 2, 2, f64, defaultp > f64mat2x2
Double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:780
-
vec< 4, i8, defaultp > i8vec4
8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:240
-
int32 highp_int32
High qualifier 32 bit signed integer type.
Definition: fwd.hpp:66
-
uint32 highp_u32
High qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:119
-
int32 highp_i32
High qualifier 32 bit signed integer type.
Definition: fwd.hpp:61
-
vec< 4, int, defaultp > ivec4
4 components vector of signed integer numbers.
Definition: vector_int4.hpp:15
-
vec< 4, u64, defaultp > u64vec4
Default qualifier 64 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:402
-
vec< 4, f32, defaultp > f32vec4
Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:464
-
mat< 2, 3, f64, defaultp > f64mat2x3
Double-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:783
-
uint32 highp_uint32
High qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:124
-
mat< 3, 2, f64, defaultp > f64mat3x2
Double-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:781
-
vec< 1, u32, defaultp > u32vec1
Default qualifier 32 bit unsigned integer scalar type.
Definition: fwd.hpp:379
-
mat< 3, 3, f64, defaultp > f64mat3x3
Double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:784
-
uint8 highp_uint8
High qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:96
-
int8 highp_i8
High qualifier 8 bit signed integer type.
Definition: fwd.hpp:33
-
int8 mediump_i8
Medium qualifier 8 bit signed integer type.
Definition: fwd.hpp:32
-
int64 highp_int64_t
High qualifier 64 bit signed integer type.
Definition: fwd.hpp:84
-
mat< 4, 4, f32, defaultp > f32mat4x4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:708
-
float float32_t
Default 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:160
-
mat< 2, 2, f32, defaultp > f32mat2x2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:700
-
uint32 uint32_t
Default qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:129
-
aligned_highp_ivec1 aligned_ivec1
1 component vector aligned in memory of signed integer numbers.
-
vec< 4, float, defaultp > vec4
4 components vector of single-precision floating-point numbers.
-
uint8 u8
Default qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:92
-
float float32
Single-qualifier floating-point scalar.
Definition: fwd.hpp:155
-
vec< 4, f32, defaultp > fvec4
Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:444
-
vec< 1, u16, defaultp > u16vec1
Default qualifier 16 bit unsigned integer scalar type.
Definition: fwd.hpp:359
-
vec< 1, double, defaultp > dvec1
1 components vector of double-precision floating-point numbers.
-
vec< 1, i8, defaultp > i8vec1
8 bit signed integer scalar type.
Definition: fwd.hpp:237
-
vec< 2, i32, defaultp > i32vec2
32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:278
-
uint8 highp_uint8_t
High qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:100
-
uint64 mediump_uint64
Medium qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:137
-
int32 highp_int32_t
32 bit signed integer type.
Definition: fwd.hpp:70
-
vec< 3, f64, defaultp > f64vec3
Double-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:503
-
mat< 2, 4, f64, defaultp > f64mat2x4
Double-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:786
-
mat< 3, 3, float, defaultp > mat3x3
3 columns of 3 components matrix of single-precision floating-point numbers.
-
uint64 mediump_u64
Medium qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:132
-
vec< 2, unsigned int, defaultp > uvec2
2 components vector of unsigned integer numbers.
-
uint16 lowp_u16
Low qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:103
-
vec< 1, unsigned int, defaultp > uvec1
1 component vector of unsigned integer numbers.
-
int16 highp_i16
High qualifier 16 bit signed integer type.
Definition: fwd.hpp:47
-
int8 highp_int8
High qualifier 8 bit signed integer type.
Definition: fwd.hpp:38
-
mat< 4, 4, f64, defaultp > f64mat4x4
Double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:788
-
mat< 4, 3, f32, defaultp > fmat4x3
Single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:665
-
vec< 3, f32, defaultp > fvec3
Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:443
-
vec< 2, i16, defaultp > i16vec2
16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:258
-
mat< 4, 3, f32, defaultp > f32mat4x3
Single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:705
-
int16 lowp_i16
Low qualifier 16 bit signed integer type.
Definition: fwd.hpp:45
-
vec< 1, float, defaultp > vec1
1 components vector of single-precision floating-point numbers.
-
aligned_highp_mat4 aligned_mat4
4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
-
double float64_t
Default 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:176
-
int16 lowp_int16
Low qualifier 16 bit signed integer type.
Definition: fwd.hpp:50
-
aligned_highp_uvec1 aligned_uvec1
1 component vector aligned in memory of unsigned integer numbers.
-
int64 lowp_int64_t
Low qualifier 64 bit signed integer type.
Definition: fwd.hpp:82
-
uint16 uint16_t
Default qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:115
-
aligned_highp_vec1 aligned_vec1
1 component vector aligned in memory of single-precision floating-point numbers.
-
int32 lowp_int32
Low qualifier 32 bit signed integer type.
Definition: fwd.hpp:64
-
uint8 uint8_t
Default qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:101
-
int32 mediump_int32_t
Medium qualifier 32 bit signed integer type.
Definition: fwd.hpp:69
-
mat< 3, 3, f32, defaultp > f32mat3x3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:704
-
uint8 highp_u8
High qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:91
-
uint8 mediump_uint8
Medium qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:95
-
aligned_highp_uvec4 aligned_uvec4
4 components vector aligned in memory of unsigned integer numbers.
-
int64 mediump_int64_t
Medium qualifier 64 bit signed integer type.
Definition: fwd.hpp:83
-
aligned_highp_ivec4 aligned_ivec4
4 components vector aligned in memory of signed integer numbers.
-
int8 highp_int8_t
High qualifier 8 bit signed integer type.
Definition: fwd.hpp:42
-
mat< 3, 2, f32, defaultp > f32mat3x2
Single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:701
-
vec< 4, i32, defaultp > i32vec4
32 bit signed integer vector of 4 components type.
Definition: fwd.hpp:280
-
vec< 3, u32, defaultp > u32vec3
Default qualifier 32 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:381
-
vec< 2, u8, defaultp > u8vec2
Default qualifier 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:340
-
int16 mediump_i16
Medium qualifier 16 bit signed integer type.
Definition: fwd.hpp:46
-
vec< 3, i8, defaultp > i8vec3
8 bit signed integer vector of 3 components type.
Definition: fwd.hpp:239
-
aligned_highp_vec2 aligned_vec2
2 components vector aligned in memory of single-precision floating-point numbers. ...
-
mat< 4, 4, float, defaultp > mat4
4 columns of 4 components matrix of single-precision floating-point numbers.
-
aligned_highp_mat2x2 aligned_mat2x2
2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
-
uint16 mediump_uint16_t
Medium qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:113
-
vec< 3, u8, defaultp > u8vec3
Default qualifier 8 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:341
-
int64 mediump_int64
Medium qualifier 64 bit signed integer type.
Definition: fwd.hpp:79
-
uint64 uint64_t
Default qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:143
-
vec< 3, i32, defaultp > i32vec3
32 bit signed integer vector of 3 components type.
Definition: fwd.hpp:279
-
uint16 lowp_uint16_t
Low qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:112
-
vec< 2, double, defaultp > dvec2
2 components vector of double-precision floating-point numbers.
-
uint16 lowp_uint16
Low qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:108
-
vec< 4, f64, defaultp > f64vec4
Double-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:504
-
int32 lowp_i32
Low qualifier 32 bit signed integer type.
Definition: fwd.hpp:59
-
vec< 3, float, defaultp > vec3
3 components vector of single-precision floating-point numbers.
-
int64 mediump_i64
Medium qualifier 64 bit signed integer type.
Definition: fwd.hpp:74
-
vec< 2, f32, defaultp > fvec2
Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:442
-
aligned_highp_ivec2 aligned_ivec2
2 components vector aligned in memory of signed integer numbers.
-
int16 int16_t
16 bit signed integer type.
Definition: fwd.hpp:57
-
int64 highp_i64
High qualifier 64 bit signed integer type.
Definition: fwd.hpp:75
-
int32 int32_t
32 bit signed integer type.
Definition: fwd.hpp:71
-
vec< 2, f64, defaultp > f64vec2
Double-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:502
-
vec< 4, unsigned int, defaultp > uvec4
4 components vector of unsigned integer numbers.
-
uint64 lowp_uint64_t
Low qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:140
-
detail::uint64 uint64
64 bit unsigned integer type.
-
int16 highp_int16
High qualifier 16 bit signed integer type.
Definition: fwd.hpp:52
-
aligned_highp_mat4x4 aligned_mat4x4
4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
-
mat< 2, 4, f32, defaultp > fmat2x4
Single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:666
-
int32 mediump_i32
Medium qualifier 32 bit signed integer type.
Definition: fwd.hpp:60
-
aligned_highp_dvec4 aligned_dvec4
4 components vector aligned in memory of double-precision floating-point numbers. ...
-
uint64 highp_uint64_t
High qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:142
-
vec< 4, u32, defaultp > u32vec4
Default qualifier 32 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:382
-
qua< f32, defaultp > f32quat
Single-qualifier floating-point quaternion.
Definition: fwd.hpp:805
-
detail::int64 int64
64 bit signed integer type.
-
mat< 4, 2, f64, defaultp > f64mat4x2
Double-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:782
-
mat< 2, 3, f32, defaultp > fmat2x3
Single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:663
-
uint16 u16
Default qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:106
-
int64 lowp_i64
Low qualifier 64 bit signed integer type.
Definition: fwd.hpp:73
-
vec< 2, int, defaultp > ivec2
2 components vector of signed integer numbers.
Definition: vector_int2.hpp:15
-
int8 mediump_int8_t
Medium qualifier 8 bit signed integer type.
Definition: fwd.hpp:41
-
int16 highp_int16_t
High qualifier 16 bit signed integer type.
Definition: fwd.hpp:56
-
vec< 1, i64, defaultp > i64vec1
64 bit signed integer scalar type.
Definition: fwd.hpp:297
-
aligned_highp_vec4 aligned_vec4
4 components vector aligned in memory of single-precision floating-point numbers. ...
-
uint32 lowp_u32
Low qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:117
-
vec< 1, int, defaultp > ivec1
1 component vector of signed integer numbers.
Definition: vector_int1.hpp:28
-
uint16 highp_u16
High qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:105
-
vec< 1, f32, defaultp > fvec1
Single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:441
-
int32 lowp_int32_t
Low qualifier 32 bit signed integer type.
Definition: fwd.hpp:68
-
vec< 2, f32, defaultp > f32vec2
Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:462
-
mat< 2, 2, f32, defaultp > fmat2x2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:660
-
int8 lowp_int8
Low qualifier 8 bit signed integer type.
Definition: fwd.hpp:36
-
vec< 3, double, defaultp > dvec3
3 components vector of double-precision floating-point numbers.
-
int8 lowp_int8_t
Low qualifier 8 bit signed integer type.
Definition: fwd.hpp:40
-
aligned_highp_mat3x3 aligned_mat3x3
3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
-
mat< 4, 3, f64, defaultp > f64mat4x3
Double-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:785
-
int64 i64
64 bit signed integer type.
Definition: fwd.hpp:76
-
vec< 2, u32, defaultp > u32vec2
Default qualifier 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:380
-
qua< float, defaultp > quat
Quaternion of single-precision floating-point numbers.
-
int32 mediump_int32
Medium qualifier 32 bit signed integer type.
Definition: fwd.hpp:65
-
vec< 2, i64, defaultp > i64vec2
64 bit signed integer vector of 2 components type.
Definition: fwd.hpp:298
-
int16 i16
16 bit signed integer type.
Definition: fwd.hpp:48
-
vec< 4, double, defaultp > dvec4
4 components vector of double-precision floating-point numbers.
-
mat< 4, 4, f32, defaultp > fmat4x4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:668
-
mat< 2, 2, float, defaultp > mat2
2 columns of 2 components matrix of single-precision floating-point numbers.
-
aligned_highp_mat3 aligned_mat3
3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
-
mat< 3, 2, f32, defaultp > fmat3x2
Single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:661
-
vec< 4, u16, defaultp > u16vec4
Default qualifier 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:362
-
vec< 2, u16, defaultp > u16vec2
Default qualifier 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:360
-
uint8 mediump_u8
Medium qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:90
-
aligned_highp_dvec2 aligned_dvec2
2 components vector aligned in memory of double-precision floating-point numbers. ...
-
int16 mediump_int16_t
Medium qualifier 16 bit signed integer type.
Definition: fwd.hpp:55
-
int8 lowp_i8
Low qualifier 8 bit signed integer type.
Definition: fwd.hpp:31
-
vec< 3, i64, defaultp > i64vec3
64 bit signed integer vector of 3 components type.
Definition: fwd.hpp:299
-
mat< 3, 3, float, defaultp > mat3
3 columns of 3 components matrix of single-precision floating-point numbers.
-
uint16 highp_uint16_t
High qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:114
-
int8 i8
8 bit signed integer type.
Definition: fwd.hpp:34
-
uint64 mediump_uint64_t
Medium qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:141
-
uint8 mediump_uint8_t
Medium qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:99
-
Definition: common.hpp:20
-
uint16 mediump_uint16
Medium qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:109
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00163_source.html b/tests/OpenGL/package/glm/doc/api/a00163_source.html deleted file mode 100644 index a2df166b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00163_source.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - -0.9.9 API documentation: type_float.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
type_float.hpp
-
-
-
1 #pragma once
-
2 
-
3 #include "setup.hpp"
-
4 
-
5 #if GLM_COMPILER == GLM_COMPILER_VC12
-
6 # pragma warning(push)
-
7 # pragma warning(disable: 4512) // assignment operator could not be generated
-
8 #endif
-
9 
-
10 namespace glm{
-
11 namespace detail
-
12 {
-
13  template <typename T>
-
14  union float_t
-
15  {};
-
16 
-
17  // https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
-
18  template <>
-
19  union float_t<float>
-
20  {
-
21  typedef int int_type;
-
22  typedef float float_type;
-
23 
-
24  GLM_CONSTEXPR float_t(float_type Num = 0.0f) : f(Num) {}
-
25 
-
26  GLM_CONSTEXPR float_t& operator=(float_t const& x)
-
27  {
-
28  f = x.f;
-
29  return *this;
-
30  }
-
31 
-
32  // Portable extraction of components.
-
33  GLM_CONSTEXPR bool negative() const { return i < 0; }
-
34  GLM_CONSTEXPR int_type mantissa() const { return i & ((1 << 23) - 1); }
-
35  GLM_CONSTEXPR int_type exponent() const { return (i >> 23) & ((1 << 8) - 1); }
-
36 
-
37  int_type i;
-
38  float_type f;
-
39  };
-
40 
-
41  template <>
-
42  union float_t<double>
-
43  {
-
44  typedef detail::int64 int_type;
-
45  typedef double float_type;
-
46 
-
47  GLM_CONSTEXPR float_t(float_type Num = static_cast<float_type>(0)) : f(Num) {}
-
48 
-
49  GLM_CONSTEXPR float_t& operator=(float_t const& x)
-
50  {
-
51  f = x.f;
-
52  return *this;
-
53  }
-
54 
-
55  // Portable extraction of components.
-
56  GLM_CONSTEXPR bool negative() const { return i < 0; }
-
57  GLM_CONSTEXPR int_type mantissa() const { return i & ((int_type(1) << 52) - 1); }
-
58  GLM_CONSTEXPR int_type exponent() const { return (i >> 52) & ((int_type(1) << 11) - 1); }
-
59 
-
60  int_type i;
-
61  float_type f;
-
62  };
-
63 }//namespace detail
-
64 }//namespace glm
-
65 
-
66 #if GLM_COMPILER == GLM_COMPILER_VC12
-
67 # pragma warning(pop)
-
68 #endif
-
detail::int64 int64
64 bit signed integer type.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00164_source.html b/tests/OpenGL/package/glm/doc/api/a00164_source.html deleted file mode 100644 index 89639d25..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00164_source.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - -0.9.9 API documentation: type_half.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
type_half.hpp
-
-
-
1 #pragma once
-
2 
-
3 #include "setup.hpp"
-
4 
-
5 namespace glm{
-
6 namespace detail
-
7 {
-
8  typedef short hdata;
-
9 
-
10  GLM_FUNC_DECL float toFloat32(hdata value);
-
11  GLM_FUNC_DECL hdata toFloat16(float const& value);
-
12 
-
13 }//namespace detail
-
14 }//namespace glm
-
15 
-
16 #include "type_half.inl"
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00165.html b/tests/OpenGL/package/glm/doc/api/a00165.html deleted file mode 100644 index e6a9c91b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00165.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - -0.9.9 API documentation: type_mat2x2.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
type_mat2x2.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file type_mat2x2.hpp.

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

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file type_mat2x3.hpp.

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

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file type_mat2x4.hpp.

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

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file type_mat3x2.hpp.

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

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file type_mat3x3.hpp.

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

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file type_mat3x4.hpp.

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

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file type_mat4x2.hpp.

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

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file type_mat4x3.hpp.

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

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file type_mat4x4.hpp.

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

GLM_GTC_type_precision -More...

- -

Go to the source code of this file.

-

Detailed Description

-

GLM_GTC_type_precision

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

Definition in file type_precision.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00174_source.html b/tests/OpenGL/package/glm/doc/api/a00174_source.html deleted file mode 100644 index edcf9d6c..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00174_source.html +++ /dev/null @@ -1,1682 +0,0 @@ - - - - - - -0.9.9 API documentation: type_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
type_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../gtc/quaternion.hpp"
-
18 #include "../gtc/vec1.hpp"
-
19 #include "../ext/scalar_int_sized.hpp"
-
20 #include "../ext/scalar_uint_sized.hpp"
-
21 #include "../detail/type_vec2.hpp"
-
22 #include "../detail/type_vec3.hpp"
-
23 #include "../detail/type_vec4.hpp"
-
24 #include "../detail/type_mat2x2.hpp"
-
25 #include "../detail/type_mat2x3.hpp"
-
26 #include "../detail/type_mat2x4.hpp"
-
27 #include "../detail/type_mat3x2.hpp"
-
28 #include "../detail/type_mat3x3.hpp"
-
29 #include "../detail/type_mat3x4.hpp"
-
30 #include "../detail/type_mat4x2.hpp"
-
31 #include "../detail/type_mat4x3.hpp"
-
32 #include "../detail/type_mat4x4.hpp"
-
33 
-
34 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
35 # pragma message("GLM: GLM_GTC_type_precision extension included")
-
36 #endif
-
37 
-
38 namespace glm
-
39 {
-
41  // Signed int vector types
-
42 
-
45 
-
48  typedef detail::int8 lowp_int8;
-
49 
-
52  typedef detail::int16 lowp_int16;
-
53 
-
56  typedef detail::int32 lowp_int32;
-
57 
-
60  typedef detail::int64 lowp_int64;
-
61 
-
64  typedef detail::int8 lowp_int8_t;
-
65 
-
68  typedef detail::int16 lowp_int16_t;
-
69 
-
72  typedef detail::int32 lowp_int32_t;
-
73 
- -
77 
-
80  typedef detail::int8 lowp_i8;
-
81 
-
84  typedef detail::int16 lowp_i16;
-
85 
-
88  typedef detail::int32 lowp_i32;
-
89 
-
92  typedef detail::int64 lowp_i64;
-
93 
-
96  typedef detail::int8 mediump_int8;
-
97 
-
100  typedef detail::int16 mediump_int16;
-
101 
-
104  typedef detail::int32 mediump_int32;
-
105 
- -
109 
-
112  typedef detail::int8 mediump_int8_t;
-
113 
-
116  typedef detail::int16 mediump_int16_t;
-
117 
-
120  typedef detail::int32 mediump_int32_t;
-
121 
- -
125 
-
128  typedef detail::int8 mediump_i8;
-
129 
-
132  typedef detail::int16 mediump_i16;
-
133 
-
136  typedef detail::int32 mediump_i32;
-
137 
-
140  typedef detail::int64 mediump_i64;
-
141 
-
144  typedef detail::int8 highp_int8;
-
145 
-
148  typedef detail::int16 highp_int16;
-
149 
-
152  typedef detail::int32 highp_int32;
-
153 
-
156  typedef detail::int64 highp_int64;
-
157 
-
160  typedef detail::int8 highp_int8_t;
-
161 
-
164  typedef detail::int16 highp_int16_t;
-
165 
-
168  typedef detail::int32 highp_int32_t;
-
169 
- -
173 
-
176  typedef detail::int8 highp_i8;
-
177 
-
180  typedef detail::int16 highp_i16;
-
181 
-
184  typedef detail::int32 highp_i32;
-
185 
-
188  typedef detail::int64 highp_i64;
-
189 
-
190 
-
191 #if GLM_HAS_EXTENDED_INTEGER_TYPE
-
192  using std::int8_t;
-
193  using std::int16_t;
-
194  using std::int32_t;
-
195  using std::int64_t;
-
196 #else
-
197  typedef detail::int8 int8_t;
-
200 
-
203  typedef detail::int16 int16_t;
-
204 
-
207  typedef detail::int32 int32_t;
-
208 
-
211  typedef detail::int64 int64_t;
-
212 #endif
-
213 
-
216  typedef detail::int8 i8;
-
217 
-
220  typedef detail::int16 i16;
-
221 
-
224  typedef detail::int32 i32;
-
225 
-
228  typedef detail::int64 i64;
-
229 
-
230 
-
231 
-
234  typedef vec<1, i8, lowp> lowp_i8vec1;
-
235 
-
238  typedef vec<2, i8, lowp> lowp_i8vec2;
-
239 
-
242  typedef vec<3, i8, lowp> lowp_i8vec3;
-
243 
-
246  typedef vec<4, i8, lowp> lowp_i8vec4;
-
247 
-
248 
-
251  typedef vec<1, i8, mediump> mediump_i8vec1;
-
252 
-
255  typedef vec<2, i8, mediump> mediump_i8vec2;
-
256 
-
259  typedef vec<3, i8, mediump> mediump_i8vec3;
-
260 
-
263  typedef vec<4, i8, mediump> mediump_i8vec4;
-
264 
-
265 
-
268  typedef vec<1, i8, highp> highp_i8vec1;
-
269 
-
272  typedef vec<2, i8, highp> highp_i8vec2;
-
273 
-
276  typedef vec<3, i8, highp> highp_i8vec3;
-
277 
-
280  typedef vec<4, i8, highp> highp_i8vec4;
-
281 
-
282 
-
283 
-
286  typedef vec<1, i8, defaultp> i8vec1;
-
287 
-
290  typedef vec<2, i8, defaultp> i8vec2;
-
291 
-
294  typedef vec<3, i8, defaultp> i8vec3;
-
295 
-
298  typedef vec<4, i8, defaultp> i8vec4;
-
299 
-
300 
-
301 
-
302 
-
303 
-
306  typedef vec<1, i16, lowp> lowp_i16vec1;
-
307 
-
310  typedef vec<2, i16, lowp> lowp_i16vec2;
-
311 
-
314  typedef vec<3, i16, lowp> lowp_i16vec3;
-
315 
-
318  typedef vec<4, i16, lowp> lowp_i16vec4;
-
319 
-
320 
-
323  typedef vec<1, i16, mediump> mediump_i16vec1;
-
324 
-
327  typedef vec<2, i16, mediump> mediump_i16vec2;
-
328 
-
331  typedef vec<3, i16, mediump> mediump_i16vec3;
-
332 
-
335  typedef vec<4, i16, mediump> mediump_i16vec4;
-
336 
-
337 
-
340  typedef vec<1, i16, highp> highp_i16vec1;
-
341 
-
344  typedef vec<2, i16, highp> highp_i16vec2;
-
345 
-
348  typedef vec<3, i16, highp> highp_i16vec3;
-
349 
-
352  typedef vec<4, i16, highp> highp_i16vec4;
-
353 
-
354 
-
355 
-
356 
-
359  typedef vec<1, i16, defaultp> i16vec1;
-
360 
-
363  typedef vec<2, i16, defaultp> i16vec2;
-
364 
-
367  typedef vec<3, i16, defaultp> i16vec3;
-
368 
-
371  typedef vec<4, i16, defaultp> i16vec4;
-
372 
-
373 
-
374 
-
377  typedef vec<1, i32, lowp> lowp_i32vec1;
-
378 
-
381  typedef vec<2, i32, lowp> lowp_i32vec2;
-
382 
-
385  typedef vec<3, i32, lowp> lowp_i32vec3;
-
386 
-
389  typedef vec<4, i32, lowp> lowp_i32vec4;
-
390 
-
391 
-
394  typedef vec<1, i32, mediump> mediump_i32vec1;
-
395 
-
398  typedef vec<2, i32, mediump> mediump_i32vec2;
-
399 
-
402  typedef vec<3, i32, mediump> mediump_i32vec3;
-
403 
-
406  typedef vec<4, i32, mediump> mediump_i32vec4;
-
407 
-
408 
-
411  typedef vec<1, i32, highp> highp_i32vec1;
-
412 
-
415  typedef vec<2, i32, highp> highp_i32vec2;
-
416 
-
419  typedef vec<3, i32, highp> highp_i32vec3;
-
420 
-
423  typedef vec<4, i32, highp> highp_i32vec4;
-
424 
-
425 
-
428  typedef vec<1, i32, defaultp> i32vec1;
-
429 
-
432  typedef vec<2, i32, defaultp> i32vec2;
-
433 
-
436  typedef vec<3, i32, defaultp> i32vec3;
-
437 
-
440  typedef vec<4, i32, defaultp> i32vec4;
-
441 
-
442 
-
443 
-
444 
-
447  typedef vec<1, i64, lowp> lowp_i64vec1;
-
448 
-
451  typedef vec<2, i64, lowp> lowp_i64vec2;
-
452 
-
455  typedef vec<3, i64, lowp> lowp_i64vec3;
-
456 
-
459  typedef vec<4, i64, lowp> lowp_i64vec4;
-
460 
-
461 
-
464  typedef vec<1, i64, mediump> mediump_i64vec1;
-
465 
-
468  typedef vec<2, i64, mediump> mediump_i64vec2;
-
469 
-
472  typedef vec<3, i64, mediump> mediump_i64vec3;
-
473 
-
476  typedef vec<4, i64, mediump> mediump_i64vec4;
-
477 
-
478 
-
481  typedef vec<1, i64, highp> highp_i64vec1;
-
482 
-
485  typedef vec<2, i64, highp> highp_i64vec2;
-
486 
-
489  typedef vec<3, i64, highp> highp_i64vec3;
-
490 
-
493  typedef vec<4, i64, highp> highp_i64vec4;
-
494 
-
495 
-
498  typedef vec<1, i64, defaultp> i64vec1;
-
499 
-
502  typedef vec<2, i64, defaultp> i64vec2;
-
503 
-
506  typedef vec<3, i64, defaultp> i64vec3;
-
507 
-
510  typedef vec<4, i64, defaultp> i64vec4;
-
511 
-
512 
-
514  // Unsigned int vector types
-
515 
-
518  typedef detail::uint8 lowp_uint8;
-
519 
-
522  typedef detail::uint16 lowp_uint16;
-
523 
-
526  typedef detail::uint32 lowp_uint32;
-
527 
-
530  typedef detail::uint64 lowp_uint64;
-
531 
-
534  typedef detail::uint8 lowp_uint8_t;
-
535 
-
538  typedef detail::uint16 lowp_uint16_t;
-
539 
-
542  typedef detail::uint32 lowp_uint32_t;
-
543 
- -
547 
-
550  typedef detail::uint8 lowp_u8;
-
551 
-
554  typedef detail::uint16 lowp_u16;
-
555 
-
558  typedef detail::uint32 lowp_u32;
-
559 
-
562  typedef detail::uint64 lowp_u64;
-
563 
-
566  typedef detail::uint8 mediump_uint8;
-
567 
-
570  typedef detail::uint16 mediump_uint16;
-
571 
-
574  typedef detail::uint32 mediump_uint32;
-
575 
- -
579 
-
582  typedef detail::uint8 mediump_uint8_t;
-
583 
-
586  typedef detail::uint16 mediump_uint16_t;
-
587 
-
590  typedef detail::uint32 mediump_uint32_t;
-
591 
- -
595 
-
598  typedef detail::uint8 mediump_u8;
-
599 
-
602  typedef detail::uint16 mediump_u16;
-
603 
-
606  typedef detail::uint32 mediump_u32;
-
607 
-
610  typedef detail::uint64 mediump_u64;
-
611 
-
614  typedef detail::uint8 highp_uint8;
-
615 
-
618  typedef detail::uint16 highp_uint16;
-
619 
-
622  typedef detail::uint32 highp_uint32;
-
623 
- -
627 
-
630  typedef detail::uint8 highp_uint8_t;
-
631 
-
634  typedef detail::uint16 highp_uint16_t;
-
635 
-
638  typedef detail::uint32 highp_uint32_t;
-
639 
- -
643 
-
646  typedef detail::uint8 highp_u8;
-
647 
-
650  typedef detail::uint16 highp_u16;
-
651 
-
654  typedef detail::uint32 highp_u32;
-
655 
-
658  typedef detail::uint64 highp_u64;
-
659 
-
660 #if GLM_HAS_EXTENDED_INTEGER_TYPE
-
661  using std::uint8_t;
-
662  using std::uint16_t;
-
663  using std::uint32_t;
-
664  using std::uint64_t;
-
665 #else
-
666  typedef detail::uint8 uint8_t;
-
669 
-
672  typedef detail::uint16 uint16_t;
-
673 
-
676  typedef detail::uint32 uint32_t;
-
677 
-
680  typedef detail::uint64 uint64_t;
-
681 #endif
-
682 
-
685  typedef detail::uint8 u8;
-
686 
-
689  typedef detail::uint16 u16;
-
690 
-
693  typedef detail::uint32 u32;
-
694 
-
697  typedef detail::uint64 u64;
-
698 
-
699 
-
700 
-
701 
-
702 
-
704  // Float vector types
-
705 
-
708  typedef float float32;
-
709 
-
712  typedef double float64;
-
713 
-
716  typedef float32 lowp_float32;
-
717 
-
720  typedef float64 lowp_float64;
-
721 
-
724  typedef float32 lowp_float32_t;
-
725 
-
728  typedef float64 lowp_float64_t;
-
729 
-
732  typedef float32 lowp_f32;
-
733 
-
736  typedef float64 lowp_f64;
-
737 
-
740  typedef float32 lowp_float32;
-
741 
-
744  typedef float64 lowp_float64;
-
745 
-
748  typedef float32 lowp_float32_t;
-
749 
-
752  typedef float64 lowp_float64_t;
-
753 
-
756  typedef float32 lowp_f32;
-
757 
-
760  typedef float64 lowp_f64;
-
761 
-
762 
-
765  typedef float32 lowp_float32;
-
766 
-
769  typedef float64 lowp_float64;
-
770 
-
773  typedef float32 lowp_float32_t;
-
774 
-
777  typedef float64 lowp_float64_t;
-
778 
-
781  typedef float32 lowp_f32;
-
782 
-
785  typedef float64 lowp_f64;
-
786 
-
787 
-
790  typedef float32 mediump_float32;
-
791 
-
794  typedef float64 mediump_float64;
-
795 
-
798  typedef float32 mediump_float32_t;
-
799 
-
802  typedef float64 mediump_float64_t;
-
803 
-
806  typedef float32 mediump_f32;
-
807 
-
810  typedef float64 mediump_f64;
-
811 
-
812 
-
815  typedef float32 highp_float32;
-
816 
-
819  typedef float64 highp_float64;
-
820 
-
823  typedef float32 highp_float32_t;
-
824 
-
827  typedef float64 highp_float64_t;
-
828 
-
831  typedef float32 highp_f32;
-
832 
-
835  typedef float64 highp_f64;
-
836 
-
837 
-
838 #if(defined(GLM_PRECISION_LOWP_FLOAT))
-
839  typedef lowp_float32_t float32_t;
-
842 
-
845  typedef lowp_float64_t float64_t;
-
846 
-
849  typedef lowp_f32 f32;
-
850 
-
853  typedef lowp_f64 f64;
-
854 
-
855 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
-
856  typedef mediump_float32 float32_t;
-
859 
-
862  typedef mediump_float64 float64_t;
-
863 
-
866  typedef mediump_float32 f32;
-
867 
-
870  typedef mediump_float64 f64;
-
871 
-
872 #else//(defined(GLM_PRECISION_HIGHP_FLOAT))
-
873 
-
876  typedef highp_float32_t float32_t;
-
877 
-
880  typedef highp_float64_t float64_t;
-
881 
-
884  typedef highp_float32_t f32;
-
885 
-
888  typedef highp_float64_t f64;
-
889 #endif
-
890 
-
891 
-
894  typedef vec<1, float, lowp> lowp_fvec1;
-
895 
-
898  typedef vec<2, float, lowp> lowp_fvec2;
-
899 
-
902  typedef vec<3, float, lowp> lowp_fvec3;
-
903 
-
906  typedef vec<4, float, lowp> lowp_fvec4;
-
907 
-
908 
-
911  typedef vec<1, float, mediump> mediump_fvec1;
-
912 
-
915  typedef vec<2, float, mediump> mediump_fvec2;
-
916 
-
919  typedef vec<3, float, mediump> mediump_fvec3;
-
920 
-
923  typedef vec<4, float, mediump> mediump_fvec4;
-
924 
-
925 
-
928  typedef vec<1, float, highp> highp_fvec1;
-
929 
-
932  typedef vec<2, float, highp> highp_fvec2;
-
933 
-
936  typedef vec<3, float, highp> highp_fvec3;
-
937 
-
940  typedef vec<4, float, highp> highp_fvec4;
-
941 
-
942 
-
945  typedef vec<1, f32, lowp> lowp_f32vec1;
-
946 
-
949  typedef vec<2, f32, lowp> lowp_f32vec2;
-
950 
-
953  typedef vec<3, f32, lowp> lowp_f32vec3;
-
954 
-
957  typedef vec<4, f32, lowp> lowp_f32vec4;
-
958 
-
961  typedef vec<1, f32, mediump> mediump_f32vec1;
-
962 
-
965  typedef vec<2, f32, mediump> mediump_f32vec2;
-
966 
-
969  typedef vec<3, f32, mediump> mediump_f32vec3;
-
970 
-
973  typedef vec<4, f32, mediump> mediump_f32vec4;
-
974 
-
977  typedef vec<1, f32, highp> highp_f32vec1;
-
978 
-
981  typedef vec<2, f32, highp> highp_f32vec2;
-
982 
-
985  typedef vec<3, f32, highp> highp_f32vec3;
-
986 
-
989  typedef vec<4, f32, highp> highp_f32vec4;
-
990 
-
991 
-
994  typedef vec<1, f64, lowp> lowp_f64vec1;
-
995 
-
998  typedef vec<2, f64, lowp> lowp_f64vec2;
-
999 
-
1002  typedef vec<3, f64, lowp> lowp_f64vec3;
-
1003 
-
1006  typedef vec<4, f64, lowp> lowp_f64vec4;
-
1007 
-
1010  typedef vec<1, f64, mediump> mediump_f64vec1;
-
1011 
-
1014  typedef vec<2, f64, mediump> mediump_f64vec2;
-
1015 
-
1018  typedef vec<3, f64, mediump> mediump_f64vec3;
-
1019 
-
1022  typedef vec<4, f64, mediump> mediump_f64vec4;
-
1023 
-
1026  typedef vec<1, f64, highp> highp_f64vec1;
-
1027 
-
1030  typedef vec<2, f64, highp> highp_f64vec2;
-
1031 
-
1034  typedef vec<3, f64, highp> highp_f64vec3;
-
1035 
-
1038  typedef vec<4, f64, highp> highp_f64vec4;
-
1039 
-
1040 
-
1041 
-
1043  // Float matrix types
-
1044 
-
1047  //typedef lowp_f32 lowp_fmat1x1;
-
1048 
-
1051  typedef mat<2, 2, f32, lowp> lowp_fmat2x2;
-
1052 
-
1055  typedef mat<2, 3, f32, lowp> lowp_fmat2x3;
-
1056 
-
1059  typedef mat<2, 4, f32, lowp> lowp_fmat2x4;
-
1060 
-
1063  typedef mat<3, 2, f32, lowp> lowp_fmat3x2;
-
1064 
-
1067  typedef mat<3, 3, f32, lowp> lowp_fmat3x3;
-
1068 
-
1071  typedef mat<3, 4, f32, lowp> lowp_fmat3x4;
-
1072 
-
1075  typedef mat<4, 2, f32, lowp> lowp_fmat4x2;
-
1076 
-
1079  typedef mat<4, 3, f32, lowp> lowp_fmat4x3;
-
1080 
-
1083  typedef mat<4, 4, f32, lowp> lowp_fmat4x4;
-
1084 
-
1087  //typedef lowp_fmat1x1 lowp_fmat1;
-
1088 
-
1091  typedef lowp_fmat2x2 lowp_fmat2;
-
1092 
-
1095  typedef lowp_fmat3x3 lowp_fmat3;
-
1096 
-
1099  typedef lowp_fmat4x4 lowp_fmat4;
-
1100 
-
1101 
-
1104  //typedef mediump_f32 mediump_fmat1x1;
-
1105 
-
1108  typedef mat<2, 2, f32, mediump> mediump_fmat2x2;
-
1109 
-
1112  typedef mat<2, 3, f32, mediump> mediump_fmat2x3;
-
1113 
-
1116  typedef mat<2, 4, f32, mediump> mediump_fmat2x4;
-
1117 
-
1120  typedef mat<3, 2, f32, mediump> mediump_fmat3x2;
-
1121 
-
1124  typedef mat<3, 3, f32, mediump> mediump_fmat3x3;
-
1125 
-
1128  typedef mat<3, 4, f32, mediump> mediump_fmat3x4;
-
1129 
-
1132  typedef mat<4, 2, f32, mediump> mediump_fmat4x2;
-
1133 
-
1136  typedef mat<4, 3, f32, mediump> mediump_fmat4x3;
-
1137 
-
1140  typedef mat<4, 4, f32, mediump> mediump_fmat4x4;
-
1141 
-
1144  //typedef mediump_fmat1x1 mediump_fmat1;
-
1145 
-
1148  typedef mediump_fmat2x2 mediump_fmat2;
-
1149 
-
1152  typedef mediump_fmat3x3 mediump_fmat3;
-
1153 
-
1156  typedef mediump_fmat4x4 mediump_fmat4;
-
1157 
-
1158 
-
1161  //typedef highp_f32 highp_fmat1x1;
-
1162 
-
1165  typedef mat<2, 2, f32, highp> highp_fmat2x2;
-
1166 
-
1169  typedef mat<2, 3, f32, highp> highp_fmat2x3;
-
1170 
-
1173  typedef mat<2, 4, f32, highp> highp_fmat2x4;
-
1174 
-
1177  typedef mat<3, 2, f32, highp> highp_fmat3x2;
-
1178 
-
1181  typedef mat<3, 3, f32, highp> highp_fmat3x3;
-
1182 
-
1185  typedef mat<3, 4, f32, highp> highp_fmat3x4;
-
1186 
-
1189  typedef mat<4, 2, f32, highp> highp_fmat4x2;
-
1190 
-
1193  typedef mat<4, 3, f32, highp> highp_fmat4x3;
-
1194 
-
1197  typedef mat<4, 4, f32, highp> highp_fmat4x4;
-
1198 
-
1201  //typedef highp_fmat1x1 highp_fmat1;
-
1202 
-
1205  typedef highp_fmat2x2 highp_fmat2;
-
1206 
-
1209  typedef highp_fmat3x3 highp_fmat3;
-
1210 
-
1213  typedef highp_fmat4x4 highp_fmat4;
-
1214 
-
1215 
-
1218  //typedef f32 lowp_f32mat1x1;
-
1219 
-
1222  typedef mat<2, 2, f32, lowp> lowp_f32mat2x2;
-
1223 
-
1226  typedef mat<2, 3, f32, lowp> lowp_f32mat2x3;
-
1227 
-
1230  typedef mat<2, 4, f32, lowp> lowp_f32mat2x4;
-
1231 
-
1234  typedef mat<3, 2, f32, lowp> lowp_f32mat3x2;
-
1235 
-
1238  typedef mat<3, 3, f32, lowp> lowp_f32mat3x3;
-
1239 
-
1242  typedef mat<3, 4, f32, lowp> lowp_f32mat3x4;
-
1243 
-
1246  typedef mat<4, 2, f32, lowp> lowp_f32mat4x2;
-
1247 
-
1250  typedef mat<4, 3, f32, lowp> lowp_f32mat4x3;
-
1251 
-
1254  typedef mat<4, 4, f32, lowp> lowp_f32mat4x4;
-
1255 
-
1258  //typedef detail::tmat1x1<f32, lowp> lowp_f32mat1;
-
1259 
-
1262  typedef lowp_f32mat2x2 lowp_f32mat2;
-
1263 
-
1266  typedef lowp_f32mat3x3 lowp_f32mat3;
-
1267 
-
1270  typedef lowp_f32mat4x4 lowp_f32mat4;
-
1271 
-
1272 
-
1275  //typedef f32 mediump_f32mat1x1;
-
1276 
-
1279  typedef mat<2, 2, f32, mediump> mediump_f32mat2x2;
-
1280 
-
1283  typedef mat<2, 3, f32, mediump> mediump_f32mat2x3;
-
1284 
-
1287  typedef mat<2, 4, f32, mediump> mediump_f32mat2x4;
-
1288 
-
1291  typedef mat<3, 2, f32, mediump> mediump_f32mat3x2;
-
1292 
-
1295  typedef mat<3, 3, f32, mediump> mediump_f32mat3x3;
-
1296 
-
1299  typedef mat<3, 4, f32, mediump> mediump_f32mat3x4;
-
1300 
-
1303  typedef mat<4, 2, f32, mediump> mediump_f32mat4x2;
-
1304 
-
1307  typedef mat<4, 3, f32, mediump> mediump_f32mat4x3;
-
1308 
-
1311  typedef mat<4, 4, f32, mediump> mediump_f32mat4x4;
-
1312 
-
1315  //typedef detail::tmat1x1<f32, mediump> f32mat1;
-
1316 
-
1319  typedef mediump_f32mat2x2 mediump_f32mat2;
-
1320 
-
1323  typedef mediump_f32mat3x3 mediump_f32mat3;
-
1324 
-
1327  typedef mediump_f32mat4x4 mediump_f32mat4;
-
1328 
-
1329 
-
1332  //typedef f32 highp_f32mat1x1;
-
1333 
-
1336  typedef mat<2, 2, f32, highp> highp_f32mat2x2;
-
1337 
-
1340  typedef mat<2, 3, f32, highp> highp_f32mat2x3;
-
1341 
-
1344  typedef mat<2, 4, f32, highp> highp_f32mat2x4;
-
1345 
-
1348  typedef mat<3, 2, f32, highp> highp_f32mat3x2;
-
1349 
-
1352  typedef mat<3, 3, f32, highp> highp_f32mat3x3;
-
1353 
-
1356  typedef mat<3, 4, f32, highp> highp_f32mat3x4;
-
1357 
-
1360  typedef mat<4, 2, f32, highp> highp_f32mat4x2;
-
1361 
-
1364  typedef mat<4, 3, f32, highp> highp_f32mat4x3;
-
1365 
-
1368  typedef mat<4, 4, f32, highp> highp_f32mat4x4;
-
1369 
-
1372  //typedef detail::tmat1x1<f32, highp> f32mat1;
-
1373 
-
1376  typedef highp_f32mat2x2 highp_f32mat2;
-
1377 
-
1380  typedef highp_f32mat3x3 highp_f32mat3;
-
1381 
-
1384  typedef highp_f32mat4x4 highp_f32mat4;
-
1385 
-
1386 
-
1389  //typedef f64 lowp_f64mat1x1;
-
1390 
-
1393  typedef mat<2, 2, f64, lowp> lowp_f64mat2x2;
-
1394 
-
1397  typedef mat<2, 3, f64, lowp> lowp_f64mat2x3;
-
1398 
-
1401  typedef mat<2, 4, f64, lowp> lowp_f64mat2x4;
-
1402 
-
1405  typedef mat<3, 2, f64, lowp> lowp_f64mat3x2;
-
1406 
-
1409  typedef mat<3, 3, f64, lowp> lowp_f64mat3x3;
-
1410 
-
1413  typedef mat<3, 4, f64, lowp> lowp_f64mat3x4;
-
1414 
-
1417  typedef mat<4, 2, f64, lowp> lowp_f64mat4x2;
-
1418 
-
1421  typedef mat<4, 3, f64, lowp> lowp_f64mat4x3;
-
1422 
-
1425  typedef mat<4, 4, f64, lowp> lowp_f64mat4x4;
-
1426 
-
1429  //typedef lowp_f64mat1x1 lowp_f64mat1;
-
1430 
-
1433  typedef lowp_f64mat2x2 lowp_f64mat2;
-
1434 
-
1437  typedef lowp_f64mat3x3 lowp_f64mat3;
-
1438 
-
1441  typedef lowp_f64mat4x4 lowp_f64mat4;
-
1442 
-
1443 
-
1446  //typedef f64 Highp_f64mat1x1;
-
1447 
-
1450  typedef mat<2, 2, f64, mediump> mediump_f64mat2x2;
-
1451 
-
1454  typedef mat<2, 3, f64, mediump> mediump_f64mat2x3;
-
1455 
-
1458  typedef mat<2, 4, f64, mediump> mediump_f64mat2x4;
-
1459 
-
1462  typedef mat<3, 2, f64, mediump> mediump_f64mat3x2;
-
1463 
-
1466  typedef mat<3, 3, f64, mediump> mediump_f64mat3x3;
-
1467 
-
1470  typedef mat<3, 4, f64, mediump> mediump_f64mat3x4;
-
1471 
-
1474  typedef mat<4, 2, f64, mediump> mediump_f64mat4x2;
-
1475 
-
1478  typedef mat<4, 3, f64, mediump> mediump_f64mat4x3;
-
1479 
-
1482  typedef mat<4, 4, f64, mediump> mediump_f64mat4x4;
-
1483 
-
1486  //typedef mediump_f64mat1x1 mediump_f64mat1;
-
1487 
-
1490  typedef mediump_f64mat2x2 mediump_f64mat2;
-
1491 
-
1494  typedef mediump_f64mat3x3 mediump_f64mat3;
-
1495 
-
1498  typedef mediump_f64mat4x4 mediump_f64mat4;
-
1499 
-
1502  //typedef f64 highp_f64mat1x1;
-
1503 
-
1506  typedef mat<2, 2, f64, highp> highp_f64mat2x2;
-
1507 
-
1510  typedef mat<2, 3, f64, highp> highp_f64mat2x3;
-
1511 
-
1514  typedef mat<2, 4, f64, highp> highp_f64mat2x4;
-
1515 
-
1518  typedef mat<3, 2, f64, highp> highp_f64mat3x2;
-
1519 
-
1522  typedef mat<3, 3, f64, highp> highp_f64mat3x3;
-
1523 
-
1526  typedef mat<3, 4, f64, highp> highp_f64mat3x4;
-
1527 
-
1530  typedef mat<4, 2, f64, highp> highp_f64mat4x2;
-
1531 
-
1534  typedef mat<4, 3, f64, highp> highp_f64mat4x3;
-
1535 
-
1538  typedef mat<4, 4, f64, highp> highp_f64mat4x4;
-
1539 
-
1542  //typedef highp_f64mat1x1 highp_f64mat1;
-
1543 
-
1546  typedef highp_f64mat2x2 highp_f64mat2;
-
1547 
-
1550  typedef highp_f64mat3x3 highp_f64mat3;
-
1551 
-
1554  typedef highp_f64mat4x4 highp_f64mat4;
-
1555 
-
1556 
-
1557 
-
1558 
-
1561  typedef vec<1, u8, lowp> lowp_u8vec1;
-
1562 
-
1565  typedef vec<2, u8, lowp> lowp_u8vec2;
-
1566 
-
1569  typedef vec<3, u8, lowp> lowp_u8vec3;
-
1570 
-
1573  typedef vec<4, u8, lowp> lowp_u8vec4;
-
1574 
-
1575 
-
1578  typedef vec<1, u8, mediump> mediump_u8vec1;
-
1579 
-
1582  typedef vec<2, u8, mediump> mediump_u8vec2;
-
1583 
-
1586  typedef vec<3, u8, mediump> mediump_u8vec3;
-
1587 
-
1590  typedef vec<4, u8, mediump> mediump_u8vec4;
-
1591 
-
1592 
-
1595  typedef vec<1, u8, highp> highp_u8vec1;
-
1596 
-
1599  typedef vec<2, u8, highp> highp_u8vec2;
-
1600 
-
1603  typedef vec<3, u8, highp> highp_u8vec3;
-
1604 
-
1607  typedef vec<4, u8, highp> highp_u8vec4;
-
1608 
-
1609 
-
1610 
-
1613  typedef vec<1, u8, defaultp> u8vec1;
-
1614 
-
1617  typedef vec<2, u8, defaultp> u8vec2;
-
1618 
-
1621  typedef vec<3, u8, defaultp> u8vec3;
-
1622 
-
1625  typedef vec<4, u8, defaultp> u8vec4;
-
1626 
-
1627 
-
1628 
-
1629 
-
1632  typedef vec<1, u16, lowp> lowp_u16vec1;
-
1633 
-
1636  typedef vec<2, u16, lowp> lowp_u16vec2;
-
1637 
-
1640  typedef vec<3, u16, lowp> lowp_u16vec3;
-
1641 
-
1644  typedef vec<4, u16, lowp> lowp_u16vec4;
-
1645 
-
1646 
-
1649  typedef vec<1, u16, mediump> mediump_u16vec1;
-
1650 
-
1653  typedef vec<2, u16, mediump> mediump_u16vec2;
-
1654 
-
1657  typedef vec<3, u16, mediump> mediump_u16vec3;
-
1658 
-
1661  typedef vec<4, u16, mediump> mediump_u16vec4;
-
1662 
-
1663 
-
1666  typedef vec<1, u16, highp> highp_u16vec1;
-
1667 
-
1670  typedef vec<2, u16, highp> highp_u16vec2;
-
1671 
-
1674  typedef vec<3, u16, highp> highp_u16vec3;
-
1675 
-
1678  typedef vec<4, u16, highp> highp_u16vec4;
-
1679 
-
1680 
-
1681 
-
1682 
-
1685  typedef vec<1, u16, defaultp> u16vec1;
-
1686 
-
1689  typedef vec<2, u16, defaultp> u16vec2;
-
1690 
-
1693  typedef vec<3, u16, defaultp> u16vec3;
-
1694 
-
1697  typedef vec<4, u16, defaultp> u16vec4;
-
1698 
-
1699 
-
1700 
-
1703  typedef vec<1, u32, lowp> lowp_u32vec1;
-
1704 
-
1707  typedef vec<2, u32, lowp> lowp_u32vec2;
-
1708 
-
1711  typedef vec<3, u32, lowp> lowp_u32vec3;
-
1712 
-
1715  typedef vec<4, u32, lowp> lowp_u32vec4;
-
1716 
-
1717 
-
1720  typedef vec<1, u32, mediump> mediump_u32vec1;
-
1721 
-
1724  typedef vec<2, u32, mediump> mediump_u32vec2;
-
1725 
-
1728  typedef vec<3, u32, mediump> mediump_u32vec3;
-
1729 
-
1732  typedef vec<4, u32, mediump> mediump_u32vec4;
-
1733 
-
1734 
-
1737  typedef vec<1, u32, highp> highp_u32vec1;
-
1738 
-
1741  typedef vec<2, u32, highp> highp_u32vec2;
-
1742 
-
1745  typedef vec<3, u32, highp> highp_u32vec3;
-
1746 
-
1749  typedef vec<4, u32, highp> highp_u32vec4;
-
1750 
-
1751 
-
1752 
-
1755  typedef vec<1, u32, defaultp> u32vec1;
-
1756 
-
1759  typedef vec<2, u32, defaultp> u32vec2;
-
1760 
-
1763  typedef vec<3, u32, defaultp> u32vec3;
-
1764 
-
1767  typedef vec<4, u32, defaultp> u32vec4;
-
1768 
-
1769 
-
1770 
-
1771 
-
1774  typedef vec<1, u64, lowp> lowp_u64vec1;
-
1775 
-
1778  typedef vec<2, u64, lowp> lowp_u64vec2;
-
1779 
-
1782  typedef vec<3, u64, lowp> lowp_u64vec3;
-
1783 
-
1786  typedef vec<4, u64, lowp> lowp_u64vec4;
-
1787 
-
1788 
-
1791  typedef vec<1, u64, mediump> mediump_u64vec1;
-
1792 
-
1795  typedef vec<2, u64, mediump> mediump_u64vec2;
-
1796 
-
1799  typedef vec<3, u64, mediump> mediump_u64vec3;
-
1800 
-
1803  typedef vec<4, u64, mediump> mediump_u64vec4;
-
1804 
-
1805 
-
1808  typedef vec<1, u64, highp> highp_u64vec1;
-
1809 
-
1812  typedef vec<2, u64, highp> highp_u64vec2;
-
1813 
-
1816  typedef vec<3, u64, highp> highp_u64vec3;
-
1817 
-
1820  typedef vec<4, u64, highp> highp_u64vec4;
-
1821 
-
1822 
-
1823 
-
1824 
-
1827  typedef vec<1, u64, defaultp> u64vec1;
-
1828 
-
1831  typedef vec<2, u64, defaultp> u64vec2;
-
1832 
-
1835  typedef vec<3, u64, defaultp> u64vec3;
-
1836 
-
1839  typedef vec<4, u64, defaultp> u64vec4;
-
1840 
-
1841 
-
1843  // Float vector types
-
1844 
-
1847  typedef float32 float32_t;
-
1848 
-
1851  typedef float32 f32;
-
1852 
-
1853 # ifndef GLM_FORCE_SINGLE_ONLY
-
1854 
-
1857  typedef float64 float64_t;
-
1858 
-
1861  typedef float64 f64;
-
1862 # endif//GLM_FORCE_SINGLE_ONLY
-
1863 
-
1866  typedef vec<1, float, defaultp> fvec1;
-
1867 
-
1870  typedef vec<2, float, defaultp> fvec2;
-
1871 
-
1874  typedef vec<3, float, defaultp> fvec3;
-
1875 
-
1878  typedef vec<4, float, defaultp> fvec4;
-
1879 
-
1880 
-
1883  typedef vec<1, f32, defaultp> f32vec1;
-
1884 
-
1887  typedef vec<2, f32, defaultp> f32vec2;
-
1888 
-
1891  typedef vec<3, f32, defaultp> f32vec3;
-
1892 
-
1895  typedef vec<4, f32, defaultp> f32vec4;
-
1896 
-
1897 # ifndef GLM_FORCE_SINGLE_ONLY
-
1898  typedef vec<1, f64, defaultp> f64vec1;
-
1901 
-
1904  typedef vec<2, f64, defaultp> f64vec2;
-
1905 
-
1908  typedef vec<3, f64, defaultp> f64vec3;
-
1909 
-
1912  typedef vec<4, f64, defaultp> f64vec4;
-
1913 # endif//GLM_FORCE_SINGLE_ONLY
-
1914 
-
1915 
-
1917  // Float matrix types
-
1918 
-
1921  //typedef detail::tmat1x1<f32> fmat1;
-
1922 
-
1925  typedef mat<2, 2, f32, defaultp> fmat2;
-
1926 
-
1929  typedef mat<3, 3, f32, defaultp> fmat3;
-
1930 
-
1933  typedef mat<4, 4, f32, defaultp> fmat4;
-
1934 
-
1935 
-
1938  //typedef f32 fmat1x1;
-
1939 
-
1942  typedef mat<2, 2, f32, defaultp> fmat2x2;
-
1943 
-
1946  typedef mat<2, 3, f32, defaultp> fmat2x3;
-
1947 
-
1950  typedef mat<2, 4, f32, defaultp> fmat2x4;
-
1951 
-
1954  typedef mat<3, 2, f32, defaultp> fmat3x2;
-
1955 
-
1958  typedef mat<3, 3, f32, defaultp> fmat3x3;
-
1959 
-
1962  typedef mat<3, 4, f32, defaultp> fmat3x4;
-
1963 
-
1966  typedef mat<4, 2, f32, defaultp> fmat4x2;
-
1967 
-
1970  typedef mat<4, 3, f32, defaultp> fmat4x3;
-
1971 
-
1974  typedef mat<4, 4, f32, defaultp> fmat4x4;
-
1975 
-
1976 
-
1979  //typedef detail::tmat1x1<f32, defaultp> f32mat1;
-
1980 
-
1983  typedef mat<2, 2, f32, defaultp> f32mat2;
-
1984 
-
1987  typedef mat<3, 3, f32, defaultp> f32mat3;
-
1988 
-
1991  typedef mat<4, 4, f32, defaultp> f32mat4;
-
1992 
-
1993 
-
1996  //typedef f32 f32mat1x1;
-
1997 
-
2000  typedef mat<2, 2, f32, defaultp> f32mat2x2;
-
2001 
-
2004  typedef mat<2, 3, f32, defaultp> f32mat2x3;
-
2005 
-
2008  typedef mat<2, 4, f32, defaultp> f32mat2x4;
-
2009 
-
2012  typedef mat<3, 2, f32, defaultp> f32mat3x2;
-
2013 
-
2016  typedef mat<3, 3, f32, defaultp> f32mat3x3;
-
2017 
-
2020  typedef mat<3, 4, f32, defaultp> f32mat3x4;
-
2021 
-
2024  typedef mat<4, 2, f32, defaultp> f32mat4x2;
-
2025 
-
2028  typedef mat<4, 3, f32, defaultp> f32mat4x3;
-
2029 
-
2032  typedef mat<4, 4, f32, defaultp> f32mat4x4;
-
2033 
-
2034 
-
2035 # ifndef GLM_FORCE_SINGLE_ONLY
-
2036 
-
2039  //typedef detail::tmat1x1<f64, defaultp> f64mat1;
-
2040 
-
2043  typedef mat<2, 2, f64, defaultp> f64mat2;
-
2044 
-
2047  typedef mat<3, 3, f64, defaultp> f64mat3;
-
2048 
-
2051  typedef mat<4, 4, f64, defaultp> f64mat4;
-
2052 
-
2053 
-
2056  //typedef f64 f64mat1x1;
-
2057 
-
2060  typedef mat<2, 2, f64, defaultp> f64mat2x2;
-
2061 
-
2064  typedef mat<2, 3, f64, defaultp> f64mat2x3;
-
2065 
-
2068  typedef mat<2, 4, f64, defaultp> f64mat2x4;
-
2069 
-
2072  typedef mat<3, 2, f64, defaultp> f64mat3x2;
-
2073 
-
2076  typedef mat<3, 3, f64, defaultp> f64mat3x3;
-
2077 
-
2080  typedef mat<3, 4, f64, defaultp> f64mat3x4;
-
2081 
-
2084  typedef mat<4, 2, f64, defaultp> f64mat4x2;
-
2085 
-
2088  typedef mat<4, 3, f64, defaultp> f64mat4x3;
-
2089 
-
2092  typedef mat<4, 4, f64, defaultp> f64mat4x4;
-
2093 
-
2094 # endif//GLM_FORCE_SINGLE_ONLY
-
2095 
-
2097  // Quaternion types
-
2098 
-
2101  typedef qua<f32, defaultp> f32quat;
-
2102 
-
2105  typedef qua<f32, lowp> lowp_f32quat;
-
2106 
-
2109  typedef qua<f64, lowp> lowp_f64quat;
-
2110 
-
2113  typedef qua<f32, mediump> mediump_f32quat;
-
2114 
-
2115 # ifndef GLM_FORCE_SINGLE_ONLY
-
2116 
-
2119  typedef qua<f64, mediump> mediump_f64quat;
-
2120 
-
2123  typedef qua<f32, highp> highp_f32quat;
-
2124 
-
2127  typedef qua<f64, highp> highp_f64quat;
-
2128 
-
2131  typedef qua<f64, defaultp> f64quat;
-
2132 
-
2133 # endif//GLM_FORCE_SINGLE_ONLY
-
2134 
-
2136 }//namespace glm
-
2137 
-
2138 #include "type_precision.inl"
-
vec< 1, u16, highp > highp_u16vec1
High qualifier 16 bit unsigned integer scalar type.
Definition: fwd.hpp:354
-
mat< 4, 2, f32, highp > highp_f32mat4x2
High single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:696
-
uint64 highp_u64
High qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:133
-
vec< 1, f64, mediump > mediump_f64vec1
Medium double-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:491
-
vec< 3, f32, defaultp > f32vec3
Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:463
-
mat< 2, 2, f32, mediump > mediump_fmat2
Medium single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:528
-
double highp_float64_t
High 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:175
-
mat< 4, 4, f64, defaultp > f64mat4
Double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:586
-
mat< 2, 2, f64, defaultp > f64mat2
Double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:584
-
mat< 4, 3, f32, mediump > mediump_fmat4x3
Medium single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:647
-
mat< 3, 3, f32, mediump > mediump_f32mat3
Medium single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:545
-
uint32 mediump_uint32_t
Medium qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:127
-
uint64 lowp_uint64
Low qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:136
-
mat< 2, 2, f32, mediump > mediump_fmat2x2
Medium single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:640
-
vec< 1, f32, defaultp > f32vec1
Single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:461
-
mat< 4, 4, f32, highp > highp_f32mat4
High single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:550
-
double highp_float64
High 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:170
-
uint8 lowp_u8
Low qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:89
-
uint32 u32
Default qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:120
-
mat< 3, 3, f64, defaultp > f64mat3
Double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:585
-
double lowp_float64
Low 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:168
-
vec< 1, i32, defaultp > i32vec1
32 bit signed integer scalar type.
Definition: fwd.hpp:277
-
uint16 highp_uint16
High qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:110
-
mat< 2, 4, f64, mediump > mediump_f64mat2x4
Medium double-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:762
-
vec< 4, i64, highp > highp_i64vec4
High qualifier 64 bit signed integer vector of 4 components type.
Definition: fwd.hpp:295
-
mat< 3, 4, f64, defaultp > f64mat3x4
Double-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:787
-
mat< 2, 2, f32, defaultp > fmat2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:536
-
vec< 3, i16, defaultp > i16vec3
16 bit signed integer vector of 3 components type.
Definition: fwd.hpp:259
-
uint32 lowp_uint32_t
Low qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:126
-
vec< 2, float, lowp > lowp_fvec2
Low single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:427
-
uint32 mediump_uint32
Medium qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:123
-
mat< 4, 4, f32, mediump > mediump_fmat4
Medium single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:530
-
uint64 highp_uint64
High qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:138
-
mat< 2, 2, f32, lowp > lowp_fmat2
Low single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:524
-
uint32 lowp_uint32
Low qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:122
-
vec< 3, float, lowp > lowp_fvec3
Low single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:428
-
vec< 2, float, mediump > mediump_fvec2
Medium Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:432
-
mat< 3, 4, f32, lowp > lowp_fmat3x4
Low single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:635
-
mat< 2, 2, f64, lowp > lowp_f64mat2x2
Low double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:750
-
vec< 4, i64, defaultp > i64vec4
64 bit signed integer vector of 4 components type.
Definition: fwd.hpp:300
-
vec< 3, u16, defaultp > u16vec3
Default qualifier 16 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:361
-
vec< 1, u64, lowp > lowp_u64vec1
Low qualifier 64 bit unsigned integer scalar type.
Definition: fwd.hpp:384
-
vec< 1, u16, mediump > mediump_u16vec1
Medium qualifier 16 bit unsigned integer scalar type.
Definition: fwd.hpp:349
-
vec< 2, i8, defaultp > i8vec2
8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:238
-
mat< 2, 3, f64, mediump > mediump_f64mat2x3
Medium double-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:761
-
vec< 4, u32, lowp > lowp_u32vec4
Low qualifier 32 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:367
-
vec< 4, f32, highp > highp_f32vec4
High single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:459
-
vec< 1, f32, lowp > lowp_f32vec1
Low single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:446
-
mat< 2, 3, f32, highp > highp_f32mat2x3
High single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:691
-
int64 highp_int64
High qualifier 64 bit signed integer type.
Definition: fwd.hpp:80
-
vec< 2, i32, mediump > mediump_i32vec2
Medium qualifier 32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:268
-
mat< 4, 4, f64, lowp > lowp_f64mat4
Low double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:574
-
mat< 4, 4, f32, defaultp > fmat4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:538
-
mat< 3, 4, f32, mediump > mediump_fmat3x4
Medium single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:645
-
int16 lowp_int16_t
Low qualifier 16 bit signed integer type.
Definition: fwd.hpp:54
-
vec< 4, i32, highp > highp_i32vec4
High qualifier 32 bit signed integer vector of 4 components type.
Definition: fwd.hpp:275
-
mat< 4, 2, f32, defaultp > f32mat4x2
Single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:702
-
mat< 3, 2, f32, highp > highp_fmat3x2
High single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:653
-
mat< 2, 3, f32, mediump > mediump_fmat2x3
Medium single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:641
-
uint32 mediump_u32
Medium qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:118
-
mat< 3, 2, f32, lowp > lowp_fmat3x2
Low single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:633
-
mat< 4, 2, f64, mediump > mediump_f64mat4x2
Medium double-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:766
-
vec< 2, u16, highp > highp_u16vec2
High qualifier 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:355
-
vec< 1, f64, highp > highp_f64vec1
High double-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:496
-
vec< 2, i16, mediump > mediump_i16vec2
Medium qualifier 16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:248
-
mat< 2, 4, f32, highp > highp_fmat2x4
High single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:652
-
vec< 3, u64, defaultp > u64vec3
Default qualifier 64 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:401
-
uint8 lowp_uint8
Low qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:94
-
mat< 3, 2, f32, lowp > lowp_f32mat3x2
Low single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:673
-
uint64 lowp_u64
Low qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:131
-
vec< 3, i64, highp > highp_i64vec3
High qualifier 64 bit signed integer vector of 3 components type.
Definition: fwd.hpp:294
-
int8 mediump_int8
Medium qualifier 8 bit signed integer type.
Definition: fwd.hpp:37
-
int64 lowp_int64
Low qualifier 64 bit signed integer type.
Definition: fwd.hpp:78
-
mat< 4, 2, f32, mediump > mediump_f32mat4x2
Medium single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:686
-
vec< 3, f64, lowp > lowp_f64vec3
Low double-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:488
-
vec< 2, u64, defaultp > u64vec2
Default qualifier 64 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:400
-
vec< 3, i64, lowp > lowp_i64vec3
Low qualifier 64 bit signed integer vector of 3 components type.
Definition: fwd.hpp:284
-
vec< 2, i8, mediump > mediump_i8vec2
Medium qualifier 8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:228
-
mat< 3, 4, f32, defaultp > f32mat3x4
Single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:707
-
vec< 3, i16, highp > highp_i16vec3
High qualifier 16 bit signed integer vector of 3 components type.
Definition: fwd.hpp:254
-
vec< 3, i16, mediump > mediump_i16vec3
Medium qualifier 16 bit signed integer vector of 3 components type.
Definition: fwd.hpp:249
-
uint64 u64
Default qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:134
-
vec< 1, f64, defaultp > f64vec1
Double-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:501
-
mat< 3, 2, f32, mediump > mediump_fmat3x2
Medium single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:643
-
vec< 1, i64, mediump > mediump_i64vec1
Medium qualifier 64 bit signed integer scalar type.
Definition: fwd.hpp:287
-
vec< 1, i16, defaultp > i16vec1
16 bit signed integer scalar type.
Definition: fwd.hpp:257
-
mat< 3, 3, f64, lowp > lowp_f64mat3x3
Low double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:754
-
vec< 2, f64, lowp > lowp_f64vec2
Low double-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:487
-
mat< 2, 3, f32, highp > highp_fmat2x3
High single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:651
-
mat< 3, 3, f64, lowp > lowp_f64mat3
Low double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:573
-
mat< 4, 3, f32, lowp > lowp_f32mat4x3
Low single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:677
-
vec< 3, u64, mediump > mediump_u64vec3
Medium qualifier 64 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:391
-
double mediump_float64
Medium 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:169
-
double float64
Double-qualifier floating-point scalar.
Definition: fwd.hpp:171
-
vec< 2, i16, highp > highp_i16vec2
High qualifier 16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:253
-
mat< 4, 2, f32, defaultp > fmat4x2
Single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:662
-
mat< 2, 3, f64, lowp > lowp_f64mat2x3
Low double-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:751
-
mat< 3, 4, f32, defaultp > fmat3x4
Single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:667
-
vec< 3, u32, lowp > lowp_u32vec3
Low qualifier 32 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:366
-
mat< 2, 4, f32, defaultp > f32mat2x4
Single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:706
-
vec< 4, float, lowp > lowp_fvec4
Low single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:429
-
vec< 4, f32, mediump > mediump_f32vec4
Medium single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:454
-
vec< 4, i16, defaultp > i16vec4
16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:260
-
uint8 lowp_uint8_t
Low qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:98
-
uint32 highp_uint32_t
High qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:128
-
mat< 3, 3, f32, defaultp > fmat3x3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:664
-
mat< 3, 4, f64, mediump > mediump_f64mat3x4
Medium double-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:765
-
mat< 2, 3, f32, lowp > lowp_fmat2x3
Low single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:631
-
vec< 1, u32, lowp > lowp_u32vec1
Low qualifier 32 bit unsigned integer scalar type.
Definition: fwd.hpp:364
-
mat< 2, 3, f32, defaultp > f32mat2x3
Single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:703
-
vec< 1, i32, mediump > mediump_i32vec1
Medium qualifier 32 bit signed integer scalar type.
Definition: fwd.hpp:267
-
vec< 4, u16, highp > highp_u16vec4
High qualifier 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:357
-
vec< 1, i32, lowp > lowp_i32vec1
Low qualifier 32 bit signed integer scalar type.
Definition: fwd.hpp:262
-
vec< 1, i64, lowp > lowp_i64vec1
Low qualifier 64 bit signed integer scalar type.
Definition: fwd.hpp:282
-
vec< 1, u32, highp > highp_u32vec1
High qualifier 32 bit unsigned integer scalar type.
Definition: fwd.hpp:374
-
int16 mediump_int16
Medium qualifier 16 bit signed integer type.
Definition: fwd.hpp:51
-
uint16 mediump_u16
Medium qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:104
-
qua< f64, defaultp > f64quat
Double-qualifier floating-point quaternion.
Definition: fwd.hpp:815
-
vec< 3, f64, mediump > mediump_f64vec3
Medium double-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:493
-
vec< 1, u64, defaultp > u64vec1
Default qualifier 64 bit unsigned integer scalar type.
Definition: fwd.hpp:399
-
int64 int64_t
64 bit signed integer type.
Definition: fwd.hpp:85
-
vec< 1, u8, defaultp > u8vec1
Default qualifier 8 bit unsigned integer scalar type.
Definition: fwd.hpp:339
-
vec< 1, i8, highp > highp_i8vec1
High qualifier 8 bit signed integer scalar type.
Definition: fwd.hpp:232
-
vec< 4, u8, defaultp > u8vec4
Default qualifier 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:342
-
int8 int8_t
8 bit signed integer type.
Definition: fwd.hpp:43
-
int32 i32
32 bit signed integer type.
Definition: fwd.hpp:62
-
vec< 1, u32, mediump > mediump_u32vec1
Medium qualifier 32 bit unsigned integer scalar type.
Definition: fwd.hpp:369
-
mat< 2, 2, f64, defaultp > f64mat2x2
Double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:780
-
mat< 2, 2, f32, lowp > lowp_f32mat2x2
Low single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:670
-
vec< 4, f32, lowp > lowp_f32vec4
Low single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:449
-
vec< 3, float, highp > highp_fvec3
High Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:438
-
mat< 4, 2, f64, lowp > lowp_f64mat4x2
Low double-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:756
-
mat< 3, 3, f32, mediump > mediump_fmat3x3
Medium single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:644
-
vec< 1, i64, highp > highp_i64vec1
High qualifier 64 bit signed integer scalar type.
Definition: fwd.hpp:292
-
vec< 4, i8, defaultp > i8vec4
8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:240
-
int32 highp_int32
High qualifier 32 bit signed integer type.
Definition: fwd.hpp:66
-
mat< 2, 3, f32, mediump > mediump_f32mat2x3
Medium single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:681
-
mat< 3, 2, f64, lowp > lowp_f64mat3x2
Low double-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:753
-
uint32 highp_u32
High qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:119
-
int32 highp_i32
High qualifier 32 bit signed integer type.
Definition: fwd.hpp:61
-
vec< 4, u64, defaultp > u64vec4
Default qualifier 64 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:402
-
vec< 4, f32, defaultp > f32vec4
Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:464
-
mat< 2, 3, f64, defaultp > f64mat2x3
Double-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:783
-
mat< 4, 4, f64, mediump > mediump_f64mat4x4
Medium double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:768
-
vec< 4, u16, lowp > lowp_u16vec4
Low qualifier 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:347
-
uint32 highp_uint32
High qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:124
-
mat< 4, 4, f32, lowp > lowp_f32mat4
Low single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:542
-
mat< 3, 2, f64, defaultp > f64mat3x2
Double-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:781
-
float mediump_float32
Medium 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:153
-
vec< 1, u32, defaultp > u32vec1
Default qualifier 32 bit unsigned integer scalar type.
Definition: fwd.hpp:379
-
vec< 4, f64, mediump > mediump_f64vec4
Medium double-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:494
-
mat< 3, 3, f64, defaultp > f64mat3x3
Double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:784
-
float highp_float32
High 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:154
-
uint8 highp_uint8
High qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:96
-
int8 highp_i8
High qualifier 8 bit signed integer type.
Definition: fwd.hpp:33
-
mat< 2, 4, f64, lowp > lowp_f64mat2x4
Low double-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:752
-
mat< 3, 4, f64, lowp > lowp_f64mat3x4
Low double-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:755
-
int8 mediump_i8
Medium qualifier 8 bit signed integer type.
Definition: fwd.hpp:32
-
int64 highp_int64_t
High qualifier 64 bit signed integer type.
Definition: fwd.hpp:84
-
mat< 4, 4, f32, defaultp > f32mat4x4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:708
-
float float32_t
Default 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:160
-
mat< 2, 2, f32, defaultp > f32mat2x2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:700
-
vec< 2, i64, lowp > lowp_i64vec2
Low qualifier 64 bit signed integer vector of 2 components type.
Definition: fwd.hpp:283
-
mat< 2, 4, f32, lowp > lowp_f32mat2x4
Low single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:672
-
uint32 uint32_t
Default qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:129
-
mat< 3, 3, f32, highp > highp_f32mat3
High single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:549
-
mat< 3, 3, f64, mediump > mediump_f64mat3x3
Medium double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:764
-
uint8 u8
Default qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:92
-
vec< 3, i32, highp > highp_i32vec3
High qualifier 32 bit signed integer vector of 3 components type.
Definition: fwd.hpp:274
-
float float32
Single-qualifier floating-point scalar.
Definition: fwd.hpp:155
-
vec< 4, f32, defaultp > fvec4
Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:444
-
vec< 1, i32, highp > highp_i32vec1
High qualifier 32 bit signed integer scalar type.
Definition: fwd.hpp:272
-
mat< 3, 3, f32, lowp > lowp_f32mat3
Low single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:541
-
vec< 1, u16, defaultp > u16vec1
Default qualifier 16 bit unsigned integer scalar type.
Definition: fwd.hpp:359
-
vec< 1, i8, defaultp > i8vec1
8 bit signed integer scalar type.
Definition: fwd.hpp:237
-
vec< 3, i32, mediump > mediump_i32vec3
Medium qualifier 32 bit signed integer vector of 3 components type.
Definition: fwd.hpp:269
-
vec< 2, i32, defaultp > i32vec2
32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:278
-
vec< 2, i16, lowp > lowp_i16vec2
Low qualifier 16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:243
-
vec< 2, u64, mediump > mediump_u64vec2
Medium qualifier 64 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:390
-
vec< 4, u8, lowp > lowp_u8vec4
Low qualifier 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:327
-
mat< 3, 3, f32, highp > highp_f32mat3x3
High single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:694
-
vec< 1, u8, highp > highp_u8vec1
High qualifier 8 bit unsigned integer scalar type.
Definition: fwd.hpp:334
-
uint8 highp_uint8_t
High qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:100
-
vec< 4, u32, mediump > mediump_u32vec4
Medium qualifier 32 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:372
-
mat< 2, 2, f32, highp > highp_f32mat2x2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:690
-
vec< 4, f64, highp > highp_f64vec4
High double-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:499
-
vec< 3, u8, lowp > lowp_u8vec3
Low qualifier 8 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:326
-
float highp_f32
High 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:149
-
uint64 mediump_uint64
Medium qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:137
-
int32 highp_int32_t
32 bit signed integer type.
Definition: fwd.hpp:70
-
vec< 3, f64, defaultp > f64vec3
Double-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:503
-
mat< 2, 3, f32, lowp > lowp_f32mat2x3
Low single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:671
-
vec< 3, u16, mediump > mediump_u16vec3
Medium qualifier 16 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:351
-
mat< 2, 4, f64, defaultp > f64mat2x4
Double-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:786
-
mat< 3, 3, f32, defaultp > f32mat3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:553
-
mat< 2, 2, f64, mediump > mediump_f64mat2x2
Medium double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:760
-
uint64 mediump_u64
Medium qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:132
-
vec< 4, i16, highp > highp_i16vec4
High qualifier 16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:255
-
mat< 4, 4, f32, lowp > lowp_fmat4
Low single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:526
-
vec< 2, u32, mediump > mediump_u32vec2
Medium qualifier 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:370
-
vec< 3, u64, highp > highp_u64vec3
High qualifier 64 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:396
-
uint16 lowp_u16
Low qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:103
-
vec< 3, i16, lowp > lowp_i16vec3
Low qualifier 16 bit signed integer vector of 3 components type.
Definition: fwd.hpp:244
-
vec< 3, u16, lowp > lowp_u16vec3
Low qualifier 16 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:346
-
vec< 3, f32, lowp > lowp_f32vec3
Low single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:448
-
mat< 4, 4, f32, highp > highp_fmat4
High single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:534
-
mat< 3, 3, f32, lowp > lowp_fmat3
Low single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:525
-
int16 highp_i16
High qualifier 16 bit signed integer type.
Definition: fwd.hpp:47
-
qua< f32, mediump > mediump_f32quat
Medium single-qualifier floating-point quaternion.
Definition: fwd.hpp:803
-
int8 highp_int8
High qualifier 8 bit signed integer type.
Definition: fwd.hpp:38
-
mat< 4, 4, f64, defaultp > f64mat4x4
Double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:788
-
mat< 4, 3, f32, defaultp > fmat4x3
Single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:665
-
mat< 2, 4, f32, lowp > lowp_fmat2x4
Low single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:632
-
mat< 3, 3, f64, highp > highp_f64mat3
High double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:581
-
vec< 3, i8, mediump > mediump_i8vec3
Medium qualifier 8 bit signed integer vector of 3 components type.
Definition: fwd.hpp:229
-
vec< 1, f32, highp > highp_f32vec1
High single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:456
-
vec< 3, i8, lowp > lowp_i8vec3
Low qualifier 8 bit signed integer vector of 3 components type.
Definition: fwd.hpp:224
-
mat< 4, 3, f64, lowp > lowp_f64mat4x3
Low double-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:757
-
vec< 4, u64, highp > highp_u64vec4
High qualifier 64 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:397
-
vec< 3, f32, defaultp > fvec3
Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:443
-
vec< 2, i16, defaultp > i16vec2
16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:258
-
mat< 4, 3, f32, defaultp > f32mat4x3
Single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:705
-
mat< 2, 2, f32, defaultp > f32mat2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:552
-
vec< 2, u16, mediump > mediump_u16vec2
Medium qualifier 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:350
-
mat< 2, 4, f32, mediump > mediump_fmat2x4
Medium single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:642
-
mat< 4, 4, f32, lowp > lowp_f32mat4x4
Low single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:678
-
vec< 2, u8, lowp > lowp_u8vec2
Low qualifier 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:325
-
mat< 3, 3, f64, mediump > mediump_f64mat3
Medium double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:577
-
int16 lowp_i16
Low qualifier 16 bit signed integer type.
Definition: fwd.hpp:45
-
mat< 3, 4, f32, highp > highp_fmat3x4
High single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:655
-
double float64_t
Default 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:176
-
mat< 4, 4, f64, highp > highp_f64mat4x4
High double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:778
-
mat< 4, 3, f32, mediump > mediump_f32mat4x3
Medium single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:687
-
int16 lowp_int16
Low qualifier 16 bit signed integer type.
Definition: fwd.hpp:50
-
mat< 3, 3, f32, mediump > mediump_fmat3
Medium single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:529
-
mat< 4, 4, f32, highp > highp_f32mat4x4
High single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:698
-
int64 lowp_int64_t
Low qualifier 64 bit signed integer type.
Definition: fwd.hpp:82
-
uint16 uint16_t
Default qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:115
-
vec< 2, f64, highp > highp_f64vec2
High double-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:497
-
vec< 2, u64, lowp > lowp_u64vec2
Low qualifier 64 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:385
-
mat< 3, 3, f32, defaultp > fmat3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:537
-
mat< 3, 2, f32, mediump > mediump_f32mat3x2
Medium single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:683
-
mat< 4, 2, f32, lowp > lowp_f32mat4x2
Low single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:676
-
int32 lowp_int32
Low qualifier 32 bit signed integer type.
Definition: fwd.hpp:64
-
vec< 4, i64, mediump > mediump_i64vec4
Medium qualifier 64 bit signed integer vector of 4 components type.
Definition: fwd.hpp:290
-
uint8 uint8_t
Default qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:101
-
vec< 1, i8, mediump > mediump_i8vec1
Medium qualifier 8 bit signed integer scalar type.
Definition: fwd.hpp:227
-
int32 mediump_int32_t
Medium qualifier 32 bit signed integer type.
Definition: fwd.hpp:69
-
float highp_float32_t
High 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:159
-
mat< 3, 3, f32, defaultp > f32mat3x3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:704
-
uint8 highp_u8
High qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:91
-
uint8 mediump_uint8
Medium qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:95
-
mat< 4, 2, f32, highp > highp_fmat4x2
High single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:656
-
vec< 2, f32, highp > highp_f32vec2
High single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:457
-
int64 mediump_int64_t
Medium qualifier 64 bit signed integer type.
Definition: fwd.hpp:83
-
vec< 3, u64, lowp > lowp_u64vec3
Low qualifier 64 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:386
-
mat< 2, 2, f64, highp > highp_f64mat2x2
High double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:770
-
vec< 3, u32, highp > highp_u32vec3
High qualifier 32 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:376
-
int8 highp_int8_t
High qualifier 8 bit signed integer type.
Definition: fwd.hpp:42
-
qua< f32, lowp > lowp_f32quat
Low single-qualifier floating-point quaternion.
Definition: fwd.hpp:802
-
vec< 4, i32, lowp > lowp_i32vec4
Low qualifier 32 bit signed integer vector of 4 components type.
Definition: fwd.hpp:265
-
vec< 1, i16, highp > highp_i16vec1
High qualifier 16 bit signed integer scalar type.
Definition: fwd.hpp:252
-
mat< 4, 4, f32, lowp > lowp_fmat4x4
Low single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:638
-
mat< 3, 2, f32, defaultp > f32mat3x2
Single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:701
-
mat< 3, 3, f32, lowp > lowp_f32mat3x3
Low single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:674
-
vec< 2, i8, lowp > lowp_i8vec2
Low qualifier 8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:223
-
vec< 4, i32, defaultp > i32vec4
32 bit signed integer vector of 4 components type.
Definition: fwd.hpp:280
-
mat< 2, 2, f32, highp > highp_f32mat2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:548
-
float lowp_f32
Low 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:147
-
vec< 4, u16, mediump > mediump_u16vec4
Medium qualifier 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:352
-
vec< 3, u32, defaultp > u32vec3
Default qualifier 32 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:381
-
vec< 2, u8, defaultp > u8vec2
Default qualifier 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:340
-
int16 mediump_i16
Medium qualifier 16 bit signed integer type.
Definition: fwd.hpp:46
-
vec< 2, u64, highp > highp_u64vec2
High qualifier 64 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:395
-
vec< 3, i8, defaultp > i8vec3
8 bit signed integer vector of 3 components type.
Definition: fwd.hpp:239
-
mat< 2, 2, f32, mediump > mediump_f32mat2x2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:680
-
uint16 mediump_uint16_t
Medium qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:113
-
mat< 4, 3, f64, mediump > mediump_f64mat4x3
Medium double-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:767
-
vec< 3, u8, defaultp > u8vec3
Default qualifier 8 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:341
-
double highp_f64
High 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:165
-
vec< 3, float, mediump > mediump_fvec3
Medium Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:433
-
int64 mediump_int64
Medium qualifier 64 bit signed integer type.
Definition: fwd.hpp:79
-
vec< 4, u64, mediump > mediump_u64vec4
Medium qualifier 64 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:392
-
uint64 uint64_t
Default qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:143
-
vec< 2, u32, highp > highp_u32vec2
High qualifier 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:375
-
vec< 1, float, highp > highp_fvec1
High single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:436
-
vec< 4, i64, lowp > lowp_i64vec4
Low qualifier 64 bit signed integer vector of 4 components type.
Definition: fwd.hpp:285
-
vec< 3, i32, defaultp > i32vec3
32 bit signed integer vector of 3 components type.
Definition: fwd.hpp:279
-
mat< 2, 4, f32, highp > highp_f32mat2x4
High single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:692
-
vec< 1, i8, lowp > lowp_i8vec1
Low qualifier 8 bit signed integer scalar type.
Definition: fwd.hpp:222
-
mat< 2, 2, f64, highp > highp_f64mat2
High double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:580
-
uint16 lowp_uint16_t
Low qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:112
-
mat< 3, 2, f64, highp > highp_f64mat3x2
High double-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:773
-
vec< 3, u32, mediump > mediump_u32vec3
Medium qualifier 32 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:371
-
uint16 lowp_uint16
Low qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:108
-
vec< 3, u8, highp > highp_u8vec3
High qualifier 8 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:336
-
vec< 4, f64, defaultp > f64vec4
Double-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:504
-
vec< 2, i8, highp > highp_i8vec2
High qualifier 8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:233
-
vec< 3, i32, lowp > lowp_i32vec3
Low qualifier 32 bit signed integer vector of 3 components type.
Definition: fwd.hpp:264
-
int32 lowp_i32
Low qualifier 32 bit signed integer type.
Definition: fwd.hpp:59
-
mat< 4, 4, f32, mediump > mediump_fmat4x4
Medium single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:648
-
int64 mediump_i64
Medium qualifier 64 bit signed integer type.
Definition: fwd.hpp:74
-
vec< 4, i16, lowp > lowp_i16vec4
Low qualifier 16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:245
-
mat< 4, 3, f64, highp > highp_f64mat4x3
High double-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:777
-
vec< 2, u8, highp > highp_u8vec2
High qualifier 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:335
-
vec< 3, i8, highp > highp_i8vec3
High qualifier 8 bit signed integer vector of 3 components type.
Definition: fwd.hpp:234
-
vec< 3, f64, highp > highp_f64vec3
High double-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:498
-
vec< 2, f32, defaultp > fvec2
Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:442
-
vec< 4, f64, lowp > lowp_f64vec4
Low double-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:489
-
vec< 3, f32, mediump > mediump_f32vec3
Medium single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:453
-
double lowp_f64
Low 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:163
-
mat< 4, 2, f32, lowp > lowp_fmat4x2
Low single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:636
-
mat< 2, 4, f64, highp > highp_f64mat2x4
High double-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:772
-
mat< 4, 4, f64, highp > highp_f64mat4
High double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:582
-
vec< 4, i32, mediump > mediump_i32vec4
Medium qualifier 32 bit signed integer vector of 4 components type.
Definition: fwd.hpp:270
-
mat< 2, 2, f32, lowp > lowp_f32mat2
Low single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:540
-
int16 int16_t
16 bit signed integer type.
Definition: fwd.hpp:57
-
int64 highp_i64
High qualifier 64 bit signed integer type.
Definition: fwd.hpp:75
-
mat< 3, 4, f64, highp > highp_f64mat3x4
High double-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:775
-
mat< 3, 3, f32, highp > highp_fmat3
High single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:533
-
mat< 3, 3, f32, mediump > mediump_f32mat3x3
Medium single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:684
-
qua< f64, mediump > mediump_f64quat
Medium double-qualifier floating-point quaternion.
Definition: fwd.hpp:813
-
int32 int32_t
32 bit signed integer type.
Definition: fwd.hpp:71
-
vec< 2, f64, defaultp > f64vec2
Double-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:502
-
uint64 lowp_uint64_t
Low qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:140
-
detail::uint64 uint64
64 bit unsigned integer type.
-
int16 highp_int16
High qualifier 16 bit signed integer type.
Definition: fwd.hpp:52
-
vec< 1, i16, mediump > mediump_i16vec1
Medium qualifier 16 bit signed integer scalar type.
Definition: fwd.hpp:247
-
mat< 2, 4, f32, defaultp > fmat2x4
Single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:666
-
mat< 2, 2, f32, highp > highp_fmat2x2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:650
-
vec< 4, float, highp > highp_fvec4
High Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:439
-
mat< 3, 3, f64, highp > highp_f64mat3x3
High double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:774
-
int32 mediump_i32
Medium qualifier 32 bit signed integer type.
Definition: fwd.hpp:60
-
vec< 2, u16, lowp > lowp_u16vec2
Low qualifier 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:345
-
vec< 4, u32, highp > highp_u32vec4
High qualifier 32 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:377
-
float lowp_float32_t
Low 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:157
-
uint64 highp_uint64_t
High qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:142
-
vec< 2, f32, lowp > lowp_f32vec2
Low single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:447
-
vec< 4, u32, defaultp > u32vec4
Default qualifier 32 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:382
-
mat< 2, 2, f64, mediump > mediump_f64mat2
Medium double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:576
-
mat< 4, 3, f32, highp > highp_f32mat4x3
High single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:697
-
qua< f32, defaultp > f32quat
Single-qualifier floating-point quaternion.
Definition: fwd.hpp:805
-
detail::int64 int64
64 bit signed integer type.
-
vec< 1, u64, highp > highp_u64vec1
High qualifier 64 bit unsigned integer scalar type.
Definition: fwd.hpp:394
-
mat< 2, 3, f64, highp > highp_f64mat2x3
High double-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:771
-
vec< 4, i8, lowp > lowp_i8vec4
Low qualifier 8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:225
-
mat< 4, 3, f32, lowp > lowp_fmat4x3
Low single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:637
-
float f32
Default 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:150
-
vec< 2, i32, highp > highp_i32vec2
High qualifier 32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:273
-
vec< 1, u8, mediump > mediump_u8vec1
Medium qualifier 8 bit unsigned integer scalar type.
Definition: fwd.hpp:329
-
mat< 4, 3, f32, highp > highp_fmat4x3
High single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:657
-
vec< 4, i16, mediump > mediump_i16vec4
Medium qualifier 16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:250
-
mat< 4, 2, f64, defaultp > f64mat4x2
Double-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:782
-
mat< 2, 3, f32, defaultp > fmat2x3
Single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:663
-
mat< 4, 4, f64, mediump > mediump_f64mat4
Medium double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:578
-
vec< 4, u8, mediump > mediump_u8vec4
Medium qualifier 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:332
-
mat< 3, 4, f32, lowp > lowp_f32mat3x4
Low single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:675
-
double mediump_float64_t
Medium 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:174
-
vec< 2, float, highp > highp_fvec2
High Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:437
-
uint16 u16
Default qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:106
-
int64 lowp_i64
Low qualifier 64 bit signed integer type.
Definition: fwd.hpp:73
-
mat< 4, 4, f32, defaultp > f32mat4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:554
-
mat< 4, 2, f32, mediump > mediump_fmat4x2
Medium single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:646
-
mat< 2, 2, f64, lowp > lowp_f64mat2
Low double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:572
-
int8 mediump_int8_t
Medium qualifier 8 bit signed integer type.
Definition: fwd.hpp:41
-
mat< 3, 3, f32, lowp > lowp_fmat3x3
Low single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:634
-
double lowp_float64_t
Low 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:173
-
int16 highp_int16_t
High qualifier 16 bit signed integer type.
Definition: fwd.hpp:56
-
mat< 3, 3, f32, highp > highp_fmat3x3
High single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:654
-
vec< 1, i64, defaultp > i64vec1
64 bit signed integer scalar type.
Definition: fwd.hpp:297
-
uint32 lowp_u32
Low qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:117
-
vec< 1, u8, lowp > lowp_u8vec1
Low qualifier 8 bit unsigned integer scalar type.
Definition: fwd.hpp:324
-
vec< 3, i64, mediump > mediump_i64vec3
Medium qualifier 64 bit signed integer vector of 3 components type.
Definition: fwd.hpp:289
-
qua< f32, highp > highp_f32quat
High single-qualifier floating-point quaternion.
Definition: fwd.hpp:804
-
uint16 highp_u16
High qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:105
-
vec< 1, f32, defaultp > fvec1
Single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:441
-
vec< 2, u8, mediump > mediump_u8vec2
Medium qualifier 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:330
-
int32 lowp_int32_t
Low qualifier 32 bit signed integer type.
Definition: fwd.hpp:68
-
vec< 1, u16, lowp > lowp_u16vec1
Low qualifier 16 bit unsigned integer scalar type.
Definition: fwd.hpp:344
-
mat< 4, 4, f32, highp > highp_fmat4x4
High single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:658
-
mat< 3, 4, f32, highp > highp_f32mat3x4
High single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:695
-
vec< 2, f32, defaultp > f32vec2
Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:462
-
vec< 3, u16, highp > highp_u16vec3
High qualifier 16 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:356
-
float mediump_float32_t
Medium 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:158
-
mat< 2, 2, f32, defaultp > fmat2x2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:660
-
float mediump_f32
Medium 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:148
-
mat< 4, 4, f32, mediump > mediump_f32mat4x4
Medium single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:688
-
vec< 2, f32, mediump > mediump_f32vec2
Medium single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:452
-
int8 lowp_int8
Low qualifier 8 bit signed integer type.
Definition: fwd.hpp:36
-
vec< 1, f64, lowp > lowp_f64vec1
Low double-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:486
-
mat< 3, 2, f32, highp > highp_f32mat3x2
High single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:693
-
mat< 3, 2, f64, mediump > mediump_f64mat3x2
Medium double-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:763
-
vec< 3, u8, mediump > mediump_u8vec3
Medium qualifier 8 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:331
-
mat< 4, 4, f64, lowp > lowp_f64mat4x4
Low double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:758
-
vec< 1, i16, lowp > lowp_i16vec1
Low qualifier 16 bit signed integer scalar type.
Definition: fwd.hpp:242
-
int8 lowp_int8_t
Low qualifier 8 bit signed integer type.
Definition: fwd.hpp:40
-
vec< 2, u32, lowp > lowp_u32vec2
Low qualifier 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:365
-
mat< 2, 4, f32, mediump > mediump_f32mat2x4
Medium single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:682
-
mat< 4, 3, f64, defaultp > f64mat4x3
Double-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:785
-
vec< 2, i64, highp > highp_i64vec2
High qualifier 64 bit signed integer vector of 2 components type.
Definition: fwd.hpp:293
-
mat< 4, 4, f32, mediump > mediump_f32mat4
Medium single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:546
-
int64 i64
64 bit signed integer type.
Definition: fwd.hpp:76
-
double f64
Default 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:166
-
vec< 1, f32, mediump > mediump_f32vec1
Medium single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:451
-
mat< 3, 4, f32, mediump > mediump_f32mat3x4
Medium single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:685
-
mat< 2, 2, f32, highp > highp_fmat2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:532
-
vec< 3, f32, highp > highp_f32vec3
High single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:458
-
vec< 4, i8, mediump > mediump_i8vec4
Medium qualifier 8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:230
-
float lowp_float32
Low 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:152
-
vec< 2, u32, defaultp > u32vec2
Default qualifier 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:380
-
vec< 4, float, mediump > mediump_fvec4
Medium Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:434
-
int32 mediump_int32
Medium qualifier 32 bit signed integer type.
Definition: fwd.hpp:65
-
vec< 2, i64, defaultp > i64vec2
64 bit signed integer vector of 2 components type.
Definition: fwd.hpp:298
-
int16 i16
16 bit signed integer type.
Definition: fwd.hpp:48
-
mat< 4, 4, f32, defaultp > fmat4x4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:668
-
qua< f64, lowp > lowp_f64quat
Low double-qualifier floating-point quaternion.
Definition: fwd.hpp:812
-
mat< 3, 2, f32, defaultp > fmat3x2
Single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:661
-
vec< 4, u16, defaultp > u16vec4
Default qualifier 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:362
-
vec< 2, u16, defaultp > u16vec2
Default qualifier 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:360
-
uint8 mediump_u8
Medium qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:90
-
mat< 2, 2, f32, lowp > lowp_fmat2x2
Low single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:630
-
vec< 4, i8, highp > highp_i8vec4
High qualifier 8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:235
-
vec< 4, u64, lowp > lowp_u64vec4
Low qualifier 64 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:387
-
vec< 2, i64, mediump > mediump_i64vec2
Medium qualifier 64 bit signed integer vector of 2 components type.
Definition: fwd.hpp:288
-
mat< 4, 2, f64, highp > highp_f64mat4x2
High double-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:776
-
int16 mediump_int16_t
Medium qualifier 16 bit signed integer type.
Definition: fwd.hpp:55
-
int8 lowp_i8
Low qualifier 8 bit signed integer type.
Definition: fwd.hpp:31
-
vec< 3, i64, defaultp > i64vec3
64 bit signed integer vector of 3 components type.
Definition: fwd.hpp:299
-
vec< 2, i32, lowp > lowp_i32vec2
Low qualifier 32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:263
-
qua< f64, highp > highp_f64quat
High double-qualifier floating-point quaternion.
Definition: fwd.hpp:814
-
vec< 2, f64, mediump > mediump_f64vec2
Medium double-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:492
-
uint16 highp_uint16_t
High qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:114
-
vec< 1, float, lowp > lowp_fvec1
Low single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:426
-
int8 i8
8 bit signed integer type.
Definition: fwd.hpp:34
-
uint64 mediump_uint64_t
Medium qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:141
-
vec< 1, u64, mediump > mediump_u64vec1
Medium qualifier 64 bit unsigned integer scalar type.
Definition: fwd.hpp:389
-
mat< 2, 2, f32, mediump > mediump_f32mat2
Medium single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:544
-
uint8 mediump_uint8_t
Medium qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:99
-
Definition: common.hpp:20
-
double mediump_f64
Medium 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:164
-
vec< 1, float, mediump > mediump_fvec1
Medium single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:431
-
uint16 mediump_uint16
Medium qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:109
-
vec< 4, u8, highp > highp_u8vec4
High qualifier 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:337
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00175.html b/tests/OpenGL/package/glm/doc/api/a00175.html deleted file mode 100644 index 871fae2a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00175.html +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - -0.9.9 API documentation: type_ptr.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
type_ptr.hpp File Reference
-
-
- -

GLM_GTC_type_ptr -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTC_type_ptr

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

Definition in file type_ptr.hpp.

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

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file type_quat.hpp.

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

GLM_GTX_type_trait -More...

- -

Go to the source code of this file.

-

Detailed Description

-

GLM_GTX_type_trait

-
See also
Core features (dependence)
- -

Definition in file type_trait.hpp.

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

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file type_vec1.hpp.

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

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file type_vec2.hpp.

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

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file type_vec3.hpp.

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

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file type_vec4.hpp.

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

GLM_GTC_ulp -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTC_ulp

-
See also
Core features (dependence)
- -

Definition in file ulp.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00182_source.html b/tests/OpenGL/package/glm/doc/api/a00182_source.html deleted file mode 100644 index 260b29e2..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00182_source.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - -0.9.9 API documentation: ulp.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
ulp.hpp
-
-
-Go to the documentation of this file.
1 
-
15 #pragma once
-
16 
-
17 // Dependencies
-
18 #include "../detail/setup.hpp"
-
19 #include "../detail/qualifier.hpp"
-
20 #include "../detail/_vectorize.hpp"
-
21 #include "../ext/scalar_int_sized.hpp"
-
22 
-
23 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
24 # pragma message("GLM: GLM_GTC_ulp extension included")
-
25 #endif
-
26 
-
27 namespace glm
-
28 {
-
34  template<typename genType>
-
35  GLM_FUNC_DECL genType next_float(genType x);
-
36 
-
42  template<typename genType>
-
43  GLM_FUNC_DECL genType prev_float(genType x);
-
44 
-
50  template<typename genType>
-
51  GLM_FUNC_DECL genType next_float(genType x, int ULPs);
-
52 
-
58  template<typename genType>
-
59  GLM_FUNC_DECL genType prev_float(genType x, int ULPs);
-
60 
-
64  GLM_FUNC_DECL int float_distance(float x, float y);
-
65 
-
69  GLM_FUNC_DECL int64 float_distance(double x, double y);
-
70 
-
78  template<length_t L, typename T, qualifier Q>
-
79  GLM_FUNC_DECL vec<L, T, Q> next_float(vec<L, T, Q> const& x);
-
80 
-
88  template<length_t L, typename T, qualifier Q>
-
89  GLM_FUNC_DECL vec<L, T, Q> next_float(vec<L, T, Q> const& x, int ULPs);
-
90 
-
98  template<length_t L, typename T, qualifier Q>
-
99  GLM_FUNC_DECL vec<L, T, Q> next_float(vec<L, T, Q> const& x, vec<L, int, Q> const& ULPs);
-
100 
-
108  template<length_t L, typename T, qualifier Q>
-
109  GLM_FUNC_DECL vec<L, T, Q> prev_float(vec<L, T, Q> const& x);
-
110 
-
118  template<length_t L, typename T, qualifier Q>
-
119  GLM_FUNC_DECL vec<L, T, Q> prev_float(vec<L, T, Q> const& x, int ULPs);
-
120 
-
128  template<length_t L, typename T, qualifier Q>
-
129  GLM_FUNC_DECL vec<L, T, Q> prev_float(vec<L, T, Q> const& x, vec<L, int, Q> const& ULPs);
-
130 
-
137  template<length_t L, typename T, qualifier Q>
-
138  GLM_FUNC_DECL vec<L, int, Q> float_distance(vec<L, float, Q> const& x, vec<L, float, Q> const& y);
-
139 
-
146  template<length_t L, typename T, qualifier Q>
-
147  GLM_FUNC_DECL vec<L, int64, Q> float_distance(vec<L, double, Q> const& x, vec<L, double, Q> const& y);
-
148 
-
150 }//namespace glm
-
151 
-
152 #include "ulp.inl"
-
detail::int64 int64
64 bit signed integer type.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00183.html b/tests/OpenGL/package/glm/doc/api/a00183.html deleted file mode 100644 index 37c918e7..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00183.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -0.9.9 API documentation: vec1.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vec1.hpp File Reference
-
-
- -

GLM_GTC_vec1 -More...

- -

Go to the source code of this file.

-

Detailed Description

-

GLM_GTC_vec1

-
See also
Core features (dependence)
- -

Definition in file vec1.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00183_source.html b/tests/OpenGL/package/glm/doc/api/a00183_source.html deleted file mode 100644 index 0917812b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00183_source.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - -0.9.9 API documentation: vec1.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vec1.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../ext/vector_bool1.hpp"
-
17 #include "../ext/vector_bool1_precision.hpp"
-
18 #include "../ext/vector_float1.hpp"
-
19 #include "../ext/vector_float1_precision.hpp"
-
20 #include "../ext/vector_double1.hpp"
-
21 #include "../ext/vector_double1_precision.hpp"
-
22 #include "../ext/vector_int1.hpp"
-
23 #include "../ext/vector_int1_precision.hpp"
-
24 #include "../ext/vector_uint1.hpp"
-
25 #include "../ext/vector_uint1_precision.hpp"
-
26 
-
27 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
28 # pragma message("GLM: GLM_GTC_vec1 extension included")
-
29 #endif
-
30 
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00184.html b/tests/OpenGL/package/glm/doc/api/a00184.html deleted file mode 100644 index 559184ba..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00184.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - -0.9.9 API documentation: vec2.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vec2.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file vec2.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00184_source.html b/tests/OpenGL/package/glm/doc/api/a00184_source.html deleted file mode 100644 index 845e0dfc..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00184_source.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - -0.9.9 API documentation: vec2.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vec2.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "./ext/vector_bool2.hpp"
- - - - - -
11 #include "./ext/vector_int2.hpp"
- -
13 #include "./ext/vector_uint2.hpp"
- -
Core features
- - -
Core features
- - -
Core features
- -
Core features
-
Core features
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00185.html b/tests/OpenGL/package/glm/doc/api/a00185.html deleted file mode 100644 index 4f92c3ab..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00185.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - -0.9.9 API documentation: vec3.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vec3.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file vec3.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00185_source.html b/tests/OpenGL/package/glm/doc/api/a00185_source.html deleted file mode 100644 index 4b2fac1f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00185_source.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - -0.9.9 API documentation: vec3.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vec3.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "./ext/vector_bool3.hpp"
- - - - - -
11 #include "./ext/vector_int3.hpp"
- -
13 #include "./ext/vector_uint3.hpp"
- -
Core features
-
Core features
- -
Core features
-
Core features
- - - -
Core features
- -
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00186.html b/tests/OpenGL/package/glm/doc/api/a00186.html deleted file mode 100644 index 424ef27f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00186.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - -0.9.9 API documentation: vec4.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vec4.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

-

Detailed Description

-

Core features

- -

Definition in file vec4.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00186_source.html b/tests/OpenGL/package/glm/doc/api/a00186_source.html deleted file mode 100644 index 2f15fc59..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00186_source.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - -0.9.9 API documentation: vec4.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vec4.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "./ext/vector_bool4.hpp"
- - - - - -
11 #include "./ext/vector_int4.hpp"
- -
13 #include "./ext/vector_uint4.hpp"
- -
15 
- - -
Core features
-
Core features
- -
Core features
-
Core features
- - -
Core features
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00187.html b/tests/OpenGL/package/glm/doc/api/a00187.html deleted file mode 100644 index 76c3b2ec..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00187.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -0.9.9 API documentation: vec_swizzle.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vec_swizzle.hpp File Reference
-
-
- -

GLM_GTX_vec_swizzle -More...

- -

Go to the source code of this file.

-

Detailed Description

-

GLM_GTX_vec_swizzle

-
See also
Core features (dependence)
- -

Definition in file vec_swizzle.hpp.

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

GLM_GTX_vector_angle -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_vector_angle

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

Definition in file vector_angle.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00188_source.html b/tests/OpenGL/package/glm/doc/api/a00188_source.html deleted file mode 100644 index e22f1d22..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00188_source.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_angle.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_angle.hpp
-
-
-Go to the documentation of this file.
1 
-
15 #pragma once
-
16 
-
17 // Dependency:
-
18 #include "../glm.hpp"
-
19 #include "../gtc/epsilon.hpp"
-
20 #include "../gtx/quaternion.hpp"
-
21 #include "../gtx/rotate_vector.hpp"
-
22 
-
23 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
24 # ifndef GLM_ENABLE_EXPERIMENTAL
-
25 # pragma message("GLM: GLM_GTX_vector_angle is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
26 # else
-
27 # pragma message("GLM: GLM_GTX_vector_angle extension included")
-
28 # endif
-
29 #endif
-
30 
-
31 namespace glm
-
32 {
-
35 
-
39  template<length_t L, typename T, qualifier Q>
-
40  GLM_FUNC_DECL T angle(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
-
41 
-
45  template<typename T, qualifier Q>
-
46  GLM_FUNC_DECL T orientedAngle(vec<2, T, Q> const& x, vec<2, T, Q> const& y);
-
47 
-
51  template<typename T, qualifier Q>
-
52  GLM_FUNC_DECL T orientedAngle(vec<3, T, Q> const& x, vec<3, T, Q> const& y, vec<3, T, Q> const& ref);
-
53 
-
55 }// namespace glm
-
56 
-
57 #include "vector_angle.inl"
-
GLM_FUNC_DECL T orientedAngle(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, vec< 3, T, Q > const &ref)
Returns the oriented angle between two 3d vectors based from a reference axis.
-
GLM_FUNC_DECL T angle(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Returns the absolute angle between two vectors.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00189.html b/tests/OpenGL/package/glm/doc/api/a00189.html deleted file mode 100644 index 94850f77..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00189.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_bool1.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_bool1.hpp File Reference
-
-
- -

GLM_EXT_vector_bool1 -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

GLM_EXT_vector_bool1

- -

Definition in file vector_bool1.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00189_source.html b/tests/OpenGL/package/glm/doc/api/a00189_source.html deleted file mode 100644 index 778805d7..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00189_source.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_bool1.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_bool1.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 #include "../detail/type_vec1.hpp"
-
16 
-
17 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
18 # pragma message("GLM: GLM_EXT_vector_bool1 extension included")
-
19 #endif
-
20 
-
21 namespace glm
-
22 {
-
25 
-
27  typedef vec<1, bool, defaultp> bvec1;
-
28 
-
30 }//namespace glm
-
vec< 1, bool, defaultp > bvec1
1 components vector of boolean.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00190.html b/tests/OpenGL/package/glm/doc/api/a00190.html deleted file mode 100644 index 24e2f1bf..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00190.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_bool1_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_bool1_precision.hpp File Reference
-
-
- -

GLM_EXT_vector_bool1_precision -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00190_source.html b/tests/OpenGL/package/glm/doc/api/a00190_source.html deleted file mode 100644 index e72e08c5..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00190_source.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_bool1_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_bool1_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
11 #pragma once
-
12 
-
13 #include "../detail/type_vec1.hpp"
-
14 
-
15 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
16 # pragma message("GLM: GLM_EXT_vector_bool1_precision extension included")
-
17 #endif
-
18 
-
19 namespace glm
-
20 {
-
23 
-
25  typedef vec<1, bool, highp> highp_bvec1;
-
26 
-
28  typedef vec<1, bool, mediump> mediump_bvec1;
-
29 
-
31  typedef vec<1, bool, lowp> lowp_bvec1;
-
32 
-
34 }//namespace glm
-
vec< 1, bool, highp > highp_bvec1
1 component vector of bool values.
-
vec< 1, bool, mediump > mediump_bvec1
1 component vector of bool values.
-
vec< 1, bool, lowp > lowp_bvec1
1 component vector of bool values.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00191.html b/tests/OpenGL/package/glm/doc/api/a00191.html deleted file mode 100644 index 9acc92d2..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00191.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_bool2.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_bool2.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file vector_bool2.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00191_source.html b/tests/OpenGL/package/glm/doc/api/a00191_source.html deleted file mode 100644 index 99f0500b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00191_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_bool2.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_bool2.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef vec<2, bool, defaultp> bvec2;
-
16 
-
18 }//namespace glm
-
vec< 2, bool, defaultp > bvec2
2 components vector of boolean.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00192.html b/tests/OpenGL/package/glm/doc/api/a00192.html deleted file mode 100644 index 6e88bf0f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00192.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_bool2_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_bool2_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file vector_bool2_precision.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00192_source.html b/tests/OpenGL/package/glm/doc/api/a00192_source.html deleted file mode 100644 index 59488794..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00192_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_bool2_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_bool2_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef vec<2, bool, highp> highp_bvec2;
-
17 
-
22  typedef vec<2, bool, mediump> mediump_bvec2;
-
23 
-
28  typedef vec<2, bool, lowp> lowp_bvec2;
-
29 
-
31 }//namespace glm
-
vec< 2, bool, highp > highp_bvec2
2 components vector of high qualifier bool numbers.
-
vec< 2, bool, mediump > mediump_bvec2
2 components vector of medium qualifier bool numbers.
-
vec< 2, bool, lowp > lowp_bvec2
2 components vector of low qualifier bool numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00193.html b/tests/OpenGL/package/glm/doc/api/a00193.html deleted file mode 100644 index 5b14f839..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00193.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_bool3.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_bool3.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file vector_bool3.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00193_source.html b/tests/OpenGL/package/glm/doc/api/a00193_source.html deleted file mode 100644 index 0b125899..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00193_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_bool3.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_bool3.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef vec<3, bool, defaultp> bvec3;
-
16 
-
18 }//namespace glm
-
vec< 3, bool, defaultp > bvec3
3 components vector of boolean.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00194.html b/tests/OpenGL/package/glm/doc/api/a00194.html deleted file mode 100644 index f35c6e09..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00194.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_bool3_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_bool3_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file vector_bool3_precision.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00194_source.html b/tests/OpenGL/package/glm/doc/api/a00194_source.html deleted file mode 100644 index dc749889..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00194_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_bool3_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_bool3_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef vec<3, bool, highp> highp_bvec3;
-
17 
-
22  typedef vec<3, bool, mediump> mediump_bvec3;
-
23 
-
28  typedef vec<3, bool, lowp> lowp_bvec3;
-
29 
-
31 }//namespace glm
-
vec< 3, bool, mediump > mediump_bvec3
3 components vector of medium qualifier bool numbers.
-
vec< 3, bool, highp > highp_bvec3
3 components vector of high qualifier bool numbers.
-
vec< 3, bool, lowp > lowp_bvec3
3 components vector of low qualifier bool numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00195.html b/tests/OpenGL/package/glm/doc/api/a00195.html deleted file mode 100644 index 26aa735f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00195.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_bool4.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_bool4.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file vector_bool4.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00195_source.html b/tests/OpenGL/package/glm/doc/api/a00195_source.html deleted file mode 100644 index 438a8fef..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00195_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_bool4.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_bool4.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef vec<4, bool, defaultp> bvec4;
-
16 
-
18 }//namespace glm
-
vec< 4, bool, defaultp > bvec4
4 components vector of boolean.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00196.html b/tests/OpenGL/package/glm/doc/api/a00196.html deleted file mode 100644 index 3c1d91bc..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00196.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_bool4_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_bool4_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file vector_bool4_precision.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00196_source.html b/tests/OpenGL/package/glm/doc/api/a00196_source.html deleted file mode 100644 index 6319b4d3..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00196_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_bool4_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_bool4_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef vec<4, bool, highp> highp_bvec4;
-
17 
-
22  typedef vec<4, bool, mediump> mediump_bvec4;
-
23 
-
28  typedef vec<4, bool, lowp> lowp_bvec4;
-
29 
-
31 }//namespace glm
-
vec< 4, bool, lowp > lowp_bvec4
4 components vector of low qualifier bool numbers.
-
vec< 4, bool, mediump > mediump_bvec4
4 components vector of medium qualifier bool numbers.
-
vec< 4, bool, highp > highp_bvec4
4 components vector of high qualifier bool numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00197.html b/tests/OpenGL/package/glm/doc/api/a00197.html deleted file mode 100644 index b658eb81..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00197.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_common.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_common.hpp File Reference
-
-
- -

GLM_EXT_vector_common -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmax (vec< L, T, Q > const &a, T b)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmax (vec< L, T, Q > const &a, vec< L, T, Q > const &b)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmax (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmax (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmin (vec< L, T, Q > const &x, T y)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmin (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmin (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmin (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > max (vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z)
 Return the maximum component-wise values of 3 inputs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > max (vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z, vec< L, T, Q > const &w)
 Return the maximum component-wise values of 4 inputs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > min (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)
 Return the minimum component-wise values of 3 inputs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > min (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)
 Return the minimum component-wise values of 4 inputs. More...
 
-

Detailed Description

-

GLM_EXT_vector_common

- -

Definition in file vector_common.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00197_source.html b/tests/OpenGL/package/glm/doc/api/a00197_source.html deleted file mode 100644 index 31b776b7..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00197_source.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_common.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_common.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 // Dependency:
-
17 #include "../ext/scalar_common.hpp"
-
18 #include "../common.hpp"
-
19 
-
20 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
21 # pragma message("GLM: GLM_EXT_vector_common extension included")
-
22 #endif
-
23 
-
24 namespace glm
-
25 {
-
28 
-
34  template<length_t L, typename T, qualifier Q>
-
35  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> min(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c);
-
36 
-
42  template<length_t L, typename T, qualifier Q>
-
43  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> min(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c, vec<L, T, Q> const& d);
-
44 
-
50  template<length_t L, typename T, qualifier Q>
-
51  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> max(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& z);
-
52 
-
58  template<length_t L, typename T, qualifier Q>
-
59  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> max( vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& z, vec<L, T, Q> const& w);
-
60 
-
68  template<length_t L, typename T, qualifier Q>
-
69  GLM_FUNC_DECL vec<L, T, Q> fmin(vec<L, T, Q> const& x, T y);
-
70 
-
78  template<length_t L, typename T, qualifier Q>
-
79  GLM_FUNC_DECL vec<L, T, Q> fmin(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
-
80 
-
88  template<length_t L, typename T, qualifier Q>
-
89  GLM_FUNC_DECL vec<L, T, Q> fmin(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c);
-
90 
-
98  template<length_t L, typename T, qualifier Q>
-
99  GLM_FUNC_DECL vec<L, T, Q> fmin(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c, vec<L, T, Q> const& d);
-
100 
-
108  template<length_t L, typename T, qualifier Q>
-
109  GLM_FUNC_DECL vec<L, T, Q> fmax(vec<L, T, Q> const& a, T b);
-
110 
-
118  template<length_t L, typename T, qualifier Q>
-
119  GLM_FUNC_DECL vec<L, T, Q> fmax(vec<L, T, Q> const& a, vec<L, T, Q> const& b);
-
120 
-
128  template<length_t L, typename T, qualifier Q>
-
129  GLM_FUNC_DECL vec<L, T, Q> fmax(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c);
-
130 
-
138  template<length_t L, typename T, qualifier Q>
-
139  GLM_FUNC_DECL vec<L, T, Q> fmax(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c, vec<L, T, Q> const& d);
-
140 
-
142 }//namespace glm
-
143 
-
144 #include "vector_common.inl"
-
GLM_FUNC_DECL vec< L, T, Q > fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)
Returns y if x < y; otherwise, it returns x.
-
GLM_FUNC_DECL vec< L, T, Q > fmin(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)
Returns y if y < x; otherwise, it returns x.
-
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > max(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z, vec< L, T, Q > const &w)
Return the maximum component-wise values of 4 inputs.
-
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > min(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)
Return the minimum component-wise values of 4 inputs.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00198.html b/tests/OpenGL/package/glm/doc/api/a00198.html deleted file mode 100644 index cf13fd0d..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00198.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_double1.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_double1.hpp File Reference
-
-
- -

GLM_EXT_vector_double1 -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00198_source.html b/tests/OpenGL/package/glm/doc/api/a00198_source.html deleted file mode 100644 index ff04a10f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00198_source.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_double1.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_double1.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 #include "../detail/type_vec1.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # pragma message("GLM: GLM_EXT_vector_double1 extension included")
-
20 #endif
-
21 
-
22 namespace glm
-
23 {
-
26 
-
28  typedef vec<1, double, defaultp> dvec1;
-
29 
-
31 }//namespace glm
-
vec< 1, double, defaultp > dvec1
1 components vector of double-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00199.html b/tests/OpenGL/package/glm/doc/api/a00199.html deleted file mode 100644 index 8fbf40ed..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00199.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_double1_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_double1_precision.hpp File Reference
-
-
- -

GLM_EXT_vector_double1_precision -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

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

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file vector_double2.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00200_source.html b/tests/OpenGL/package/glm/doc/api/a00200_source.html deleted file mode 100644 index 8fb43a56..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00200_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_double2.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_double2.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef vec<2, double, defaultp> dvec2;
-
16 
-
18 }//namespace glm
-
vec< 2, double, defaultp > dvec2
2 components vector of double-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00201.html b/tests/OpenGL/package/glm/doc/api/a00201.html deleted file mode 100644 index 846107e4..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00201.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_double2_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_double2_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00201_source.html b/tests/OpenGL/package/glm/doc/api/a00201_source.html deleted file mode 100644 index 53cd4fda..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00201_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_double2_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_double2_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef vec<2, double, highp> highp_dvec2;
-
17 
-
22  typedef vec<2, double, mediump> mediump_dvec2;
-
23 
-
28  typedef vec<2, double, lowp> lowp_dvec2;
-
29 
-
31 }//namespace glm
-
vec< 2, double, lowp > lowp_dvec2
2 components vector of low double-qualifier floating-point numbers.
-
vec< 2, double, mediump > mediump_dvec2
2 components vector of medium double-qualifier floating-point numbers.
-
vec< 2, double, highp > highp_dvec2
2 components vector of high double-qualifier floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00202.html b/tests/OpenGL/package/glm/doc/api/a00202.html deleted file mode 100644 index 6d556f27..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00202.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_double3.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_double3.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file vector_double3.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00202_source.html b/tests/OpenGL/package/glm/doc/api/a00202_source.html deleted file mode 100644 index 29f8ac5e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00202_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_double3.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_double3.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef vec<3, double, defaultp> dvec3;
-
16 
-
18 }//namespace glm
-
vec< 3, double, defaultp > dvec3
3 components vector of double-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00203.html b/tests/OpenGL/package/glm/doc/api/a00203.html deleted file mode 100644 index ca4158b7..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00203.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_double3_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_double3_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00203_source.html b/tests/OpenGL/package/glm/doc/api/a00203_source.html deleted file mode 100644 index f80f926f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00203_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_double3_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_double3_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
17  typedef vec<3, double, highp> highp_dvec3;
-
18 
-
24  typedef vec<3, double, mediump> mediump_dvec3;
-
25 
-
31  typedef vec<3, double, lowp> lowp_dvec3;
-
32 
-
34 }//namespace glm
-
vec< 3, double, mediump > mediump_dvec3
3 components vector of medium double-qualifier floating-point numbers.
-
vec< 3, double, lowp > lowp_dvec3
3 components vector of low double-qualifier floating-point numbers.
-
vec< 3, double, highp > highp_dvec3
3 components vector of high double-qualifier floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00204.html b/tests/OpenGL/package/glm/doc/api/a00204.html deleted file mode 100644 index 0eaf6c67..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00204.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_double4.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_double4.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file vector_double4.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00204_source.html b/tests/OpenGL/package/glm/doc/api/a00204_source.html deleted file mode 100644 index c9711834..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00204_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_double4.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_double4.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef vec<4, double, defaultp> dvec4;
-
16 
-
18 }//namespace glm
-
vec< 4, double, defaultp > dvec4
4 components vector of double-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00205.html b/tests/OpenGL/package/glm/doc/api/a00205.html deleted file mode 100644 index 55ea8884..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00205.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_double4_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_double4_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00205_source.html b/tests/OpenGL/package/glm/doc/api/a00205_source.html deleted file mode 100644 index a3277e57..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00205_source.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_double4_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_double4_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/setup.hpp"
-
6 #include "../detail/type_vec4.hpp"
-
7 
-
8 namespace glm
-
9 {
-
12 
-
18  typedef vec<4, double, highp> highp_dvec4;
-
19 
-
25  typedef vec<4, double, mediump> mediump_dvec4;
-
26 
-
32  typedef vec<4, double, lowp> lowp_dvec4;
-
33 
-
35 }//namespace glm
-
vec< 4, double, mediump > mediump_dvec4
4 components vector of medium double-qualifier floating-point numbers.
-
vec< 4, double, highp > highp_dvec4
4 components vector of high double-qualifier floating-point numbers.
-
vec< 4, double, lowp > lowp_dvec4
4 components vector of low double-qualifier floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00206.html b/tests/OpenGL/package/glm/doc/api/a00206.html deleted file mode 100644 index c11ff9a3..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00206.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_float1.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_float1.hpp File Reference
-
-
- -

GLM_EXT_vector_float1 -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

GLM_EXT_vector_float1

- -

Definition in file vector_float1.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00206_source.html b/tests/OpenGL/package/glm/doc/api/a00206_source.html deleted file mode 100644 index 05d91664..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00206_source.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_float1.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_float1.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 #include "../detail/type_vec1.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # pragma message("GLM: GLM_EXT_vector_float1 extension included")
-
20 #endif
-
21 
-
22 namespace glm
-
23 {
-
26 
-
28  typedef vec<1, float, defaultp> vec1;
-
29 
-
31 }//namespace glm
-
vec< 1, float, defaultp > vec1
1 components vector of single-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00207.html b/tests/OpenGL/package/glm/doc/api/a00207.html deleted file mode 100644 index 785f3f3e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00207.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_float1_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_float1_precision.hpp File Reference
-
-
- -

GLM_EXT_vector_float1_precision -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

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

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file vector_float2.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00208_source.html b/tests/OpenGL/package/glm/doc/api/a00208_source.html deleted file mode 100644 index 3eb29262..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00208_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_float2.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_float2.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef vec<2, float, defaultp> vec2;
-
16 
-
18 }//namespace glm
-
vec< 2, float, defaultp > vec2
2 components vector of single-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00209.html b/tests/OpenGL/package/glm/doc/api/a00209.html deleted file mode 100644 index ab2d9985..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00209.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_float2_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_float2_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00209_source.html b/tests/OpenGL/package/glm/doc/api/a00209_source.html deleted file mode 100644 index b93c0d43..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00209_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_float2_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_float2_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef vec<2, float, highp> highp_vec2;
-
17 
-
22  typedef vec<2, float, mediump> mediump_vec2;
-
23 
-
28  typedef vec<2, float, lowp> lowp_vec2;
-
29 
-
31 }//namespace glm
-
vec< 2, float, highp > highp_vec2
2 components vector of high single-qualifier floating-point numbers.
-
vec< 2, float, lowp > lowp_vec2
2 components vector of low single-qualifier floating-point numbers.
-
vec< 2, float, mediump > mediump_vec2
2 components vector of medium single-qualifier floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00210.html b/tests/OpenGL/package/glm/doc/api/a00210.html deleted file mode 100644 index 2b60bb4d..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00210.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_float3.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_float3.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file vector_float3.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00210_source.html b/tests/OpenGL/package/glm/doc/api/a00210_source.html deleted file mode 100644 index 48aa1a9b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00210_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_float3.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_float3.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef vec<3, float, defaultp> vec3;
-
16 
-
18 }//namespace glm
-
vec< 3, float, defaultp > vec3
3 components vector of single-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00211.html b/tests/OpenGL/package/glm/doc/api/a00211.html deleted file mode 100644 index c5ca77ed..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00211.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_float3_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_float3_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00211_source.html b/tests/OpenGL/package/glm/doc/api/a00211_source.html deleted file mode 100644 index a4eb1e75..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00211_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_float3_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_float3_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef vec<3, float, highp> highp_vec3;
-
17 
-
22  typedef vec<3, float, mediump> mediump_vec3;
-
23 
-
28  typedef vec<3, float, lowp> lowp_vec3;
-
29 
-
31 }//namespace glm
-
vec< 3, float, highp > highp_vec3
3 components vector of high single-qualifier floating-point numbers.
-
vec< 3, float, lowp > lowp_vec3
3 components vector of low single-qualifier floating-point numbers.
-
vec< 3, float, mediump > mediump_vec3
3 components vector of medium single-qualifier floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00212.html b/tests/OpenGL/package/glm/doc/api/a00212.html deleted file mode 100644 index 94e655b0..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00212.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_float4.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_float4.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file vector_float4.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00212_source.html b/tests/OpenGL/package/glm/doc/api/a00212_source.html deleted file mode 100644 index cd4a352f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00212_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_float4.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_float4.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef vec<4, float, defaultp> vec4;
-
16 
-
18 }//namespace glm
-
vec< 4, float, defaultp > vec4
4 components vector of single-precision floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00213.html b/tests/OpenGL/package/glm/doc/api/a00213.html deleted file mode 100644 index 9938b0e3..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00213.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_float4_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_float4_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00213_source.html b/tests/OpenGL/package/glm/doc/api/a00213_source.html deleted file mode 100644 index 2495eac3..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00213_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_float4_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_float4_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef vec<4, float, highp> highp_vec4;
-
17 
-
22  typedef vec<4, float, mediump> mediump_vec4;
-
23 
-
28  typedef vec<4, float, lowp> lowp_vec4;
-
29 
-
31 }//namespace glm
-
vec< 4, float, lowp > lowp_vec4
4 components vector of low single-qualifier floating-point numbers.
-
vec< 4, float, mediump > mediump_vec4
4 components vector of medium single-qualifier floating-point numbers.
-
vec< 4, float, highp > highp_vec4
4 components vector of high single-qualifier floating-point numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00214.html b/tests/OpenGL/package/glm/doc/api/a00214.html deleted file mode 100644 index 41749ac6..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00214.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_int1.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_int1.hpp File Reference
-
-
- -

GLM_EXT_vector_int1 -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

GLM_EXT_vector_int1

- -

Definition in file vector_int1.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00214_source.html b/tests/OpenGL/package/glm/doc/api/a00214_source.html deleted file mode 100644 index 483592ee..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00214_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_int1.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_int1.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 #include "../detail/type_vec1.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # pragma message("GLM: GLM_EXT_vector_int1 extension included")
-
20 #endif
-
21 
-
22 namespace glm
-
23 {
-
26 
-
28  typedef vec<1, int, defaultp> ivec1;
-
29 
-
31 }//namespace glm
-
32 
-
vec< 1, int, defaultp > ivec1
1 component vector of signed integer numbers.
Definition: vector_int1.hpp:28
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00215.html b/tests/OpenGL/package/glm/doc/api/a00215.html deleted file mode 100644 index 643f8642..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00215.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_int1_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_int1_precision.hpp File Reference
-
-
- -

GLM_EXT_vector_int1_precision -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

-typedef vec< 1, int, highp > highp_ivec1
 1 component vector of signed integer values.
 
-typedef vec< 1, int, lowp > lowp_ivec1
 1 component vector of signed integer values.
 
-typedef vec< 1, int, mediump > mediump_ivec1
 1 component vector of signed integer values.
 
-

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00215_source.html b/tests/OpenGL/package/glm/doc/api/a00215_source.html deleted file mode 100644 index 48ac834c..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00215_source.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_int1_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_int1_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
11 #pragma once
-
12 
-
13 #include "../detail/type_vec1.hpp"
-
14 
-
15 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
16 # pragma message("GLM: GLM_EXT_vector_int1_precision extension included")
-
17 #endif
-
18 
-
19 namespace glm
-
20 {
-
23 
-
25  typedef vec<1, int, highp> highp_ivec1;
-
26 
-
28  typedef vec<1, int, mediump> mediump_ivec1;
-
29 
-
31  typedef vec<1, int, lowp> lowp_ivec1;
-
32 
-
34 }//namespace glm
-
vec< 1, int, mediump > mediump_ivec1
1 component vector of signed integer values.
-
vec< 1, int, highp > highp_ivec1
1 component vector of signed integer values.
-
vec< 1, int, lowp > lowp_ivec1
1 component vector of signed integer values.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00216.html b/tests/OpenGL/package/glm/doc/api/a00216.html deleted file mode 100644 index 542ab059..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00216.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_int2.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_int2.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file vector_int2.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00216_source.html b/tests/OpenGL/package/glm/doc/api/a00216_source.html deleted file mode 100644 index 4d507bcb..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00216_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_int2.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_int2.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef vec<2, int, defaultp> ivec2;
-
16 
-
18 }//namespace glm
-
vec< 2, int, defaultp > ivec2
2 components vector of signed integer numbers.
Definition: vector_int2.hpp:15
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00217.html b/tests/OpenGL/package/glm/doc/api/a00217.html deleted file mode 100644 index 4f939134..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00217.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_int2_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_int2_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

typedef vec< 2, int, highp > highp_ivec2
 2 components vector of high qualifier signed integer numbers. More...
 
typedef vec< 2, int, lowp > lowp_ivec2
 2 components vector of low qualifier signed integer numbers. More...
 
typedef vec< 2, int, mediump > mediump_ivec2
 2 components vector of medium qualifier signed integer numbers. More...
 
-

Detailed Description

-

Core features

- -

Definition in file vector_int2_precision.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00217_source.html b/tests/OpenGL/package/glm/doc/api/a00217_source.html deleted file mode 100644 index d84a2fc2..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00217_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_int2_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_int2_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef vec<2, int, highp> highp_ivec2;
-
17 
-
22  typedef vec<2, int, mediump> mediump_ivec2;
-
23 
-
28  typedef vec<2, int, lowp> lowp_ivec2;
-
29 
-
31 }//namespace glm
-
vec< 2, int, highp > highp_ivec2
2 components vector of high qualifier signed integer numbers.
-
vec< 2, int, mediump > mediump_ivec2
2 components vector of medium qualifier signed integer numbers.
-
vec< 2, int, lowp > lowp_ivec2
2 components vector of low qualifier signed integer numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00218.html b/tests/OpenGL/package/glm/doc/api/a00218.html deleted file mode 100644 index fd0917bd..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00218.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_int3.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_int3.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file vector_int3.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00218_source.html b/tests/OpenGL/package/glm/doc/api/a00218_source.html deleted file mode 100644 index 89898ad7..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00218_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_int3.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_int3.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef vec<3, int, defaultp> ivec3;
-
16 
-
18 }//namespace glm
-
vec< 3, int, defaultp > ivec3
3 components vector of signed integer numbers.
Definition: vector_int3.hpp:15
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00219.html b/tests/OpenGL/package/glm/doc/api/a00219.html deleted file mode 100644 index c30ee431..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00219.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_int3_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_int3_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

typedef vec< 3, int, highp > highp_ivec3
 3 components vector of high qualifier signed integer numbers. More...
 
typedef vec< 3, int, lowp > lowp_ivec3
 3 components vector of low qualifier signed integer numbers. More...
 
typedef vec< 3, int, mediump > mediump_ivec3
 3 components vector of medium qualifier signed integer numbers. More...
 
-

Detailed Description

-

Core features

- -

Definition in file vector_int3_precision.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00219_source.html b/tests/OpenGL/package/glm/doc/api/a00219_source.html deleted file mode 100644 index d6692bea..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00219_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_int3_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_int3_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef vec<3, int, highp> highp_ivec3;
-
17 
-
22  typedef vec<3, int, mediump> mediump_ivec3;
-
23 
-
28  typedef vec<3, int, lowp> lowp_ivec3;
-
29 
-
31 }//namespace glm
-
vec< 3, int, lowp > lowp_ivec3
3 components vector of low qualifier signed integer numbers.
-
vec< 3, int, mediump > mediump_ivec3
3 components vector of medium qualifier signed integer numbers.
-
vec< 3, int, highp > highp_ivec3
3 components vector of high qualifier signed integer numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00220.html b/tests/OpenGL/package/glm/doc/api/a00220.html deleted file mode 100644 index 534c9c13..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00220.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_int4.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_int4.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file vector_int4.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00220_source.html b/tests/OpenGL/package/glm/doc/api/a00220_source.html deleted file mode 100644 index 1a04d1b0..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00220_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_int4.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_int4.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef vec<4, int, defaultp> ivec4;
-
16 
-
18 }//namespace glm
-
vec< 4, int, defaultp > ivec4
4 components vector of signed integer numbers.
Definition: vector_int4.hpp:15
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00221.html b/tests/OpenGL/package/glm/doc/api/a00221.html deleted file mode 100644 index 8b3a48c5..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00221.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_int4_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_int4_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

typedef vec< 4, int, highp > highp_ivec4
 4 components vector of high qualifier signed integer numbers. More...
 
typedef vec< 4, int, lowp > lowp_ivec4
 4 components vector of low qualifier signed integer numbers. More...
 
typedef vec< 4, int, mediump > mediump_ivec4
 4 components vector of medium qualifier signed integer numbers. More...
 
-

Detailed Description

-

Core features

- -

Definition in file vector_int4_precision.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00221_source.html b/tests/OpenGL/package/glm/doc/api/a00221_source.html deleted file mode 100644 index db681038..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00221_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_int4_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_int4_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef vec<4, int, highp> highp_ivec4;
-
17 
-
22  typedef vec<4, int, mediump> mediump_ivec4;
-
23 
-
28  typedef vec<4, int, lowp> lowp_ivec4;
-
29 
-
31 }//namespace glm
-
vec< 4, int, lowp > lowp_ivec4
4 components vector of low qualifier signed integer numbers.
-
vec< 4, int, highp > highp_ivec4
4 components vector of high qualifier signed integer numbers.
-
vec< 4, int, mediump > mediump_ivec4
4 components vector of medium qualifier signed integer numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00222.html b/tests/OpenGL/package/glm/doc/api/a00222.html deleted file mode 100644 index a9db4229..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00222.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_integer.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_integer.hpp File Reference
-
-
- -

GLM_EXT_vector_integer -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_EXT_vector_integer

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

Definition in file vector_integer.hpp.

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

GLM_GTX_vector_query -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_GTX_vector_query

-
See also
Core features (dependence)
- -

Definition in file vector_query.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00223_source.html b/tests/OpenGL/package/glm/doc/api/a00223_source.html deleted file mode 100644 index 6f7a03f8..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00223_source.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_query.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_query.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../glm.hpp"
-
17 #include <cfloat>
-
18 #include <limits>
-
19 
-
20 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
21 # ifndef GLM_ENABLE_EXPERIMENTAL
-
22 # pragma message("GLM: GLM_GTX_vector_query is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
23 # else
-
24 # pragma message("GLM: GLM_GTX_vector_query extension included")
-
25 # endif
-
26 #endif
-
27 
-
28 namespace glm
-
29 {
-
32 
-
35  template<length_t L, typename T, qualifier Q>
-
36  GLM_FUNC_DECL bool areCollinear(vec<L, T, Q> const& v0, vec<L, T, Q> const& v1, T const& epsilon);
-
37 
-
40  template<length_t L, typename T, qualifier Q>
-
41  GLM_FUNC_DECL bool areOrthogonal(vec<L, T, Q> const& v0, vec<L, T, Q> const& v1, T const& epsilon);
-
42 
-
45  template<length_t L, typename T, qualifier Q>
-
46  GLM_FUNC_DECL bool isNormalized(vec<L, T, Q> const& v, T const& epsilon);
-
47 
-
50  template<length_t L, typename T, qualifier Q>
-
51  GLM_FUNC_DECL bool isNull(vec<L, T, Q> const& v, T const& epsilon);
-
52 
-
55  template<length_t L, typename T, qualifier Q>
-
56  GLM_FUNC_DECL vec<L, bool, Q> isCompNull(vec<L, T, Q> const& v, T const& epsilon);
-
57 
-
60  template<length_t L, typename T, qualifier Q>
-
61  GLM_FUNC_DECL bool areOrthonormal(vec<L, T, Q> const& v0, vec<L, T, Q> const& v1, T const& epsilon);
-
62 
-
64 }// namespace glm
-
65 
-
66 #include "vector_query.inl"
-
GLM_FUNC_DECL bool isNull(vec< L, T, Q > const &v, T const &epsilon)
Check whether a vector is null.
-
GLM_FUNC_DECL bool areCollinear(vec< L, T, Q > const &v0, vec< L, T, Q > const &v1, T const &epsilon)
Check whether two vectors are collinears.
-
GLM_FUNC_DECL bool isNormalized(vec< L, T, Q > const &v, T const &epsilon)
Check whether a vector is normalized.
-
GLM_FUNC_DECL bool areOrthonormal(vec< L, T, Q > const &v0, vec< L, T, Q > const &v1, T const &epsilon)
Check whether two vectors are orthonormal.
-
GLM_FUNC_DECL vec< L, bool, Q > isCompNull(vec< L, T, Q > const &v, T const &epsilon)
Check whether a each component of a vector is null.
-
GLM_FUNC_DECL bool areOrthogonal(vec< L, T, Q > const &v0, vec< L, T, Q > const &v1, T const &epsilon)
Check whether two vectors are orthogonals.
-
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon()
Return the epsilon constant for floating point types.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00224.html b/tests/OpenGL/package/glm/doc/api/a00224.html deleted file mode 100644 index 9396a928..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00224.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_relational.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
ext/vector_relational.hpp File Reference
-
-
- -

GLM_EXT_vector_relational -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_EXT_vector_relational

-
See also
Core features (dependence)
-
-GLM_EXT_scalar_integer (dependence)
- -

Definition in file ext/vector_relational.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00224_source.html b/tests/OpenGL/package/glm/doc/api/a00224_source.html deleted file mode 100644 index d99e1d1d..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00224_source.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_relational.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
ext/vector_relational.hpp
-
-
-Go to the documentation of this file.
1 
-
18 #pragma once
-
19 
-
20 // Dependencies
-
21 #include "../detail/qualifier.hpp"
-
22 
-
23 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
24 # pragma message("GLM: GLM_EXT_vector_relational extension included")
-
25 #endif
-
26 
-
27 namespace glm
-
28 {
-
31 
-
38  template<length_t L, typename T, qualifier Q>
-
39  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y, T epsilon);
-
40 
-
47  template<length_t L, typename T, qualifier Q>
-
48  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& epsilon);
-
49 
-
56  template<length_t L, typename T, qualifier Q>
-
57  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, T epsilon);
-
58 
-
65  template<length_t L, typename T, qualifier Q>
-
66  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& epsilon);
-
67 
-
74  template<length_t L, typename T, qualifier Q>
-
75  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y, int ULPs);
-
76 
-
83  template<length_t L, typename T, qualifier Q>
-
84  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, int, Q> const& ULPs);
-
85 
-
92  template<length_t L, typename T, qualifier Q>
-
93  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, int ULPs);
-
94 
-
101  template<length_t L, typename T, qualifier Q>
-
102  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, int, Q> const& ULPs);
-
103 
-
105 }//namespace glm
-
106 
-
107 #include "vector_relational.inl"
-
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)
Returns the component-wise comparison between two vectors in term of ULPs.
-
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)
Returns the component-wise comparison between two vectors in term of ULPs.
-
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon()
Return the epsilon constant for floating point types.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00225.html b/tests/OpenGL/package/glm/doc/api/a00225.html deleted file mode 100644 index d4eee753..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00225.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_relational.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_relational.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

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

GLM_EXT_vector_uint1 -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

GLM_EXT_vector_uint1

- -

Definition in file vector_uint1.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00226_source.html b/tests/OpenGL/package/glm/doc/api/a00226_source.html deleted file mode 100644 index ddbf4176..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00226_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_uint1.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_uint1.hpp
-
-
-Go to the documentation of this file.
1 
-
14 #pragma once
-
15 
-
16 #include "../detail/type_vec1.hpp"
-
17 
-
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
19 # pragma message("GLM: GLM_EXT_vector_uint1 extension included")
-
20 #endif
-
21 
-
22 namespace glm
-
23 {
-
26 
-
28  typedef vec<1, unsigned int, defaultp> uvec1;
-
29 
-
31 }//namespace glm
-
32 
-
vec< 1, unsigned int, defaultp > uvec1
1 component vector of unsigned integer numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00227.html b/tests/OpenGL/package/glm/doc/api/a00227.html deleted file mode 100644 index ef7f56de..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00227.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_uint1_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_uint1_precision.hpp File Reference
-
-
- -

GLM_EXT_vector_uint1_precision -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

typedef vec< 1, unsigned int, highp > highp_uvec1
 1 component vector of unsigned integer values. More...
 
typedef vec< 1, unsigned int, lowp > lowp_uvec1
 1 component vector of unsigned integer values. More...
 
typedef vec< 1, unsigned int, mediump > mediump_uvec1
 1 component vector of unsigned integer values. More...
 
-

Detailed Description

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00227_source.html b/tests/OpenGL/package/glm/doc/api/a00227_source.html deleted file mode 100644 index d7313523..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00227_source.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_uint1_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_uint1_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
11 #pragma once
-
12 
-
13 #include "../detail/type_vec1.hpp"
-
14 
-
15 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
16 # pragma message("GLM: GLM_EXT_vector_uint1_precision extension included")
-
17 #endif
-
18 
-
19 namespace glm
-
20 {
-
23 
-
27  typedef vec<1, unsigned int, highp> highp_uvec1;
-
28 
-
32  typedef vec<1, unsigned int, mediump> mediump_uvec1;
-
33 
-
37  typedef vec<1, unsigned int, lowp> lowp_uvec1;
-
38 
-
40 }//namespace glm
-
vec< 1, unsigned int, mediump > mediump_uvec1
1 component vector of unsigned integer values.
-
vec< 1, unsigned int, highp > highp_uvec1
1 component vector of unsigned integer values.
-
vec< 1, unsigned int, lowp > lowp_uvec1
1 component vector of unsigned integer values.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00228.html b/tests/OpenGL/package/glm/doc/api/a00228.html deleted file mode 100644 index ee04a7a4..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00228.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_uint2.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_uint2.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file vector_uint2.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00228_source.html b/tests/OpenGL/package/glm/doc/api/a00228_source.html deleted file mode 100644 index 88a97e30..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00228_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_uint2.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_uint2.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef vec<2, unsigned int, defaultp> uvec2;
-
16 
-
18 }//namespace glm
-
vec< 2, unsigned int, defaultp > uvec2
2 components vector of unsigned integer numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00229.html b/tests/OpenGL/package/glm/doc/api/a00229.html deleted file mode 100644 index 6171f309..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00229.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_uint2_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_uint2_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

typedef vec< 2, unsigned int, highp > highp_uvec2
 2 components vector of high qualifier unsigned integer numbers. More...
 
typedef vec< 2, unsigned int, lowp > lowp_uvec2
 2 components vector of low qualifier unsigned integer numbers. More...
 
typedef vec< 2, unsigned int, mediump > mediump_uvec2
 2 components vector of medium qualifier unsigned integer numbers. More...
 
-

Detailed Description

-

Core features

- -

Definition in file vector_uint2_precision.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00229_source.html b/tests/OpenGL/package/glm/doc/api/a00229_source.html deleted file mode 100644 index d35275a9..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00229_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_uint2_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_uint2_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec2.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef vec<2, unsigned int, highp> highp_uvec2;
-
17 
-
22  typedef vec<2, unsigned int, mediump> mediump_uvec2;
-
23 
-
28  typedef vec<2, unsigned int, lowp> lowp_uvec2;
-
29 
-
31 }//namespace glm
-
vec< 2, unsigned int, lowp > lowp_uvec2
2 components vector of low qualifier unsigned integer numbers.
-
vec< 2, unsigned int, highp > highp_uvec2
2 components vector of high qualifier unsigned integer numbers.
-
vec< 2, unsigned int, mediump > mediump_uvec2
2 components vector of medium qualifier unsigned integer numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00230.html b/tests/OpenGL/package/glm/doc/api/a00230.html deleted file mode 100644 index 49dc86e5..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00230.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_uint3.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_uint3.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file vector_uint3.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00230_source.html b/tests/OpenGL/package/glm/doc/api/a00230_source.html deleted file mode 100644 index b5114363..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00230_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_uint3.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_uint3.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef vec<3, unsigned int, defaultp> uvec3;
-
16 
-
18 }//namespace glm
-
vec< 3, unsigned int, defaultp > uvec3
3 components vector of unsigned integer numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00231.html b/tests/OpenGL/package/glm/doc/api/a00231.html deleted file mode 100644 index 1b0174b0..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00231.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_uint3_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_uint3_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

typedef vec< 3, unsigned int, highp > highp_uvec3
 3 components vector of high qualifier unsigned integer numbers. More...
 
typedef vec< 3, unsigned int, lowp > lowp_uvec3
 3 components vector of low qualifier unsigned integer numbers. More...
 
typedef vec< 3, unsigned int, mediump > mediump_uvec3
 3 components vector of medium qualifier unsigned integer numbers. More...
 
-

Detailed Description

-

Core features

- -

Definition in file vector_uint3_precision.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00231_source.html b/tests/OpenGL/package/glm/doc/api/a00231_source.html deleted file mode 100644 index 7e61a1f9..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00231_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_uint3_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_uint3_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec3.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef vec<3, unsigned int, highp> highp_uvec3;
-
17 
-
22  typedef vec<3, unsigned int, mediump> mediump_uvec3;
-
23 
-
28  typedef vec<3, unsigned int, lowp> lowp_uvec3;
-
29 
-
31 }//namespace glm
-
vec< 3, unsigned int, mediump > mediump_uvec3
3 components vector of medium qualifier unsigned integer numbers.
-
vec< 3, unsigned int, highp > highp_uvec3
3 components vector of high qualifier unsigned integer numbers.
-
vec< 3, unsigned int, lowp > lowp_uvec3
3 components vector of low qualifier unsigned integer numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00232.html b/tests/OpenGL/package/glm/doc/api/a00232.html deleted file mode 100644 index db8effcb..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00232.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_uint4.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_uint4.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - -

-Typedefs

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

Detailed Description

-

Core features

- -

Definition in file vector_uint4.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00232_source.html b/tests/OpenGL/package/glm/doc/api/a00232_source.html deleted file mode 100644 index e7a754f7..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00232_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_uint4.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_uint4.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
15  typedef vec<4, unsigned int, defaultp> uvec4;
-
16 
-
18 }//namespace glm
-
vec< 4, unsigned int, defaultp > uvec4
4 components vector of unsigned integer numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00233.html b/tests/OpenGL/package/glm/doc/api/a00233.html deleted file mode 100644 index 23e89c47..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00233.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_uint4_precision.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_uint4_precision.hpp File Reference
-
-
- -

Core features -More...

- -

Go to the source code of this file.

- - - - - - - - - - - -

-Typedefs

typedef vec< 4, unsigned int, highp > highp_uvec4
 4 components vector of high qualifier unsigned integer numbers. More...
 
typedef vec< 4, unsigned int, lowp > lowp_uvec4
 4 components vector of low qualifier unsigned integer numbers. More...
 
typedef vec< 4, unsigned int, mediump > mediump_uvec4
 4 components vector of medium qualifier unsigned integer numbers. More...
 
-

Detailed Description

-

Core features

- -

Definition in file vector_uint4_precision.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00233_source.html b/tests/OpenGL/package/glm/doc/api/a00233_source.html deleted file mode 100644 index 553b9b78..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00233_source.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_uint4_precision.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_uint4_precision.hpp
-
-
-Go to the documentation of this file.
1 
-
4 #pragma once
-
5 #include "../detail/type_vec4.hpp"
-
6 
-
7 namespace glm
-
8 {
-
11 
-
16  typedef vec<4, unsigned int, highp> highp_uvec4;
-
17 
-
22  typedef vec<4, unsigned int, mediump> mediump_uvec4;
-
23 
-
28  typedef vec<4, unsigned int, lowp> lowp_uvec4;
-
29 
-
31 }//namespace glm
-
vec< 4, unsigned int, mediump > mediump_uvec4
4 components vector of medium qualifier unsigned integer numbers.
-
vec< 4, unsigned int, highp > highp_uvec4
4 components vector of high qualifier unsigned integer numbers.
-
vec< 4, unsigned int, lowp > lowp_uvec4
4 components vector of low qualifier unsigned integer numbers.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00234.html b/tests/OpenGL/package/glm/doc/api/a00234.html deleted file mode 100644 index 358df214..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00234.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_ulp.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
vector_ulp.hpp File Reference
-
-
- -

GLM_EXT_vector_ulp -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

GLM_EXT_vector_ulp

- -

Definition in file vector_ulp.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00234_source.html b/tests/OpenGL/package/glm/doc/api/a00234_source.html deleted file mode 100644 index 38f60eee..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00234_source.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - -0.9.9 API documentation: vector_ulp.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
vector_ulp.hpp
-
-
-Go to the documentation of this file.
1 
-
17 #pragma once
-
18 
-
19 // Dependencies
-
20 #include "../ext/scalar_ulp.hpp"
-
21 
-
22 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
23 # pragma message("GLM: GLM_EXT_vector_ulp extension included")
-
24 #endif
-
25 
-
26 namespace glm
-
27 {
-
35  template<length_t L, typename T, qualifier Q>
-
36  GLM_FUNC_DECL vec<L, T, Q> nextFloat(vec<L, T, Q> const& x);
-
37 
-
45  template<length_t L, typename T, qualifier Q>
-
46  GLM_FUNC_DECL vec<L, T, Q> nextFloat(vec<L, T, Q> const& x, int ULPs);
-
47 
-
55  template<length_t L, typename T, qualifier Q>
-
56  GLM_FUNC_DECL vec<L, T, Q> nextFloat(vec<L, T, Q> const& x, vec<L, int, Q> const& ULPs);
-
57 
-
65  template<length_t L, typename T, qualifier Q>
-
66  GLM_FUNC_DECL vec<L, T, Q> prevFloat(vec<L, T, Q> const& x);
-
67 
-
75  template<length_t L, typename T, qualifier Q>
-
76  GLM_FUNC_DECL vec<L, T, Q> prevFloat(vec<L, T, Q> const& x, int ULPs);
-
77 
-
85  template<length_t L, typename T, qualifier Q>
-
86  GLM_FUNC_DECL vec<L, T, Q> prevFloat(vec<L, T, Q> const& x, vec<L, int, Q> const& ULPs);
-
87 
-
94  template<length_t L, typename T, qualifier Q>
-
95  GLM_FUNC_DECL vec<L, int, Q> floatDistance(vec<L, float, Q> const& x, vec<L, float, Q> const& y);
-
96 
-
103  template<length_t L, typename T, qualifier Q>
-
104  GLM_FUNC_DECL vec<L, int64, Q> floatDistance(vec<L, double, Q> const& x, vec<L, double, Q> const& y);
-
105 
-
107 }//namespace glm
-
108 
-
109 #include "vector_ulp.inl"
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00235.html b/tests/OpenGL/package/glm/doc/api/a00235.html deleted file mode 100644 index f63dbaa1..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00235.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - -0.9.9 API documentation: wrap.hpp File Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
- -
-
wrap.hpp File Reference
-
-
- -

GLM_GTX_wrap -More...

- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - -

-Functions

template<typename genType >
GLM_FUNC_DECL genType clamp (genType const &Texcoord)
 Simulate GL_CLAMP OpenGL wrap mode. More...
 
template<typename genType >
GLM_FUNC_DECL genType mirrorClamp (genType const &Texcoord)
 Simulate GL_MIRRORED_REPEAT OpenGL wrap mode. More...
 
template<typename genType >
GLM_FUNC_DECL genType mirrorRepeat (genType const &Texcoord)
 Simulate GL_MIRROR_REPEAT OpenGL wrap mode. More...
 
template<typename genType >
GLM_FUNC_DECL genType repeat (genType const &Texcoord)
 Simulate GL_REPEAT OpenGL wrap mode. More...
 
-

Detailed Description

-

GLM_GTX_wrap

-
See also
Core features (dependence)
- -

Definition in file wrap.hpp.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00235_source.html b/tests/OpenGL/package/glm/doc/api/a00235_source.html deleted file mode 100644 index 0a669d7e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00235_source.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - -0.9.9 API documentation: wrap.hpp Source File - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - - -
-
- - -
- -
- - -
-
-
-
wrap.hpp
-
-
-Go to the documentation of this file.
1 
-
13 #pragma once
-
14 
-
15 // Dependency:
-
16 #include "../glm.hpp"
-
17 #include "../gtc/vec1.hpp"
-
18 
-
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
-
20 # ifndef GLM_ENABLE_EXPERIMENTAL
-
21 # pragma message("GLM: GLM_GTX_wrap is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
-
22 # else
-
23 # pragma message("GLM: GLM_GTX_wrap extension included")
-
24 # endif
-
25 #endif
-
26 
-
27 namespace glm
-
28 {
-
31 
-
34  template<typename genType>
-
35  GLM_FUNC_DECL genType clamp(genType const& Texcoord);
-
36 
-
39  template<typename genType>
-
40  GLM_FUNC_DECL genType repeat(genType const& Texcoord);
-
41 
-
44  template<typename genType>
-
45  GLM_FUNC_DECL genType mirrorClamp(genType const& Texcoord);
-
46 
-
49  template<typename genType>
-
50  GLM_FUNC_DECL genType mirrorRepeat(genType const& Texcoord);
-
51 
-
53 }// namespace glm
-
54 
-
55 #include "wrap.inl"
-
GLM_FUNC_DECL genType mirrorRepeat(genType const &Texcoord)
Simulate GL_MIRROR_REPEAT OpenGL wrap mode.
-
GLM_FUNC_DECL genType repeat(genType const &Texcoord)
Simulate GL_REPEAT OpenGL wrap mode.
-
GLM_FUNC_DECL genType mirrorClamp(genType const &Texcoord)
Simulate GL_MIRRORED_REPEAT OpenGL wrap mode.
-
GLM_FUNC_DECL genType clamp(genType const &Texcoord)
Simulate GL_CLAMP OpenGL wrap mode.
-
Definition: common.hpp:20
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00241.html b/tests/OpenGL/package/glm/doc/api/a00241.html deleted file mode 100644 index c9868383..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00241.html +++ /dev/null @@ -1,1595 +0,0 @@ - - - - - - -0.9.9 API documentation: Common functions - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
Common functions
-
-
- -

Provides GLSL common functions. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Provides GLSL common functions.

-

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

-

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

-

Function Documentation

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

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

-
Template Parameters
- - -
genTypefloating-point or signed integer; scalar or vector types.
-
-
-
See also
GLSL abs man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::abs (vec< L, T, Q > const & x)
-
- -

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

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or signed integer scalar types
QValue from qualifier enum
-
-
-
See also
GLSL abs man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::ceil (vec< L, T, Q > const & x)
-
- -

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

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL ceil man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::clamp (genType x,
genType minVal,
genType maxVal 
)
-
- -

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

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

Referenced by glm::saturate().

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

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

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
-
See also
GLSL clamp man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::clamp (vec< L, T, Q > const & x,
vec< L, T, Q > const & minVal,
vec< L, T, Q > const & maxVal 
)
-
- -

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

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
-
See also
GLSL clamp man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL int glm::floatBitsToInt (float const & v)
-
- -

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

-

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

-
See also
GLSL floatBitsToInt man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, int, Q> glm::floatBitsToInt (vec< L, float, Q > const & v)
-
- -

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

-

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

-
Template Parameters
- - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
QValue from qualifier enum
-
-
-
See also
GLSL floatBitsToInt man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint glm::floatBitsToUint (float const & v)
-
- -

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

-

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

-
See also
GLSL floatBitsToUint man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, uint, Q> glm::floatBitsToUint (vec< L, float, Q > const & v)
-
- -

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

-

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

-
Template Parameters
- - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
QValue from qualifier enum
-
-
-
See also
GLSL floatBitsToUint man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::floor (vec< L, T, Q > const & x)
-
- -

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

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL floor man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::fma (genType const & a,
genType const & b,
genType const & c 
)
-
- -

Computes and returns a * b + c.

-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLSL fma man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::fract (genType x)
-
- -

Return x - floor(x).

-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLSL fract man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fract (vec< L, T, Q > const & x)
-
- -

Return x - floor(x).

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL fract man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::frexp (genType x,
int & exp 
)
-
- -

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

-

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

-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLSL frexp man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL float glm::intBitsToFloat (int const & v)
-
- -

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

-

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

-
See also
GLSL intBitsToFloat man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, float, Q> glm::intBitsToFloat (vec< L, int, Q > const & v)
-
- -

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

-

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

-
Template Parameters
- - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
QValue from qualifier enum
-
-
-
See also
GLSL intBitsToFloat man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, bool, Q> glm::isinf (vec< L, T, Q > const & x)
-
- -

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

-

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

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL isinf man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, bool, Q> glm::isnan (vec< L, T, Q > const & x)
-
- -

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

-

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

-

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

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL isnan man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::ldexp (genType const & x,
int const & exp 
)
-
- -

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

-

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

-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLSL ldexp man page;
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::max (genType x,
genType y 
)
-
- -

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

-
Template Parameters
- - -
genTypeFloating-point or integer; scalar or vector types.
-
-
-
See also
GLSL max man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::max (vec< L, T, Q > const & x,
y 
)
-
- -

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

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
-
See also
GLSL max man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::max (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
-
- -

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

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
-
See also
GLSL max man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::min (genType x,
genType y 
)
-
- -

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

-
Template Parameters
- - -
genTypeFloating-point or integer; scalar or vector types.
-
-
-
See also
GLSL min man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::min (vec< L, T, Q > const & x,
y 
)
-
- -

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

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
-
See also
GLSL min man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::min (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
-
- -

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

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
-
See also
GLSL min man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genTypeT glm::mix (genTypeT x,
genTypeT y,
genTypeU a 
)
-
- -

If genTypeU is a floating scalar or vector: Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a.

-

The value for a is not restricted to the range [0, 1].

-

If genTypeU is a boolean scalar or vector: Selects which vector each returned component comes from. For a component of 'a' that is false, the corresponding component of 'x' is returned. For a component of 'a' that is true, the corresponding component of 'y' is returned. Components of 'x' and 'y' that are not selected are allowed to be invalid floating point values and will have no effect on the results. Thus, this provides different functionality than genType mix(genType x, genType y, genType(a)) where a is a Boolean vector.

-
See also
GLSL mix man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
-
Parameters
- - - - -
[in]xValue to interpolate.
[in]yValue to interpolate.
[in]aInterpolant.
-
-
-
Template Parameters
- - - -
genTypeTFloating point scalar or vector.
genTypeUFloating point or boolean scalar or vector. It can't be a vector if it is the length of genTypeT.
-
-
-
#include <glm/glm.hpp>
-
...
-
float a;
-
bool b;
- - - - -
...
-
glm::vec4 r = glm::mix(g, h, a); // Interpolate with a floating-point scalar two vectors.
-
glm::vec4 s = glm::mix(g, h, b); // Returns g or h;
-
glm::dvec3 t = glm::mix(e, f, a); // Types of the third parameter is not required to match with the first and the second.
-
glm::vec4 u = glm::mix(g, h, r); // Interpolations can be perform per component with a vector for the last parameter.
-
-

Referenced by glm::lerp().

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

Modulus.

-

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

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

Returns the fractional part of x and sets i to the integer part (as a whole number floating point value).

-

Both the return value and the output parameter will have the same sign as x.

-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLSL modf man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::round (vec< L, T, Q > const & x)
-
- -

Returns a value equal to the nearest integer to x.

-

The fraction 0.5 will round in a direction chosen by the implementation, presumably the direction that is fastest. This includes the possibility that round(x) returns the same value as roundEven(x) for all values of x.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL round man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::roundEven (vec< L, T, Q > const & x)
-
- -

Returns a value equal to the nearest integer to x.

-

A fractional part of 0.5 will round toward the nearest even integer. (Both 3.5 and 4.5 for x will return 4.0.)

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL roundEven man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
-
-New round to even technique
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::sign (vec< L, T, Q > const & x)
-
- -

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

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL sign man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::smoothstep (genType edge0,
genType edge1,
genType x 
)
-
- -

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

-

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

-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLSL smoothstep man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::step (genType edge,
genType x 
)
-
- -

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

-
See also
GLSL step man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::step (edge,
vec< L, T, Q > const & x 
)
-
- -

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

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL step man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::step (vec< L, T, Q > const & edge,
vec< L, T, Q > const & x 
)
-
- -

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

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL step man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::trunc (vec< L, T, Q > const & x)
-
- -

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

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL trunc man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL float glm::uintBitsToFloat (uint const & v)
-
- -

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

-

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

-
See also
GLSL uintBitsToFloat man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, float, Q> glm::uintBitsToFloat (vec< L, uint, Q > const & v)
-
- -

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

-

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

-
Template Parameters
- - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
QValue from qualifier enum
-
-
-
See also
GLSL uintBitsToFloat man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00242.html b/tests/OpenGL/package/glm/doc/api/a00242.html deleted file mode 100644 index 3cead978..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00242.html +++ /dev/null @@ -1,375 +0,0 @@ - - - - - - -0.9.9 API documentation: Exponential functions - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
Exponential functions
-
-
- -

Provides GLSL exponential functions. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Provides GLSL exponential functions.

-

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

-

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

-

Function Documentation

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

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

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

Returns 2 raised to the v power.

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

Returns the reciprocal of the positive square root of v.

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

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

-

Results are undefined if v <= 0.

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

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

-
Parameters
- - -
vlog2 function is defined for input values of v defined in the range (0, inf+) in the limit of the type qualifier.
-
-
-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
-
-
-
See also
GLSL log2 man page
-
-GLSL 4.20.8 specification, section 8.2 Exponential Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::pow (vec< L, T, Q > const & base,
vec< L, T, Q > const & exponent 
)
-
- -

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

-
Parameters
- - - -
baseFloating point value. pow function is defined for input values of 'base' defined in the range (inf-, inf+) in the limit of the type qualifier.
exponentFloating point value representing the 'exponent'.
-
-
-
See also
GLSL pow man page
-
-GLSL 4.20.8 specification, section 8.2 Exponential Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::sqrt (vec< L, T, Q > const & v)
-
- -

Returns the positive square root of v.

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

Defines functions that generate clip space transformation matrices. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Defines functions that generate clip space transformation matrices.

-

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

-

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

-
See also
GLM_EXT_matrix_transform
-
-GLM_EXT_matrix_projection
-

Function Documentation

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

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

-

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

-
Template Parameters
- - -
TA floating-point scalar type
-
-
-
See also
glFrustum man page
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::frustumLH (left,
right,
bottom,
top,
near,
far 
)
-
- -

Creates a left handed frustum matrix.

-

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

-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::frustumLH_NO (left,
right,
bottom,
top,
near,
far 
)
-
- -

Creates a left handed frustum matrix.

-

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

-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::frustumLH_ZO (left,
right,
bottom,
top,
near,
far 
)
-
- -

Creates a left handed frustum matrix.

-

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

-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::frustumNO (left,
right,
bottom,
top,
near,
far 
)
-
- -

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

-

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

-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::frustumRH (left,
right,
bottom,
top,
near,
far 
)
-
- -

Creates a right handed frustum matrix.

-

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

-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::frustumRH_NO (left,
right,
bottom,
top,
near,
far 
)
-
- -

Creates a right handed frustum matrix.

-

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

-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::frustumRH_ZO (left,
right,
bottom,
top,
near,
far 
)
-
- -

Creates a right handed frustum matrix.

-

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

-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::frustumZO (left,
right,
bottom,
top,
near,
far 
)
-
- -

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

-

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

-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::infinitePerspective (fovy,
aspect,
near 
)
-
- -

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

-
Parameters
- - - - -
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::infinitePerspectiveLH (fovy,
aspect,
near 
)
-
- -

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

-
Parameters
- - - - -
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::infinitePerspectiveRH (fovy,
aspect,
near 
)
-
- -

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

-
Parameters
- - - - -
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::ortho (left,
right,
bottom,
top 
)
-
- -

Creates a matrix for projecting two-dimensional coordinates onto the screen.

-
Template Parameters
- - -
TA floating-point scalar type
-
-
-
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top, T const& zNear, T const& zFar)
-
-gluOrtho2D man page
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::ortho (left,
right,
bottom,
top,
zNear,
zFar 
)
-
- -

Creates a matrix for an orthographic parallel viewing volume, using the default handedness and default near and far clip planes definition.

-

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

-
Template Parameters
- - -
TA floating-point scalar type
-
-
-
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top)
-
-glOrtho man page
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::orthoLH (left,
right,
bottom,
top,
zNear,
zFar 
)
-
- -

Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates.

-

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

-
Template Parameters
- - -
TA floating-point scalar type
-
-
-
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top)
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::orthoLH_NO (left,
right,
bottom,
top,
zNear,
zFar 
)
-
- -

Creates a matrix for an orthographic parallel viewing volume using right-handed coordinates.

-

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

-
Template Parameters
- - -
TA floating-point scalar type
-
-
-
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top)
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::orthoLH_ZO (left,
right,
bottom,
top,
zNear,
zFar 
)
-
- -

Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates.

-

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

-
Template Parameters
- - -
TA floating-point scalar type
-
-
-
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top)
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::orthoNO (left,
right,
bottom,
top,
zNear,
zFar 
)
-
- -

Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise.

-

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

-
Template Parameters
- - -
TA floating-point scalar type
-
-
-
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top)
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::orthoRH (left,
right,
bottom,
top,
zNear,
zFar 
)
-
- -

Creates a matrix for an orthographic parallel viewing volume, using right-handed coordinates.

-

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

-
Template Parameters
- - -
TA floating-point scalar type
-
-
-
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top)
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::orthoRH_NO (left,
right,
bottom,
top,
zNear,
zFar 
)
-
- -

Creates a matrix for an orthographic parallel viewing volume, using right-handed coordinates.

-

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

-
Template Parameters
- - -
TA floating-point scalar type
-
-
-
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top)
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::orthoRH_ZO (left,
right,
bottom,
top,
zNear,
zFar 
)
-
- -

Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates.

-

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

-
Template Parameters
- - -
TA floating-point scalar type
-
-
-
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top)
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::orthoZO (left,
right,
bottom,
top,
zNear,
zFar 
)
-
- -

Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates.

-

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

-
Template Parameters
- - -
TA floating-point scalar type
-
-
-
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top)
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspective (fovy,
aspect,
near,
far 
)
-
- -

Creates a matrix for a symetric perspective-view frustum based on the default handedness and default near and far clip planes definition.

-

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

-
Parameters
- - - - - -
fovySpecifies the field of view angle in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
-
See also
gluPerspective man page
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveFov (fov,
width,
height,
near,
far 
)
-
- -

Builds a perspective projection matrix based on a field of view and the default handedness and default near and far clip planes definition.

-

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

-
Parameters
- - - - - - -
fovExpressed in radians.
widthWidth of the viewport
heightHeight of the viewport
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveFovLH (fov,
width,
height,
near,
far 
)
-
- -

Builds a left handed perspective projection matrix based on a field of view.

-

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

-
Parameters
- - - - - - -
fovExpressed in radians.
widthWidth of the viewport
heightHeight of the viewport
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveFovLH_NO (fov,
width,
height,
near,
far 
)
-
- -

Builds a perspective projection matrix based on a field of view using left-handed coordinates.

-

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

-
Parameters
- - - - - - -
fovExpressed in radians.
widthWidth of the viewport
heightHeight of the viewport
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveFovLH_ZO (fov,
width,
height,
near,
far 
)
-
- -

Builds a perspective projection matrix based on a field of view using left-handed coordinates.

-

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

-
Parameters
- - - - - - -
fovExpressed in radians.
widthWidth of the viewport
heightHeight of the viewport
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveFovNO (fov,
width,
height,
near,
far 
)
-
- -

Builds a perspective projection matrix based on a field of view using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise.

-

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

-
Parameters
- - - - - - -
fovExpressed in radians.
widthWidth of the viewport
heightHeight of the viewport
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveFovRH (fov,
width,
height,
near,
far 
)
-
- -

Builds a right handed perspective projection matrix based on a field of view.

-

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

-
Parameters
- - - - - - -
fovExpressed in radians.
widthWidth of the viewport
heightHeight of the viewport
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveFovRH_NO (fov,
width,
height,
near,
far 
)
-
- -

Builds a perspective projection matrix based on a field of view using right-handed coordinates.

-

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

-
Parameters
- - - - - - -
fovExpressed in radians.
widthWidth of the viewport
heightHeight of the viewport
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveFovRH_ZO (fov,
width,
height,
near,
far 
)
-
- -

Builds a perspective projection matrix based on a field of view using right-handed coordinates.

-

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

-
Parameters
- - - - - - -
fovExpressed in radians.
widthWidth of the viewport
heightHeight of the viewport
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveFovZO (fov,
width,
height,
near,
far 
)
-
- -

Builds a perspective projection matrix based on a field of view using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise.

-

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

-
Parameters
- - - - - - -
fovExpressed in radians.
widthWidth of the viewport
heightHeight of the viewport
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveLH (fovy,
aspect,
near,
far 
)
-
- -

Creates a matrix for a left handed, symetric perspective-view frustum.

-

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

-
Parameters
- - - - - -
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveLH_NO (fovy,
aspect,
near,
far 
)
-
- -

Creates a matrix for a left handed, symetric perspective-view frustum.

-

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

-
Parameters
- - - - - -
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveLH_ZO (fovy,
aspect,
near,
far 
)
-
- -

Creates a matrix for a left handed, symetric perspective-view frustum.

-

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

-
Parameters
- - - - - -
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveNO (fovy,
aspect,
near,
far 
)
-
- -

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

-

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

-
Parameters
- - - - - -
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveRH (fovy,
aspect,
near,
far 
)
-
- -

Creates a matrix for a right handed, symetric perspective-view frustum.

-

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

-
Parameters
- - - - - -
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveRH_NO (fovy,
aspect,
near,
far 
)
-
- -

Creates a matrix for a right handed, symetric perspective-view frustum.

-

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

-
Parameters
- - - - - -
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveRH_ZO (fovy,
aspect,
near,
far 
)
-
- -

Creates a matrix for a right handed, symetric perspective-view frustum.

-

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

-
Parameters
- - - - - -
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveZO (fovy,
aspect,
near,
far 
)
-
- -

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

-

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

-
Parameters
- - - - - -
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::tweakedInfinitePerspective (fovy,
aspect,
near 
)
-
- -

Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics hardware that doesn't support depth clamping.

-
Parameters
- - - - -
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::tweakedInfinitePerspective (fovy,
aspect,
near,
ep 
)
-
- -

Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics hardware that doesn't support depth clamping.

-
Parameters
- - - - - -
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
epEpsilon
-
-
-
Template Parameters
- - -
TA floating-point scalar type
-
-
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00244.html b/tests/OpenGL/package/glm/doc/api/a00244.html deleted file mode 100644 index 968de61b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00244.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_matrix_common - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
-
-
GLM_EXT_matrix_common
-
-
- -

Defines functions for common matrix operations. -More...

-

Detailed Description

-

Defines functions for common matrix operations.

-

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

-
See also
GLM_EXT_matrix_common
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00245.html b/tests/OpenGL/package/glm/doc/api/a00245.html deleted file mode 100644 index 04801c0e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00245.html +++ /dev/null @@ -1,539 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_matrix_projection - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_matrix_projection
-
-
- -

Functions that generate common projection transformation matrices. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Functions that generate common projection transformation matrices.

-

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

-

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

-
See also
GLM_EXT_matrix_transform
-
-GLM_EXT_matrix_clip_space
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::pickMatrix (vec< 2, T, Q > const & center,
vec< 2, T, Q > const & delta,
vec< 4, U, Q > const & viewport 
)
-
- -

Define a picking region.

-
Parameters
- - - - -
centerSpecify the center of a picking region in window coordinates.
deltaSpecify the width and height, respectively, of the picking region in window coordinates.
viewportRendering viewport
-
-
-
Template Parameters
- - - -
TNative type used for the computation. Currently supported: half (not recommended), float or double.
UCurrently supported: Floating-point types and integer types.
-
-
-
See also
gluPickMatrix man page
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::project (vec< 3, T, Q > const & obj,
mat< 4, 4, T, Q > const & model,
mat< 4, 4, T, Q > const & proj,
vec< 4, U, Q > const & viewport 
)
-
- -

Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates using default near and far clip planes definition.

-

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

-
Parameters
- - - - - -
objSpecify the object coordinates.
modelSpecifies the current modelview matrix
projSpecifies the current projection matrix
viewportSpecifies the current viewport
-
-
-
Returns
Return the computed window coordinates.
-
Template Parameters
- - - -
TNative type used for the computation. Currently supported: half (not recommended), float or double.
UCurrently supported: Floating-point types and integer types.
-
-
-
See also
gluProject man page
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::projectNO (vec< 3, T, Q > const & obj,
mat< 4, 4, T, Q > const & model,
mat< 4, 4, T, Q > const & proj,
vec< 4, U, Q > const & viewport 
)
-
- -

Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates.

-

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

-
Parameters
- - - - - -
objSpecify the object coordinates.
modelSpecifies the current modelview matrix
projSpecifies the current projection matrix
viewportSpecifies the current viewport
-
-
-
Returns
Return the computed window coordinates.
-
Template Parameters
- - - -
TNative type used for the computation. Currently supported: half (not recommended), float or double.
UCurrently supported: Floating-point types and integer types.
-
-
-
See also
gluProject man page
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::projectZO (vec< 3, T, Q > const & obj,
mat< 4, 4, T, Q > const & model,
mat< 4, 4, T, Q > const & proj,
vec< 4, U, Q > const & viewport 
)
-
- -

Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates.

-

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

-
Parameters
- - - - - -
objSpecify the object coordinates.
modelSpecifies the current modelview matrix
projSpecifies the current projection matrix
viewportSpecifies the current viewport
-
-
-
Returns
Return the computed window coordinates.
-
Template Parameters
- - - -
TNative type used for the computation. Currently supported: half (not recommended), float or double.
UCurrently supported: Floating-point types and integer types.
-
-
-
See also
gluProject man page
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::unProject (vec< 3, T, Q > const & win,
mat< 4, 4, T, Q > const & model,
mat< 4, 4, T, Q > const & proj,
vec< 4, U, Q > const & viewport 
)
-
- -

Map the specified window coordinates (win.x, win.y, win.z) into object coordinates using default near and far clip planes definition.

-

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

-
Parameters
- - - - - -
winSpecify the window coordinates to be mapped.
modelSpecifies the modelview matrix
projSpecifies the projection matrix
viewportSpecifies the viewport
-
-
-
Returns
Returns the computed object coordinates.
-
Template Parameters
- - - -
TNative type used for the computation. Currently supported: half (not recommended), float or double.
UCurrently supported: Floating-point types and integer types.
-
-
-
See also
gluUnProject man page
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::unProjectNO (vec< 3, T, Q > const & win,
mat< 4, 4, T, Q > const & model,
mat< 4, 4, T, Q > const & proj,
vec< 4, U, Q > const & viewport 
)
-
- -

Map the specified window coordinates (win.x, win.y, win.z) into object coordinates.

-

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

-
Parameters
- - - - - -
winSpecify the window coordinates to be mapped.
modelSpecifies the modelview matrix
projSpecifies the projection matrix
viewportSpecifies the viewport
-
-
-
Returns
Returns the computed object coordinates.
-
Template Parameters
- - - -
TNative type used for the computation. Currently supported: half (not recommended), float or double.
UCurrently supported: Floating-point types and integer types.
-
-
-
See also
gluUnProject man page
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::unProjectZO (vec< 3, T, Q > const & win,
mat< 4, 4, T, Q > const & model,
mat< 4, 4, T, Q > const & proj,
vec< 4, U, Q > const & viewport 
)
-
- -

Map the specified window coordinates (win.x, win.y, win.z) into object coordinates.

-

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

-
Parameters
- - - - - -
winSpecify the window coordinates to be mapped.
modelSpecifies the modelview matrix
projSpecifies the projection matrix
viewportSpecifies the viewport
-
-
-
Returns
Returns the computed object coordinates.
-
Template Parameters
- - - -
TNative type used for the computation. Currently supported: half (not recommended), float or double.
UCurrently supported: Floating-point types and integer types.
-
-
-
See also
gluUnProject man page
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00246.html b/tests/OpenGL/package/glm/doc/api/a00246.html deleted file mode 100644 index 64b3af40..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00246.html +++ /dev/null @@ -1,576 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_matrix_relational - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_matrix_relational
-
-
- -

Exposes comparison functions for matrix types that take a user defined epsilon values. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Exposes comparison functions for matrix types that take a user defined epsilon values.

-

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

-
See also
GLM_EXT_vector_relational
-
-GLM_EXT_scalar_relational
-
-GLM_EXT_quaternion_relational
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::equal (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y 
)
-
- -

Perform a component-wise equal-to comparison of two matrices.

-

Return a boolean vector which components value is True if this expression is satisfied per column of the matrices.

-
Template Parameters
- - - - - -
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::equal (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y,
epsilon 
)
-
- -

Returns the component-wise comparison of |x - y| < epsilon.

-

True if this expression is satisfied.

-
Template Parameters
- - - - - -
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::equal (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y,
vec< C, T, Q > const & epsilon 
)
-
- -

Returns the component-wise comparison of |x - y| < epsilon.

-

True if this expression is satisfied.

-
Template Parameters
- - - - - -
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::equal (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y,
int ULPs 
)
-
- -

Returns the component-wise comparison between two vectors in term of ULPs.

-

True if this expression is satisfied.

-
Template Parameters
- - - - - -
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::equal (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y,
vec< C, int, Q > const & ULPs 
)
-
- -

Returns the component-wise comparison between two vectors in term of ULPs.

-

True if this expression is satisfied.

-
Template Parameters
- - - - - -
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::notEqual (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y 
)
-
- -

Perform a component-wise not-equal-to comparison of two matrices.

-

Return a boolean vector which components value is True if this expression is satisfied per column of the matrices.

-
Template Parameters
- - - - - -
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::notEqual (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y,
epsilon 
)
-
- -

Returns the component-wise comparison of |x - y| < epsilon.

-

True if this expression is not satisfied.

-
Template Parameters
- - - - - -
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::notEqual (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y,
vec< C, T, Q > const & epsilon 
)
-
- -

Returns the component-wise comparison of |x - y| >= epsilon.

-

True if this expression is not satisfied.

-
Template Parameters
- - - - - -
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::notEqual (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y,
int ULPs 
)
-
- -

Returns the component-wise comparison between two vectors in term of ULPs.

-

True if this expression is not satisfied.

-
Template Parameters
- - - - - -
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::notEqual (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y,
vec< C, int, Q > const & ULPs 
)
-
- -

Returns the component-wise comparison between two vectors in term of ULPs.

-

True if this expression is not satisfied.

-
Template Parameters
- - - - - -
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point
QValue from qualifier enum
-
-
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00247.html b/tests/OpenGL/package/glm/doc/api/a00247.html deleted file mode 100644 index f83bd3c5..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00247.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_matrix_transform - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_matrix_transform
-
-
- -

Defines functions that generate common transformation matrices. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

-template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType identity ()
 Builds an identity matrix.
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > lookAt (vec< 3, T, Q > const &eye, vec< 3, T, Q > const &center, vec< 3, T, Q > const &up)
 Build a look at view matrix based on the default handedness. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > lookAtLH (vec< 3, T, Q > const &eye, vec< 3, T, Q > const &center, vec< 3, T, Q > const &up)
 Build a left handed look at view matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > lookAtRH (vec< 3, T, Q > const &eye, vec< 3, T, Q > const &center, vec< 3, T, Q > const &up)
 Build a right handed look at view matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > rotate (mat< 4, 4, T, Q > const &m, T angle, vec< 3, T, Q > const &axis)
 Builds a rotation 4 * 4 matrix created from an axis vector and an angle. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > scale (mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
 Builds a scale 4 * 4 matrix created from 3 scalars. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > translate (mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
 Builds a translation 4 * 4 matrix created from a vector of 3 components. More...
 
-

Detailed Description

-

Defines functions that generate common transformation matrices.

-

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

-

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

-
See also
GLM_EXT_matrix_projection
-
-GLM_EXT_matrix_clip_space
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::lookAt (vec< 3, T, Q > const & eye,
vec< 3, T, Q > const & center,
vec< 3, T, Q > const & up 
)
-
- -

Build a look at view matrix based on the default handedness.

-
Parameters
- - - - -
eyePosition of the camera
centerPosition where the camera is looking at
upNormalized up vector, how the camera is oriented. Typically (0, 0, 1)
-
-
-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
-
See also
- frustum(T const& left, T const& right, T const& bottom, T const& top, T const& nearVal, T const& farVal) frustum(T const& left, T const& right, T const& bottom, T const& top, T const& nearVal, T const& farVal)
-
-gluLookAt man page
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::lookAtLH (vec< 3, T, Q > const & eye,
vec< 3, T, Q > const & center,
vec< 3, T, Q > const & up 
)
-
- -

Build a left handed look at view matrix.

-
Parameters
- - - - -
eyePosition of the camera
centerPosition where the camera is looking at
upNormalized up vector, how the camera is oriented. Typically (0, 0, 1)
-
-
-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
-
See also
- frustum(T const& left, T const& right, T const& bottom, T const& top, T const& nearVal, T const& farVal) frustum(T const& left, T const& right, T const& bottom, T const& top, T const& nearVal, T const& farVal)
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::lookAtRH (vec< 3, T, Q > const & eye,
vec< 3, T, Q > const & center,
vec< 3, T, Q > const & up 
)
-
- -

Build a right handed look at view matrix.

-
Parameters
- - - - -
eyePosition of the camera
centerPosition where the camera is looking at
upNormalized up vector, how the camera is oriented. Typically (0, 0, 1)
-
-
-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
-
See also
- frustum(T const& left, T const& right, T const& bottom, T const& top, T const& nearVal, T const& farVal) frustum(T const& left, T const& right, T const& bottom, T const& top, T const& nearVal, T const& farVal)
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::rotate (mat< 4, 4, T, Q > const & m,
angle,
vec< 3, T, Q > const & axis 
)
-
- -

Builds a rotation 4 * 4 matrix created from an axis vector and an angle.

-
Parameters
- - - - -
mInput matrix multiplied by this rotation matrix.
angleRotation angle expressed in radians.
axisRotation axis, recommended to be normalized.
-
-
-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
-
See also
- rotate(mat<4, 4, T, Q> const& m, T angle, T x, T y, T z)
-
-- rotate(T angle, vec<3, T, Q> const& v)
-
-glRotate man page
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::scale (mat< 4, 4, T, Q > const & m,
vec< 3, T, Q > const & v 
)
-
- -

Builds a scale 4 * 4 matrix created from 3 scalars.

-
Parameters
- - - -
mInput matrix multiplied by this scale matrix.
vRatio of scaling for each axis.
-
-
-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
-
See also
- scale(mat<4, 4, T, Q> const& m, T x, T y, T z)
-
-- scale(vec<3, T, Q> const& v)
-
-glScale man page
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::translate (mat< 4, 4, T, Q > const & m,
vec< 3, T, Q > const & v 
)
-
- -

Builds a translation 4 * 4 matrix created from a vector of 3 components.

-
Parameters
- - - -
mInput matrix multiplied by this translation matrix.
vCoordinates of a translation vector.
-
-
-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
-
#include <glm/glm.hpp>
- -
...
-
glm::mat4 m = glm::translate(glm::mat4(1.0f), glm::vec3(1.0f));
-
// m[0][0] == 1.0f, m[0][1] == 0.0f, m[0][2] == 0.0f, m[0][3] == 0.0f
-
// m[1][0] == 0.0f, m[1][1] == 1.0f, m[1][2] == 0.0f, m[1][3] == 0.0f
-
// m[2][0] == 0.0f, m[2][1] == 0.0f, m[2][2] == 1.0f, m[2][3] == 0.0f
-
// m[3][0] == 1.0f, m[3][1] == 1.0f, m[3][2] == 1.0f, m[3][3] == 1.0f
-
See also
- translate(mat<4, 4, T, Q> const& m, T x, T y, T z)
-
-- translate(vec<3, T, Q> const& v)
-
-glTranslate man page
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00248.html b/tests/OpenGL/package/glm/doc/api/a00248.html deleted file mode 100644 index 99cec01e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00248.html +++ /dev/null @@ -1,402 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_quaternion_common - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_quaternion_common
-
-
- -

Provides common functions for quaternion types. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Provides common functions for quaternion types.

-

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

-
See also
GLM_EXT_scalar_common
-
-GLM_EXT_vector_common
-
-GLM_EXT_quaternion_float
-
-GLM_EXT_quaternion_double
-
-GLM_EXT_quaternion_exponential
-
-GLM_EXT_quaternion_geometric
-
-GLM_EXT_quaternion_relational
-
-GLM_EXT_quaternion_trigonometric
-
-GLM_EXT_quaternion_transform
-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::conjugate (qua< T, Q > const & q)
-
- -

Returns the q conjugate.

-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::inverse (qua< T, Q > const & q)
-
- -

Returns the q inverse.

-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<4, bool, Q> glm::isinf (qua< T, Q > const & x)
-
- -

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

-

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

-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<4, bool, Q> glm::isnan (qua< T, Q > const & x)
-
- -

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

-

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

-

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

-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::lerp (qua< T, Q > const & x,
qua< T, Q > const & y,
a 
)
-
- -

Linear interpolation of two quaternions.

-

The interpolation is oriented.

-
Parameters
- - - - -
xA quaternion
yA quaternion
aInterpolation factor. The interpolation is defined in the range [0, 1].
-
-
-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::mix (qua< T, Q > const & x,
qua< T, Q > const & y,
a 
)
-
- -

Spherical linear interpolation of two quaternions.

-

The interpolation is oriented and the rotation is performed at constant speed. For short path spherical linear interpolation, use the slerp function.

-
Parameters
- - - - -
xA quaternion
yA quaternion
aInterpolation factor. The interpolation is defined beyond the range [0, 1].
-
-
-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
-
See also
- slerp(qua<T, Q> const& x, qua<T, Q> const& y, T const& a)
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::slerp (qua< T, Q > const & x,
qua< T, Q > const & y,
a 
)
-
- -

Spherical linear interpolation of two quaternions.

-

The interpolation always take the short path and the rotation is performed at constant speed.

-
Parameters
- - - - -
xA quaternion
yA quaternion
aInterpolation factor. The interpolation is defined beyond the range [0, 1].
-
-
-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00249.html b/tests/OpenGL/package/glm/doc/api/a00249.html deleted file mode 100644 index 3a3aa361..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00249.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_quaternion_double - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_quaternion_double
-
-
- -

Exposes double-precision floating point quaternion type. -More...

- - - - - -

-Typedefs

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

Detailed Description

-

Exposes double-precision floating point quaternion type.

-

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

-
See also
GLM_EXT_quaternion_float
-
-GLM_EXT_quaternion_double_precision
-
-GLM_EXT_quaternion_common
-
-GLM_EXT_quaternion_exponential
-
-GLM_EXT_quaternion_geometric
-
-GLM_EXT_quaternion_relational
-
-GLM_EXT_quaternion_transform
-
-GLM_EXT_quaternion_trigonometric
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00250.html b/tests/OpenGL/package/glm/doc/api/a00250.html deleted file mode 100644 index c82b3f64..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00250.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_quaternion_double_precision - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_quaternion_double_precision
-
-
- -

Exposes double-precision floating point quaternion type with various precision in term of ULPs. -More...

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-

Exposes double-precision floating point quaternion type with various precision in term of ULPs.

-

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

-

Typedef Documentation

- -
-
- - - - -
typedef qua< double, highp > highp_dquat
-
- -

Quaternion of high double-qualifier floating-point numbers using high precision arithmetic in term of ULPs.

-
See also
GLM_EXT_quaternion_double_precision
- -

Definition at line 38 of file quaternion_double_precision.hpp.

- -
-
- -
-
- - - - -
typedef qua< double, lowp > lowp_dquat
-
- -

Quaternion of double-precision floating-point numbers using high precision arithmetic in term of ULPs.

-
See also
GLM_EXT_quaternion_double_precision
- -

Definition at line 28 of file quaternion_double_precision.hpp.

- -
-
- -
-
- - - - -
typedef qua< double, mediump > mediump_dquat
-
- -

Quaternion of medium double-qualifier floating-point numbers using high precision arithmetic in term of ULPs.

-
See also
GLM_EXT_quaternion_double_precision
- -

Definition at line 33 of file quaternion_double_precision.hpp.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00251.html b/tests/OpenGL/package/glm/doc/api/a00251.html deleted file mode 100644 index 7f58a3e8..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00251.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_quaternion_exponential - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
-
-
GLM_EXT_quaternion_exponential
-
-
- -

Provides exponential functions for quaternion types. -More...

-

Provides exponential functions for quaternion types.

-

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

-
See also
core_exponential
-
-GLM_EXT_quaternion_float
-
-GLM_EXT_quaternion_double
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00252.html b/tests/OpenGL/package/glm/doc/api/a00252.html deleted file mode 100644 index 902bd318..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00252.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_quaternion_float - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_quaternion_float
-
-
- -

Exposes single-precision floating point quaternion type. -More...

- - - - - -

-Typedefs

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

Detailed Description

-

Exposes single-precision floating point quaternion type.

-

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

-
See also
GLM_EXT_quaternion_double
-
-GLM_EXT_quaternion_float_precision
-
-GLM_EXT_quaternion_common
-
-GLM_EXT_quaternion_exponential
-
-GLM_EXT_quaternion_geometric
-
-GLM_EXT_quaternion_relational
-
-GLM_EXT_quaternion_transform
-
-GLM_EXT_quaternion_trigonometric
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00253.html b/tests/OpenGL/package/glm/doc/api/a00253.html deleted file mode 100644 index 8b283481..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00253.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_quaternion_float_precision - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_quaternion_float_precision
-
-
- -

Exposes single-precision floating point quaternion type with various precision in term of ULPs. -More...

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-

Exposes single-precision floating point quaternion type with various precision in term of ULPs.

-

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

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00254.html b/tests/OpenGL/package/glm/doc/api/a00254.html deleted file mode 100644 index 7290e3aa..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00254.html +++ /dev/null @@ -1,248 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_quaternion_geometric - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_quaternion_geometric
-
-
- -

Provides geometric functions for quaternion types. -More...

- - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Provides geometric functions for quaternion types.

-

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

-
See also
core_geometric
-
-GLM_EXT_quaternion_float
-
-GLM_EXT_quaternion_double
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_QUALIFIER qua<T, Q> glm::cross (qua< T, Q > const & q1,
qua< T, Q > const & q2 
)
-
- -

Compute a cross product.

-
Template Parameters
- - - -
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLM_EXT_quaternion_geometric
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::dot (qua< T, Q > const & x,
qua< T, Q > const & y 
)
-
- -

Returns dot product of q1 and q2, i.e., q1[0] * q2[0] + q1[1] * q2[1] + ...

-
Template Parameters
- - - -
TFloating-point scalar types.
QValue from qualifier enum
-
-
-
See also
GLM_EXT_quaternion_geometric
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::length (qua< T, Q > const & q)
-
- -

Returns the norm of a quaternions.

-
Template Parameters
- - - -
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLM_EXT_quaternion_geometric
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::normalize (qua< T, Q > const & q)
-
- -

Returns the normalized quaternion.

-
Template Parameters
- - - -
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLM_EXT_quaternion_geometric
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00255.html b/tests/OpenGL/package/glm/doc/api/a00255.html deleted file mode 100644 index 98943673..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00255.html +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_quaternion_relational - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_quaternion_relational
-
-
- -

Exposes comparison functions for quaternion types that take a user defined epsilon values. -More...

- - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Exposes comparison functions for quaternion types that take a user defined epsilon values.

-

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

-
See also
core_vector_relational
-
-GLM_EXT_vector_relational
-
-GLM_EXT_matrix_relational
-
-GLM_EXT_quaternion_float
-
-GLM_EXT_quaternion_double
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<4, bool, Q> glm::equal (qua< T, Q > const & x,
qua< T, Q > const & y 
)
-
- -

Returns the component-wise comparison of result x == y.

-
Template Parameters
- - - -
TFloating-point scalar types
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<4, bool, Q> glm::equal (qua< T, Q > const & x,
qua< T, Q > const & y,
epsilon 
)
-
- -

Returns the component-wise comparison of |x - y| < epsilon.

-
Template Parameters
- - - -
TFloating-point scalar types
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<4, bool, Q> glm::notEqual (qua< T, Q > const & x,
qua< T, Q > const & y 
)
-
- -

Returns the component-wise comparison of result x != y.

-
Template Parameters
- - - -
TFloating-point scalar types
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<4, bool, Q> glm::notEqual (qua< T, Q > const & x,
qua< T, Q > const & y,
epsilon 
)
-
- -

Returns the component-wise comparison of |x - y| >= epsilon.

-
Template Parameters
- - - -
TFloating-point scalar types
QValue from qualifier enum
-
-
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00256.html b/tests/OpenGL/package/glm/doc/api/a00256.html deleted file mode 100644 index 73bbcd55..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00256.html +++ /dev/null @@ -1,293 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_quaternion_transform - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_quaternion_transform
-
-
- -

Provides transformation functions for quaternion types. -More...

- - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > exp (qua< T, Q > const &q)
 Returns a exponential of a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > log (qua< T, Q > const &q)
 Returns a logarithm of a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > pow (qua< T, Q > const &q, T y)
 Returns a quaternion raised to a power. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > rotate (qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)
 Rotates a quaternion from a vector of 3 components axis and an angle. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > sqrt (qua< T, Q > const &q)
 Returns the square root of a quaternion. More...
 
-

Detailed Description

-

Provides transformation functions for quaternion types.

-

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

-
See also
GLM_EXT_quaternion_float
-
-GLM_EXT_quaternion_double
-
-GLM_EXT_quaternion_exponential
-
-GLM_EXT_quaternion_geometric
-
-GLM_EXT_quaternion_relational
-
-GLM_EXT_quaternion_trigonometric
-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::exp (qua< T, Q > const & q)
-
- -

Returns a exponential of a quaternion.

-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::log (qua< T, Q > const & q)
-
- -

Returns a logarithm of a quaternion.

-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::pow (qua< T, Q > const & q,
y 
)
-
- -

Returns a quaternion raised to a power.

-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::rotate (qua< T, Q > const & q,
T const & angle,
vec< 3, T, Q > const & axis 
)
-
- -

Rotates a quaternion from a vector of 3 components axis and an angle.

-
Parameters
- - - - -
qSource orientation
angleAngle expressed in radians.
axisAxis of the rotation
-
-
-
Template Parameters
- - - -
TFloating-point scalar types
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::sqrt (qua< T, Q > const & q)
-
- -

Returns the square root of a quaternion.

-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00257.html b/tests/OpenGL/package/glm/doc/api/a00257.html deleted file mode 100644 index 486375f4..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00257.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_quaternion_trigonometric - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_quaternion_trigonometric
-
-
- -

Provides trigonometric functions for quaternion types. -More...

- - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Provides trigonometric functions for quaternion types.

-

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

-
See also
GLM_EXT_quaternion_float
-
-GLM_EXT_quaternion_double
-
-GLM_EXT_quaternion_exponential
-
-GLM_EXT_quaternion_geometric
-
-GLM_EXT_quaternion_relational
-
-GLM_EXT_quaternion_transform
-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::angle (qua< T, Q > const & x)
-
- -

Returns the quaternion rotation angle.

-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::angleAxis (T const & angle,
vec< 3, T, Q > const & axis 
)
-
- -

Build a quaternion from an angle and a normalized axis.

-
Parameters
- - - -
angleAngle expressed in radians.
axisAxis of the quaternion, must be normalized.
-
-
-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::axis (qua< T, Q > const & x)
-
- -

Returns the q rotation axis.

-
Template Parameters
- - - -
TA floating-point scalar type
QA value from qualifier enum
-
-
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00258.html b/tests/OpenGL/package/glm/doc/api/a00258.html deleted file mode 100644 index 532bab82..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00258.html +++ /dev/null @@ -1,570 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_scalar_common - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_scalar_common
-
-
- -

Exposes min and max functions for 3 to 4 scalar parameters. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T >
GLM_FUNC_DECL T fmax (T a, T b)
 Returns the maximum component-wise values of 2 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T fmax (T a, T b, T C)
 Returns the maximum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T fmax (T a, T b, T C, T D)
 Returns the maximum component-wise values of 4 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T fmin (T a, T b)
 Returns the minimum component-wise values of 2 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T fmin (T a, T b, T c)
 Returns the minimum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T fmin (T a, T b, T c, T d)
 Returns the minimum component-wise values of 4 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T max (T a, T b, T c)
 Returns the maximum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T max (T a, T b, T c, T d)
 Returns the maximum component-wise values of 4 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T min (T a, T b, T c)
 Returns the minimum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T min (T a, T b, T c, T d)
 Returns the minimum component-wise values of 4 inputs. More...
 
-

Detailed Description

-

Exposes min and max functions for 3 to 4 scalar parameters.

-

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

-
See also
Common functions
-
-GLM_EXT_vector_common
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::fmax (a,
b 
)
-
- -

Returns the maximum component-wise values of 2 inputs.

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - -
TA floating-point scalar type.
-
-
-
See also
std::fmax documentation
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::fmax (a,
b,
C 
)
-
- -

Returns the maximum component-wise values of 3 inputs.

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - -
TA floating-point scalar type.
-
-
-
See also
std::fmax documentation
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::fmax (a,
b,
C,
D 
)
-
- -

Returns the maximum component-wise values of 4 inputs.

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - -
TA floating-point scalar type.
-
-
-
See also
std::fmax documentation
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::fmin (a,
b 
)
-
- -

Returns the minimum component-wise values of 2 inputs.

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - -
TA floating-point scalar type.
-
-
-
See also
std::fmin documentation
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::fmin (a,
b,
c 
)
-
- -

Returns the minimum component-wise values of 3 inputs.

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - -
TA floating-point scalar type.
-
-
-
See also
std::fmin documentation
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::fmin (a,
b,
c,
d 
)
-
- -

Returns the minimum component-wise values of 4 inputs.

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - -
TA floating-point scalar type.
-
-
-
See also
std::fmin documentation
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::max (a,
b,
c 
)
-
- -

Returns the maximum component-wise values of 3 inputs.

-
Template Parameters
- - -
TA floating-point scalar type.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::max (a,
b,
c,
d 
)
-
- -

Returns the maximum component-wise values of 4 inputs.

-
Template Parameters
- - -
TA floating-point scalar type.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::min (a,
b,
c 
)
-
- -

Returns the minimum component-wise values of 3 inputs.

-
Template Parameters
- - -
TA floating-point scalar type.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::min (a,
b,
c,
d 
)
-
- -

Returns the minimum component-wise values of 4 inputs.

-
Template Parameters
- - -
TA floating-point scalar type.
-
-
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00259.html b/tests/OpenGL/package/glm/doc/api/a00259.html deleted file mode 100644 index c34c0599..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00259.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_scalar_constants - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_scalar_constants
-
-
- -

Provides a list of constants and precomputed useful values. -More...

- - - - - - - - - - -

-Functions

-template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon ()
 Return the epsilon constant for floating point types.
 
-template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType pi ()
 Return the pi constant for floating point types.
 
-

Detailed Description

-

Provides a list of constants and precomputed useful values.

-

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

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00260.html b/tests/OpenGL/package/glm/doc/api/a00260.html deleted file mode 100644 index 256c6f51..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00260.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_scalar_int_sized - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_scalar_int_sized
-
-
- -

Exposes sized signed integer scalar types. -More...

- - - - - - - - - - - - - - -

-Typedefs

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

Detailed Description

-

Exposes sized signed integer scalar types.

-

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

-
See also
GLM_EXT_scalar_uint_sized
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00261.html b/tests/OpenGL/package/glm/doc/api/a00261.html deleted file mode 100644 index 9772b954..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00261.html +++ /dev/null @@ -1,336 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_scalar_integer - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_scalar_integer
-
-
- -

Include <glm/ext/scalar_integer.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

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

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL int glm::findNSB (genIUType x,
int significantBitCount 
)
-
- -

Returns the bit number of the Nth significant bit set to 1 in the binary representation of value.

-

If value bitcount is less than the Nth significant bit, -1 will be returned.

-
Template Parameters
- - -
genIUTypeSigned or unsigned integer scalar types.
-
-
-
See also
GLM_EXT_scalar_integer
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::isMultiple (genIUType v,
genIUType Multiple 
)
-
- -

Return true if the 'Value' is a multiple of 'Multiple'.

-
See also
GLM_EXT_scalar_integer
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL bool glm::isPowerOfTwo (genIUType v)
-
- -

Return true if the value is a power of two number.

-
See also
GLM_EXT_scalar_integer
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genIUType glm::nextMultiple (genIUType v,
genIUType Multiple 
)
-
- -

Higher multiple number of Source.

-
Template Parameters
- - -
genIUTypeInteger scalar or vector types.
-
-
-
Parameters
- - - -
vSource value to which is applied the function
MultipleMust be a null or positive value
-
-
-
See also
GLM_EXT_scalar_integer
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genIUType glm::nextPowerOfTwo (genIUType v)
-
- -

Return the power of two number which value is just higher the input value, round up to a power of two.

-
See also
GLM_EXT_scalar_integer
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genIUType glm::prevMultiple (genIUType v,
genIUType Multiple 
)
-
- -

Lower multiple number of Source.

-
Template Parameters
- - -
genIUTypeInteger scalar or vector types.
-
-
-
Parameters
- - - -
vSource value to which is applied the function
MultipleMust be a null or positive value
-
-
-
See also
GLM_EXT_scalar_integer
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genIUType glm::prevPowerOfTwo (genIUType v)
-
- -

Return the power of two number which value is just lower the input value, round down to a power of two.

-
See also
GLM_EXT_scalar_integer
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00262.html b/tests/OpenGL/package/glm/doc/api/a00262.html deleted file mode 100644 index fa299f31..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00262.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_scalar_relational - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
-
-
GLM_EXT_scalar_relational
-
-
- -

Exposes comparison functions for scalar types that take a user defined epsilon values. -More...

-

Exposes comparison functions for scalar types that take a user defined epsilon values.

-

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

-
See also
core_vector_relational
-
-GLM_EXT_vector_relational
-
-GLM_EXT_matrix_relational
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00263.html b/tests/OpenGL/package/glm/doc/api/a00263.html deleted file mode 100644 index 8a4cbfca..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00263.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_scalar_uint_sized - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_scalar_uint_sized
-
-
- -

Exposes sized unsigned integer scalar types. -More...

- - - - - - - - - - - - - - -

-Typedefs

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

Detailed Description

-

Exposes sized unsigned integer scalar types.

-

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

-
See also
GLM_EXT_scalar_int_sized
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00264.html b/tests/OpenGL/package/glm/doc/api/a00264.html deleted file mode 100644 index 69fc2f91..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00264.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_scalar_ulp - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
-
-
GLM_EXT_scalar_ulp
-
-
- -

Allow the measurement of the accuracy of a function against a reference implementation. -More...

-

Allow the measurement of the accuracy of a function against a reference implementation.

-

This extension works on floating-point data and provide results in ULP.

-

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

-
See also
GLM_EXT_vector_ulp
-
-GLM_EXT_scalar_relational
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00265.html b/tests/OpenGL/package/glm/doc/api/a00265.html deleted file mode 100644 index 0daa238f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00265.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_vector_bool1 - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_vector_bool1
-
-
- -

Exposes bvec1 vector type. -More...

- - - - - -

-Typedefs

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

Detailed Description

-

Exposes bvec1 vector type.

-

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

-
See also
GLM_EXT_vector_bool1_precision extension.
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00266.html b/tests/OpenGL/package/glm/doc/api/a00266.html deleted file mode 100644 index 77a77f2d..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00266.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_vector_bool1_precision - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_vector_bool1_precision
-
-
- -

Exposes highp_bvec1, mediump_bvec1 and lowp_bvec1 types. -More...

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-

Exposes highp_bvec1, mediump_bvec1 and lowp_bvec1 types.

-

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

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00267.html b/tests/OpenGL/package/glm/doc/api/a00267.html deleted file mode 100644 index d7b3e507..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00267.html +++ /dev/null @@ -1,674 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_vector_common - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_vector_common
-
-
- -

Exposes min and max functions for 3 to 4 vector parameters. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmax (vec< L, T, Q > const &a, T b)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmax (vec< L, T, Q > const &a, vec< L, T, Q > const &b)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmax (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmax (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmin (vec< L, T, Q > const &x, T y)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmin (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmin (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmin (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > max (vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z)
 Return the maximum component-wise values of 3 inputs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > max (vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z, vec< L, T, Q > const &w)
 Return the maximum component-wise values of 4 inputs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > min (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)
 Return the minimum component-wise values of 3 inputs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > min (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)
 Return the minimum component-wise values of 4 inputs. More...
 
-

Detailed Description

-

Exposes min and max functions for 3 to 4 vector parameters.

-

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

-
See also
core_common
-
-GLM_EXT_scalar_common
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fmax (vec< L, T, Q > const & a,
b 
)
-
- -

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

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
std::fmax documentation
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fmax (vec< L, T, Q > const & a,
vec< L, T, Q > const & b 
)
-
- -

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

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
std::fmax documentation
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fmax (vec< L, T, Q > const & a,
vec< L, T, Q > const & b,
vec< L, T, Q > const & c 
)
-
- -

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

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
std::fmax documentation
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fmax (vec< L, T, Q > const & a,
vec< L, T, Q > const & b,
vec< L, T, Q > const & c,
vec< L, T, Q > const & d 
)
-
- -

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

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
std::fmax documentation
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fmin (vec< L, T, Q > const & x,
y 
)
-
- -

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

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
std::fmin documentation
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fmin (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
-
- -

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

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
std::fmin documentation
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fmin (vec< L, T, Q > const & a,
vec< L, T, Q > const & b,
vec< L, T, Q > const & c 
)
-
- -

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

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
std::fmin documentation
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fmin (vec< L, T, Q > const & a,
vec< L, T, Q > const & b,
vec< L, T, Q > const & c,
vec< L, T, Q > const & d 
)
-
- -

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

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
std::fmin documentation
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::max (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
vec< L, T, Q > const & z 
)
-
- -

Return the maximum component-wise values of 3 inputs.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::max (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
vec< L, T, Q > const & z,
vec< L, T, Q > const & w 
)
-
- -

Return the maximum component-wise values of 4 inputs.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::min (vec< L, T, Q > const & a,
vec< L, T, Q > const & b,
vec< L, T, Q > const & c 
)
-
- -

Return the minimum component-wise values of 3 inputs.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::min (vec< L, T, Q > const & a,
vec< L, T, Q > const & b,
vec< L, T, Q > const & c,
vec< L, T, Q > const & d 
)
-
- -

Return the minimum component-wise values of 4 inputs.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00268.html b/tests/OpenGL/package/glm/doc/api/a00268.html deleted file mode 100644 index b4c4b4e9..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00268.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_vector_double1 - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_vector_double1
-
-
- -

Exposes double-precision floating point vector type with one component. -More...

- - - - - -

-Typedefs

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

Detailed Description

-

Exposes double-precision floating point vector type with one component.

-

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

-
See also
GLM_EXT_vector_double1_precision extension.
-
-GLM_EXT_vector_float1 extension.
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00269.html b/tests/OpenGL/package/glm/doc/api/a00269.html deleted file mode 100644 index 14aa0c42..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00269.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_vector_double1_precision - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_vector_double1_precision
-
-
- -

Exposes highp_dvec1, mediump_dvec1 and lowp_dvec1 types. -More...

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-

Exposes highp_dvec1, mediump_dvec1 and lowp_dvec1 types.

-

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

-
See also
GLM_EXT_vector_double1
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00270.html b/tests/OpenGL/package/glm/doc/api/a00270.html deleted file mode 100644 index 89ebe04e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00270.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_vector_float1 - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_vector_float1
-
-
- -

Exposes single-precision floating point vector type with one component. -More...

- - - - - -

-Typedefs

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

Detailed Description

-

Exposes single-precision floating point vector type with one component.

-

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

-
See also
GLM_EXT_vector_float1_precision extension.
-
-GLM_EXT_vector_double1 extension.
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00271.html b/tests/OpenGL/package/glm/doc/api/a00271.html deleted file mode 100644 index abfca2ae..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00271.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_vector_float1_precision - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_vector_float1_precision
-
-
- -

Exposes highp_vec1, mediump_vec1 and lowp_vec1 types. -More...

- - - - - - - - - - - -

-Typedefs

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

Detailed Description

-

Exposes highp_vec1, mediump_vec1 and lowp_vec1 types.

-

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

-
See also
GLM_EXT_vector_float1 extension.
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00272.html b/tests/OpenGL/package/glm/doc/api/a00272.html deleted file mode 100644 index ef08fcfe..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00272.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_vector_int1 - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_vector_int1
-
-
- -

Exposes ivec1 vector type. -More...

- - - - - -

-Typedefs

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

Detailed Description

-

Exposes ivec1 vector type.

-

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

-
See also
GLM_EXT_vector_uint1 extension.
-
-GLM_EXT_vector_int1_precision extension.
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00273.html b/tests/OpenGL/package/glm/doc/api/a00273.html deleted file mode 100644 index 6d53604f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00273.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_vector_int1_precision - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_vector_int1_precision
-
-
- -

Exposes highp_ivec1, mediump_ivec1 and lowp_ivec1 types. -More...

- - - - - - - - - - - -

-Typedefs

-typedef vec< 1, int, highp > highp_ivec1
 1 component vector of signed integer values.
 
-typedef vec< 1, int, lowp > lowp_ivec1
 1 component vector of signed integer values.
 
-typedef vec< 1, int, mediump > mediump_ivec1
 1 component vector of signed integer values.
 
-

Detailed Description

-

Exposes highp_ivec1, mediump_ivec1 and lowp_ivec1 types.

-

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

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00274.html b/tests/OpenGL/package/glm/doc/api/a00274.html deleted file mode 100644 index 77b13eec..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00274.html +++ /dev/null @@ -1,510 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_vector_integer - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_vector_integer
-
-
- -

Include <glm/ext/vector_integer.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

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

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, int, Q> glm::findNSB (vec< L, T, Q > const & Source,
vec< L, int, Q > SignificantBitCount 
)
-
- -

Returns the bit number of the Nth significant bit set to 1 in the binary representation of value.

-

If value bitcount is less than the Nth significant bit, -1 will be returned.

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TSigned or unsigned integer scalar types.
-
-
-
See also
GLM_EXT_vector_integer
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, bool, Q> glm::isMultiple (vec< L, T, Q > const & v,
Multiple 
)
-
- -

Return true if the 'Value' is a multiple of 'Multiple'.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned or unsigned integer scalar types.
QValue from qualifier enum
-
-
-
See also
GLM_EXT_vector_integer
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, bool, Q> glm::isMultiple (vec< L, T, Q > const & v,
vec< L, T, Q > const & Multiple 
)
-
- -

Return true if the 'Value' is a multiple of 'Multiple'.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned or unsigned integer scalar types.
QValue from qualifier enum
-
-
-
See also
GLM_EXT_vector_integer
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, bool, Q> glm::isPowerOfTwo (vec< L, T, Q > const & v)
-
- -

Return true if the value is a power of two number.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned or unsigned integer scalar types.
QValue from qualifier enum
-
-
-
See also
GLM_EXT_vector_integer
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::nextMultiple (vec< L, T, Q > const & v,
Multiple 
)
-
- -

Higher multiple number of Source.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned or unsigned integer scalar types.
QValue from qualifier enum
-
-
-
Parameters
- - - -
vSource values to which is applied the function
MultipleMust be a null or positive value
-
-
-
See also
GLM_EXT_vector_integer
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::nextMultiple (vec< L, T, Q > const & v,
vec< L, T, Q > const & Multiple 
)
-
- -

Higher multiple number of Source.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned or unsigned integer scalar types.
QValue from qualifier enum
-
-
-
Parameters
- - - -
vSource values to which is applied the function
MultipleMust be a null or positive value
-
-
-
See also
GLM_EXT_vector_integer
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::nextPowerOfTwo (vec< L, T, Q > const & v)
-
- -

Return the power of two number which value is just higher the input value, round up to a power of two.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned or unsigned integer scalar types.
QValue from qualifier enum
-
-
-
See also
GLM_EXT_vector_integer
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::prevMultiple (vec< L, T, Q > const & v,
Multiple 
)
-
- -

Lower multiple number of Source.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned or unsigned integer scalar types.
QValue from qualifier enum
-
-
-
Parameters
- - - -
vSource values to which is applied the function
MultipleMust be a null or positive value
-
-
-
See also
GLM_EXT_vector_integer
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::prevMultiple (vec< L, T, Q > const & v,
vec< L, T, Q > const & Multiple 
)
-
- -

Lower multiple number of Source.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned or unsigned integer scalar types.
QValue from qualifier enum
-
-
-
Parameters
- - - -
vSource values to which is applied the function
MultipleMust be a null or positive value
-
-
-
See also
GLM_EXT_vector_integer
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::prevPowerOfTwo (vec< L, T, Q > const & v)
-
- -

Return the power of two number which value is just lower the input value, round down to a power of two.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned or unsigned integer scalar types.
QValue from qualifier enum
-
-
-
See also
GLM_EXT_vector_integer
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00275.html b/tests/OpenGL/package/glm/doc/api/a00275.html deleted file mode 100644 index ef394961..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00275.html +++ /dev/null @@ -1,484 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_vector_relational - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_vector_relational
-
-
- -

Exposes comparison functions for vector types that take a user defined epsilon values. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Exposes comparison functions for vector types that take a user defined epsilon values.

-

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

-
See also
core_vector_relational
-
-GLM_EXT_scalar_relational
-
-GLM_EXT_matrix_relational
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::equal (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
epsilon 
)
-
- -

Returns the component-wise comparison of |x - y| < epsilon.

-

True if this expression is satisfied.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::equal (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
vec< L, T, Q > const & epsilon 
)
-
- -

Returns the component-wise comparison of |x - y| < epsilon.

-

True if this expression is satisfied.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::equal (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
int ULPs 
)
-
- -

Returns the component-wise comparison between two vectors in term of ULPs.

-

True if this expression is satisfied.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::equal (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
vec< L, int, Q > const & ULPs 
)
-
- -

Returns the component-wise comparison between two vectors in term of ULPs.

-

True if this expression is satisfied.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::notEqual (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
epsilon 
)
-
- -

Returns the component-wise comparison of |x - y| >= epsilon.

-

True if this expression is not satisfied.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::notEqual (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
vec< L, T, Q > const & epsilon 
)
-
- -

Returns the component-wise comparison of |x - y| >= epsilon.

-

True if this expression is not satisfied.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::notEqual (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
int ULPs 
)
-
- -

Returns the component-wise comparison between two vectors in term of ULPs.

-

True if this expression is not satisfied.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::notEqual (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
vec< L, int, Q > const & ULPs 
)
-
- -

Returns the component-wise comparison between two vectors in term of ULPs.

-

True if this expression is not satisfied.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
-
-
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00276.html b/tests/OpenGL/package/glm/doc/api/a00276.html deleted file mode 100644 index ab33a07b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00276.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_vector_uint1 - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_vector_uint1
-
-
- -

Exposes uvec1 vector type. -More...

- - - - - -

-Typedefs

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

Detailed Description

-

Exposes uvec1 vector type.

-

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

-
See also
GLM_EXT_vector_int1 extension.
-
-GLM_EXT_vector_uint1_precision extension.
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00277.html b/tests/OpenGL/package/glm/doc/api/a00277.html deleted file mode 100644 index 21ec7435..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00277.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_vector_uint1_precision - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_EXT_vector_uint1_precision
-
-
- -

Exposes highp_uvec1, mediump_uvec1 and lowp_uvec1 types. -More...

- - - - - - - - - - - -

-Typedefs

typedef vec< 1, unsigned int, highp > highp_uvec1
 1 component vector of unsigned integer values. More...
 
typedef vec< 1, unsigned int, lowp > lowp_uvec1
 1 component vector of unsigned integer values. More...
 
typedef vec< 1, unsigned int, mediump > mediump_uvec1
 1 component vector of unsigned integer values. More...
 
-

Detailed Description

-

Exposes highp_uvec1, mediump_uvec1 and lowp_uvec1 types.

-

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

-

Typedef Documentation

- -
-
- - - - -
typedef vec< 1, u32, highp > highp_uvec1
-
- -

1 component vector of unsigned integer values.

-
See also
GLM_EXT_vector_uint1_precision
- -

Definition at line 27 of file vector_uint1_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, u32, lowp > lowp_uvec1
-
- -

1 component vector of unsigned integer values.

-
See also
GLM_EXT_vector_uint1_precision
- -

Definition at line 37 of file vector_uint1_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, u32, mediump > mediump_uvec1
-
- -

1 component vector of unsigned integer values.

-
See also
GLM_EXT_vector_uint1_precision
- -

Definition at line 32 of file vector_uint1_precision.hpp.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00278.html b/tests/OpenGL/package/glm/doc/api/a00278.html deleted file mode 100644 index 3537ed9a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00278.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_EXT_vector_ulp - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
-
-
GLM_EXT_vector_ulp
-
-
- -

Allow the measurement of the accuracy of a function against a reference implementation. -More...

-

Allow the measurement of the accuracy of a function against a reference implementation.

-

This extension works on floating-point data and provide results in ULP.

-

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

-
See also
GLM_EXT_scalar_ulp
-
-GLM_EXT_scalar_relational
-
-GLM_EXT_vector_relational
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00279.html b/tests/OpenGL/package/glm/doc/api/a00279.html deleted file mode 100644 index f4fe42a4..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00279.html +++ /dev/null @@ -1,431 +0,0 @@ - - - - - - -0.9.9 API documentation: Geometric functions - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
Geometric functions
-
-
- -

These operate on vectors as vectors, not component-wise. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

These operate on vectors as vectors, not component-wise.

-

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

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::cross (vec< 3, T, Q > const & x,
vec< 3, T, Q > const & y 
)
-
- -

Returns the cross product of x and y.

-
Template Parameters
- - -
TFloating-point scalar types.
-
-
-
See also
GLSL cross man page
-
-GLSL 4.20.8 specification, section 8.5 Geometric Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::distance (vec< L, T, Q > const & p0,
vec< L, T, Q > const & p1 
)
-
- -

Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
-
-
-
See also
GLSL distance man page
-
-GLSL 4.20.8 specification, section 8.5 Geometric Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::dot (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
-
- -

Returns the dot product of x and y, i.e., result = x * y.

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
-
-
-
See also
GLSL dot man page
-
-GLSL 4.20.8 specification, section 8.5 Geometric Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::faceforward (vec< L, T, Q > const & N,
vec< L, T, Q > const & I,
vec< L, T, Q > const & Nref 
)
-
- -

If dot(Nref, I) < 0.0, return N, otherwise, return -N.

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
-
-
-
See also
GLSL faceforward man page
-
-GLSL 4.20.8 specification, section 8.5 Geometric Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::length (vec< L, T, Q > const & x)
-
- -

Returns the length of x, i.e., sqrt(x * x).

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
-
-
-
See also
GLSL length man page
-
-GLSL 4.20.8 specification, section 8.5 Geometric Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::normalize (vec< L, T, Q > const & x)
-
- -

Returns a vector in the same direction as x but with length of 1.

-

According to issue 10 GLSL 1.10 specification, if length(x) == 0 then result is undefined and generate an error.

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
-
-
-
See also
GLSL normalize man page
-
-GLSL 4.20.8 specification, section 8.5 Geometric Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::reflect (vec< L, T, Q > const & I,
vec< L, T, Q > const & N 
)
-
- -

For the incident vector I and surface orientation N, returns the reflection direction : result = I - 2.0 * dot(N, I) * N.

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
-
-
-
See also
GLSL reflect man page
-
-GLSL 4.20.8 specification, section 8.5 Geometric Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::refract (vec< L, T, Q > const & I,
vec< L, T, Q > const & N,
eta 
)
-
- -

For the incident vector I and surface normal N, and the ratio of indices of refraction eta, return the refraction vector.

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
-
-
-
See also
GLSL refract man page
-
-GLSL 4.20.8 specification, section 8.5 Geometric Functions
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00280.html b/tests/OpenGL/package/glm/doc/api/a00280.html deleted file mode 100644 index 30a1bb56..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00280.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - -0.9.9 API documentation: Core features - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
Core features
-
-
- -

Features that implement in C++ the GLSL specification as closely as possible. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Modules

 Common functions
 Provides GLSL common functions.
 
 Exponential functions
 Provides GLSL exponential functions.
 
 Geometric functions
 These operate on vectors as vectors, not component-wise.
 
 Vector types
 Vector types of two to four components with an exhaustive set of operators.
 
 Vector types with precision qualifiers
 Vector types with precision qualifiers which may result in various precision in term of ULPs.
 
 Matrix types
 Matrix types of with C columns and R rows where C and R are values between 2 to 4 included.
 
 Matrix types with precision qualifiers
 Matrix types with precision qualifiers which may result in various precision in term of ULPs.
 
 Integer functions
 Provides GLSL functions on integer types.
 
 Matrix functions
 Provides GLSL matrix functions.
 
 Floating-Point Pack and Unpack Functions
 Provides GLSL functions to pack and unpack half, single and double-precision floating point values into more compact integer types.
 
 Angle and Trigonometry Functions
 Function parameters specified as angle are assumed to be in units of radians.
 
 Vector Relational Functions
 Relational and equality operators (<, <=, >, >=, ==, !=) are defined to operate on scalars and produce scalar Boolean results.
 
- - - - -

-Typedefs

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

Detailed Description

-

Features that implement in C++ the GLSL specification as closely as possible.

-

The GLM core consists of C++ types that mirror GLSL types and C++ functions that mirror the GLSL functions.

-

The best documentation for GLM Core is the current GLSL specification, version 4.2 (pdf file).

-

GLM core functionalities require <glm/glm.hpp> to be included to be used.

-

Typedef Documentation

- -
-
- - - - -
typedef mat< 3, 2, f32, defaultp > mat3x2
-
- -

3 columns of 2 components matrix of single-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 15 of file matrix_float3x2.hpp.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00281.html b/tests/OpenGL/package/glm/doc/api/a00281.html deleted file mode 100644 index 694bcc15..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00281.html +++ /dev/null @@ -1,402 +0,0 @@ - - - - - - -0.9.9 API documentation: Vector types - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
Vector types
-
-
- -

Vector types of two to four components with an exhaustive set of operators. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

typedef vec< 2, bool, defaultp > bvec2
 2 components vector of boolean. More...
 
typedef vec< 3, bool, defaultp > bvec3
 3 components vector of boolean. More...
 
typedef vec< 4, bool, defaultp > bvec4
 4 components vector of boolean. More...
 
typedef vec< 2, double, defaultp > dvec2
 2 components vector of double-precision floating-point numbers. More...
 
typedef vec< 3, double, defaultp > dvec3
 3 components vector of double-precision floating-point numbers. More...
 
typedef vec< 4, double, defaultp > dvec4
 4 components vector of double-precision floating-point numbers. More...
 
typedef vec< 2, int, defaultp > ivec2
 2 components vector of signed integer numbers. More...
 
typedef vec< 3, int, defaultp > ivec3
 3 components vector of signed integer numbers. More...
 
typedef vec< 4, int, defaultp > ivec4
 4 components vector of signed integer numbers. More...
 
typedef vec< 2, unsigned int, defaultp > uvec2
 2 components vector of unsigned integer numbers. More...
 
typedef vec< 3, unsigned int, defaultp > uvec3
 3 components vector of unsigned integer numbers. More...
 
typedef vec< 4, unsigned int, defaultp > uvec4
 4 components vector of unsigned integer numbers. More...
 
typedef vec< 2, float, defaultp > vec2
 2 components vector of single-precision floating-point numbers. More...
 
typedef vec< 3, float, defaultp > vec3
 3 components vector of single-precision floating-point numbers. More...
 
typedef vec< 4, float, defaultp > vec4
 4 components vector of single-precision floating-point numbers. More...
 
-

Detailed Description

-

Vector types of two to four components with an exhaustive set of operators.

-

Typedef Documentation

- -
-
- - - - -
typedef vec< 2, bool, defaultp > bvec2
-
- -

2 components vector of boolean.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
- -

Definition at line 15 of file vector_bool2.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, bool, defaultp > bvec3
-
- -

3 components vector of boolean.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
- -

Definition at line 15 of file vector_bool3.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, bool, defaultp > bvec4
-
- -

4 components vector of boolean.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
- -

Definition at line 15 of file vector_bool4.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, f64, defaultp > dvec2
-
- -

2 components vector of double-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
- -

Definition at line 15 of file vector_double2.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, f64, defaultp > dvec3
-
- -

3 components vector of double-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
- -

Definition at line 15 of file vector_double3.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, f64, defaultp > dvec4
-
- -

4 components vector of double-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
- -

Definition at line 15 of file vector_double4.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i32, defaultp > ivec2
-
- -

2 components vector of signed integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
- -

Definition at line 15 of file vector_int2.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i32, defaultp > ivec3
-
- -

3 components vector of signed integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
- -

Definition at line 15 of file vector_int3.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i32, defaultp > ivec4
-
- -

4 components vector of signed integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
- -

Definition at line 15 of file vector_int4.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u32, defaultp > uvec2
-
- -

2 components vector of unsigned integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
- -

Definition at line 15 of file vector_uint2.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u32, defaultp > uvec3
-
- -

3 components vector of unsigned integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
- -

Definition at line 15 of file vector_uint3.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u32, defaultp > uvec4
-
- -

4 components vector of unsigned integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
- -

Definition at line 15 of file vector_uint4.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, float, defaultp > vec2
-
- -

2 components vector of single-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
- -

Definition at line 15 of file vector_float2.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, float, defaultp > vec3
-
- -

3 components vector of single-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
- -

Definition at line 15 of file vector_float3.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, float, defaultp > vec4
-
- -

4 components vector of single-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
- -

Definition at line 15 of file vector_float4.hpp.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00282.html b/tests/OpenGL/package/glm/doc/api/a00282.html deleted file mode 100644 index 38a2d43c..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00282.html +++ /dev/null @@ -1,1101 +0,0 @@ - - - - - - -0.9.9 API documentation: Vector types with precision qualifiers - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
Vector types with precision qualifiers
-
-
- -

Vector types with precision qualifiers which may result in various precision in term of ULPs. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

typedef vec< 2, bool, highp > highp_bvec2
 2 components vector of high qualifier bool numbers. More...
 
typedef vec< 3, bool, highp > highp_bvec3
 3 components vector of high qualifier bool numbers. More...
 
typedef vec< 4, bool, highp > highp_bvec4
 4 components vector of high qualifier bool numbers. More...
 
typedef vec< 2, double, highp > highp_dvec2
 2 components vector of high double-qualifier floating-point numbers. More...
 
typedef vec< 3, double, highp > highp_dvec3
 3 components vector of high double-qualifier floating-point numbers. More...
 
typedef vec< 4, double, highp > highp_dvec4
 4 components vector of high double-qualifier floating-point numbers. More...
 
typedef vec< 2, int, highp > highp_ivec2
 2 components vector of high qualifier signed integer numbers. More...
 
typedef vec< 3, int, highp > highp_ivec3
 3 components vector of high qualifier signed integer numbers. More...
 
typedef vec< 4, int, highp > highp_ivec4
 4 components vector of high qualifier signed integer numbers. More...
 
typedef vec< 2, unsigned int, highp > highp_uvec2
 2 components vector of high qualifier unsigned integer numbers. More...
 
typedef vec< 3, unsigned int, highp > highp_uvec3
 3 components vector of high qualifier unsigned integer numbers. More...
 
typedef vec< 4, unsigned int, highp > highp_uvec4
 4 components vector of high qualifier unsigned integer numbers. More...
 
typedef vec< 2, float, highp > highp_vec2
 2 components vector of high single-qualifier floating-point numbers. More...
 
typedef vec< 3, float, highp > highp_vec3
 3 components vector of high single-qualifier floating-point numbers. More...
 
typedef vec< 4, float, highp > highp_vec4
 4 components vector of high single-qualifier floating-point numbers. More...
 
typedef vec< 2, bool, lowp > lowp_bvec2
 2 components vector of low qualifier bool numbers. More...
 
typedef vec< 3, bool, lowp > lowp_bvec3
 3 components vector of low qualifier bool numbers. More...
 
typedef vec< 4, bool, lowp > lowp_bvec4
 4 components vector of low qualifier bool numbers. More...
 
typedef vec< 2, double, lowp > lowp_dvec2
 2 components vector of low double-qualifier floating-point numbers. More...
 
typedef vec< 3, double, lowp > lowp_dvec3
 3 components vector of low double-qualifier floating-point numbers. More...
 
typedef vec< 4, double, lowp > lowp_dvec4
 4 components vector of low double-qualifier floating-point numbers. More...
 
typedef vec< 2, int, lowp > lowp_ivec2
 2 components vector of low qualifier signed integer numbers. More...
 
typedef vec< 3, int, lowp > lowp_ivec3
 3 components vector of low qualifier signed integer numbers. More...
 
typedef vec< 4, int, lowp > lowp_ivec4
 4 components vector of low qualifier signed integer numbers. More...
 
typedef vec< 2, unsigned int, lowp > lowp_uvec2
 2 components vector of low qualifier unsigned integer numbers. More...
 
typedef vec< 3, unsigned int, lowp > lowp_uvec3
 3 components vector of low qualifier unsigned integer numbers. More...
 
typedef vec< 4, unsigned int, lowp > lowp_uvec4
 4 components vector of low qualifier unsigned integer numbers. More...
 
typedef vec< 2, float, lowp > lowp_vec2
 2 components vector of low single-qualifier floating-point numbers. More...
 
typedef vec< 3, float, lowp > lowp_vec3
 3 components vector of low single-qualifier floating-point numbers. More...
 
typedef vec< 4, float, lowp > lowp_vec4
 4 components vector of low single-qualifier floating-point numbers. More...
 
typedef vec< 2, bool, mediump > mediump_bvec2
 2 components vector of medium qualifier bool numbers. More...
 
typedef vec< 3, bool, mediump > mediump_bvec3
 3 components vector of medium qualifier bool numbers. More...
 
typedef vec< 4, bool, mediump > mediump_bvec4
 4 components vector of medium qualifier bool numbers. More...
 
typedef vec< 2, double, mediump > mediump_dvec2
 2 components vector of medium double-qualifier floating-point numbers. More...
 
typedef vec< 3, double, mediump > mediump_dvec3
 3 components vector of medium double-qualifier floating-point numbers. More...
 
typedef vec< 4, double, mediump > mediump_dvec4
 4 components vector of medium double-qualifier floating-point numbers. More...
 
typedef vec< 2, int, mediump > mediump_ivec2
 2 components vector of medium qualifier signed integer numbers. More...
 
typedef vec< 3, int, mediump > mediump_ivec3
 3 components vector of medium qualifier signed integer numbers. More...
 
typedef vec< 4, int, mediump > mediump_ivec4
 4 components vector of medium qualifier signed integer numbers. More...
 
typedef vec< 2, unsigned int, mediump > mediump_uvec2
 2 components vector of medium qualifier unsigned integer numbers. More...
 
typedef vec< 3, unsigned int, mediump > mediump_uvec3
 3 components vector of medium qualifier unsigned integer numbers. More...
 
typedef vec< 4, unsigned int, mediump > mediump_uvec4
 4 components vector of medium qualifier unsigned integer numbers. More...
 
typedef vec< 2, float, mediump > mediump_vec2
 2 components vector of medium single-qualifier floating-point numbers. More...
 
typedef vec< 3, float, mediump > mediump_vec3
 3 components vector of medium single-qualifier floating-point numbers. More...
 
typedef vec< 4, float, mediump > mediump_vec4
 4 components vector of medium single-qualifier floating-point numbers. More...
 
-

Detailed Description

-

Vector types with precision qualifiers which may result in various precision in term of ULPs.

-

GLSL allows defining qualifiers for particular variables. With OpenGL's GLSL, these qualifiers have no effect; they are there for compatibility, with OpenGL ES's GLSL, these qualifiers do have an effect.

-

C++ has no language equivalent to qualifier qualifiers. So GLM provides the next-best thing: a number of typedefs that use a particular qualifier.

-

None of these types make any guarantees about the actual qualifier used.

-

Typedef Documentation

- -
-
- - - - -
typedef vec< 2, bool, highp > highp_bvec2
-
- -

2 components vector of high qualifier bool numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file vector_bool2_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, bool, highp > highp_bvec3
-
- -

3 components vector of high qualifier bool numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file vector_bool3_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, bool, highp > highp_bvec4
-
- -

4 components vector of high qualifier bool numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file vector_bool4_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, f64, highp > highp_dvec2
-
- -

2 components vector of high double-qualifier floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file vector_double2_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, f64, highp > highp_dvec3
-
- -

3 components vector of high double-qualifier floating-point numbers.

-

There is no guarantee on the actual qualifier.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 17 of file vector_double3_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, f64, highp > highp_dvec4
-
- -

4 components vector of high double-qualifier floating-point numbers.

-

There is no guarantee on the actual qualifier.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 18 of file vector_double4_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i32, highp > highp_ivec2
-
- -

2 components vector of high qualifier signed integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file vector_int2_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i32, highp > highp_ivec3
-
- -

3 components vector of high qualifier signed integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file vector_int3_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i32, highp > highp_ivec4
-
- -

4 components vector of high qualifier signed integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file vector_int4_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u32, highp > highp_uvec2
-
- -

2 components vector of high qualifier unsigned integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file vector_uint2_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u32, highp > highp_uvec3
-
- -

3 components vector of high qualifier unsigned integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file vector_uint3_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u32, highp > highp_uvec4
-
- -

4 components vector of high qualifier unsigned integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file vector_uint4_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, float, highp > highp_vec2
-
- -

2 components vector of high single-qualifier floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file vector_float2_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, float, highp > highp_vec3
-
- -

3 components vector of high single-qualifier floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file vector_float3_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, float, highp > highp_vec4
-
- -

4 components vector of high single-qualifier floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file vector_float4_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, bool, lowp > lowp_bvec2
-
- -

2 components vector of low qualifier bool numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file vector_bool2_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, bool, lowp > lowp_bvec3
-
- -

3 components vector of low qualifier bool numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file vector_bool3_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, bool, lowp > lowp_bvec4
-
- -

4 components vector of low qualifier bool numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file vector_bool4_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, f64, lowp > lowp_dvec2
-
- -

2 components vector of low double-qualifier floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file vector_double2_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, f64, lowp > lowp_dvec3
-
- -

3 components vector of low double-qualifier floating-point numbers.

-

There is no guarantee on the actual qualifier.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 31 of file vector_double3_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, f64, lowp > lowp_dvec4
-
- -

4 components vector of low double-qualifier floating-point numbers.

-

There is no guarantee on the actual qualifier.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 32 of file vector_double4_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i32, lowp > lowp_ivec2
-
- -

2 components vector of low qualifier signed integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file vector_int2_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i32, lowp > lowp_ivec3
-
- -

3 components vector of low qualifier signed integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file vector_int3_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i32, lowp > lowp_ivec4
-
- -

4 components vector of low qualifier signed integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file vector_int4_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u32, lowp > lowp_uvec2
-
- -

2 components vector of low qualifier unsigned integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file vector_uint2_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u32, lowp > lowp_uvec3
-
- -

3 components vector of low qualifier unsigned integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file vector_uint3_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u32, lowp > lowp_uvec4
-
- -

4 components vector of low qualifier unsigned integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file vector_uint4_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, float, lowp > lowp_vec2
-
- -

2 components vector of low single-qualifier floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file vector_float2_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, float, lowp > lowp_vec3
-
- -

3 components vector of low single-qualifier floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file vector_float3_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, float, lowp > lowp_vec4
-
- -

4 components vector of low single-qualifier floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file vector_float4_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, bool, mediump > mediump_bvec2
-
- -

2 components vector of medium qualifier bool numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file vector_bool2_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, bool, mediump > mediump_bvec3
-
- -

3 components vector of medium qualifier bool numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file vector_bool3_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, bool, mediump > mediump_bvec4
-
- -

4 components vector of medium qualifier bool numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file vector_bool4_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, f64, mediump > mediump_dvec2
-
- -

2 components vector of medium double-qualifier floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file vector_double2_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, f64, mediump > mediump_dvec3
-
- -

3 components vector of medium double-qualifier floating-point numbers.

-

There is no guarantee on the actual qualifier.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 24 of file vector_double3_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, f64, mediump > mediump_dvec4
-
- -

4 components vector of medium double-qualifier floating-point numbers.

-

There is no guarantee on the actual qualifier.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 25 of file vector_double4_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i32, mediump > mediump_ivec2
-
- -

2 components vector of medium qualifier signed integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file vector_int2_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i32, mediump > mediump_ivec3
-
- -

3 components vector of medium qualifier signed integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file vector_int3_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i32, mediump > mediump_ivec4
-
- -

4 components vector of medium qualifier signed integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file vector_int4_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u32, mediump > mediump_uvec2
-
- -

2 components vector of medium qualifier unsigned integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file vector_uint2_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u32, mediump > mediump_uvec3
-
- -

3 components vector of medium qualifier unsigned integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file vector_uint3_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u32, mediump > mediump_uvec4
-
- -

4 components vector of medium qualifier unsigned integer numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file vector_uint4_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, float, mediump > mediump_vec2
-
- -

2 components vector of medium single-qualifier floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file vector_float2_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, float, mediump > mediump_vec3
-
- -

3 components vector of medium single-qualifier floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file vector_float3_precision.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, float, mediump > mediump_vec4
-
- -

4 components vector of medium single-qualifier floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file vector_float4_precision.hpp.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00283.html b/tests/OpenGL/package/glm/doc/api/a00283.html deleted file mode 100644 index 117eb823..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00283.html +++ /dev/null @@ -1,563 +0,0 @@ - - - - - - -0.9.9 API documentation: Matrix types - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
Matrix types
-
-
- -

Matrix types of with C columns and R rows where C and R are values between 2 to 4 included. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

typedef mat< 2, 2, double, defaultp > dmat2
 2 columns of 2 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 2, 2, double, defaultp > dmat2x2
 2 columns of 2 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 2, 3, double, defaultp > dmat2x3
 2 columns of 3 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 2, 4, double, defaultp > dmat2x4
 2 columns of 4 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 3, 3, double, defaultp > dmat3
 3 columns of 3 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 3, 2, double, defaultp > dmat3x2
 3 columns of 2 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 3, 3, double, defaultp > dmat3x3
 3 columns of 3 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 3, 4, double, defaultp > dmat3x4
 3 columns of 4 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 4, 4, double, defaultp > dmat4
 4 columns of 4 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 4, 2, double, defaultp > dmat4x2
 4 columns of 2 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 4, 3, double, defaultp > dmat4x3
 4 columns of 3 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 4, 4, double, defaultp > dmat4x4
 4 columns of 4 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 2, 2, float, defaultp > mat2
 2 columns of 2 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 2, 2, float, defaultp > mat2x2
 2 columns of 2 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 2, 3, float, defaultp > mat2x3
 2 columns of 3 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 2, 4, float, defaultp > mat2x4
 2 columns of 4 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 3, 3, float, defaultp > mat3
 3 columns of 3 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 3, 3, float, defaultp > mat3x3
 3 columns of 3 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 3, 4, float, defaultp > mat3x4
 3 columns of 4 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 4, 2, float, defaultp > mat4x2
 4 columns of 2 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 4, 3, float, defaultp > mat4x3
 4 columns of 3 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 4, 4, float, defaultp > mat4x4
 4 columns of 4 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 4, 4, float, defaultp > mat4
 4 columns of 4 components matrix of single-precision floating-point numbers. More...
 
-

Detailed Description

-

Matrix types of with C columns and R rows where C and R are values between 2 to 4 included.

-

These types have exhaustive sets of operators.

-

Typedef Documentation

- -
-
- - - - -
typedef mat< 2, 2, f64, defaultp > dmat2
-
- -

2 columns of 2 components matrix of double-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 20 of file matrix_double2x2.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, double, defaultp > dmat2x2
-
- -

2 columns of 2 components matrix of double-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 15 of file matrix_double2x2.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, double, defaultp > dmat2x3
-
- -

2 columns of 3 components matrix of double-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 15 of file matrix_double2x3.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, double, defaultp > dmat2x4
-
- -

2 columns of 4 components matrix of double-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 15 of file matrix_double2x4.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f64, defaultp > dmat3
-
- -

3 columns of 3 components matrix of double-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 20 of file matrix_double3x3.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, double, defaultp > dmat3x2
-
- -

3 columns of 2 components matrix of double-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 15 of file matrix_double3x2.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, double, defaultp > dmat3x3
-
- -

3 columns of 3 components matrix of double-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 15 of file matrix_double3x3.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, double, defaultp > dmat3x4
-
- -

3 columns of 4 components matrix of double-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 15 of file matrix_double3x4.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f64, defaultp > dmat4
-
- -

4 columns of 4 components matrix of double-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 20 of file matrix_double4x4.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, double, defaultp > dmat4x2
-
- -

4 columns of 2 components matrix of double-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 15 of file matrix_double4x2.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, double, defaultp > dmat4x3
-
- -

4 columns of 3 components matrix of double-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 15 of file matrix_double4x3.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, double, defaultp > dmat4x4
-
- -

4 columns of 4 components matrix of double-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 15 of file matrix_double4x4.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f32, defaultp > mat2
-
- -

2 columns of 2 components matrix of single-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 20 of file matrix_float2x2.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f32, defaultp > mat2x2
-
- -

2 columns of 2 components matrix of single-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 15 of file matrix_float2x2.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, f32, defaultp > mat2x3
-
- -

2 columns of 3 components matrix of single-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 15 of file matrix_float2x3.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, f32, defaultp > mat2x4
-
- -

2 columns of 4 components matrix of single-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 15 of file matrix_float2x4.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f32, defaultp > mat3
-
- -

3 columns of 3 components matrix of single-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 20 of file matrix_float3x3.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f32, defaultp > mat3x3
-
- -

3 columns of 3 components matrix of single-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 15 of file matrix_float3x3.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, f32, defaultp > mat3x4
-
- -

3 columns of 4 components matrix of single-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 15 of file matrix_float3x4.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f32, defaultp > mat4
-
- -

4 columns of 4 components matrix of single-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 20 of file matrix_float4x4.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, f32, defaultp > mat4x2
-
- -

4 columns of 2 components matrix of single-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 15 of file matrix_float4x2.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, f32, defaultp > mat4x3
-
- -

4 columns of 3 components matrix of single-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 15 of file matrix_float4x3.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f32, defaultp > mat4x4
-
- -

4 columns of 4 components matrix of single-precision floating-point numbers.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
- -

Definition at line 15 of file matrix_float4x4.hpp.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00284.html b/tests/OpenGL/package/glm/doc/api/a00284.html deleted file mode 100644 index d18a4466..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00284.html +++ /dev/null @@ -1,1689 +0,0 @@ - - - - - - -0.9.9 API documentation: Matrix types with precision qualifiers - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
Matrix types with precision qualifiers
-
-
- -

Matrix types with precision qualifiers which may result in various precision in term of ULPs. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

typedef mat< 2, 2, double, highp > highp_dmat2
 2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, double, highp > highp_dmat2x2
 2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 3, double, highp > highp_dmat2x3
 2 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 4, double, highp > highp_dmat2x4
 2 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, double, highp > highp_dmat3
 3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 2, double, highp > highp_dmat3x2
 3 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, double, highp > highp_dmat3x3
 3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 4, double, highp > highp_dmat3x4
 3 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, double, highp > highp_dmat4
 4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 2, double, highp > highp_dmat4x2
 4 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 3, double, highp > highp_dmat4x3
 4 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, double, highp > highp_dmat4x4
 4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, float, highp > highp_mat2
 2 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, float, highp > highp_mat2x2
 2 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 3, float, highp > highp_mat2x3
 2 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 4, float, highp > highp_mat2x4
 2 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, float, highp > highp_mat3
 3 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 2, float, highp > highp_mat3x2
 3 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, float, highp > highp_mat3x3
 3 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 4, float, highp > highp_mat3x4
 3 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, float, highp > highp_mat4
 4 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 2, float, highp > highp_mat4x2
 4 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 3, float, highp > highp_mat4x3
 4 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, float, highp > highp_mat4x4
 4 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, double, lowp > lowp_dmat2
 2 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, double, lowp > lowp_dmat2x2
 2 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 3, double, lowp > lowp_dmat2x3
 2 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 4, double, lowp > lowp_dmat2x4
 2 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, double, lowp > lowp_dmat3
 3 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 2, double, lowp > lowp_dmat3x2
 3 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, double, lowp > lowp_dmat3x3
 3 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 4, double, lowp > lowp_dmat3x4
 3 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, double, lowp > lowp_dmat4
 4 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 2, double, lowp > lowp_dmat4x2
 4 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 3, double, lowp > lowp_dmat4x3
 4 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, double, lowp > lowp_dmat4x4
 4 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, float, lowp > lowp_mat2
 2 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, float, lowp > lowp_mat2x2
 2 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 3, float, lowp > lowp_mat2x3
 2 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 4, float, lowp > lowp_mat2x4
 2 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, float, lowp > lowp_mat3
 3 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 2, float, lowp > lowp_mat3x2
 3 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, float, lowp > lowp_mat3x3
 3 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 4, float, lowp > lowp_mat3x4
 3 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, float, lowp > lowp_mat4
 4 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 2, float, lowp > lowp_mat4x2
 4 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 3, float, lowp > lowp_mat4x3
 4 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, float, lowp > lowp_mat4x4
 4 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, double, mediump > mediump_dmat2
 2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, double, mediump > mediump_dmat2x2
 2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 3, double, mediump > mediump_dmat2x3
 2 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 4, double, mediump > mediump_dmat2x4
 2 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, double, mediump > mediump_dmat3
 3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 2, double, mediump > mediump_dmat3x2
 3 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, double, mediump > mediump_dmat3x3
 3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 4, double, mediump > mediump_dmat3x4
 3 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, double, mediump > mediump_dmat4
 4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 2, double, mediump > mediump_dmat4x2
 4 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 3, double, mediump > mediump_dmat4x3
 4 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, double, mediump > mediump_dmat4x4
 4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, float, mediump > mediump_mat2
 2 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, float, mediump > mediump_mat2x2
 2 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 3, float, mediump > mediump_mat2x3
 2 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 4, float, mediump > mediump_mat2x4
 2 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, float, mediump > mediump_mat3
 3 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 2, float, mediump > mediump_mat3x2
 3 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, float, mediump > mediump_mat3x3
 3 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 4, float, mediump > mediump_mat3x4
 3 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, float, mediump > mediump_mat4
 4 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 2, float, mediump > mediump_mat4x2
 4 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 3, float, mediump > mediump_mat4x3
 4 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, float, mediump > mediump_mat4x4
 4 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
-

Detailed Description

-

Matrix types with precision qualifiers which may result in various precision in term of ULPs.

-

GLSL allows defining qualifiers for particular variables. With OpenGL's GLSL, these qualifiers have no effect; they are there for compatibility, with OpenGL ES's GLSL, these qualifiers do have an effect.

-

C++ has no language equivalent to qualifier qualifiers. So GLM provides the next-best thing: a number of typedefs that use a particular qualifier.

-

None of these types make any guarantees about the actual qualifier used.

-

Typedef Documentation

- -
-
- - - - -
typedef mat< 2, 2, f64, highp > highp_dmat2
-
- -

2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file matrix_double2x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, double, highp > highp_dmat2x2
-
- -

2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 46 of file matrix_double2x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, double, highp > highp_dmat2x3
-
- -

2 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file matrix_double2x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, double, highp > highp_dmat2x4
-
- -

2 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file matrix_double2x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f64, highp > highp_dmat3
-
- -

3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file matrix_double3x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, double, highp > highp_dmat3x2
-
- -

3 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file matrix_double3x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, double, highp > highp_dmat3x3
-
- -

3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 46 of file matrix_double3x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, double, highp > highp_dmat3x4
-
- -

3 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file matrix_double3x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f64, highp > highp_dmat4
-
- -

4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file matrix_double4x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, double, highp > highp_dmat4x2
-
- -

4 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file matrix_double4x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, double, highp > highp_dmat4x3
-
- -

4 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file matrix_double4x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, double, highp > highp_dmat4x4
-
- -

4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 46 of file matrix_double4x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f32, highp > highp_mat2
-
- -

2 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file matrix_float2x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f32, highp > highp_mat2x2
-
- -

2 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 46 of file matrix_float2x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, f32, highp > highp_mat2x3
-
- -

2 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file matrix_float2x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, f32, highp > highp_mat2x4
-
- -

2 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file matrix_float2x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f32, highp > highp_mat3
-
- -

3 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file matrix_float3x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, f32, highp > highp_mat3x2
-
- -

3 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file matrix_float3x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f32, highp > highp_mat3x3
-
- -

3 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 46 of file matrix_float3x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, f32, highp > highp_mat3x4
-
- -

3 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file matrix_float3x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f32, highp > highp_mat4
-
- -

4 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file matrix_float4x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, f32, highp > highp_mat4x2
-
- -

4 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file matrix_float4x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, f32, highp > highp_mat4x3
-
- -

4 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 28 of file matrix_float4x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f32, highp > highp_mat4x4
-
- -

4 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 46 of file matrix_float4x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f64, lowp > lowp_dmat2
-
- -

2 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file matrix_double2x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, double, lowp > lowp_dmat2x2
-
- -

2 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 34 of file matrix_double2x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, double, lowp > lowp_dmat2x3
-
- -

2 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file matrix_double2x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, double, lowp > lowp_dmat2x4
-
- -

2 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file matrix_double2x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f64, lowp > lowp_dmat3
-
- -

3 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file matrix_double3x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, double, lowp > lowp_dmat3x2
-
- -

3 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file matrix_double3x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, double, lowp > lowp_dmat3x3
-
- -

3 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 34 of file matrix_double3x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, double, lowp > lowp_dmat3x4
-
- -

3 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file matrix_double3x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f64, lowp > lowp_dmat4
-
- -

4 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file matrix_double4x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, double, lowp > lowp_dmat4x2
-
- -

4 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file matrix_double4x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, double, lowp > lowp_dmat4x3
-
- -

4 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file matrix_double4x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, double, lowp > lowp_dmat4x4
-
- -

4 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 34 of file matrix_double4x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f32, lowp > lowp_mat2
-
- -

2 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file matrix_float2x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f32, lowp > lowp_mat2x2
-
- -

2 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 34 of file matrix_float2x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, f32, lowp > lowp_mat2x3
-
- -

2 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file matrix_float2x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, f32, lowp > lowp_mat2x4
-
- -

2 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file matrix_float2x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f32, lowp > lowp_mat3
-
- -

3 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file matrix_float3x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, f32, lowp > lowp_mat3x2
-
- -

3 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file matrix_float3x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f32, lowp > lowp_mat3x3
-
- -

3 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 34 of file matrix_float3x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, f32, lowp > lowp_mat3x4
-
- -

3 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file matrix_float3x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f32, lowp > lowp_mat4
-
- -

4 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file matrix_float4x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, f32, lowp > lowp_mat4x2
-
- -

4 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file matrix_float4x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, f32, lowp > lowp_mat4x3
-
- -

4 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 16 of file matrix_float4x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f32, lowp > lowp_mat4x4
-
- -

4 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 34 of file matrix_float4x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f64, mediump > mediump_dmat2
-
- -

2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file matrix_double2x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, double, mediump > mediump_dmat2x2
-
- -

2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 40 of file matrix_double2x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, double, mediump > mediump_dmat2x3
-
- -

2 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file matrix_double2x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, double, mediump > mediump_dmat2x4
-
- -

2 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file matrix_double2x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f64, mediump > mediump_dmat3
-
- -

3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file matrix_double3x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, double, mediump > mediump_dmat3x2
-
- -

3 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file matrix_double3x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, double, mediump > mediump_dmat3x3
-
- -

3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 40 of file matrix_double3x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, double, mediump > mediump_dmat3x4
-
- -

3 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file matrix_double3x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f64, mediump > mediump_dmat4
-
- -

4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file matrix_double4x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, double, mediump > mediump_dmat4x2
-
- -

4 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file matrix_double4x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, double, mediump > mediump_dmat4x3
-
- -

4 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file matrix_double4x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, double, mediump > mediump_dmat4x4
-
- -

4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 40 of file matrix_double4x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f32, mediump > mediump_mat2
-
- -

2 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file matrix_float2x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f32, mediump > mediump_mat2x2
-
- -

2 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 40 of file matrix_float2x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, f32, mediump > mediump_mat2x3
-
- -

2 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file matrix_float2x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, f32, mediump > mediump_mat2x4
-
- -

2 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file matrix_float2x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f32, mediump > mediump_mat3
-
- -

3 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file matrix_float3x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, f32, mediump > mediump_mat3x2
-
- -

3 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file matrix_float3x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f32, mediump > mediump_mat3x3
-
- -

3 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 40 of file matrix_float3x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, f32, mediump > mediump_mat3x4
-
- -

3 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file matrix_float3x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f32, mediump > mediump_mat4
-
- -

4 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file matrix_float4x4_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, f32, mediump > mediump_mat4x2
-
- -

4 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file matrix_float4x2_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, f32, mediump > mediump_mat4x3
-
- -

4 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 22 of file matrix_float4x3_precision.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f32, mediump > mediump_mat4x4
-
- -

4 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

-
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
-
-GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
- -

Definition at line 40 of file matrix_float4x4_precision.hpp.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00285.html b/tests/OpenGL/package/glm/doc/api/a00285.html deleted file mode 100644 index b9333026..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00285.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - -0.9.9 API documentation: Stable extensions - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
Stable extensions
-
-
- -

Additional features not specified by GLSL specification. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Modules

 GLM_EXT_matrix_clip_space
 Defines functions that generate clip space transformation matrices.
 
 GLM_EXT_matrix_common
 Defines functions for common matrix operations.
 
 GLM_EXT_matrix_projection
 Functions that generate common projection transformation matrices.
 
 GLM_EXT_matrix_relational
 Exposes comparison functions for matrix types that take a user defined epsilon values.
 
 GLM_EXT_matrix_transform
 Defines functions that generate common transformation matrices.
 
 GLM_EXT_quaternion_common
 Provides common functions for quaternion types.
 
 GLM_EXT_quaternion_double
 Exposes double-precision floating point quaternion type.
 
 GLM_EXT_quaternion_double_precision
 Exposes double-precision floating point quaternion type with various precision in term of ULPs.
 
 GLM_EXT_quaternion_exponential
 Provides exponential functions for quaternion types.
 
 GLM_EXT_quaternion_float
 Exposes single-precision floating point quaternion type.
 
 GLM_EXT_quaternion_float_precision
 Exposes single-precision floating point quaternion type with various precision in term of ULPs.
 
 GLM_EXT_quaternion_geometric
 Provides geometric functions for quaternion types.
 
 GLM_EXT_quaternion_relational
 Exposes comparison functions for quaternion types that take a user defined epsilon values.
 
 GLM_EXT_quaternion_transform
 Provides transformation functions for quaternion types.
 
 GLM_EXT_quaternion_trigonometric
 Provides trigonometric functions for quaternion types.
 
 GLM_EXT_scalar_common
 Exposes min and max functions for 3 to 4 scalar parameters.
 
 GLM_EXT_scalar_constants
 Provides a list of constants and precomputed useful values.
 
 GLM_EXT_scalar_int_sized
 Exposes sized signed integer scalar types.
 
 GLM_EXT_scalar_integer
 Include <glm/ext/scalar_integer.hpp> to use the features of this extension.
 
 GLM_EXT_scalar_relational
 Exposes comparison functions for scalar types that take a user defined epsilon values.
 
 GLM_EXT_scalar_uint_sized
 Exposes sized unsigned integer scalar types.
 
 GLM_EXT_scalar_ulp
 Allow the measurement of the accuracy of a function against a reference implementation.
 
 GLM_EXT_vector_bool1
 Exposes bvec1 vector type.
 
 GLM_EXT_vector_bool1_precision
 Exposes highp_bvec1, mediump_bvec1 and lowp_bvec1 types.
 
 GLM_EXT_vector_common
 Exposes min and max functions for 3 to 4 vector parameters.
 
 GLM_EXT_vector_double1
 Exposes double-precision floating point vector type with one component.
 
 GLM_EXT_vector_double1_precision
 Exposes highp_dvec1, mediump_dvec1 and lowp_dvec1 types.
 
 GLM_EXT_vector_float1
 Exposes single-precision floating point vector type with one component.
 
 GLM_EXT_vector_float1_precision
 Exposes highp_vec1, mediump_vec1 and lowp_vec1 types.
 
 GLM_EXT_vector_int1
 Exposes ivec1 vector type.
 
 GLM_EXT_vector_int1_precision
 Exposes highp_ivec1, mediump_ivec1 and lowp_ivec1 types.
 
 GLM_EXT_vector_integer
 Include <glm/ext/vector_integer.hpp> to use the features of this extension.
 
 GLM_EXT_vector_relational
 Exposes comparison functions for vector types that take a user defined epsilon values.
 
 GLM_EXT_vector_uint1
 Exposes uvec1 vector type.
 
 GLM_EXT_vector_uint1_precision
 Exposes highp_uvec1, mediump_uvec1 and lowp_uvec1 types.
 
 GLM_EXT_vector_ulp
 Allow the measurement of the accuracy of a function against a reference implementation.
 
-

Detailed Description

-

Additional features not specified by GLSL specification.

-

EXT extensions are fully tested and documented.

-

Even if it's highly unrecommended, it's possible to include all the extensions at once by including <glm/ext.hpp>. Otherwise, each extension needs to be included a specific file.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00286.html b/tests/OpenGL/package/glm/doc/api/a00286.html deleted file mode 100644 index 262daad5..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00286.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - -0.9.9 API documentation: Recommended extensions - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
Recommended extensions
-
-
- -

Additional features not specified by GLSL specification. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Modules

 GLM_GTC_bitfield
 Include <glm/gtc/bitfield.hpp> to use the features of this extension.
 
 GLM_GTC_color_space
 Include <glm/gtc/color_space.hpp> to use the features of this extension.
 
 GLM_GTC_constants
 Include <glm/gtc/constants.hpp> to use the features of this extension.
 
 GLM_GTC_epsilon
 Include <glm/gtc/epsilon.hpp> to use the features of this extension.
 
 GLM_GTC_integer
 Include <glm/gtc/integer.hpp> to use the features of this extension.
 
 GLM_GTC_matrix_access
 Include <glm/gtc/matrix_access.hpp> to use the features of this extension.
 
 GLM_GTC_matrix_integer
 Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
 
 GLM_GTC_matrix_inverse
 Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.
 
 GLM_GTC_matrix_transform
 Include <glm/gtc/matrix_transform.hpp> to use the features of this extension.
 
 GLM_GTC_noise
 Include <glm/gtc/noise.hpp> to use the features of this extension.
 
 GLM_GTC_packing
 Include <glm/gtc/packing.hpp> to use the features of this extension.
 
 GLM_GTC_quaternion
 Include <glm/gtc/quaternion.hpp> to use the features of this extension.
 
 GLM_GTC_random
 Include <glm/gtc/random.hpp> to use the features of this extension.
 
 GLM_GTC_reciprocal
 Include <glm/gtc/reciprocal.hpp> to use the features of this extension.
 
 GLM_GTC_round
 Include <glm/gtc/round.hpp> to use the features of this extension.
 
 GLM_GTC_type_aligned
 Include <glm/gtc/type_aligned.hpp> to use the features of this extension.
 
 GLM_GTC_type_precision
 Include <glm/gtc/type_precision.hpp> to use the features of this extension.
 
 GLM_GTC_type_ptr
 Include <glm/gtc/type_ptr.hpp> to use the features of this extension.
 
 GLM_GTC_ulp
 Include <glm/gtc/ulp.hpp> to use the features of this extension.
 
 GLM_GTC_vec1
 Include <glm/gtc/vec1.hpp> to use the features of this extension.
 
-

Detailed Description

-

Additional features not specified by GLSL specification.

-

GTC extensions aim to be stable with tests and documentation.

-

Even if it's highly unrecommended, it's possible to include all the extensions at once by including <glm/ext.hpp>. Otherwise, each extension needs to be included a specific file.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00287.html b/tests/OpenGL/package/glm/doc/api/a00287.html deleted file mode 100644 index 765dc34e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00287.html +++ /dev/null @@ -1,289 +0,0 @@ - - - - - - -0.9.9 API documentation: Experimental extensions - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
Experimental extensions
-
-
- -

Experimental features not specified by GLSL specification. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Modules

 GLM_GTX_associated_min_max
 Include <glm/gtx/associated_min_max.hpp> to use the features of this extension.
 
 GLM_GTX_bit
 Include <glm/gtx/bit.hpp> to use the features of this extension.
 
 GLM_GTX_closest_point
 Include <glm/gtx/closest_point.hpp> to use the features of this extension.
 
 GLM_GTX_color_encoding
 Include <glm/gtx/color_encoding.hpp> to use the features of this extension.
 
 GLM_GTX_color_space
 Include <glm/gtx/color_space.hpp> to use the features of this extension.
 
 GLM_GTX_color_space_YCoCg
 Include <glm/gtx/color_space_YCoCg.hpp> to use the features of this extension.
 
 GLM_GTX_common
 Include <glm/gtx/common.hpp> to use the features of this extension.
 
 GLM_GTX_compatibility
 Include <glm/gtx/compatibility.hpp> to use the features of this extension.
 
 GLM_GTX_component_wise
 Include <glm/gtx/component_wise.hpp> to use the features of this extension.
 
 GLM_GTX_dual_quaternion
 Include <glm/gtx/dual_quaternion.hpp> to use the features of this extension.
 
 GLM_GTX_easing
 Include <glm/gtx/easing.hpp> to use the features of this extension.
 
 GLM_GTX_euler_angles
 Include <glm/gtx/euler_angles.hpp> to use the features of this extension.
 
 GLM_GTX_extend
 Include <glm/gtx/extend.hpp> to use the features of this extension.
 
 GLM_GTX_extented_min_max
 Include <glm/gtx/extented_min_max.hpp> to use the features of this extension.
 
 GLM_GTX_exterior_product
 Include <glm/gtx/exterior_product.hpp> to use the features of this extension.
 
 GLM_GTX_fast_exponential
 Include <glm/gtx/fast_exponential.hpp> to use the features of this extension.
 
 GLM_GTX_fast_square_root
 Include <glm/gtx/fast_square_root.hpp> to use the features of this extension.
 
 GLM_GTX_fast_trigonometry
 Include <glm/gtx/fast_trigonometry.hpp> to use the features of this extension.
 
 GLM_GTX_functions
 Include <glm/gtx/functions.hpp> to use the features of this extension.
 
 GLM_GTX_gradient_paint
 Include <glm/gtx/gradient_paint.hpp> to use the features of this extension.
 
 GLM_GTX_handed_coordinate_space
 Include <glm/gtx/handed_coordinate_system.hpp> to use the features of this extension.
 
 GLM_GTX_hash
 Include <glm/gtx/hash.hpp> to use the features of this extension.
 
 GLM_GTX_integer
 Include <glm/gtx/integer.hpp> to use the features of this extension.
 
 GLM_GTX_intersect
 Include <glm/gtx/intersect.hpp> to use the features of this extension.
 
 GLM_GTX_io
 Include <glm/gtx/io.hpp> to use the features of this extension.
 
 GLM_GTX_log_base
 Include <glm/gtx/log_base.hpp> to use the features of this extension.
 
 GLM_GTX_matrix_cross_product
 Include <glm/gtx/matrix_cross_product.hpp> to use the features of this extension.
 
 GLM_GTX_matrix_decompose
 Include <glm/gtx/matrix_decompose.hpp> to use the features of this extension.
 
 GLM_GTX_matrix_factorisation
 Include <glm/gtx/matrix_factorisation.hpp> to use the features of this extension.
 
 GLM_GTX_matrix_interpolation
 Include <glm/gtx/matrix_interpolation.hpp> to use the features of this extension.
 
 GLM_GTX_matrix_major_storage
 Include <glm/gtx/matrix_major_storage.hpp> to use the features of this extension.
 
 GLM_GTX_matrix_operation
 Include <glm/gtx/matrix_operation.hpp> to use the features of this extension.
 
 GLM_GTX_matrix_query
 Include <glm/gtx/matrix_query.hpp> to use the features of this extension.
 
 GLM_GTX_matrix_transform_2d
 Include <glm/gtx/matrix_transform_2d.hpp> to use the features of this extension.
 
 GLM_GTX_mixed_producte
 Include <glm/gtx/mixed_product.hpp> to use the features of this extension.
 
 GLM_GTX_norm
 Include <glm/gtx/norm.hpp> to use the features of this extension.
 
 GLM_GTX_normal
 Include <glm/gtx/normal.hpp> to use the features of this extension.
 
 GLM_GTX_normalize_dot
 Include <glm/gtx/normalized_dot.hpp> to use the features of this extension.
 
 GLM_GTX_number_precision
 Include <glm/gtx/number_precision.hpp> to use the features of this extension.
 
 GLM_GTX_optimum_pow
 Include <glm/gtx/optimum_pow.hpp> to use the features of this extension.
 
 GLM_GTX_orthonormalize
 Include <glm/gtx/orthonormalize.hpp> to use the features of this extension.
 
 GLM_GTX_perpendicular
 Include <glm/gtx/perpendicular.hpp> to use the features of this extension.
 
 GLM_GTX_polar_coordinates
 Include <glm/gtx/polar_coordinates.hpp> to use the features of this extension.
 
 GLM_GTX_projection
 Include <glm/gtx/projection.hpp> to use the features of this extension.
 
 GLM_GTX_quaternion
 Include <glm/gtx/quaternion.hpp> to use the features of this extension.
 
 GLM_GTX_range
 Include <glm/gtx/range.hpp> to use the features of this extension.
 
 GLM_GTX_raw_data
 Include <glm/gtx/raw_data.hpp> to use the features of this extension.
 
 GLM_GTX_rotate_normalized_axis
 Include <glm/gtx/rotate_normalized_axis.hpp> to use the features of this extension.
 
 GLM_GTX_rotate_vector
 Include <glm/gtx/rotate_vector.hpp> to use the features of this extension.
 
 GLM_GTX_scalar_relational
 Include <glm/gtx/scalar_relational.hpp> to use the features of this extension.
 
 GLM_GTX_spline
 Include <glm/gtx/spline.hpp> to use the features of this extension.
 
 GLM_GTX_std_based_type
 Include <glm/gtx/std_based_type.hpp> to use the features of this extension.
 
 GLM_GTX_string_cast
 Include <glm/gtx/string_cast.hpp> to use the features of this extension.
 
 GLM_GTX_texture
 Include <glm/gtx/texture.hpp> to use the features of this extension.
 
 GLM_GTX_transform
 Include <glm/gtx/transform.hpp> to use the features of this extension.
 
 GLM_GTX_transform2
 Include <glm/gtx/transform2.hpp> to use the features of this extension.
 
 GLM_GTX_type_aligned
 Include <glm/gtx/type_aligned.hpp> to use the features of this extension.
 
 GLM_GTX_type_trait
 Include <glm/gtx/type_trait.hpp> to use the features of this extension.
 
 GLM_GTX_vec_swizzle
 Include <glm/gtx/vec_swizzle.hpp> to use the features of this extension.
 
 GLM_GTX_vector_angle
 Include <glm/gtx/vector_angle.hpp> to use the features of this extension.
 
 GLM_GTX_vector_query
 Include <glm/gtx/vector_query.hpp> to use the features of this extension.
 
 GLM_GTX_wrap
 Include <glm/gtx/wrap.hpp> to use the features of this extension.
 
-

Detailed Description

-

Experimental features not specified by GLSL specification.

-

Experimental extensions are useful functions and types, but the development of their API and functionality is not necessarily stable. They can change substantially between versions. Backwards compatibility is not much of an issue for them.

-

Even if it's highly unrecommended, it's possible to include all the extensions at once by including <glm/ext.hpp>. Otherwise, each extension needs to be included a specific file.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00288.html b/tests/OpenGL/package/glm/doc/api/a00288.html deleted file mode 100644 index ebebbdc9..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00288.html +++ /dev/null @@ -1,1228 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_bitfield - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTC_bitfield
-
-
- -

Include <glm/gtc/bitfield.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtc/bitfield.hpp> to use the features of this extension.

-

Allow to perform bit operations on integer values

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL glm::u8vec2 glm::bitfieldDeinterleave (glm::uint16 x)
-
- -

Deinterleaves the bits of x.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL glm::u16vec2 glm::bitfieldDeinterleave (glm::uint32 x)
-
- -

Deinterleaves the bits of x.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL glm::u32vec2 glm::bitfieldDeinterleave (glm::uint64 x)
-
- -

Deinterleaves the bits of x.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genIUType glm::bitfieldFillOne (genIUType Value,
int FirstBit,
int BitCount 
)
-
- -

Set to 1 a range of bits.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::bitfieldFillOne (vec< L, T, Q > const & Value,
int FirstBit,
int BitCount 
)
-
- -

Set to 1 a range of bits.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned and unsigned integer scalar types
QValue from qualifier enum
-
-
-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genIUType glm::bitfieldFillZero (genIUType Value,
int FirstBit,
int BitCount 
)
-
- -

Set to 0 a range of bits.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::bitfieldFillZero (vec< L, T, Q > const & Value,
int FirstBit,
int BitCount 
)
-
- -

Set to 0 a range of bits.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned and unsigned integer scalar types
QValue from qualifier enum
-
-
-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL int16 glm::bitfieldInterleave (int8 x,
int8 y 
)
-
- -

Interleaves the bits of x and y.

-

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL uint16 glm::bitfieldInterleave (uint8 x,
uint8 y 
)
-
- -

Interleaves the bits of x and y.

-

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint16 glm::bitfieldInterleave (u8vec2 const & v)
-
- -

Interleaves the bits of x and y.

-

The first bit is the first bit of v.x followed by the first bit of v.y. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL int32 glm::bitfieldInterleave (int16 x,
int16 y 
)
-
- -

Interleaves the bits of x and y.

-

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL uint32 glm::bitfieldInterleave (uint16 x,
uint16 y 
)
-
- -

Interleaves the bits of x and y.

-

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint32 glm::bitfieldInterleave (u16vec2 const & v)
-
- -

Interleaves the bits of x and y.

-

The first bit is the first bit of v.x followed by the first bit of v.y. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL int64 glm::bitfieldInterleave (int32 x,
int32 y 
)
-
- -

Interleaves the bits of x and y.

-

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL uint64 glm::bitfieldInterleave (uint32 x,
uint32 y 
)
-
- -

Interleaves the bits of x and y.

-

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint64 glm::bitfieldInterleave (u32vec2 const & v)
-
- -

Interleaves the bits of x and y.

-

The first bit is the first bit of v.x followed by the first bit of v.y. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL int32 glm::bitfieldInterleave (int8 x,
int8 y,
int8 z 
)
-
- -

Interleaves the bits of x, y and z.

-

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL uint32 glm::bitfieldInterleave (uint8 x,
uint8 y,
uint8 z 
)
-
- -

Interleaves the bits of x, y and z.

-

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL int64 glm::bitfieldInterleave (int16 x,
int16 y,
int16 z 
)
-
- -

Interleaves the bits of x, y and z.

-

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL uint64 glm::bitfieldInterleave (uint16 x,
uint16 y,
uint16 z 
)
-
- -

Interleaves the bits of x, y and z.

-

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL int64 glm::bitfieldInterleave (int32 x,
int32 y,
int32 z 
)
-
- -

Interleaves the bits of x, y and z.

-

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL uint64 glm::bitfieldInterleave (uint32 x,
uint32 y,
uint32 z 
)
-
- -

Interleaves the bits of x, y and z.

-

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL int32 glm::bitfieldInterleave (int8 x,
int8 y,
int8 z,
int8 w 
)
-
- -

Interleaves the bits of x, y, z and w.

-

The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL uint32 glm::bitfieldInterleave (uint8 x,
uint8 y,
uint8 z,
uint8 w 
)
-
- -

Interleaves the bits of x, y, z and w.

-

The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL int64 glm::bitfieldInterleave (int16 x,
int16 y,
int16 z,
int16 w 
)
-
- -

Interleaves the bits of x, y, z and w.

-

The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL uint64 glm::bitfieldInterleave (uint16 x,
uint16 y,
uint16 z,
uint16 w 
)
-
- -

Interleaves the bits of x, y, z and w.

-

The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w. The other bits are interleaved following the previous sequence.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genIUType glm::bitfieldRotateLeft (genIUType In,
int Shift 
)
-
- -

Rotate all bits to the left.

-

All the bits dropped in the left side are inserted back on the right side.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::bitfieldRotateLeft (vec< L, T, Q > const & In,
int Shift 
)
-
- -

Rotate all bits to the left.

-

All the bits dropped in the left side are inserted back on the right side.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned and unsigned integer scalar types
QValue from qualifier enum
-
-
-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genIUType glm::bitfieldRotateRight (genIUType In,
int Shift 
)
-
- -

Rotate all bits to the right.

-

All the bits dropped in the right side are inserted back on the left side.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::bitfieldRotateRight (vec< L, T, Q > const & In,
int Shift 
)
-
- -

Rotate all bits to the right.

-

All the bits dropped in the right side are inserted back on the left side.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned and unsigned integer scalar types
QValue from qualifier enum
-
-
-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genIUType glm::mask (genIUType Bits)
-
- -

Build a mask of 'count' bits.

-
See also
GLM_GTC_bitfield
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::mask (vec< L, T, Q > const & v)
-
- -

Build a mask of 'count' bits.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned and unsigned integer scalar types
QValue from qualifier enum
-
-
-
See also
GLM_GTC_bitfield
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00289.html b/tests/OpenGL/package/glm/doc/api/a00289.html deleted file mode 100644 index 29e66588..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00289.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_color_space - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTC_color_space
-
-
- -

Include <glm/gtc/color_space.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - -

-Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > convertLinearToSRGB (vec< L, T, Q > const &ColorLinear)
 Convert a linear color to sRGB color using a standard gamma correction. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > convertLinearToSRGB (vec< L, T, Q > const &ColorLinear, T Gamma)
 Convert a linear color to sRGB color using a custom gamma correction. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > convertSRGBToLinear (vec< L, T, Q > const &ColorSRGB)
 Convert a sRGB color to linear color using a standard gamma correction. More...
 
-template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > convertSRGBToLinear (vec< L, T, Q > const &ColorSRGB, T Gamma)
 Convert a sRGB color to linear color using a custom gamma correction.
 
-

Detailed Description

-

Include <glm/gtc/color_space.hpp> to use the features of this extension.

-

Allow to perform bit operations on integer values

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::convertLinearToSRGB (vec< L, T, Q > const & ColorLinear)
-
- -

Convert a linear color to sRGB color using a standard gamma correction.

-

IEC 61966-2-1:1999 / Rec. 709 specification https://www.w3.org/Graphics/Color/srgb

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::convertLinearToSRGB (vec< L, T, Q > const & ColorLinear,
Gamma 
)
-
- -

Convert a linear color to sRGB color using a custom gamma correction.

-

IEC 61966-2-1:1999 / Rec. 709 specification https://www.w3.org/Graphics/Color/srgb

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::convertSRGBToLinear (vec< L, T, Q > const & ColorSRGB)
-
- -

Convert a sRGB color to linear color using a standard gamma correction.

-

IEC 61966-2-1:1999 / Rec. 709 specification https://www.w3.org/Graphics/Color/srgb

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00290.html b/tests/OpenGL/package/glm/doc/api/a00290.html deleted file mode 100644 index f4bafa15..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00290.html +++ /dev/null @@ -1,697 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_constants - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTC_constants
-
-
- -

Include <glm/gtc/constants.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtc/constants.hpp> to use the features of this extension.

-

Provide a list of constants and precomputed useful values.

-

Function Documentation

- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::e ()
-
- -

Return e constant.

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::euler ()
-
- -

Return Euler's constant.

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::four_over_pi ()
-
- -

Return 4 / pi.

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::golden_ratio ()
-
- -

Return the golden ratio constant.

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::half_pi ()
-
- -

Return pi / 2.

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::ln_ln_two ()
-
- -

Return ln(ln(2)).

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::ln_ten ()
-
- -

Return ln(10).

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::ln_two ()
-
- -

Return ln(2).

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::one ()
-
- -

Return 1.

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::one_over_pi ()
-
- -

Return 1 / pi.

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::one_over_root_two ()
-
- -

Return 1 / sqrt(2).

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::one_over_two_pi ()
-
- -

Return 1 / (pi * 2).

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::quarter_pi ()
-
- -

Return pi / 4.

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::root_five ()
-
- -

Return sqrt(5).

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::root_half_pi ()
-
- -

Return sqrt(pi / 2).

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::root_ln_four ()
-
- -

Return sqrt(ln(4)).

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::root_pi ()
-
- -

Return square root of pi.

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::root_three ()
-
- -

Return sqrt(3).

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::root_two ()
-
- -

Return sqrt(2).

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::root_two_pi ()
-
- -

Return sqrt(2 * pi).

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::third ()
-
- -

Return 1 / 3.

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::three_over_two_pi ()
-
- -

Return pi / 2 * 3.

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::two_over_pi ()
-
- -

Return 2 / pi.

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::two_over_root_pi ()
-
- -

Return 2 / sqrt(pi).

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::two_pi ()
-
- -

Return pi * 2.

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::two_thirds ()
-
- -

Return 2 / 3.

-
See also
GLM_GTC_constants
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::zero ()
-
- -

Return 0.

-
See also
GLM_GTC_constants
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00291.html b/tests/OpenGL/package/glm/doc/api/a00291.html deleted file mode 100644 index 8a951ece..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00291.html +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_epsilon - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTC_epsilon
-
-
- -

Include <glm/gtc/epsilon.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtc/epsilon.hpp> to use the features of this extension.

-

Comparison functions for a user defined epsilon values.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, bool, Q> glm::epsilonEqual (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
T const & epsilon 
)
-
- -

Returns the component-wise comparison of |x - y| < epsilon.

-

True if this expression is satisfied.

-
See also
GLM_GTC_epsilon
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::epsilonEqual (genType const & x,
genType const & y,
genType const & epsilon 
)
-
- -

Returns the component-wise comparison of |x - y| < epsilon.

-

True if this expression is satisfied.

-
See also
GLM_GTC_epsilon
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, bool, Q> glm::epsilonNotEqual (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
T const & epsilon 
)
-
- -

Returns the component-wise comparison of |x - y| < epsilon.

-

True if this expression is not satisfied.

-
See also
GLM_GTC_epsilon
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::epsilonNotEqual (genType const & x,
genType const & y,
genType const & epsilon 
)
-
- -

Returns the component-wise comparison of |x - y| >= epsilon.

-

True if this expression is not satisfied.

-
See also
GLM_GTC_epsilon
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00292.html b/tests/OpenGL/package/glm/doc/api/a00292.html deleted file mode 100644 index 14ee5af2..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00292.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_integer - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTC_integer
-
-
- -

Include <glm/gtc/integer.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - -

-Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int, Q > iround (vec< L, T, Q > const &x)
 Returns a value equal to the nearest integer to x. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType log2 (genIUType x)
 Returns the log2 of x for integer values. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, uint, Q > uround (vec< L, T, Q > const &x)
 Returns a value equal to the nearest integer to x. More...
 
-

Detailed Description

-

Include <glm/gtc/integer.hpp> to use the features of this extension.

-

Allow to perform bit operations on integer values

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, int, Q> glm::iround (vec< L, T, Q > const & x)
-
- -

Returns a value equal to the nearest integer to x.

-

The fraction 0.5 will round in a direction chosen by the implementation, presumably the direction that is fastest.

-
Parameters
- - -
xThe values of the argument must be greater or equal to zero.
-
-
-
Template Parameters
- - -
Tfloating point scalar types.
-
-
-
See also
GLSL round man page
-
-GLM_GTC_integer
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genIUType glm::log2 (genIUType x)
-
- -

Returns the log2 of x for integer values.

-

Usefull to compute mipmap count from the texture size.

See also
GLM_GTC_integer
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, uint, Q> glm::uround (vec< L, T, Q > const & x)
-
- -

Returns a value equal to the nearest integer to x.

-

The fraction 0.5 will round in a direction chosen by the implementation, presumably the direction that is fastest.

-
Parameters
- - -
xThe values of the argument must be greater or equal to zero.
-
-
-
Template Parameters
- - -
Tfloating point scalar types.
-
-
-
See also
GLSL round man page
-
-GLM_GTC_integer
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00293.html b/tests/OpenGL/package/glm/doc/api/a00293.html deleted file mode 100644 index b8f3c844..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00293.html +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_matrix_access - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTC_matrix_access
-
-
- -

Include <glm/gtc/matrix_access.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtc/matrix_access.hpp> to use the features of this extension.

-

Defines functions to access rows or columns of a matrix easily.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType::col_type glm::column (genType const & m,
length_t index 
)
-
- -

Get a specific column of a matrix.

-
See also
GLM_GTC_matrix_access
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::column (genType const & m,
length_t index,
typename genType::col_type const & x 
)
-
- -

Set a specific column to a matrix.

-
See also
GLM_GTC_matrix_access
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType::row_type glm::row (genType const & m,
length_t index 
)
-
- -

Get a specific row of a matrix.

-
See also
GLM_GTC_matrix_access
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::row (genType const & m,
length_t index,
typename genType::row_type const & x 
)
-
- -

Set a specific row to a matrix.

-
See also
GLM_GTC_matrix_access
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00294.html b/tests/OpenGL/package/glm/doc/api/a00294.html deleted file mode 100644 index fc333a60..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00294.html +++ /dev/null @@ -1,2023 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_matrix_integer - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTC_matrix_integer
-
-
- -

Include <glm/gtc/matrix_integer.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

typedef mat< 2, 2, int, highp > highp_imat2
 High-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int, highp > highp_imat2x2
 High-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 2, 3, int, highp > highp_imat2x3
 High-qualifier signed integer 2x3 matrix. More...
 
typedef mat< 2, 4, int, highp > highp_imat2x4
 High-qualifier signed integer 2x4 matrix. More...
 
typedef mat< 3, 3, int, highp > highp_imat3
 High-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 3, 2, int, highp > highp_imat3x2
 High-qualifier signed integer 3x2 matrix. More...
 
typedef mat< 3, 3, int, highp > highp_imat3x3
 High-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 3, 4, int, highp > highp_imat3x4
 High-qualifier signed integer 3x4 matrix. More...
 
typedef mat< 4, 4, int, highp > highp_imat4
 High-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 4, 2, int, highp > highp_imat4x2
 High-qualifier signed integer 4x2 matrix. More...
 
typedef mat< 4, 3, int, highp > highp_imat4x3
 High-qualifier signed integer 4x3 matrix. More...
 
typedef mat< 4, 4, int, highp > highp_imat4x4
 High-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 2, 2, uint, highp > highp_umat2
 High-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint, highp > highp_umat2x2
 High-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 3, uint, highp > highp_umat2x3
 High-qualifier unsigned integer 2x3 matrix. More...
 
typedef mat< 2, 4, uint, highp > highp_umat2x4
 High-qualifier unsigned integer 2x4 matrix. More...
 
typedef mat< 3, 3, uint, highp > highp_umat3
 High-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 2, uint, highp > highp_umat3x2
 High-qualifier unsigned integer 3x2 matrix. More...
 
typedef mat< 3, 3, uint, highp > highp_umat3x3
 High-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 4, uint, highp > highp_umat3x4
 High-qualifier unsigned integer 3x4 matrix. More...
 
typedef mat< 4, 4, uint, highp > highp_umat4
 High-qualifier unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 2, uint, highp > highp_umat4x2
 High-qualifier unsigned integer 4x2 matrix. More...
 
typedef mat< 4, 3, uint, highp > highp_umat4x3
 High-qualifier unsigned integer 4x3 matrix. More...
 
typedef mat< 4, 4, uint, highp > highp_umat4x4
 High-qualifier unsigned integer 4x4 matrix. More...
 
typedef mediump_imat2 imat2
 Signed integer 2x2 matrix. More...
 
typedef mediump_imat2x2 imat2x2
 Signed integer 2x2 matrix. More...
 
typedef mediump_imat2x3 imat2x3
 Signed integer 2x3 matrix. More...
 
typedef mediump_imat2x4 imat2x4
 Signed integer 2x4 matrix. More...
 
typedef mediump_imat3 imat3
 Signed integer 3x3 matrix. More...
 
typedef mediump_imat3x2 imat3x2
 Signed integer 3x2 matrix. More...
 
typedef mediump_imat3x3 imat3x3
 Signed integer 3x3 matrix. More...
 
typedef mediump_imat3x4 imat3x4
 Signed integer 3x4 matrix. More...
 
typedef mediump_imat4 imat4
 Signed integer 4x4 matrix. More...
 
typedef mediump_imat4x2 imat4x2
 Signed integer 4x2 matrix. More...
 
typedef mediump_imat4x3 imat4x3
 Signed integer 4x3 matrix. More...
 
typedef mediump_imat4x4 imat4x4
 Signed integer 4x4 matrix. More...
 
typedef mat< 2, 2, int, lowp > lowp_imat2
 Low-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int, lowp > lowp_imat2x2
 Low-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 2, 3, int, lowp > lowp_imat2x3
 Low-qualifier signed integer 2x3 matrix. More...
 
typedef mat< 2, 4, int, lowp > lowp_imat2x4
 Low-qualifier signed integer 2x4 matrix. More...
 
typedef mat< 3, 3, int, lowp > lowp_imat3
 Low-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 3, 2, int, lowp > lowp_imat3x2
 Low-qualifier signed integer 3x2 matrix. More...
 
typedef mat< 3, 3, int, lowp > lowp_imat3x3
 Low-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 3, 4, int, lowp > lowp_imat3x4
 Low-qualifier signed integer 3x4 matrix. More...
 
typedef mat< 4, 4, int, lowp > lowp_imat4
 Low-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 4, 2, int, lowp > lowp_imat4x2
 Low-qualifier signed integer 4x2 matrix. More...
 
typedef mat< 4, 3, int, lowp > lowp_imat4x3
 Low-qualifier signed integer 4x3 matrix. More...
 
typedef mat< 4, 4, int, lowp > lowp_imat4x4
 Low-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 2, 2, uint, lowp > lowp_umat2
 Low-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint, lowp > lowp_umat2x2
 Low-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 3, uint, lowp > lowp_umat2x3
 Low-qualifier unsigned integer 2x3 matrix. More...
 
typedef mat< 2, 4, uint, lowp > lowp_umat2x4
 Low-qualifier unsigned integer 2x4 matrix. More...
 
typedef mat< 3, 3, uint, lowp > lowp_umat3
 Low-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 2, uint, lowp > lowp_umat3x2
 Low-qualifier unsigned integer 3x2 matrix. More...
 
typedef mat< 3, 3, uint, lowp > lowp_umat3x3
 Low-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 4, uint, lowp > lowp_umat3x4
 Low-qualifier unsigned integer 3x4 matrix. More...
 
typedef mat< 4, 4, uint, lowp > lowp_umat4
 Low-qualifier unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 2, uint, lowp > lowp_umat4x2
 Low-qualifier unsigned integer 4x2 matrix. More...
 
typedef mat< 4, 3, uint, lowp > lowp_umat4x3
 Low-qualifier unsigned integer 4x3 matrix. More...
 
typedef mat< 4, 4, uint, lowp > lowp_umat4x4
 Low-qualifier unsigned integer 4x4 matrix. More...
 
typedef mat< 2, 2, int, mediump > mediump_imat2
 Medium-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int, mediump > mediump_imat2x2
 Medium-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 2, 3, int, mediump > mediump_imat2x3
 Medium-qualifier signed integer 2x3 matrix. More...
 
typedef mat< 2, 4, int, mediump > mediump_imat2x4
 Medium-qualifier signed integer 2x4 matrix. More...
 
typedef mat< 3, 3, int, mediump > mediump_imat3
 Medium-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 3, 2, int, mediump > mediump_imat3x2
 Medium-qualifier signed integer 3x2 matrix. More...
 
typedef mat< 3, 3, int, mediump > mediump_imat3x3
 Medium-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 3, 4, int, mediump > mediump_imat3x4
 Medium-qualifier signed integer 3x4 matrix. More...
 
typedef mat< 4, 4, int, mediump > mediump_imat4
 Medium-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 4, 2, int, mediump > mediump_imat4x2
 Medium-qualifier signed integer 4x2 matrix. More...
 
typedef mat< 4, 3, int, mediump > mediump_imat4x3
 Medium-qualifier signed integer 4x3 matrix. More...
 
typedef mat< 4, 4, int, mediump > mediump_imat4x4
 Medium-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 2, 2, uint, mediump > mediump_umat2
 Medium-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint, mediump > mediump_umat2x2
 Medium-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 3, uint, mediump > mediump_umat2x3
 Medium-qualifier unsigned integer 2x3 matrix. More...
 
typedef mat< 2, 4, uint, mediump > mediump_umat2x4
 Medium-qualifier unsigned integer 2x4 matrix. More...
 
typedef mat< 3, 3, uint, mediump > mediump_umat3
 Medium-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 2, uint, mediump > mediump_umat3x2
 Medium-qualifier unsigned integer 3x2 matrix. More...
 
typedef mat< 3, 3, uint, mediump > mediump_umat3x3
 Medium-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 4, uint, mediump > mediump_umat3x4
 Medium-qualifier unsigned integer 3x4 matrix. More...
 
typedef mat< 4, 4, uint, mediump > mediump_umat4
 Medium-qualifier unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 2, uint, mediump > mediump_umat4x2
 Medium-qualifier unsigned integer 4x2 matrix. More...
 
typedef mat< 4, 3, uint, mediump > mediump_umat4x3
 Medium-qualifier unsigned integer 4x3 matrix. More...
 
typedef mat< 4, 4, uint, mediump > mediump_umat4x4
 Medium-qualifier unsigned integer 4x4 matrix. More...
 
typedef mediump_umat2 umat2
 Unsigned integer 2x2 matrix. More...
 
typedef mediump_umat2x2 umat2x2
 Unsigned integer 2x2 matrix. More...
 
typedef mediump_umat2x3 umat2x3
 Unsigned integer 2x3 matrix. More...
 
typedef mediump_umat2x4 umat2x4
 Unsigned integer 2x4 matrix. More...
 
typedef mediump_umat3 umat3
 Unsigned integer 3x3 matrix. More...
 
typedef mediump_umat3x2 umat3x2
 Unsigned integer 3x2 matrix. More...
 
typedef mediump_umat3x3 umat3x3
 Unsigned integer 3x3 matrix. More...
 
typedef mediump_umat3x4 umat3x4
 Unsigned integer 3x4 matrix. More...
 
typedef mediump_umat4 umat4
 Unsigned integer 4x4 matrix. More...
 
typedef mediump_umat4x2 umat4x2
 Unsigned integer 4x2 matrix. More...
 
typedef mediump_umat4x3 umat4x3
 Unsigned integer 4x3 matrix. More...
 
typedef mediump_umat4x4 umat4x4
 Unsigned integer 4x4 matrix. More...
 
-

Detailed Description

-

Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.

-

Defines a number of matrices with integer types.

-

Typedef Documentation

- -
-
- - - - -
typedef mat<2, 2, int, highp> highp_imat2
-
- -

High-qualifier signed integer 2x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 37 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 2, int, highp> highp_imat2x2
-
- -

High-qualifier signed integer 2x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 49 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 3, int, highp> highp_imat2x3
-
- -

High-qualifier signed integer 2x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 53 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 4, int, highp> highp_imat2x4
-
- -

High-qualifier signed integer 2x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 57 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 3, int, highp> highp_imat3
-
- -

High-qualifier signed integer 3x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 41 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 2, int, highp> highp_imat3x2
-
- -

High-qualifier signed integer 3x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 61 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 3, int, highp> highp_imat3x3
-
- -

High-qualifier signed integer 3x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 65 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 4, int, highp> highp_imat3x4
-
- -

High-qualifier signed integer 3x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 69 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 4, int, highp> highp_imat4
-
- -

High-qualifier signed integer 4x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 45 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 2, int, highp> highp_imat4x2
-
- -

High-qualifier signed integer 4x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 73 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 3, int, highp> highp_imat4x3
-
- -

High-qualifier signed integer 4x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 77 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 4, int, highp> highp_imat4x4
-
- -

High-qualifier signed integer 4x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 81 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 2, uint, highp> highp_umat2
-
- -

High-qualifier unsigned integer 2x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 186 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 2, uint, highp> highp_umat2x2
-
- -

High-qualifier unsigned integer 2x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 198 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 3, uint, highp> highp_umat2x3
-
- -

High-qualifier unsigned integer 2x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 202 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 4, uint, highp> highp_umat2x4
-
- -

High-qualifier unsigned integer 2x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 206 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 3, uint, highp> highp_umat3
-
- -

High-qualifier unsigned integer 3x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 190 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 2, uint, highp> highp_umat3x2
-
- -

High-qualifier unsigned integer 3x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 210 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 3, uint, highp> highp_umat3x3
-
- -

High-qualifier unsigned integer 3x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 214 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 4, uint, highp> highp_umat3x4
-
- -

High-qualifier unsigned integer 3x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 218 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 4, uint, highp> highp_umat4
-
- -

High-qualifier unsigned integer 4x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 194 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 2, uint, highp> highp_umat4x2
-
- -

High-qualifier unsigned integer 4x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 222 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 3, uint, highp> highp_umat4x3
-
- -

High-qualifier unsigned integer 4x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 226 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 4, uint, highp> highp_umat4x4
-
- -

High-qualifier unsigned integer 4x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 230 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_imat2 imat2
-
- -

Signed integer 2x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 362 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_imat2x2 imat2x2
-
- -

Signed integer 2x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 374 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_imat2x3 imat2x3
-
- -

Signed integer 2x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 378 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_imat2x4 imat2x4
-
- -

Signed integer 2x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 382 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_imat3 imat3
-
- -

Signed integer 3x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 366 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_imat3x2 imat3x2
-
- -

Signed integer 3x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 386 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_imat3x3 imat3x3
-
- -

Signed integer 3x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 390 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_imat3x4 imat3x4
-
- -

Signed integer 3x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 394 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_imat4 imat4
-
- -

Signed integer 4x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 370 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_imat4x2 imat4x2
-
- -

Signed integer 4x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 398 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_imat4x3 imat4x3
-
- -

Signed integer 4x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 402 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_imat4x4 imat4x4
-
- -

Signed integer 4x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 406 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 2, int, lowp> lowp_imat2
-
- -

Low-qualifier signed integer 2x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 136 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 2, int, lowp> lowp_imat2x2
-
- -

Low-qualifier signed integer 2x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 149 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 3, int, lowp> lowp_imat2x3
-
- -

Low-qualifier signed integer 2x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 153 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 4, int, lowp> lowp_imat2x4
-
- -

Low-qualifier signed integer 2x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 157 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 3, int, lowp> lowp_imat3
-
- -

Low-qualifier signed integer 3x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 140 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 2, int, lowp> lowp_imat3x2
-
- -

Low-qualifier signed integer 3x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 161 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 3, int, lowp> lowp_imat3x3
-
- -

Low-qualifier signed integer 3x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 165 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 4, int, lowp> lowp_imat3x4
-
- -

Low-qualifier signed integer 3x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 169 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 4, int, lowp> lowp_imat4
-
- -

Low-qualifier signed integer 4x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 144 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 2, int, lowp> lowp_imat4x2
-
- -

Low-qualifier signed integer 4x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 173 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 3, int, lowp> lowp_imat4x3
-
- -

Low-qualifier signed integer 4x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 177 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 4, int, lowp> lowp_imat4x4
-
- -

Low-qualifier signed integer 4x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 181 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 2, uint, lowp> lowp_umat2
-
- -

Low-qualifier unsigned integer 2x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 285 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 2, uint, lowp> lowp_umat2x2
-
- -

Low-qualifier unsigned integer 2x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 298 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 3, uint, lowp> lowp_umat2x3
-
- -

Low-qualifier unsigned integer 2x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 302 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 4, uint, lowp> lowp_umat2x4
-
- -

Low-qualifier unsigned integer 2x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 306 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 3, uint, lowp> lowp_umat3
-
- -

Low-qualifier unsigned integer 3x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 289 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 2, uint, lowp> lowp_umat3x2
-
- -

Low-qualifier unsigned integer 3x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 310 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 3, uint, lowp> lowp_umat3x3
-
- -

Low-qualifier unsigned integer 3x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 314 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 4, uint, lowp> lowp_umat3x4
-
- -

Low-qualifier unsigned integer 3x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 318 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 4, uint, lowp> lowp_umat4
-
- -

Low-qualifier unsigned integer 4x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 293 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 2, uint, lowp> lowp_umat4x2
-
- -

Low-qualifier unsigned integer 4x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 322 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 3, uint, lowp> lowp_umat4x3
-
- -

Low-qualifier unsigned integer 4x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 326 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 4, uint, lowp> lowp_umat4x4
-
- -

Low-qualifier unsigned integer 4x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 330 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 2, int, mediump> mediump_imat2
-
- -

Medium-qualifier signed integer 2x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 86 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 2, int, mediump> mediump_imat2x2
-
- -

Medium-qualifier signed integer 2x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 99 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 3, int, mediump> mediump_imat2x3
-
- -

Medium-qualifier signed integer 2x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 103 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 4, int, mediump> mediump_imat2x4
-
- -

Medium-qualifier signed integer 2x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 107 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 3, int, mediump> mediump_imat3
-
- -

Medium-qualifier signed integer 3x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 90 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 2, int, mediump> mediump_imat3x2
-
- -

Medium-qualifier signed integer 3x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 111 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 3, int, mediump> mediump_imat3x3
-
- -

Medium-qualifier signed integer 3x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 115 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 4, int, mediump> mediump_imat3x4
-
- -

Medium-qualifier signed integer 3x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 119 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 4, int, mediump> mediump_imat4
-
- -

Medium-qualifier signed integer 4x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 94 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 2, int, mediump> mediump_imat4x2
-
- -

Medium-qualifier signed integer 4x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 123 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 3, int, mediump> mediump_imat4x3
-
- -

Medium-qualifier signed integer 4x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 127 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 4, int, mediump> mediump_imat4x4
-
- -

Medium-qualifier signed integer 4x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 131 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 2, uint, mediump> mediump_umat2
-
- -

Medium-qualifier unsigned integer 2x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 235 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 2, uint, mediump> mediump_umat2x2
-
- -

Medium-qualifier unsigned integer 2x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 248 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 3, uint, mediump> mediump_umat2x3
-
- -

Medium-qualifier unsigned integer 2x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 252 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<2, 4, uint, mediump> mediump_umat2x4
-
- -

Medium-qualifier unsigned integer 2x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 256 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 3, uint, mediump> mediump_umat3
-
- -

Medium-qualifier unsigned integer 3x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 239 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 2, uint, mediump> mediump_umat3x2
-
- -

Medium-qualifier unsigned integer 3x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 260 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 3, uint, mediump> mediump_umat3x3
-
- -

Medium-qualifier unsigned integer 3x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 264 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<3, 4, uint, mediump> mediump_umat3x4
-
- -

Medium-qualifier unsigned integer 3x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 268 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 4, uint, mediump> mediump_umat4
-
- -

Medium-qualifier unsigned integer 4x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 243 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 2, uint, mediump> mediump_umat4x2
-
- -

Medium-qualifier unsigned integer 4x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 272 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 3, uint, mediump> mediump_umat4x3
-
- -

Medium-qualifier unsigned integer 4x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 276 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mat<4, 4, uint, mediump> mediump_umat4x4
-
- -

Medium-qualifier unsigned integer 4x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 280 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_umat2 umat2
-
- -

Unsigned integer 2x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 439 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_umat2x2 umat2x2
-
- -

Unsigned integer 2x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 451 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_umat2x3 umat2x3
-
- -

Unsigned integer 2x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 455 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_umat2x4 umat2x4
-
- -

Unsigned integer 2x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 459 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_umat3 umat3
-
- -

Unsigned integer 3x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 443 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_umat3x2 umat3x2
-
- -

Unsigned integer 3x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 463 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_umat3x3 umat3x3
-
- -

Unsigned integer 3x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 467 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_umat3x4 umat3x4
-
- -

Unsigned integer 3x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 471 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_umat4 umat4
-
- -

Unsigned integer 4x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 447 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_umat4x2 umat4x2
-
- -

Unsigned integer 4x2 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 475 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_umat4x3 umat4x3
-
- -

Unsigned integer 4x3 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 479 of file matrix_integer.hpp.

- -
-
- -
-
- - - - -
typedef mediump_umat4x4 umat4x4
-
- -

Unsigned integer 4x4 matrix.

-
See also
GLM_GTC_matrix_integer
- -

Definition at line 483 of file matrix_integer.hpp.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00295.html b/tests/OpenGL/package/glm/doc/api/a00295.html deleted file mode 100644 index 4ddf4f40..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00295.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_matrix_inverse - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTC_matrix_inverse
-
-
- -

Include <glm/gtc/matrix_integer.hpp> to use the features of this extension. -More...

- - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.

-

Defines additional matrix inverting functions.

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::affineInverse (genType const & m)
-
- -

Fast matrix inverse for affine matrix.

-
Parameters
- - -
mInput matrix to invert.
-
-
-
Template Parameters
- - -
genTypeSquared floating-point matrix: half, float or double. Inverse of matrix based of half-qualifier floating point value is highly innacurate.
-
-
-
See also
GLM_GTC_matrix_inverse
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::inverseTranspose (genType const & m)
-
- -

Compute the inverse transpose of a matrix.

-
Parameters
- - -
mInput matrix to invert transpose.
-
-
-
Template Parameters
- - -
genTypeSquared floating-point matrix: half, float or double. Inverse of matrix based of half-qualifier floating point value is highly innacurate.
-
-
-
See also
GLM_GTC_matrix_inverse
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00296.html b/tests/OpenGL/package/glm/doc/api/a00296.html deleted file mode 100644 index 67240afa..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00296.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_matrix_transform - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
-
-
GLM_GTC_matrix_transform
-
-
- -

Include <glm/gtc/matrix_transform.hpp> to use the features of this extension. -More...

-

Include <glm/gtc/matrix_transform.hpp> to use the features of this extension.

-

Defines functions that generate common transformation matrices.

-

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

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00297.html b/tests/OpenGL/package/glm/doc/api/a00297.html deleted file mode 100644 index c2477d8e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00297.html +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_noise - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
-
-
- -

Include <glm/gtc/noise.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtc/noise.hpp> to use the features of this extension.

-

Defines 2D, 3D and 4D procedural noise functions Based on the work of Stefan Gustavson and Ashima Arts on "webgl-noise": https://github.com/ashima/webgl-noise Following Stefan Gustavson's paper "Simplex noise demystified": http://www.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::perlin (vec< L, T, Q > const & p)
-
- -

Classic perlin noise.

-
See also
GLM_GTC_noise
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::perlin (vec< L, T, Q > const & p,
vec< L, T, Q > const & rep 
)
-
- -

Periodic perlin noise.

-
See also
GLM_GTC_noise
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::simplex (vec< L, T, Q > const & p)
-
- -

Simplex noise.

-
See also
GLM_GTC_noise
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00298.html b/tests/OpenGL/package/glm/doc/api/a00298.html deleted file mode 100644 index 1c70249c..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00298.html +++ /dev/null @@ -1,2034 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_packing - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTC_packing
-
-
- -

Include <glm/gtc/packing.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

GLM_FUNC_DECL uint32 packF2x11_1x10 (vec3 const &v)
 First, converts the first two components of the normalized floating-point value v into 11-bit signless floating-point values. More...
 
GLM_FUNC_DECL uint32 packF3x9_E1x5 (vec3 const &v)
 First, converts the first two components of the normalized floating-point value v into 11-bit signless floating-point values. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, uint16, Q > packHalf (vec< L, float, Q > const &v)
 Returns an unsigned integer vector obtained by converting the components of a floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification. More...
 
GLM_FUNC_DECL uint16 packHalf1x16 (float v)
 Returns an unsigned integer obtained by converting the components of a floating-point scalar to the 16-bit floating-point representation found in the OpenGL Specification, and then packing this 16-bit value into a 16-bit unsigned integer. More...
 
GLM_FUNC_DECL uint64 packHalf4x16 (vec4 const &v)
 Returns an unsigned integer obtained by converting the components of a four-component floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification, and then packing these four 16-bit values into a 64-bit unsigned integer. More...
 
GLM_FUNC_DECL uint32 packI3x10_1x2 (ivec4 const &v)
 Returns an unsigned integer obtained by converting the components of a four-component signed integer vector to the 10-10-10-2-bit signed integer representation found in the OpenGL Specification, and then packing these four values into a 32-bit unsigned integer. More...
 
GLM_FUNC_DECL int packInt2x16 (i16vec2 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
GLM_FUNC_DECL int64 packInt2x32 (i32vec2 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
GLM_FUNC_DECL int16 packInt2x8 (i8vec2 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
GLM_FUNC_DECL int64 packInt4x16 (i16vec4 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
GLM_FUNC_DECL int32 packInt4x8 (i8vec4 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > packRGBM (vec< 3, T, Q > const &rgb)
 Returns an unsigned integer vector obtained by converting the components of a floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification. More...
 
template<typename intType , length_t L, typename floatType , qualifier Q>
GLM_FUNC_DECL vec< L, intType, Q > packSnorm (vec< L, floatType, Q > const &v)
 Convert each component of the normalized floating-point vector into signed integer values. More...
 
GLM_FUNC_DECL uint16 packSnorm1x16 (float v)
 First, converts the normalized floating-point value v into 16-bit integer value. More...
 
GLM_FUNC_DECL uint8 packSnorm1x8 (float s)
 First, converts the normalized floating-point value v into 8-bit integer value. More...
 
GLM_FUNC_DECL uint16 packSnorm2x8 (vec2 const &v)
 First, converts each component of the normalized floating-point value v into 8-bit integer values. More...
 
GLM_FUNC_DECL uint32 packSnorm3x10_1x2 (vec4 const &v)
 First, converts the first three components of the normalized floating-point value v into 10-bit signed integer values. More...
 
GLM_FUNC_DECL uint64 packSnorm4x16 (vec4 const &v)
 First, converts each component of the normalized floating-point value v into 16-bit integer values. More...
 
GLM_FUNC_DECL uint32 packU3x10_1x2 (uvec4 const &v)
 Returns an unsigned integer obtained by converting the components of a four-component unsigned integer vector to the 10-10-10-2-bit unsigned integer representation found in the OpenGL Specification, and then packing these four values into a 32-bit unsigned integer. More...
 
GLM_FUNC_DECL uint packUint2x16 (u16vec2 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
GLM_FUNC_DECL uint64 packUint2x32 (u32vec2 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
GLM_FUNC_DECL uint16 packUint2x8 (u8vec2 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
GLM_FUNC_DECL uint64 packUint4x16 (u16vec4 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
GLM_FUNC_DECL uint32 packUint4x8 (u8vec4 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
template<typename uintType , length_t L, typename floatType , qualifier Q>
GLM_FUNC_DECL vec< L, uintType, Q > packUnorm (vec< L, floatType, Q > const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint16 packUnorm1x16 (float v)
 First, converts the normalized floating-point value v into a 16-bit integer value. More...
 
GLM_FUNC_DECL uint16 packUnorm1x5_1x6_1x5 (vec3 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint8 packUnorm1x8 (float v)
 First, converts the normalized floating-point value v into a 8-bit integer value. More...
 
GLM_FUNC_DECL uint8 packUnorm2x3_1x2 (vec3 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint8 packUnorm2x4 (vec2 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint16 packUnorm2x8 (vec2 const &v)
 First, converts each component of the normalized floating-point value v into 8-bit integer values. More...
 
GLM_FUNC_DECL uint32 packUnorm3x10_1x2 (vec4 const &v)
 First, converts the first three components of the normalized floating-point value v into 10-bit unsigned integer values. More...
 
GLM_FUNC_DECL uint16 packUnorm3x5_1x1 (vec4 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint64 packUnorm4x16 (vec4 const &v)
 First, converts each component of the normalized floating-point value v into 16-bit integer values. More...
 
GLM_FUNC_DECL uint16 packUnorm4x4 (vec4 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL vec3 unpackF2x11_1x10 (uint32 p)
 First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and one 10-bit signless floating-point value . More...
 
GLM_FUNC_DECL vec3 unpackF3x9_E1x5 (uint32 p)
 First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and one 10-bit signless floating-point value . More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, float, Q > unpackHalf (vec< L, uint16, Q > const &p)
 Returns a floating-point vector with components obtained by reinterpreting an integer vector as 16-bit floating-point numbers and converting them to 32-bit floating-point values. More...
 
GLM_FUNC_DECL float unpackHalf1x16 (uint16 v)
 Returns a floating-point scalar with components obtained by unpacking a 16-bit unsigned integer into a 16-bit value, interpreted as a 16-bit floating-point number according to the OpenGL Specification, and converting it to 32-bit floating-point values. More...
 
GLM_FUNC_DECL vec4 unpackHalf4x16 (uint64 p)
 Returns a four-component floating-point vector with components obtained by unpacking a 64-bit unsigned integer into four 16-bit values, interpreting those values as 16-bit floating-point numbers according to the OpenGL Specification, and converting them to 32-bit floating-point values. More...
 
GLM_FUNC_DECL ivec4 unpackI3x10_1x2 (uint32 p)
 Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit signed integers. More...
 
GLM_FUNC_DECL i16vec2 unpackInt2x16 (int p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL i32vec2 unpackInt2x32 (int64 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL i8vec2 unpackInt2x8 (int16 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL i16vec4 unpackInt4x16 (int64 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL i8vec4 unpackInt4x8 (int32 p)
 Convert a packed integer into an integer vector. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > unpackRGBM (vec< 4, T, Q > const &rgbm)
 Returns a floating-point vector with components obtained by reinterpreting an integer vector as 16-bit floating-point numbers and converting them to 32-bit floating-point values. More...
 
template<typename floatType , length_t L, typename intType , qualifier Q>
GLM_FUNC_DECL vec< L, floatType, Q > unpackSnorm (vec< L, intType, Q > const &v)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL float unpackSnorm1x16 (uint16 p)
 First, unpacks a single 16-bit unsigned integer p into a single 16-bit signed integers. More...
 
GLM_FUNC_DECL float unpackSnorm1x8 (uint8 p)
 First, unpacks a single 8-bit unsigned integer p into a single 8-bit signed integers. More...
 
GLM_FUNC_DECL vec2 unpackSnorm2x8 (uint16 p)
 First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit signed integers. More...
 
GLM_FUNC_DECL vec4 unpackSnorm3x10_1x2 (uint32 p)
 First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers. More...
 
GLM_FUNC_DECL vec4 unpackSnorm4x16 (uint64 p)
 First, unpacks a single 64-bit unsigned integer p into four 16-bit signed integers. More...
 
GLM_FUNC_DECL uvec4 unpackU3x10_1x2 (uint32 p)
 Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit unsigned integers. More...
 
GLM_FUNC_DECL u16vec2 unpackUint2x16 (uint p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL u32vec2 unpackUint2x32 (uint64 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL u8vec2 unpackUint2x8 (uint16 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL u16vec4 unpackUint4x16 (uint64 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL u8vec4 unpackUint4x8 (uint32 p)
 Convert a packed integer into an integer vector. More...
 
template<typename floatType , length_t L, typename uintType , qualifier Q>
GLM_FUNC_DECL vec< L, floatType, Q > unpackUnorm (vec< L, uintType, Q > const &v)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL float unpackUnorm1x16 (uint16 p)
 First, unpacks a single 16-bit unsigned integer p into a of 16-bit unsigned integers. More...
 
GLM_FUNC_DECL vec3 unpackUnorm1x5_1x6_1x5 (uint16 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL float unpackUnorm1x8 (uint8 p)
 Convert a single 8-bit integer to a normalized floating-point value. More...
 
GLM_FUNC_DECL vec3 unpackUnorm2x3_1x2 (uint8 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL vec2 unpackUnorm2x4 (uint8 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL vec2 unpackUnorm2x8 (uint16 p)
 First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit unsigned integers. More...
 
GLM_FUNC_DECL vec4 unpackUnorm3x10_1x2 (uint32 p)
 First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers. More...
 
GLM_FUNC_DECL vec4 unpackUnorm3x5_1x1 (uint16 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL vec4 unpackUnorm4x16 (uint64 p)
 First, unpacks a single 64-bit unsigned integer p into four 16-bit unsigned integers. More...
 
GLM_FUNC_DECL vec4 unpackUnorm4x4 (uint16 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
-

Detailed Description

-

Include <glm/gtc/packing.hpp> to use the features of this extension.

-

This extension provides a set of function to convert vertors to packed formats.

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL uint32 glm::packF2x11_1x10 (vec3 const & v)
-
- -

First, converts the first two components of the normalized floating-point value v into 11-bit signless floating-point values.

-

Then, converts the third component of the normalized floating-point value v into a 10-bit signless floating-point value. Then, the results are packed into the returned 32-bit unsigned integer.

-

The first vector component specifies the 11 least-significant bits of the result; the last component specifies the 10 most-significant bits.

-
See also
GLM_GTC_packing
-
-vec3 unpackF2x11_1x10(uint32 const& p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint32 glm::packF3x9_E1x5 (vec3 const & v)
-
- -

First, converts the first two components of the normalized floating-point value v into 11-bit signless floating-point values.

-

Then, converts the third component of the normalized floating-point value v into a 10-bit signless floating-point value. Then, the results are packed into the returned 32-bit unsigned integer.

-

The first vector component specifies the 11 least-significant bits of the result; the last component specifies the 10 most-significant bits.

-

packF3x9_E1x5 allows encoding into RGBE / RGB9E5 format

-
See also
GLM_GTC_packing
-
-vec3 unpackF3x9_E1x5(uint32 const& p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, uint16, Q> glm::packHalf (vec< L, float, Q > const & v)
-
- -

Returns an unsigned integer vector obtained by converting the components of a floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification.

-

The first vector component specifies the 16 least-significant bits of the result; the forth component specifies the 16 most-significant bits.

-
See also
GLM_GTC_packing
-
-vec<L, float, Q> unpackHalf(vec<L, uint16, Q> const& p)
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint16 glm::packHalf1x16 (float v)
-
- -

Returns an unsigned integer obtained by converting the components of a floating-point scalar to the 16-bit floating-point representation found in the OpenGL Specification, and then packing this 16-bit value into a 16-bit unsigned integer.

-
See also
GLM_GTC_packing
-
-uint32 packHalf2x16(vec2 const& v)
-
-uint64 packHalf4x16(vec4 const& v)
-
-GLSL packHalf2x16 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint64 glm::packHalf4x16 (vec4 const & v)
-
- -

Returns an unsigned integer obtained by converting the components of a four-component floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification, and then packing these four 16-bit values into a 64-bit unsigned integer.

-

The first vector component specifies the 16 least-significant bits of the result; the forth component specifies the 16 most-significant bits.

-
See also
GLM_GTC_packing
-
-uint16 packHalf1x16(float const& v)
-
-uint32 packHalf2x16(vec2 const& v)
-
-GLSL packHalf2x16 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint32 glm::packI3x10_1x2 (ivec4 const & v)
-
- -

Returns an unsigned integer obtained by converting the components of a four-component signed integer vector to the 10-10-10-2-bit signed integer representation found in the OpenGL Specification, and then packing these four values into a 32-bit unsigned integer.

-

The first vector component specifies the 10 least-significant bits of the result; the forth component specifies the 2 most-significant bits.

-
See also
GLM_GTC_packing
-
-uint32 packI3x10_1x2(uvec4 const& v)
-
-uint32 packSnorm3x10_1x2(vec4 const& v)
-
-uint32 packUnorm3x10_1x2(vec4 const& v)
-
-ivec4 unpackI3x10_1x2(uint32 const& p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL int glm::packInt2x16 (i16vec2 const & v)
-
- -

Convert each component from an integer vector into a packed integer.

-
See also
GLM_GTC_packing
-
-i16vec2 unpackInt2x16(int p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL int64 glm::packInt2x32 (i32vec2 const & v)
-
- -

Convert each component from an integer vector into a packed integer.

-
See also
GLM_GTC_packing
-
-i32vec2 unpackInt2x32(int p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL int16 glm::packInt2x8 (i8vec2 const & v)
-
- -

Convert each component from an integer vector into a packed integer.

-
See also
GLM_GTC_packing
-
-i8vec2 unpackInt2x8(int16 p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL int64 glm::packInt4x16 (i16vec4 const & v)
-
- -

Convert each component from an integer vector into a packed integer.

-
See also
GLM_GTC_packing
-
-i16vec4 unpackInt4x16(int64 p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL int32 glm::packInt4x8 (i8vec4 const & v)
-
- -

Convert each component from an integer vector into a packed integer.

-
See also
GLM_GTC_packing
-
-i8vec4 unpackInt4x8(int32 p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<4, T, Q> glm::packRGBM (vec< 3, T, Q > const & rgb)
-
- -

Returns an unsigned integer vector obtained by converting the components of a floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification.

-

The first vector component specifies the 16 least-significant bits of the result; the forth component specifies the 16 most-significant bits.

-
See also
GLM_GTC_packing
-
-vec<3, T, Q> unpackRGBM(vec<4, T, Q> const& p)
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, intType, Q> glm::packSnorm (vec< L, floatType, Q > const & v)
-
- -

Convert each component of the normalized floating-point vector into signed integer values.

-
See also
GLM_GTC_packing
-
-vec<L, floatType, Q> unpackSnorm(vec<L, intType, Q> const& p);
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint16 glm::packSnorm1x16 (float v)
-
- -

First, converts the normalized floating-point value v into 16-bit integer value.

-

Then, the results are packed into the returned 16-bit unsigned integer.

-

The conversion to fixed point is done as follows: packSnorm1x8: round(clamp(s, -1, +1) * 32767.0)

-
See also
GLM_GTC_packing
-
-uint32 packSnorm2x16(vec2 const& v)
-
-uint64 packSnorm4x16(vec4 const& v)
-
-GLSL packSnorm4x8 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint8 glm::packSnorm1x8 (float s)
-
- -

First, converts the normalized floating-point value v into 8-bit integer value.

-

Then, the results are packed into the returned 8-bit unsigned integer.

-

The conversion to fixed point is done as follows: packSnorm1x8: round(clamp(s, -1, +1) * 127.0)

-
See also
GLM_GTC_packing
-
-uint16 packSnorm2x8(vec2 const& v)
-
-uint32 packSnorm4x8(vec4 const& v)
-
-GLSL packSnorm4x8 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint16 glm::packSnorm2x8 (vec2 const & v)
-
- -

First, converts each component of the normalized floating-point value v into 8-bit integer values.

-

Then, the results are packed into the returned 16-bit unsigned integer.

-

The conversion for component c of v to fixed point is done as follows: packSnorm2x8: round(clamp(c, -1, +1) * 127.0)

-

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

-
See also
GLM_GTC_packing
-
-uint8 packSnorm1x8(float const& v)
-
-uint32 packSnorm4x8(vec4 const& v)
-
-GLSL packSnorm4x8 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint32 glm::packSnorm3x10_1x2 (vec4 const & v)
-
- -

First, converts the first three components of the normalized floating-point value v into 10-bit signed integer values.

-

Then, converts the forth component of the normalized floating-point value v into 2-bit signed integer values. Then, the results are packed into the returned 32-bit unsigned integer.

-

The conversion for component c of v to fixed point is done as follows: packSnorm3x10_1x2(xyz): round(clamp(c, -1, +1) * 511.0) packSnorm3x10_1x2(w): round(clamp(c, -1, +1) * 1.0)

-

The first vector component specifies the 10 least-significant bits of the result; the forth component specifies the 2 most-significant bits.

-
See also
GLM_GTC_packing
-
-vec4 unpackSnorm3x10_1x2(uint32 const& p)
-
-uint32 packUnorm3x10_1x2(vec4 const& v)
-
-uint32 packU3x10_1x2(uvec4 const& v)
-
-uint32 packI3x10_1x2(ivec4 const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint64 glm::packSnorm4x16 (vec4 const & v)
-
- -

First, converts each component of the normalized floating-point value v into 16-bit integer values.

-

Then, the results are packed into the returned 64-bit unsigned integer.

-

The conversion for component c of v to fixed point is done as follows: packSnorm2x8: round(clamp(c, -1, +1) * 32767.0)

-

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

-
See also
GLM_GTC_packing
-
-uint16 packSnorm1x16(float const& v)
-
-uint32 packSnorm2x16(vec2 const& v)
-
-GLSL packSnorm4x8 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint32 glm::packU3x10_1x2 (uvec4 const & v)
-
- -

Returns an unsigned integer obtained by converting the components of a four-component unsigned integer vector to the 10-10-10-2-bit unsigned integer representation found in the OpenGL Specification, and then packing these four values into a 32-bit unsigned integer.

-

The first vector component specifies the 10 least-significant bits of the result; the forth component specifies the 2 most-significant bits.

-
See also
GLM_GTC_packing
-
-uint32 packI3x10_1x2(ivec4 const& v)
-
-uint32 packSnorm3x10_1x2(vec4 const& v)
-
-uint32 packUnorm3x10_1x2(vec4 const& v)
-
-ivec4 unpackU3x10_1x2(uint32 const& p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint glm::packUint2x16 (u16vec2 const & v)
-
- -

Convert each component from an integer vector into a packed unsigned integer.

-
See also
GLM_GTC_packing
-
-u16vec2 unpackUint2x16(uint p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint64 glm::packUint2x32 (u32vec2 const & v)
-
- -

Convert each component from an integer vector into a packed unsigned integer.

-
See also
GLM_GTC_packing
-
-u32vec2 unpackUint2x32(int p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint16 glm::packUint2x8 (u8vec2 const & v)
-
- -

Convert each component from an integer vector into a packed unsigned integer.

-
See also
GLM_GTC_packing
-
-u8vec2 unpackInt2x8(uint16 p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint64 glm::packUint4x16 (u16vec4 const & v)
-
- -

Convert each component from an integer vector into a packed unsigned integer.

-
See also
GLM_GTC_packing
-
-u16vec4 unpackUint4x16(uint64 p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint32 glm::packUint4x8 (u8vec4 const & v)
-
- -

Convert each component from an integer vector into a packed unsigned integer.

-
See also
GLM_GTC_packing
-
-u8vec4 unpackUint4x8(uint32 p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, uintType, Q> glm::packUnorm (vec< L, floatType, Q > const & v)
-
- -

Convert each component of the normalized floating-point vector into unsigned integer values.

-
See also
GLM_GTC_packing
-
-vec<L, floatType, Q> unpackUnorm(vec<L, intType, Q> const& p);
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint16 glm::packUnorm1x16 (float v)
-
- -

First, converts the normalized floating-point value v into a 16-bit integer value.

-

Then, the results are packed into the returned 16-bit unsigned integer.

-

The conversion for component c of v to fixed point is done as follows: packUnorm1x16: round(clamp(c, 0, +1) * 65535.0)

-
See also
GLM_GTC_packing
-
-uint16 packSnorm1x16(float const& v)
-
-uint64 packSnorm4x16(vec4 const& v)
-
-GLSL packUnorm4x8 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint16 glm::packUnorm1x5_1x6_1x5 (vec3 const & v)
-
- -

Convert each component of the normalized floating-point vector into unsigned integer values.

-
See also
GLM_GTC_packing
-
-vec3 unpackUnorm1x5_1x6_1x5(uint16 p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint8 glm::packUnorm1x8 (float v)
-
- -

First, converts the normalized floating-point value v into a 8-bit integer value.

-

Then, the results are packed into the returned 8-bit unsigned integer.

-

The conversion for component c of v to fixed point is done as follows: packUnorm1x8: round(clamp(c, 0, +1) * 255.0)

-
See also
GLM_GTC_packing
-
-uint16 packUnorm2x8(vec2 const& v)
-
-uint32 packUnorm4x8(vec4 const& v)
-
-GLSL packUnorm4x8 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint8 glm::packUnorm2x3_1x2 (vec3 const & v)
-
- -

Convert each component of the normalized floating-point vector into unsigned integer values.

-
See also
GLM_GTC_packing
-
-vec3 unpackUnorm2x3_1x2(uint8 p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint8 glm::packUnorm2x4 (vec2 const & v)
-
- -

Convert each component of the normalized floating-point vector into unsigned integer values.

-
See also
GLM_GTC_packing
-
-vec2 unpackUnorm2x4(uint8 p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint16 glm::packUnorm2x8 (vec2 const & v)
-
- -

First, converts each component of the normalized floating-point value v into 8-bit integer values.

-

Then, the results are packed into the returned 16-bit unsigned integer.

-

The conversion for component c of v to fixed point is done as follows: packUnorm2x8: round(clamp(c, 0, +1) * 255.0)

-

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

-
See also
GLM_GTC_packing
-
-uint8 packUnorm1x8(float const& v)
-
-uint32 packUnorm4x8(vec4 const& v)
-
-GLSL packUnorm4x8 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint32 glm::packUnorm3x10_1x2 (vec4 const & v)
-
- -

First, converts the first three components of the normalized floating-point value v into 10-bit unsigned integer values.

-

Then, converts the forth component of the normalized floating-point value v into 2-bit signed uninteger values. Then, the results are packed into the returned 32-bit unsigned integer.

-

The conversion for component c of v to fixed point is done as follows: packUnorm3x10_1x2(xyz): round(clamp(c, 0, +1) * 1023.0) packUnorm3x10_1x2(w): round(clamp(c, 0, +1) * 3.0)

-

The first vector component specifies the 10 least-significant bits of the result; the forth component specifies the 2 most-significant bits.

-
See also
GLM_GTC_packing
-
-vec4 unpackUnorm3x10_1x2(uint32 const& p)
-
-uint32 packUnorm3x10_1x2(vec4 const& v)
-
-uint32 packU3x10_1x2(uvec4 const& v)
-
-uint32 packI3x10_1x2(ivec4 const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint16 glm::packUnorm3x5_1x1 (vec4 const & v)
-
- -

Convert each component of the normalized floating-point vector into unsigned integer values.

-
See also
GLM_GTC_packing
-
-vec4 unpackUnorm3x5_1x1(uint16 p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint64 glm::packUnorm4x16 (vec4 const & v)
-
- -

First, converts each component of the normalized floating-point value v into 16-bit integer values.

-

Then, the results are packed into the returned 64-bit unsigned integer.

-

The conversion for component c of v to fixed point is done as follows: packUnorm4x16: round(clamp(c, 0, +1) * 65535.0)

-

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

-
See also
GLM_GTC_packing
-
-uint16 packUnorm1x16(float const& v)
-
-uint32 packUnorm2x16(vec2 const& v)
-
-GLSL packUnorm4x8 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint16 glm::packUnorm4x4 (vec4 const & v)
-
- -

Convert each component of the normalized floating-point vector into unsigned integer values.

-
See also
GLM_GTC_packing
-
-vec4 unpackUnorm4x4(uint16 p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec3 glm::unpackF2x11_1x10 (uint32 p)
-
- -

First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and one 10-bit signless floating-point value .

-

Then, each component is converted to a normalized floating-point value to generate the returned three-component vector.

-

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

-
See also
GLM_GTC_packing
-
-uint32 packF2x11_1x10(vec3 const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec3 glm::unpackF3x9_E1x5 (uint32 p)
-
- -

First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and one 10-bit signless floating-point value .

-

Then, each component is converted to a normalized floating-point value to generate the returned three-component vector.

-

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

-

unpackF3x9_E1x5 allows decoding RGBE / RGB9E5 data

-
See also
GLM_GTC_packing
-
-uint32 packF3x9_E1x5(vec3 const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, float, Q> glm::unpackHalf (vec< L, uint16, Q > const & p)
-
- -

Returns a floating-point vector with components obtained by reinterpreting an integer vector as 16-bit floating-point numbers and converting them to 32-bit floating-point values.

-

The first component of the vector is obtained from the 16 least-significant bits of v; the forth component is obtained from the 16 most-significant bits of v.

-
See also
GLM_GTC_packing
-
-vec<L, uint16, Q> packHalf(vec<L, float, Q> const& v)
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL float glm::unpackHalf1x16 (uint16 v)
-
- -

Returns a floating-point scalar with components obtained by unpacking a 16-bit unsigned integer into a 16-bit value, interpreted as a 16-bit floating-point number according to the OpenGL Specification, and converting it to 32-bit floating-point values.

-
See also
GLM_GTC_packing
-
-vec2 unpackHalf2x16(uint32 const& v)
-
-vec4 unpackHalf4x16(uint64 const& v)
-
-GLSL unpackHalf2x16 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec4 glm::unpackHalf4x16 (uint64 p)
-
- -

Returns a four-component floating-point vector with components obtained by unpacking a 64-bit unsigned integer into four 16-bit values, interpreting those values as 16-bit floating-point numbers according to the OpenGL Specification, and converting them to 32-bit floating-point values.

-

The first component of the vector is obtained from the 16 least-significant bits of v; the forth component is obtained from the 16 most-significant bits of v.

-
See also
GLM_GTC_packing
-
-float unpackHalf1x16(uint16 const& v)
-
-vec2 unpackHalf2x16(uint32 const& v)
-
-GLSL unpackHalf2x16 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL ivec4 glm::unpackI3x10_1x2 (uint32 p)
-
- -

Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit signed integers.

-

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

-
See also
GLM_GTC_packing
-
-uint32 packU3x10_1x2(uvec4 const& v)
-
-vec4 unpackSnorm3x10_1x2(uint32 const& p);
-
-uvec4 unpackI3x10_1x2(uint32 const& p);
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL i16vec2 glm::unpackInt2x16 (int p)
-
- -

Convert a packed integer into an integer vector.

-
See also
GLM_GTC_packing
-
-int packInt2x16(i16vec2 const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL i32vec2 glm::unpackInt2x32 (int64 p)
-
- -

Convert a packed integer into an integer vector.

-
See also
GLM_GTC_packing
-
-int packInt2x16(i32vec2 const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL i8vec2 glm::unpackInt2x8 (int16 p)
-
- -

Convert a packed integer into an integer vector.

-
See also
GLM_GTC_packing
-
-int16 packInt2x8(i8vec2 const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL i16vec4 glm::unpackInt4x16 (int64 p)
-
- -

Convert a packed integer into an integer vector.

-
See also
GLM_GTC_packing
-
-int64 packInt4x16(i16vec4 const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL i8vec4 glm::unpackInt4x8 (int32 p)
-
- -

Convert a packed integer into an integer vector.

-
See also
GLM_GTC_packing
-
-int32 packInt2x8(i8vec4 const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::unpackRGBM (vec< 4, T, Q > const & rgbm)
-
- -

Returns a floating-point vector with components obtained by reinterpreting an integer vector as 16-bit floating-point numbers and converting them to 32-bit floating-point values.

-

The first component of the vector is obtained from the 16 least-significant bits of v; the forth component is obtained from the 16 most-significant bits of v.

-
See also
GLM_GTC_packing
-
-vec<4, T, Q> packRGBM(vec<3, float, Q> const& v)
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, floatType, Q> glm::unpackSnorm (vec< L, intType, Q > const & v)
-
- -

Convert a packed integer to a normalized floating-point vector.

-
See also
GLM_GTC_packing
-
-vec<L, intType, Q> packSnorm(vec<L, floatType, Q> const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL float glm::unpackSnorm1x16 (uint16 p)
-
- -

First, unpacks a single 16-bit unsigned integer p into a single 16-bit signed integers.

-

Then, each component is converted to a normalized floating-point value to generate the returned scalar.

-

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm1x16: clamp(f / 32767.0, -1, +1)

-
See also
GLM_GTC_packing
-
-vec2 unpackSnorm2x16(uint32 p)
-
-vec4 unpackSnorm4x16(uint64 p)
-
-GLSL unpackSnorm4x8 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL float glm::unpackSnorm1x8 (uint8 p)
-
- -

First, unpacks a single 8-bit unsigned integer p into a single 8-bit signed integers.

-

Then, the value is converted to a normalized floating-point value to generate the returned scalar.

-

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm1x8: clamp(f / 127.0, -1, +1)

-
See also
GLM_GTC_packing
-
-vec2 unpackSnorm2x8(uint16 p)
-
-vec4 unpackSnorm4x8(uint32 p)
-
-GLSL unpackSnorm4x8 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec2 glm::unpackSnorm2x8 (uint16 p)
-
- -

First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit signed integers.

-

Then, each component is converted to a normalized floating-point value to generate the returned two-component vector.

-

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm2x8: clamp(f / 127.0, -1, +1)

-

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

-
See also
GLM_GTC_packing
-
-float unpackSnorm1x8(uint8 p)
-
-vec4 unpackSnorm4x8(uint32 p)
-
-GLSL unpackSnorm4x8 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec4 glm::unpackSnorm3x10_1x2 (uint32 p)
-
- -

First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers.

-

Then, each component is converted to a normalized floating-point value to generate the returned four-component vector.

-

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm3x10_1x2(xyz): clamp(f / 511.0, -1, +1) unpackSnorm3x10_1x2(w): clamp(f / 511.0, -1, +1)

-

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

-
See also
GLM_GTC_packing
-
-uint32 packSnorm3x10_1x2(vec4 const& v)
-
-vec4 unpackUnorm3x10_1x2(uint32 const& p))
-
-uvec4 unpackI3x10_1x2(uint32 const& p)
-
-uvec4 unpackU3x10_1x2(uint32 const& p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec4 glm::unpackSnorm4x16 (uint64 p)
-
- -

First, unpacks a single 64-bit unsigned integer p into four 16-bit signed integers.

-

Then, each component is converted to a normalized floating-point value to generate the returned four-component vector.

-

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm4x16: clamp(f / 32767.0, -1, +1)

-

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

-
See also
GLM_GTC_packing
-
-float unpackSnorm1x16(uint16 p)
-
-vec2 unpackSnorm2x16(uint32 p)
-
-GLSL unpackSnorm4x8 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uvec4 glm::unpackU3x10_1x2 (uint32 p)
-
- -

Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit unsigned integers.

-

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

-
See also
GLM_GTC_packing
-
-uint32 packU3x10_1x2(uvec4 const& v)
-
-vec4 unpackSnorm3x10_1x2(uint32 const& p);
-
-uvec4 unpackI3x10_1x2(uint32 const& p);
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL u16vec2 glm::unpackUint2x16 (uint p)
-
- -

Convert a packed integer into an integer vector.

-
See also
GLM_GTC_packing
-
-uint packUint2x16(u16vec2 const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL u32vec2 glm::unpackUint2x32 (uint64 p)
-
- -

Convert a packed integer into an integer vector.

-
See also
GLM_GTC_packing
-
-int packUint2x16(u32vec2 const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL u8vec2 glm::unpackUint2x8 (uint16 p)
-
- -

Convert a packed integer into an integer vector.

-
See also
GLM_GTC_packing
-
-uint16 packInt2x8(u8vec2 const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL u16vec4 glm::unpackUint4x16 (uint64 p)
-
- -

Convert a packed integer into an integer vector.

-
See also
GLM_GTC_packing
-
-uint64 packUint4x16(u16vec4 const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL u8vec4 glm::unpackUint4x8 (uint32 p)
-
- -

Convert a packed integer into an integer vector.

-
See also
GLM_GTC_packing
-
-uint32 packUint4x8(u8vec2 const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, floatType, Q> glm::unpackUnorm (vec< L, uintType, Q > const & v)
-
- -

Convert a packed integer to a normalized floating-point vector.

-
See also
GLM_GTC_packing
-
-vec<L, intType, Q> packUnorm(vec<L, floatType, Q> const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL float glm::unpackUnorm1x16 (uint16 p)
-
- -

First, unpacks a single 16-bit unsigned integer p into a of 16-bit unsigned integers.

-

Then, the value is converted to a normalized floating-point value to generate the returned scalar.

-

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm1x16: f / 65535.0

-
See also
GLM_GTC_packing
-
-vec2 unpackUnorm2x16(uint32 p)
-
-vec4 unpackUnorm4x16(uint64 p)
-
-GLSL unpackUnorm2x16 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec3 glm::unpackUnorm1x5_1x6_1x5 (uint16 p)
-
- -

Convert a packed integer to a normalized floating-point vector.

-
See also
GLM_GTC_packing
-
-uint16 packUnorm1x5_1x6_1x5(vec3 const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL float glm::unpackUnorm1x8 (uint8 p)
-
- -

Convert a single 8-bit integer to a normalized floating-point value.

-

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm4x8: f / 255.0

-
See also
GLM_GTC_packing
-
-vec2 unpackUnorm2x8(uint16 p)
-
-vec4 unpackUnorm4x8(uint32 p)
-
-GLSL unpackUnorm4x8 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec3 glm::unpackUnorm2x3_1x2 (uint8 p)
-
- -

Convert a packed integer to a normalized floating-point vector.

-
See also
GLM_GTC_packing
-
-uint8 packUnorm2x3_1x2(vec3 const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec2 glm::unpackUnorm2x4 (uint8 p)
-
- -

Convert a packed integer to a normalized floating-point vector.

-
See also
GLM_GTC_packing
-
-uint8 packUnorm2x4(vec2 const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec2 glm::unpackUnorm2x8 (uint16 p)
-
- -

First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit unsigned integers.

-

Then, each component is converted to a normalized floating-point value to generate the returned two-component vector.

-

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm4x8: f / 255.0

-

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

-
See also
GLM_GTC_packing
-
-float unpackUnorm1x8(uint8 v)
-
-vec4 unpackUnorm4x8(uint32 p)
-
-GLSL unpackUnorm4x8 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec4 glm::unpackUnorm3x10_1x2 (uint32 p)
-
- -

First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers.

-

Then, each component is converted to a normalized floating-point value to generate the returned four-component vector.

-

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm3x10_1x2(xyz): clamp(f / 1023.0, 0, +1) unpackSnorm3x10_1x2(w): clamp(f / 3.0, 0, +1)

-

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

-
See also
GLM_GTC_packing
-
-uint32 packSnorm3x10_1x2(vec4 const& v)
-
-vec4 unpackInorm3x10_1x2(uint32 const& p))
-
-uvec4 unpackI3x10_1x2(uint32 const& p)
-
-uvec4 unpackU3x10_1x2(uint32 const& p)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec4 glm::unpackUnorm3x5_1x1 (uint16 p)
-
- -

Convert a packed integer to a normalized floating-point vector.

-
See also
GLM_GTC_packing
-
-uint16 packUnorm3x5_1x1(vec4 const& v)
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec4 glm::unpackUnorm4x16 (uint64 p)
-
- -

First, unpacks a single 64-bit unsigned integer p into four 16-bit unsigned integers.

-

Then, each component is converted to a normalized floating-point value to generate the returned four-component vector.

-

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnormx4x16: f / 65535.0

-

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

-
See also
GLM_GTC_packing
-
-float unpackUnorm1x16(uint16 p)
-
-vec2 unpackUnorm2x16(uint32 p)
-
-GLSL unpackUnorm2x16 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec4 glm::unpackUnorm4x4 (uint16 p)
-
- -

Convert a packed integer to a normalized floating-point vector.

-
See also
GLM_GTC_packing
-
-uint16 packUnorm4x4(vec4 const& v)
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00299.html b/tests/OpenGL/package/glm/doc/api/a00299.html deleted file mode 100644 index 89d49c99..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00299.html +++ /dev/null @@ -1,619 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_quaternion - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTC_quaternion
-
-
- -

Include <glm/gtc/quaternion.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > eulerAngles (qua< T, Q > const &x)
 Returns euler angles, pitch as x, yaw as y, roll as z. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > greaterThan (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison of result x > y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > greaterThanEqual (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison of result x >= y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > lessThan (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison result of x < y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > lessThanEqual (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison of result x <= y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > mat3_cast (qua< T, Q > const &x)
 Converts a quaternion to a 3 * 3 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > mat4_cast (qua< T, Q > const &x)
 Converts a quaternion to a 4 * 4 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T pitch (qua< T, Q > const &x)
 Returns pitch value of euler angles expressed in radians. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quat_cast (mat< 3, 3, T, Q > const &x)
 Converts a pure rotation 3 * 3 matrix to a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quat_cast (mat< 4, 4, T, Q > const &x)
 Converts a pure rotation 4 * 4 matrix to a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quatLookAt (vec< 3, T, Q > const &direction, vec< 3, T, Q > const &up)
 Build a look at quaternion based on the default handedness. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quatLookAtLH (vec< 3, T, Q > const &direction, vec< 3, T, Q > const &up)
 Build a left-handed look at quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quatLookAtRH (vec< 3, T, Q > const &direction, vec< 3, T, Q > const &up)
 Build a right-handed look at quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T roll (qua< T, Q > const &x)
 Returns roll value of euler angles expressed in radians. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T yaw (qua< T, Q > const &x)
 Returns yaw value of euler angles expressed in radians. More...
 
-

Detailed Description

-

Include <glm/gtc/quaternion.hpp> to use the features of this extension.

-

Defines a templated quaternion type and several quaternion operations.

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::eulerAngles (qua< T, Q > const & x)
-
- -

Returns euler angles, pitch as x, yaw as y, roll as z.

-

The result is expressed in radians.

-
Template Parameters
- - -
TFloating-point scalar types.
-
-
-
See also
GLM_GTC_quaternion
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<4, bool, Q> glm::greaterThan (qua< T, Q > const & x,
qua< T, Q > const & y 
)
-
- -

Returns the component-wise comparison of result x > y.

-
Template Parameters
- - - -
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLM_EXT_quaternion_relational
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<4, bool, Q> glm::greaterThanEqual (qua< T, Q > const & x,
qua< T, Q > const & y 
)
-
- -

Returns the component-wise comparison of result x >= y.

-
Template Parameters
- - - -
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLM_EXT_quaternion_relational
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<4, bool, Q> glm::lessThan (qua< T, Q > const & x,
qua< T, Q > const & y 
)
-
- -

Returns the component-wise comparison result of x < y.

-
Template Parameters
- - - -
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLM_EXT_quaternion_relational
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<4, bool, Q> glm::lessThanEqual (qua< T, Q > const & x,
qua< T, Q > const & y 
)
-
- -

Returns the component-wise comparison of result x <= y.

-
Template Parameters
- - - -
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLM_EXT_quaternion_relational
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<3, 3, T, Q> glm::mat3_cast (qua< T, Q > const & x)
-
- -

Converts a quaternion to a 3 * 3 matrix.

-
Template Parameters
- - -
TFloating-point scalar types.
-
-
-
See also
GLM_GTC_quaternion
- -

Referenced by glm::toMat3().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::mat4_cast (qua< T, Q > const & x)
-
- -

Converts a quaternion to a 4 * 4 matrix.

-
Template Parameters
- - -
TFloating-point scalar types.
-
-
-
See also
GLM_GTC_quaternion
- -

Referenced by glm::toMat4().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::pitch (qua< T, Q > const & x)
-
- -

Returns pitch value of euler angles expressed in radians.

-
Template Parameters
- - -
TFloating-point scalar types.
-
-
-
See also
GLM_GTC_quaternion
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::quat_cast (mat< 3, 3, T, Q > const & x)
-
- -

Converts a pure rotation 3 * 3 matrix to a quaternion.

-
Template Parameters
- - -
TFloating-point scalar types.
-
-
-
See also
GLM_GTC_quaternion
- -

Referenced by glm::toQuat().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::quat_cast (mat< 4, 4, T, Q > const & x)
-
- -

Converts a pure rotation 4 * 4 matrix to a quaternion.

-
Template Parameters
- - -
TFloating-point scalar types.
-
-
-
See also
GLM_GTC_quaternion
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::quatLookAt (vec< 3, T, Q > const & direction,
vec< 3, T, Q > const & up 
)
-
- -

Build a look at quaternion based on the default handedness.

-
Parameters
- - - -
directionDesired forward direction. Needs to be normalized.
upUp vector, how the camera is oriented. Typically (0, 1, 0).
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::quatLookAtLH (vec< 3, T, Q > const & direction,
vec< 3, T, Q > const & up 
)
-
- -

Build a left-handed look at quaternion.

-
Parameters
- - - -
directionDesired forward direction onto which the +z-axis gets mapped. Needs to be normalized.
upUp vector, how the camera is oriented. Typically (0, 1, 0).
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::quatLookAtRH (vec< 3, T, Q > const & direction,
vec< 3, T, Q > const & up 
)
-
- -

Build a right-handed look at quaternion.

-
Parameters
- - - -
directionDesired forward direction onto which the -z-axis gets mapped. Needs to be normalized.
upUp vector, how the camera is oriented. Typically (0, 1, 0).
-
-
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::roll (qua< T, Q > const & x)
-
- -

Returns roll value of euler angles expressed in radians.

-
Template Parameters
- - -
TFloating-point scalar types.
-
-
-
See also
GLM_GTC_quaternion
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::yaw (qua< T, Q > const & x)
-
- -

Returns yaw value of euler angles expressed in radians.

-
Template Parameters
- - -
TFloating-point scalar types.
-
-
-
See also
GLM_GTC_quaternion
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00300.html b/tests/OpenGL/package/glm/doc/api/a00300.html deleted file mode 100644 index cd7724f4..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00300.html +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_random - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
-
-
- -

Include <glm/gtc/random.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtc/random.hpp> to use the features of this extension.

-

Generate random number from various distribution methods.

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<3, T, defaultp> glm::ballRand (Radius)
-
- -

Generate a random 3D vector which coordinates are regulary distributed within the volume of a ball of a given radius.

-
See also
GLM_GTC_random
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<2, T, defaultp> glm::circularRand (Radius)
-
- -

Generate a random 2D vector which coordinates are regulary distributed on a circle of a given radius.

-
See also
GLM_GTC_random
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<2, T, defaultp> glm::diskRand (Radius)
-
- -

Generate a random 2D vector which coordinates are regulary distributed within the area of a disk of a given radius.

-
See also
GLM_GTC_random
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::gaussRand (genType Mean,
genType Deviation 
)
-
- -

Generate random numbers in the interval [Min, Max], according a gaussian distribution.

-
See also
GLM_GTC_random
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::linearRand (genType Min,
genType Max 
)
-
- -

Generate random numbers in the interval [Min, Max], according a linear distribution.

-
Parameters
- - - -
MinMinimum value included in the sampling
MaxMaximum value included in the sampling
-
-
-
Template Parameters
- - -
genTypeValue type. Currently supported: float or double scalars.
-
-
-
See also
GLM_GTC_random
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::linearRand (vec< L, T, Q > const & Min,
vec< L, T, Q > const & Max 
)
-
- -

Generate random numbers in the interval [Min, Max], according a linear distribution.

-
Parameters
- - - -
MinMinimum value included in the sampling
MaxMaximum value included in the sampling
-
-
-
Template Parameters
- - -
TValue type. Currently supported: float or double.
-
-
-
See also
GLM_GTC_random
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<3, T, defaultp> glm::sphericalRand (Radius)
-
- -

Generate a random 3D vector which coordinates are regulary distributed on a sphere of a given radius.

-
See also
GLM_GTC_random
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00301.html b/tests/OpenGL/package/glm/doc/api/a00301.html deleted file mode 100644 index 2f882995..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00301.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_reciprocal - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTC_reciprocal
-
-
- -

Include <glm/gtc/reciprocal.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtc/reciprocal.hpp> to use the features of this extension.

-

Define secant, cosecant and cotangent functions.

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::acot (genType x)
-
- -

Inverse cotangent function.

-
Returns
Return an angle expressed in radians.
-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLM_GTC_reciprocal
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::acoth (genType x)
-
- -

Inverse cotangent hyperbolic function.

-
Returns
Return an angle expressed in radians.
-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLM_GTC_reciprocal
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::acsc (genType x)
-
- -

Inverse cosecant function.

-
Returns
Return an angle expressed in radians.
-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLM_GTC_reciprocal
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::acsch (genType x)
-
- -

Inverse cosecant hyperbolic function.

-
Returns
Return an angle expressed in radians.
-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLM_GTC_reciprocal
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::asec (genType x)
-
- -

Inverse secant function.

-
Returns
Return an angle expressed in radians.
-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLM_GTC_reciprocal
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::asech (genType x)
-
- -

Inverse secant hyperbolic function.

-
Returns
Return an angle expressed in radians.
-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLM_GTC_reciprocal
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::cot (genType angle)
-
- -

Cotangent function.

-

adjacent / opposite or 1 / tan(x)

-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLM_GTC_reciprocal
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::coth (genType angle)
-
- -

Cotangent hyperbolic function.

-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLM_GTC_reciprocal
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::csc (genType angle)
-
- -

Cosecant function.

-

hypotenuse / opposite or 1 / sin(x)

-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLM_GTC_reciprocal
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::csch (genType angle)
-
- -

Cosecant hyperbolic function.

-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLM_GTC_reciprocal
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::sec (genType angle)
-
- -

Secant function.

-

hypotenuse / adjacent or 1 / cos(x)

-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLM_GTC_reciprocal
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::sech (genType angle)
-
- -

Secant hyperbolic function.

-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLM_GTC_reciprocal
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00302.html b/tests/OpenGL/package/glm/doc/api/a00302.html deleted file mode 100644 index 51e4817e..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00302.html +++ /dev/null @@ -1,547 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_round - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
-
-
- -

Include <glm/gtc/round.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtc/round.hpp> to use the features of this extension.

-

Rounding value to specific boundings

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::ceilMultiple (genType v,
genType Multiple 
)
-
- -

Higher multiple number of Source.

-
Template Parameters
- - -
genTypeFloating-point or integer scalar or vector types.
-
-
-
Parameters
- - - -
vSource value to which is applied the function
MultipleMust be a null or positive value
-
-
-
See also
GLM_GTC_round
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::ceilMultiple (vec< L, T, Q > const & v,
vec< L, T, Q > const & Multiple 
)
-
- -

Higher multiple number of Source.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
-
Parameters
- - - -
vSource values to which is applied the function
MultipleMust be a null or positive value
-
-
-
See also
GLM_GTC_round
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genIUType glm::ceilPowerOfTwo (genIUType v)
-
- -

Return the power of two number which value is just higher the input value, round up to a power of two.

-
See also
GLM_GTC_round
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::ceilPowerOfTwo (vec< L, T, Q > const & v)
-
- -

Return the power of two number which value is just higher the input value, round up to a power of two.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
-
See also
GLM_GTC_round
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::floorMultiple (genType v,
genType Multiple 
)
-
- -

Lower multiple number of Source.

-
Template Parameters
- - -
genTypeFloating-point or integer scalar or vector types.
-
-
-
Parameters
- - - -
vSource value to which is applied the function
MultipleMust be a null or positive value
-
-
-
See also
GLM_GTC_round
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::floorMultiple (vec< L, T, Q > const & v,
vec< L, T, Q > const & Multiple 
)
-
- -

Lower multiple number of Source.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
-
Parameters
- - - -
vSource values to which is applied the function
MultipleMust be a null or positive value
-
-
-
See also
GLM_GTC_round
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genIUType glm::floorPowerOfTwo (genIUType v)
-
- -

Return the power of two number which value is just lower the input value, round down to a power of two.

-
See also
GLM_GTC_round
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::floorPowerOfTwo (vec< L, T, Q > const & v)
-
- -

Return the power of two number which value is just lower the input value, round down to a power of two.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
-
See also
GLM_GTC_round
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::roundMultiple (genType v,
genType Multiple 
)
-
- -

Lower multiple number of Source.

-
Template Parameters
- - -
genTypeFloating-point or integer scalar or vector types.
-
-
-
Parameters
- - - -
vSource value to which is applied the function
MultipleMust be a null or positive value
-
-
-
See also
GLM_GTC_round
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::roundMultiple (vec< L, T, Q > const & v,
vec< L, T, Q > const & Multiple 
)
-
- -

Lower multiple number of Source.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
-
Parameters
- - - -
vSource values to which is applied the function
MultipleMust be a null or positive value
-
-
-
See also
GLM_GTC_round
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genIUType glm::roundPowerOfTwo (genIUType v)
-
- -

Return the power of two number which value is the closet to the input value.

-
See also
GLM_GTC_round
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::roundPowerOfTwo (vec< L, T, Q > const & v)
-
- -

Return the power of two number which value is the closet to the input value.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
-
See also
GLM_GTC_round
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00303.html b/tests/OpenGL/package/glm/doc/api/a00303.html deleted file mode 100644 index a463e4a5..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00303.html +++ /dev/null @@ -1,1510 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_type_aligned - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTC_type_aligned
-
-
- -

Include <glm/gtc/type_aligned.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

-typedef aligned_highp_bvec1 aligned_bvec1
 1 component vector aligned in memory of bool values.
 
-typedef aligned_highp_bvec2 aligned_bvec2
 2 components vector aligned in memory of bool values.
 
-typedef aligned_highp_bvec3 aligned_bvec3
 3 components vector aligned in memory of bool values.
 
-typedef aligned_highp_bvec4 aligned_bvec4
 4 components vector aligned in memory of bool values.
 
-typedef aligned_highp_dmat2 aligned_dmat2
 2 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat2x2 aligned_dmat2x2
 2 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat2x3 aligned_dmat2x3
 2 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat2x4 aligned_dmat2x4
 2 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat3 aligned_dmat3
 3 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat3x2 aligned_dmat3x2
 3 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat3x3 aligned_dmat3x3
 3 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat3x4 aligned_dmat3x4
 3 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat4 aligned_dmat4
 4 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat4x2 aligned_dmat4x2
 4 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat4x3 aligned_dmat4x3
 4 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dmat4x4 aligned_dmat4x4
 4 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dvec1 aligned_dvec1
 1 component vector aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dvec2 aligned_dvec2
 2 components vector aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dvec3 aligned_dvec3
 3 components vector aligned in memory of double-precision floating-point numbers.
 
-typedef aligned_highp_dvec4 aligned_dvec4
 4 components vector aligned in memory of double-precision floating-point numbers.
 
-typedef vec< 1, bool, aligned_highp > aligned_highp_bvec1
 1 component vector aligned in memory of bool values.
 
-typedef vec< 2, bool, aligned_highp > aligned_highp_bvec2
 2 components vector aligned in memory of bool values.
 
-typedef vec< 3, bool, aligned_highp > aligned_highp_bvec3
 3 components vector aligned in memory of bool values.
 
-typedef vec< 4, bool, aligned_highp > aligned_highp_bvec4
 4 components vector aligned in memory of bool values.
 
-typedef mat< 2, 2, double, aligned_highp > aligned_highp_dmat2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, double, aligned_highp > aligned_highp_dmat2x2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, double, aligned_highp > aligned_highp_dmat2x3
 2 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, double, aligned_highp > aligned_highp_dmat2x4
 2 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, aligned_highp > aligned_highp_dmat3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, double, aligned_highp > aligned_highp_dmat3x2
 3 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, aligned_highp > aligned_highp_dmat3x3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, double, aligned_highp > aligned_highp_dmat3x4
 3 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, aligned_highp > aligned_highp_dmat4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, double, aligned_highp > aligned_highp_dmat4x2
 4 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, double, aligned_highp > aligned_highp_dmat4x3
 4 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, aligned_highp > aligned_highp_dmat4x4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 1, double, aligned_highp > aligned_highp_dvec1
 1 component vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 2, double, aligned_highp > aligned_highp_dvec2
 2 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 3, double, aligned_highp > aligned_highp_dvec3
 3 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 4, double, aligned_highp > aligned_highp_dvec4
 4 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 1, int, aligned_highp > aligned_highp_ivec1
 1 component vector aligned in memory of signed integer numbers.
 
-typedef vec< 2, int, aligned_highp > aligned_highp_ivec2
 2 components vector aligned in memory of signed integer numbers.
 
-typedef vec< 3, int, aligned_highp > aligned_highp_ivec3
 3 components vector aligned in memory of signed integer numbers.
 
-typedef vec< 4, int, aligned_highp > aligned_highp_ivec4
 4 components vector aligned in memory of signed integer numbers.
 
-typedef mat< 2, 2, float, aligned_highp > aligned_highp_mat2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, float, aligned_highp > aligned_highp_mat2x2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, float, aligned_highp > aligned_highp_mat2x3
 2 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, float, aligned_highp > aligned_highp_mat2x4
 2 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, aligned_highp > aligned_highp_mat3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, float, aligned_highp > aligned_highp_mat3x2
 3 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, aligned_highp > aligned_highp_mat3x3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, float, aligned_highp > aligned_highp_mat3x4
 3 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, aligned_highp > aligned_highp_mat4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, float, aligned_highp > aligned_highp_mat4x2
 4 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, float, aligned_highp > aligned_highp_mat4x3
 4 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, aligned_highp > aligned_highp_mat4x4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 1, uint, aligned_highp > aligned_highp_uvec1
 1 component vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 2, uint, aligned_highp > aligned_highp_uvec2
 2 components vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 3, uint, aligned_highp > aligned_highp_uvec3
 3 components vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 4, uint, aligned_highp > aligned_highp_uvec4
 4 components vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 1, float, aligned_highp > aligned_highp_vec1
 1 component vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 2, float, aligned_highp > aligned_highp_vec2
 2 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 3, float, aligned_highp > aligned_highp_vec3
 3 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 4, float, aligned_highp > aligned_highp_vec4
 4 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef aligned_highp_ivec1 aligned_ivec1
 1 component vector aligned in memory of signed integer numbers.
 
-typedef aligned_highp_ivec2 aligned_ivec2
 2 components vector aligned in memory of signed integer numbers.
 
-typedef aligned_highp_ivec3 aligned_ivec3
 3 components vector aligned in memory of signed integer numbers.
 
-typedef aligned_highp_ivec4 aligned_ivec4
 4 components vector aligned in memory of signed integer numbers.
 
-typedef vec< 1, bool, aligned_lowp > aligned_lowp_bvec1
 1 component vector aligned in memory of bool values.
 
-typedef vec< 2, bool, aligned_lowp > aligned_lowp_bvec2
 2 components vector aligned in memory of bool values.
 
-typedef vec< 3, bool, aligned_lowp > aligned_lowp_bvec3
 3 components vector aligned in memory of bool values.
 
-typedef vec< 4, bool, aligned_lowp > aligned_lowp_bvec4
 4 components vector aligned in memory of bool values.
 
-typedef mat< 2, 2, double, aligned_lowp > aligned_lowp_dmat2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, double, aligned_lowp > aligned_lowp_dmat2x2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, double, aligned_lowp > aligned_lowp_dmat2x3
 2 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, double, aligned_lowp > aligned_lowp_dmat2x4
 2 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, aligned_lowp > aligned_lowp_dmat3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, double, aligned_lowp > aligned_lowp_dmat3x2
 3 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, aligned_lowp > aligned_lowp_dmat3x3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, double, aligned_lowp > aligned_lowp_dmat3x4
 3 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, aligned_lowp > aligned_lowp_dmat4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, double, aligned_lowp > aligned_lowp_dmat4x2
 4 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, double, aligned_lowp > aligned_lowp_dmat4x3
 4 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, aligned_lowp > aligned_lowp_dmat4x4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 1, double, aligned_lowp > aligned_lowp_dvec1
 1 component vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 2, double, aligned_lowp > aligned_lowp_dvec2
 2 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 3, double, aligned_lowp > aligned_lowp_dvec3
 3 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 4, double, aligned_lowp > aligned_lowp_dvec4
 4 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 1, int, aligned_lowp > aligned_lowp_ivec1
 1 component vector aligned in memory of signed integer numbers.
 
-typedef vec< 2, int, aligned_lowp > aligned_lowp_ivec2
 2 components vector aligned in memory of signed integer numbers.
 
-typedef vec< 3, int, aligned_lowp > aligned_lowp_ivec3
 3 components vector aligned in memory of signed integer numbers.
 
-typedef vec< 4, int, aligned_lowp > aligned_lowp_ivec4
 4 components vector aligned in memory of signed integer numbers.
 
-typedef mat< 2, 2, float, aligned_lowp > aligned_lowp_mat2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, float, aligned_lowp > aligned_lowp_mat2x2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, float, aligned_lowp > aligned_lowp_mat2x3
 2 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, float, aligned_lowp > aligned_lowp_mat2x4
 2 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, aligned_lowp > aligned_lowp_mat3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, float, aligned_lowp > aligned_lowp_mat3x2
 3 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, aligned_lowp > aligned_lowp_mat3x3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, float, aligned_lowp > aligned_lowp_mat3x4
 3 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, aligned_lowp > aligned_lowp_mat4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, float, aligned_lowp > aligned_lowp_mat4x2
 4 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, float, aligned_lowp > aligned_lowp_mat4x3
 4 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, aligned_lowp > aligned_lowp_mat4x4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 1, uint, aligned_lowp > aligned_lowp_uvec1
 1 component vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 2, uint, aligned_lowp > aligned_lowp_uvec2
 2 components vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 3, uint, aligned_lowp > aligned_lowp_uvec3
 3 components vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 4, uint, aligned_lowp > aligned_lowp_uvec4
 4 components vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 1, float, aligned_lowp > aligned_lowp_vec1
 1 component vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 2, float, aligned_lowp > aligned_lowp_vec2
 2 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 3, float, aligned_lowp > aligned_lowp_vec3
 3 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 4, float, aligned_lowp > aligned_lowp_vec4
 4 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef aligned_highp_mat2 aligned_mat2
 2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat2x2 aligned_mat2x2
 2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat2x3 aligned_mat2x3
 2 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat2x4 aligned_mat2x4
 2 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat3 aligned_mat3
 3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat3x2 aligned_mat3x2
 3 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat3x3 aligned_mat3x3
 3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat3x4 aligned_mat3x4
 3 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat4 aligned_mat4
 4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat4x2 aligned_mat4x2
 4 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat4x3 aligned_mat4x3
 4 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_mat4x4 aligned_mat4x4
 4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
 
-typedef vec< 1, bool, aligned_mediump > aligned_mediump_bvec1
 1 component vector aligned in memory of bool values.
 
-typedef vec< 2, bool, aligned_mediump > aligned_mediump_bvec2
 2 components vector aligned in memory of bool values.
 
-typedef vec< 3, bool, aligned_mediump > aligned_mediump_bvec3
 3 components vector aligned in memory of bool values.
 
-typedef vec< 4, bool, aligned_mediump > aligned_mediump_bvec4
 4 components vector aligned in memory of bool values.
 
-typedef mat< 2, 2, double, aligned_mediump > aligned_mediump_dmat2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, double, aligned_mediump > aligned_mediump_dmat2x2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, double, aligned_mediump > aligned_mediump_dmat2x3
 2 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, double, aligned_mediump > aligned_mediump_dmat2x4
 2 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, aligned_mediump > aligned_mediump_dmat3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, double, aligned_mediump > aligned_mediump_dmat3x2
 3 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, aligned_mediump > aligned_mediump_dmat3x3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, double, aligned_mediump > aligned_mediump_dmat3x4
 3 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, aligned_mediump > aligned_mediump_dmat4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, double, aligned_mediump > aligned_mediump_dmat4x2
 4 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, double, aligned_mediump > aligned_mediump_dmat4x3
 4 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, aligned_mediump > aligned_mediump_dmat4x4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 1, double, aligned_mediump > aligned_mediump_dvec1
 1 component vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 2, double, aligned_mediump > aligned_mediump_dvec2
 2 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 3, double, aligned_mediump > aligned_mediump_dvec3
 3 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 4, double, aligned_mediump > aligned_mediump_dvec4
 4 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 1, int, aligned_mediump > aligned_mediump_ivec1
 1 component vector aligned in memory of signed integer numbers.
 
-typedef vec< 2, int, aligned_mediump > aligned_mediump_ivec2
 2 components vector aligned in memory of signed integer numbers.
 
-typedef vec< 3, int, aligned_mediump > aligned_mediump_ivec3
 3 components vector aligned in memory of signed integer numbers.
 
-typedef vec< 4, int, aligned_mediump > aligned_mediump_ivec4
 4 components vector aligned in memory of signed integer numbers.
 
-typedef mat< 2, 2, float, aligned_mediump > aligned_mediump_mat2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, float, aligned_mediump > aligned_mediump_mat2x2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, float, aligned_mediump > aligned_mediump_mat2x3
 2 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, float, aligned_mediump > aligned_mediump_mat2x4
 2 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, aligned_mediump > aligned_mediump_mat3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, float, aligned_mediump > aligned_mediump_mat3x2
 3 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, aligned_mediump > aligned_mediump_mat3x3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, float, aligned_mediump > aligned_mediump_mat3x4
 3 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, aligned_mediump > aligned_mediump_mat4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, float, aligned_mediump > aligned_mediump_mat4x2
 4 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, float, aligned_mediump > aligned_mediump_mat4x3
 4 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, aligned_mediump > aligned_mediump_mat4x4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 1, uint, aligned_mediump > aligned_mediump_uvec1
 1 component vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 2, uint, aligned_mediump > aligned_mediump_uvec2
 2 components vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 3, uint, aligned_mediump > aligned_mediump_uvec3
 3 components vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 4, uint, aligned_mediump > aligned_mediump_uvec4
 4 components vector aligned in memory of unsigned integer numbers.
 
-typedef vec< 1, float, aligned_mediump > aligned_mediump_vec1
 1 component vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 2, float, aligned_mediump > aligned_mediump_vec2
 2 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 3, float, aligned_mediump > aligned_mediump_vec3
 3 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 4, float, aligned_mediump > aligned_mediump_vec4
 4 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef aligned_highp_uvec1 aligned_uvec1
 1 component vector aligned in memory of unsigned integer numbers.
 
-typedef aligned_highp_uvec2 aligned_uvec2
 2 components vector aligned in memory of unsigned integer numbers.
 
-typedef aligned_highp_uvec3 aligned_uvec3
 3 components vector aligned in memory of unsigned integer numbers.
 
-typedef aligned_highp_uvec4 aligned_uvec4
 4 components vector aligned in memory of unsigned integer numbers.
 
-typedef aligned_highp_vec1 aligned_vec1
 1 component vector aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_vec2 aligned_vec2
 2 components vector aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_vec3 aligned_vec3
 3 components vector aligned in memory of single-precision floating-point numbers.
 
-typedef aligned_highp_vec4 aligned_vec4
 4 components vector aligned in memory of single-precision floating-point numbers.
 
-typedef packed_highp_bvec1 packed_bvec1
 1 components vector tightly packed in memory of bool values.
 
-typedef packed_highp_bvec2 packed_bvec2
 2 components vector tightly packed in memory of bool values.
 
-typedef packed_highp_bvec3 packed_bvec3
 3 components vector tightly packed in memory of bool values.
 
-typedef packed_highp_bvec4 packed_bvec4
 4 components vector tightly packed in memory of bool values.
 
-typedef packed_highp_dmat2 packed_dmat2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat2x2 packed_dmat2x2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat2x3 packed_dmat2x3
 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat2x4 packed_dmat2x4
 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat3 packed_dmat3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat3x2 packed_dmat3x2
 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat3x3 packed_dmat3x3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat3x4 packed_dmat3x4
 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat4 packed_dmat4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat4x2 packed_dmat4x2
 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat4x3 packed_dmat4x3
 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dmat4x4 packed_dmat4x4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dvec1 packed_dvec1
 1 component vector tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dvec2 packed_dvec2
 2 components vector tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dvec3 packed_dvec3
 3 components vector tightly packed in memory of double-precision floating-point numbers.
 
-typedef packed_highp_dvec4 packed_dvec4
 4 components vector tightly packed in memory of double-precision floating-point numbers.
 
-typedef vec< 1, bool, packed_highp > packed_highp_bvec1
 1 component vector tightly packed in memory of bool values.
 
-typedef vec< 2, bool, packed_highp > packed_highp_bvec2
 2 components vector tightly packed in memory of bool values.
 
-typedef vec< 3, bool, packed_highp > packed_highp_bvec3
 3 components vector tightly packed in memory of bool values.
 
-typedef vec< 4, bool, packed_highp > packed_highp_bvec4
 4 components vector tightly packed in memory of bool values.
 
-typedef mat< 2, 2, double, packed_highp > packed_highp_dmat2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, double, packed_highp > packed_highp_dmat2x2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, double, packed_highp > packed_highp_dmat2x3
 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, double, packed_highp > packed_highp_dmat2x4
 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, packed_highp > packed_highp_dmat3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, double, packed_highp > packed_highp_dmat3x2
 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, packed_highp > packed_highp_dmat3x3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, double, packed_highp > packed_highp_dmat3x4
 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, packed_highp > packed_highp_dmat4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, double, packed_highp > packed_highp_dmat4x2
 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, double, packed_highp > packed_highp_dmat4x3
 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, packed_highp > packed_highp_dmat4x4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 1, double, packed_highp > packed_highp_dvec1
 1 component vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 2, double, packed_highp > packed_highp_dvec2
 2 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 3, double, packed_highp > packed_highp_dvec3
 3 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 4, double, packed_highp > packed_highp_dvec4
 4 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 1, int, packed_highp > packed_highp_ivec1
 1 component vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 2, int, packed_highp > packed_highp_ivec2
 2 components vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 3, int, packed_highp > packed_highp_ivec3
 3 components vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 4, int, packed_highp > packed_highp_ivec4
 4 components vector tightly packed in memory of signed integer numbers.
 
-typedef mat< 2, 2, float, packed_highp > packed_highp_mat2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, float, packed_highp > packed_highp_mat2x2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, float, packed_highp > packed_highp_mat2x3
 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, float, packed_highp > packed_highp_mat2x4
 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, packed_highp > packed_highp_mat3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, float, packed_highp > packed_highp_mat3x2
 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, packed_highp > packed_highp_mat3x3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, float, packed_highp > packed_highp_mat3x4
 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, packed_highp > packed_highp_mat4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, float, packed_highp > packed_highp_mat4x2
 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, float, packed_highp > packed_highp_mat4x3
 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, packed_highp > packed_highp_mat4x4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 1, uint, packed_highp > packed_highp_uvec1
 1 component vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 2, uint, packed_highp > packed_highp_uvec2
 2 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 3, uint, packed_highp > packed_highp_uvec3
 3 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 4, uint, packed_highp > packed_highp_uvec4
 4 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 1, float, packed_highp > packed_highp_vec1
 1 component vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 2, float, packed_highp > packed_highp_vec2
 2 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 3, float, packed_highp > packed_highp_vec3
 3 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef vec< 4, float, packed_highp > packed_highp_vec4
 4 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
-typedef packed_highp_ivec1 packed_ivec1
 1 component vector tightly packed in memory of signed integer numbers.
 
-typedef packed_highp_ivec2 packed_ivec2
 2 components vector tightly packed in memory of signed integer numbers.
 
-typedef packed_highp_ivec3 packed_ivec3
 3 components vector tightly packed in memory of signed integer numbers.
 
-typedef packed_highp_ivec4 packed_ivec4
 4 components vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 1, bool, packed_lowp > packed_lowp_bvec1
 1 component vector tightly packed in memory of bool values.
 
-typedef vec< 2, bool, packed_lowp > packed_lowp_bvec2
 2 components vector tightly packed in memory of bool values.
 
-typedef vec< 3, bool, packed_lowp > packed_lowp_bvec3
 3 components vector tightly packed in memory of bool values.
 
-typedef vec< 4, bool, packed_lowp > packed_lowp_bvec4
 4 components vector tightly packed in memory of bool values.
 
-typedef mat< 2, 2, double, packed_lowp > packed_lowp_dmat2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, double, packed_lowp > packed_lowp_dmat2x2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, double, packed_lowp > packed_lowp_dmat2x3
 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, double, packed_lowp > packed_lowp_dmat2x4
 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, packed_lowp > packed_lowp_dmat3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, double, packed_lowp > packed_lowp_dmat3x2
 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, packed_lowp > packed_lowp_dmat3x3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, double, packed_lowp > packed_lowp_dmat3x4
 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, packed_lowp > packed_lowp_dmat4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, double, packed_lowp > packed_lowp_dmat4x2
 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, double, packed_lowp > packed_lowp_dmat4x3
 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, packed_lowp > packed_lowp_dmat4x4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 1, double, packed_lowp > packed_lowp_dvec1
 1 component vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 2, double, packed_lowp > packed_lowp_dvec2
 2 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 3, double, packed_lowp > packed_lowp_dvec3
 3 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 4, double, packed_lowp > packed_lowp_dvec4
 4 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 1, int, packed_lowp > packed_lowp_ivec1
 1 component vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 2, int, packed_lowp > packed_lowp_ivec2
 2 components vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 3, int, packed_lowp > packed_lowp_ivec3
 3 components vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 4, int, packed_lowp > packed_lowp_ivec4
 4 components vector tightly packed in memory of signed integer numbers.
 
-typedef mat< 2, 2, float, packed_lowp > packed_lowp_mat2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, float, packed_lowp > packed_lowp_mat2x2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, float, packed_lowp > packed_lowp_mat2x3
 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, float, packed_lowp > packed_lowp_mat2x4
 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, packed_lowp > packed_lowp_mat3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, float, packed_lowp > packed_lowp_mat3x2
 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, packed_lowp > packed_lowp_mat3x3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, float, packed_lowp > packed_lowp_mat3x4
 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, packed_lowp > packed_lowp_mat4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, float, packed_lowp > packed_lowp_mat4x2
 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, float, packed_lowp > packed_lowp_mat4x3
 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, packed_lowp > packed_lowp_mat4x4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 1, uint, packed_lowp > packed_lowp_uvec1
 1 component vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 2, uint, packed_lowp > packed_lowp_uvec2
 2 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 3, uint, packed_lowp > packed_lowp_uvec3
 3 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 4, uint, packed_lowp > packed_lowp_uvec4
 4 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 1, float, packed_lowp > packed_lowp_vec1
 1 component vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 2, float, packed_lowp > packed_lowp_vec2
 2 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 3, float, packed_lowp > packed_lowp_vec3
 3 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef vec< 4, float, packed_lowp > packed_lowp_vec4
 4 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
-typedef packed_highp_mat2 packed_mat2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat2x2 packed_mat2x2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat2x3 packed_mat2x3
 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat2x4 packed_mat2x4
 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat3 packed_mat3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat3x2 packed_mat3x2
 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat3x3 packed_mat3x3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat3x4 packed_mat3x4
 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat4 packed_mat4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat4x2 packed_mat4x2
 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat4x3 packed_mat4x3
 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_mat4x4 packed_mat4x4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
 
-typedef vec< 1, bool, packed_mediump > packed_mediump_bvec1
 1 component vector tightly packed in memory of bool values.
 
-typedef vec< 2, bool, packed_mediump > packed_mediump_bvec2
 2 components vector tightly packed in memory of bool values.
 
-typedef vec< 3, bool, packed_mediump > packed_mediump_bvec3
 3 components vector tightly packed in memory of bool values.
 
-typedef vec< 4, bool, packed_mediump > packed_mediump_bvec4
 4 components vector tightly packed in memory of bool values.
 
-typedef mat< 2, 2, double, packed_mediump > packed_mediump_dmat2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, double, packed_mediump > packed_mediump_dmat2x2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, double, packed_mediump > packed_mediump_dmat2x3
 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, double, packed_mediump > packed_mediump_dmat2x4
 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, packed_mediump > packed_mediump_dmat3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, double, packed_mediump > packed_mediump_dmat3x2
 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, double, packed_mediump > packed_mediump_dmat3x3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, double, packed_mediump > packed_mediump_dmat3x4
 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, packed_mediump > packed_mediump_dmat4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, double, packed_mediump > packed_mediump_dmat4x2
 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, double, packed_mediump > packed_mediump_dmat4x3
 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, double, packed_mediump > packed_mediump_dmat4x4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 1, double, packed_mediump > packed_mediump_dvec1
 1 component vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 2, double, packed_mediump > packed_mediump_dvec2
 2 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 3, double, packed_mediump > packed_mediump_dvec3
 3 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 4, double, packed_mediump > packed_mediump_dvec4
 4 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 1, int, packed_mediump > packed_mediump_ivec1
 1 component vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 2, int, packed_mediump > packed_mediump_ivec2
 2 components vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 3, int, packed_mediump > packed_mediump_ivec3
 3 components vector tightly packed in memory of signed integer numbers.
 
-typedef vec< 4, int, packed_mediump > packed_mediump_ivec4
 4 components vector tightly packed in memory of signed integer numbers.
 
-typedef mat< 2, 2, float, packed_mediump > packed_mediump_mat2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 2, float, packed_mediump > packed_mediump_mat2x2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 3, float, packed_mediump > packed_mediump_mat2x3
 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 2, 4, float, packed_mediump > packed_mediump_mat2x4
 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, packed_mediump > packed_mediump_mat3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 2, float, packed_mediump > packed_mediump_mat3x2
 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 3, float, packed_mediump > packed_mediump_mat3x3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 3, 4, float, packed_mediump > packed_mediump_mat3x4
 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, packed_mediump > packed_mediump_mat4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 2, float, packed_mediump > packed_mediump_mat4x2
 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 3, float, packed_mediump > packed_mediump_mat4x3
 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef mat< 4, 4, float, packed_mediump > packed_mediump_mat4x4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 1, uint, packed_mediump > packed_mediump_uvec1
 1 component vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 2, uint, packed_mediump > packed_mediump_uvec2
 2 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 3, uint, packed_mediump > packed_mediump_uvec3
 3 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 4, uint, packed_mediump > packed_mediump_uvec4
 4 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef vec< 1, float, packed_mediump > packed_mediump_vec1
 1 component vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 2, float, packed_mediump > packed_mediump_vec2
 2 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 3, float, packed_mediump > packed_mediump_vec3
 3 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef vec< 4, float, packed_mediump > packed_mediump_vec4
 4 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
-typedef packed_highp_uvec1 packed_uvec1
 1 component vector tightly packed in memory of unsigned integer numbers.
 
-typedef packed_highp_uvec2 packed_uvec2
 2 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef packed_highp_uvec3 packed_uvec3
 3 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef packed_highp_uvec4 packed_uvec4
 4 components vector tightly packed in memory of unsigned integer numbers.
 
-typedef packed_highp_vec1 packed_vec1
 1 component vector tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_vec2 packed_vec2
 2 components vector tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_vec3 packed_vec3
 3 components vector tightly packed in memory of single-precision floating-point numbers.
 
-typedef packed_highp_vec4 packed_vec4
 4 components vector tightly packed in memory of single-precision floating-point numbers.
 
-

Detailed Description

-

Include <glm/gtc/type_aligned.hpp> to use the features of this extension.

-

Aligned types allowing SIMD optimizations of vectors and matrices types

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00304.html b/tests/OpenGL/package/glm/doc/api/a00304.html deleted file mode 100644 index cd22f358..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00304.html +++ /dev/null @@ -1,8955 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_type_precision - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTC_type_precision
-
-
- -

Include <glm/gtc/type_precision.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

typedef float f32
 Default 32 bit single-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f32, defaultp > f32mat2
 Single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f32, defaultp > f32mat2x2
 Single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f32, defaultp > f32mat2x3
 Single-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f32, defaultp > f32mat2x4
 Single-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f32, defaultp > f32mat3
 Single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f32, defaultp > f32mat3x2
 Single-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f32, defaultp > f32mat3x3
 Single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f32, defaultp > f32mat3x4
 Single-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f32, defaultp > f32mat4
 Single-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f32, defaultp > f32mat4x2
 Single-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f32, defaultp > f32mat4x3
 Single-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f32, defaultp > f32mat4x4
 Single-qualifier floating-point 4x4 matrix. More...
 
typedef qua< f32, defaultp > f32quat
 Single-qualifier floating-point quaternion. More...
 
typedef vec< 1, f32, defaultp > f32vec1
 Single-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, f32, defaultp > f32vec2
 Single-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, f32, defaultp > f32vec3
 Single-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, f32, defaultp > f32vec4
 Single-qualifier floating-point vector of 4 components. More...
 
typedef double f64
 Default 64 bit double-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f64, defaultp > f64mat2
 Double-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f64, defaultp > f64mat2x2
 Double-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f64, defaultp > f64mat2x3
 Double-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f64, defaultp > f64mat2x4
 Double-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f64, defaultp > f64mat3
 Double-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f64, defaultp > f64mat3x2
 Double-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f64, defaultp > f64mat3x3
 Double-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f64, defaultp > f64mat3x4
 Double-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f64, defaultp > f64mat4
 Double-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f64, defaultp > f64mat4x2
 Double-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f64, defaultp > f64mat4x3
 Double-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f64, defaultp > f64mat4x4
 Double-qualifier floating-point 4x4 matrix. More...
 
typedef qua< f64, defaultp > f64quat
 Double-qualifier floating-point quaternion. More...
 
typedef vec< 1, f64, defaultp > f64vec1
 Double-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, f64, defaultp > f64vec2
 Double-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, f64, defaultp > f64vec3
 Double-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, f64, defaultp > f64vec4
 Double-qualifier floating-point vector of 4 components. More...
 
typedef float float32
 Single-qualifier floating-point scalar. More...
 
typedef float float32_t
 Default 32 bit single-qualifier floating-point scalar. More...
 
typedef double float64
 Double-qualifier floating-point scalar. More...
 
typedef double float64_t
 Default 64 bit double-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f32, defaultp > fmat2
 Single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f32, defaultp > fmat2x2
 Single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f32, defaultp > fmat2x3
 Single-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f32, defaultp > fmat2x4
 Single-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f32, defaultp > fmat3
 Single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f32, defaultp > fmat3x2
 Single-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f32, defaultp > fmat3x3
 Single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f32, defaultp > fmat3x4
 Single-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f32, defaultp > fmat4
 Single-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f32, defaultp > fmat4x2
 Single-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f32, defaultp > fmat4x3
 Single-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f32, defaultp > fmat4x4
 Single-qualifier floating-point 4x4 matrix. More...
 
typedef vec< 1, f32, defaultp > fvec1
 Single-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, f32, defaultp > fvec2
 Single-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, f32, defaultp > fvec3
 Single-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, f32, defaultp > fvec4
 Single-qualifier floating-point vector of 4 components. More...
 
typedef float highp_f32
 High 32 bit single-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f32, highp > highp_f32mat2
 High single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f32, highp > highp_f32mat2x2
 High single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f32, highp > highp_f32mat2x3
 High single-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f32, highp > highp_f32mat2x4
 High single-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f32, highp > highp_f32mat3
 High single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f32, highp > highp_f32mat3x2
 High single-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f32, highp > highp_f32mat3x3
 High single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f32, highp > highp_f32mat3x4
 High single-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f32, highp > highp_f32mat4
 High single-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f32, highp > highp_f32mat4x2
 High single-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f32, highp > highp_f32mat4x3
 High single-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f32, highp > highp_f32mat4x4
 High single-qualifier floating-point 4x4 matrix. More...
 
typedef qua< f32, highp > highp_f32quat
 High single-qualifier floating-point quaternion. More...
 
typedef vec< 1, f32, highp > highp_f32vec1
 High single-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, f32, highp > highp_f32vec2
 High single-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, f32, highp > highp_f32vec3
 High single-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, f32, highp > highp_f32vec4
 High single-qualifier floating-point vector of 4 components. More...
 
typedef double highp_f64
 High 64 bit double-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f64, highp > highp_f64mat2
 High double-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f64, highp > highp_f64mat2x2
 High double-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f64, highp > highp_f64mat2x3
 High double-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f64, highp > highp_f64mat2x4
 High double-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f64, highp > highp_f64mat3
 High double-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f64, highp > highp_f64mat3x2
 High double-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f64, highp > highp_f64mat3x3
 High double-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f64, highp > highp_f64mat3x4
 High double-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f64, highp > highp_f64mat4
 High double-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f64, highp > highp_f64mat4x2
 High double-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f64, highp > highp_f64mat4x3
 High double-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f64, highp > highp_f64mat4x4
 High double-qualifier floating-point 4x4 matrix. More...
 
typedef qua< f64, highp > highp_f64quat
 High double-qualifier floating-point quaternion. More...
 
typedef vec< 1, f64, highp > highp_f64vec1
 High double-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, f64, highp > highp_f64vec2
 High double-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, f64, highp > highp_f64vec3
 High double-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, f64, highp > highp_f64vec4
 High double-qualifier floating-point vector of 4 components. More...
 
typedef float highp_float32
 High 32 bit single-qualifier floating-point scalar. More...
 
typedef float highp_float32_t
 High 32 bit single-qualifier floating-point scalar. More...
 
typedef double highp_float64
 High 64 bit double-qualifier floating-point scalar. More...
 
typedef double highp_float64_t
 High 64 bit double-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f32, highp > highp_fmat2
 High single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f32, highp > highp_fmat2x2
 High single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f32, highp > highp_fmat2x3
 High single-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f32, highp > highp_fmat2x4
 High single-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f32, highp > highp_fmat3
 High single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f32, highp > highp_fmat3x2
 High single-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f32, highp > highp_fmat3x3
 High single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f32, highp > highp_fmat3x4
 High single-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f32, highp > highp_fmat4
 High single-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f32, highp > highp_fmat4x2
 High single-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f32, highp > highp_fmat4x3
 High single-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f32, highp > highp_fmat4x4
 High single-qualifier floating-point 4x4 matrix. More...
 
typedef vec< 1, float, highp > highp_fvec1
 High single-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, float, highp > highp_fvec2
 High Single-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, float, highp > highp_fvec3
 High Single-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, float, highp > highp_fvec4
 High Single-qualifier floating-point vector of 4 components. More...
 
typedef int16 highp_i16
 High qualifier 16 bit signed integer type. More...
 
typedef vec< 1, i16, highp > highp_i16vec1
 High qualifier 16 bit signed integer scalar type. More...
 
typedef vec< 2, i16, highp > highp_i16vec2
 High qualifier 16 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i16, highp > highp_i16vec3
 High qualifier 16 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i16, highp > highp_i16vec4
 High qualifier 16 bit signed integer vector of 4 components type. More...
 
typedef int32 highp_i32
 High qualifier 32 bit signed integer type. More...
 
typedef vec< 1, i32, highp > highp_i32vec1
 High qualifier 32 bit signed integer scalar type. More...
 
typedef vec< 2, i32, highp > highp_i32vec2
 High qualifier 32 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i32, highp > highp_i32vec3
 High qualifier 32 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i32, highp > highp_i32vec4
 High qualifier 32 bit signed integer vector of 4 components type. More...
 
typedef int64 highp_i64
 High qualifier 64 bit signed integer type. More...
 
typedef vec< 1, i64, highp > highp_i64vec1
 High qualifier 64 bit signed integer scalar type. More...
 
typedef vec< 2, i64, highp > highp_i64vec2
 High qualifier 64 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i64, highp > highp_i64vec3
 High qualifier 64 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i64, highp > highp_i64vec4
 High qualifier 64 bit signed integer vector of 4 components type. More...
 
typedef int8 highp_i8
 High qualifier 8 bit signed integer type. More...
 
typedef vec< 1, i8, highp > highp_i8vec1
 High qualifier 8 bit signed integer scalar type. More...
 
typedef vec< 2, i8, highp > highp_i8vec2
 High qualifier 8 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i8, highp > highp_i8vec3
 High qualifier 8 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i8, highp > highp_i8vec4
 High qualifier 8 bit signed integer vector of 4 components type. More...
 
typedef int16 highp_int16
 High qualifier 16 bit signed integer type. More...
 
typedef int16 highp_int16_t
 High qualifier 16 bit signed integer type. More...
 
typedef int32 highp_int32
 High qualifier 32 bit signed integer type. More...
 
typedef int32 highp_int32_t
 32 bit signed integer type. More...
 
typedef int64 highp_int64
 High qualifier 64 bit signed integer type. More...
 
typedef int64 highp_int64_t
 High qualifier 64 bit signed integer type. More...
 
typedef int8 highp_int8
 High qualifier 8 bit signed integer type. More...
 
typedef int8 highp_int8_t
 High qualifier 8 bit signed integer type. More...
 
typedef uint16 highp_u16
 High qualifier 16 bit unsigned integer type. More...
 
typedef vec< 1, u16, highp > highp_u16vec1
 High qualifier 16 bit unsigned integer scalar type. More...
 
typedef vec< 2, u16, highp > highp_u16vec2
 High qualifier 16 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u16, highp > highp_u16vec3
 High qualifier 16 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u16, highp > highp_u16vec4
 High qualifier 16 bit unsigned integer vector of 4 components type. More...
 
typedef uint32 highp_u32
 High qualifier 32 bit unsigned integer type. More...
 
typedef vec< 1, u32, highp > highp_u32vec1
 High qualifier 32 bit unsigned integer scalar type. More...
 
typedef vec< 2, u32, highp > highp_u32vec2
 High qualifier 32 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u32, highp > highp_u32vec3
 High qualifier 32 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u32, highp > highp_u32vec4
 High qualifier 32 bit unsigned integer vector of 4 components type. More...
 
typedef uint64 highp_u64
 High qualifier 64 bit unsigned integer type. More...
 
typedef vec< 1, u64, highp > highp_u64vec1
 High qualifier 64 bit unsigned integer scalar type. More...
 
typedef vec< 2, u64, highp > highp_u64vec2
 High qualifier 64 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u64, highp > highp_u64vec3
 High qualifier 64 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u64, highp > highp_u64vec4
 High qualifier 64 bit unsigned integer vector of 4 components type. More...
 
typedef uint8 highp_u8
 High qualifier 8 bit unsigned integer type. More...
 
typedef vec< 1, u8, highp > highp_u8vec1
 High qualifier 8 bit unsigned integer scalar type. More...
 
typedef vec< 2, u8, highp > highp_u8vec2
 High qualifier 8 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u8, highp > highp_u8vec3
 High qualifier 8 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u8, highp > highp_u8vec4
 High qualifier 8 bit unsigned integer vector of 4 components type. More...
 
typedef uint16 highp_uint16
 High qualifier 16 bit unsigned integer type. More...
 
typedef uint16 highp_uint16_t
 High qualifier 16 bit unsigned integer type. More...
 
typedef uint32 highp_uint32
 High qualifier 32 bit unsigned integer type. More...
 
typedef uint32 highp_uint32_t
 High qualifier 32 bit unsigned integer type. More...
 
typedef uint64 highp_uint64
 High qualifier 64 bit unsigned integer type. More...
 
typedef uint64 highp_uint64_t
 High qualifier 64 bit unsigned integer type. More...
 
typedef uint8 highp_uint8
 High qualifier 8 bit unsigned integer type. More...
 
typedef uint8 highp_uint8_t
 High qualifier 8 bit unsigned integer type. More...
 
typedef int16 i16
 16 bit signed integer type. More...
 
typedef vec< 1, i16, defaultp > i16vec1
 16 bit signed integer scalar type. More...
 
typedef vec< 2, i16, defaultp > i16vec2
 16 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i16, defaultp > i16vec3
 16 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i16, defaultp > i16vec4
 16 bit signed integer vector of 4 components type. More...
 
typedef int32 i32
 32 bit signed integer type. More...
 
typedef vec< 1, i32, defaultp > i32vec1
 32 bit signed integer scalar type. More...
 
typedef vec< 2, i32, defaultp > i32vec2
 32 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i32, defaultp > i32vec3
 32 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i32, defaultp > i32vec4
 32 bit signed integer vector of 4 components type. More...
 
typedef int64 i64
 64 bit signed integer type. More...
 
typedef vec< 1, i64, defaultp > i64vec1
 64 bit signed integer scalar type. More...
 
typedef vec< 2, i64, defaultp > i64vec2
 64 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i64, defaultp > i64vec3
 64 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i64, defaultp > i64vec4
 64 bit signed integer vector of 4 components type. More...
 
typedef int8 i8
 8 bit signed integer type. More...
 
typedef vec< 1, i8, defaultp > i8vec1
 8 bit signed integer scalar type. More...
 
typedef vec< 2, i8, defaultp > i8vec2
 8 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i8, defaultp > i8vec3
 8 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i8, defaultp > i8vec4
 8 bit signed integer vector of 4 components type. More...
 
typedef int16 int16_t
 16 bit signed integer type. More...
 
typedef int32 int32_t
 32 bit signed integer type. More...
 
typedef int64 int64_t
 64 bit signed integer type. More...
 
typedef int8 int8_t
 8 bit signed integer type. More...
 
typedef float lowp_f32
 Low 32 bit single-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f32, lowp > lowp_f32mat2
 Low single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f32, lowp > lowp_f32mat2x2
 Low single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f32, lowp > lowp_f32mat2x3
 Low single-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f32, lowp > lowp_f32mat2x4
 Low single-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f32, lowp > lowp_f32mat3
 Low single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f32, lowp > lowp_f32mat3x2
 Low single-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f32, lowp > lowp_f32mat3x3
 Low single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f32, lowp > lowp_f32mat3x4
 Low single-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f32, lowp > lowp_f32mat4
 Low single-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f32, lowp > lowp_f32mat4x2
 Low single-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f32, lowp > lowp_f32mat4x3
 Low single-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f32, lowp > lowp_f32mat4x4
 Low single-qualifier floating-point 4x4 matrix. More...
 
typedef qua< f32, lowp > lowp_f32quat
 Low single-qualifier floating-point quaternion. More...
 
typedef vec< 1, f32, lowp > lowp_f32vec1
 Low single-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, f32, lowp > lowp_f32vec2
 Low single-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, f32, lowp > lowp_f32vec3
 Low single-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, f32, lowp > lowp_f32vec4
 Low single-qualifier floating-point vector of 4 components. More...
 
typedef double lowp_f64
 Low 64 bit double-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f64, lowp > lowp_f64mat2
 Low double-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f64, lowp > lowp_f64mat2x2
 Low double-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f64, lowp > lowp_f64mat2x3
 Low double-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f64, lowp > lowp_f64mat2x4
 Low double-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f64, lowp > lowp_f64mat3
 Low double-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f64, lowp > lowp_f64mat3x2
 Low double-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f64, lowp > lowp_f64mat3x3
 Low double-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f64, lowp > lowp_f64mat3x4
 Low double-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f64, lowp > lowp_f64mat4
 Low double-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f64, lowp > lowp_f64mat4x2
 Low double-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f64, lowp > lowp_f64mat4x3
 Low double-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f64, lowp > lowp_f64mat4x4
 Low double-qualifier floating-point 4x4 matrix. More...
 
typedef qua< f64, lowp > lowp_f64quat
 Low double-qualifier floating-point quaternion. More...
 
typedef vec< 1, f64, lowp > lowp_f64vec1
 Low double-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, f64, lowp > lowp_f64vec2
 Low double-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, f64, lowp > lowp_f64vec3
 Low double-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, f64, lowp > lowp_f64vec4
 Low double-qualifier floating-point vector of 4 components. More...
 
typedef float lowp_float32
 Low 32 bit single-qualifier floating-point scalar. More...
 
typedef float lowp_float32_t
 Low 32 bit single-qualifier floating-point scalar. More...
 
typedef double lowp_float64
 Low 64 bit double-qualifier floating-point scalar. More...
 
typedef double lowp_float64_t
 Low 64 bit double-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f32, lowp > lowp_fmat2
 Low single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f32, lowp > lowp_fmat2x2
 Low single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f32, lowp > lowp_fmat2x3
 Low single-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f32, lowp > lowp_fmat2x4
 Low single-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f32, lowp > lowp_fmat3
 Low single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f32, lowp > lowp_fmat3x2
 Low single-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f32, lowp > lowp_fmat3x3
 Low single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f32, lowp > lowp_fmat3x4
 Low single-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f32, lowp > lowp_fmat4
 Low single-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f32, lowp > lowp_fmat4x2
 Low single-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f32, lowp > lowp_fmat4x3
 Low single-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f32, lowp > lowp_fmat4x4
 Low single-qualifier floating-point 4x4 matrix. More...
 
typedef vec< 1, float, lowp > lowp_fvec1
 Low single-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, float, lowp > lowp_fvec2
 Low single-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, float, lowp > lowp_fvec3
 Low single-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, float, lowp > lowp_fvec4
 Low single-qualifier floating-point vector of 4 components. More...
 
typedef int16 lowp_i16
 Low qualifier 16 bit signed integer type. More...
 
typedef vec< 1, i16, lowp > lowp_i16vec1
 Low qualifier 16 bit signed integer scalar type. More...
 
typedef vec< 2, i16, lowp > lowp_i16vec2
 Low qualifier 16 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i16, lowp > lowp_i16vec3
 Low qualifier 16 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i16, lowp > lowp_i16vec4
 Low qualifier 16 bit signed integer vector of 4 components type. More...
 
typedef int32 lowp_i32
 Low qualifier 32 bit signed integer type. More...
 
typedef vec< 1, i32, lowp > lowp_i32vec1
 Low qualifier 32 bit signed integer scalar type. More...
 
typedef vec< 2, i32, lowp > lowp_i32vec2
 Low qualifier 32 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i32, lowp > lowp_i32vec3
 Low qualifier 32 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i32, lowp > lowp_i32vec4
 Low qualifier 32 bit signed integer vector of 4 components type. More...
 
typedef int64 lowp_i64
 Low qualifier 64 bit signed integer type. More...
 
typedef vec< 1, i64, lowp > lowp_i64vec1
 Low qualifier 64 bit signed integer scalar type. More...
 
typedef vec< 2, i64, lowp > lowp_i64vec2
 Low qualifier 64 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i64, lowp > lowp_i64vec3
 Low qualifier 64 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i64, lowp > lowp_i64vec4
 Low qualifier 64 bit signed integer vector of 4 components type. More...
 
typedef int8 lowp_i8
 Low qualifier 8 bit signed integer type. More...
 
typedef vec< 1, i8, lowp > lowp_i8vec1
 Low qualifier 8 bit signed integer scalar type. More...
 
typedef vec< 2, i8, lowp > lowp_i8vec2
 Low qualifier 8 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i8, lowp > lowp_i8vec3
 Low qualifier 8 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i8, lowp > lowp_i8vec4
 Low qualifier 8 bit signed integer vector of 4 components type. More...
 
typedef int16 lowp_int16
 Low qualifier 16 bit signed integer type. More...
 
typedef int16 lowp_int16_t
 Low qualifier 16 bit signed integer type. More...
 
typedef int32 lowp_int32
 Low qualifier 32 bit signed integer type. More...
 
typedef int32 lowp_int32_t
 Low qualifier 32 bit signed integer type. More...
 
typedef int64 lowp_int64
 Low qualifier 64 bit signed integer type. More...
 
typedef int64 lowp_int64_t
 Low qualifier 64 bit signed integer type. More...
 
typedef int8 lowp_int8
 Low qualifier 8 bit signed integer type. More...
 
typedef int8 lowp_int8_t
 Low qualifier 8 bit signed integer type. More...
 
typedef uint16 lowp_u16
 Low qualifier 16 bit unsigned integer type. More...
 
typedef vec< 1, u16, lowp > lowp_u16vec1
 Low qualifier 16 bit unsigned integer scalar type. More...
 
typedef vec< 2, u16, lowp > lowp_u16vec2
 Low qualifier 16 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u16, lowp > lowp_u16vec3
 Low qualifier 16 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u16, lowp > lowp_u16vec4
 Low qualifier 16 bit unsigned integer vector of 4 components type. More...
 
typedef uint32 lowp_u32
 Low qualifier 32 bit unsigned integer type. More...
 
typedef vec< 1, u32, lowp > lowp_u32vec1
 Low qualifier 32 bit unsigned integer scalar type. More...
 
typedef vec< 2, u32, lowp > lowp_u32vec2
 Low qualifier 32 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u32, lowp > lowp_u32vec3
 Low qualifier 32 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u32, lowp > lowp_u32vec4
 Low qualifier 32 bit unsigned integer vector of 4 components type. More...
 
typedef uint64 lowp_u64
 Low qualifier 64 bit unsigned integer type. More...
 
typedef vec< 1, u64, lowp > lowp_u64vec1
 Low qualifier 64 bit unsigned integer scalar type. More...
 
typedef vec< 2, u64, lowp > lowp_u64vec2
 Low qualifier 64 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u64, lowp > lowp_u64vec3
 Low qualifier 64 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u64, lowp > lowp_u64vec4
 Low qualifier 64 bit unsigned integer vector of 4 components type. More...
 
typedef uint8 lowp_u8
 Low qualifier 8 bit unsigned integer type. More...
 
typedef vec< 1, u8, lowp > lowp_u8vec1
 Low qualifier 8 bit unsigned integer scalar type. More...
 
typedef vec< 2, u8, lowp > lowp_u8vec2
 Low qualifier 8 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u8, lowp > lowp_u8vec3
 Low qualifier 8 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u8, lowp > lowp_u8vec4
 Low qualifier 8 bit unsigned integer vector of 4 components type. More...
 
typedef uint16 lowp_uint16
 Low qualifier 16 bit unsigned integer type. More...
 
typedef uint16 lowp_uint16_t
 Low qualifier 16 bit unsigned integer type. More...
 
typedef uint32 lowp_uint32
 Low qualifier 32 bit unsigned integer type. More...
 
typedef uint32 lowp_uint32_t
 Low qualifier 32 bit unsigned integer type. More...
 
typedef uint64 lowp_uint64
 Low qualifier 64 bit unsigned integer type. More...
 
typedef uint64 lowp_uint64_t
 Low qualifier 64 bit unsigned integer type. More...
 
typedef uint8 lowp_uint8
 Low qualifier 8 bit unsigned integer type. More...
 
typedef uint8 lowp_uint8_t
 Low qualifier 8 bit unsigned integer type. More...
 
typedef float mediump_f32
 Medium 32 bit single-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f32, mediump > mediump_f32mat2
 Medium single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f32, mediump > mediump_f32mat2x2
 High single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f32, mediump > mediump_f32mat2x3
 Medium single-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f32, mediump > mediump_f32mat2x4
 Medium single-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f32, mediump > mediump_f32mat3
 Medium single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f32, mediump > mediump_f32mat3x2
 Medium single-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f32, mediump > mediump_f32mat3x3
 Medium single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f32, mediump > mediump_f32mat3x4
 Medium single-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f32, mediump > mediump_f32mat4
 Medium single-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f32, mediump > mediump_f32mat4x2
 Medium single-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f32, mediump > mediump_f32mat4x3
 Medium single-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f32, mediump > mediump_f32mat4x4
 Medium single-qualifier floating-point 4x4 matrix. More...
 
typedef qua< f32, mediump > mediump_f32quat
 Medium single-qualifier floating-point quaternion. More...
 
typedef vec< 1, f32, mediump > mediump_f32vec1
 Medium single-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, f32, mediump > mediump_f32vec2
 Medium single-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, f32, mediump > mediump_f32vec3
 Medium single-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, f32, mediump > mediump_f32vec4
 Medium single-qualifier floating-point vector of 4 components. More...
 
typedef double mediump_f64
 Medium 64 bit double-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f64, mediump > mediump_f64mat2
 Medium double-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f64, mediump > mediump_f64mat2x2
 Medium double-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f64, mediump > mediump_f64mat2x3
 Medium double-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f64, mediump > mediump_f64mat2x4
 Medium double-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f64, mediump > mediump_f64mat3
 Medium double-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f64, mediump > mediump_f64mat3x2
 Medium double-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f64, mediump > mediump_f64mat3x3
 Medium double-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f64, mediump > mediump_f64mat3x4
 Medium double-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f64, mediump > mediump_f64mat4
 Medium double-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f64, mediump > mediump_f64mat4x2
 Medium double-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f64, mediump > mediump_f64mat4x3
 Medium double-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f64, mediump > mediump_f64mat4x4
 Medium double-qualifier floating-point 4x4 matrix. More...
 
typedef qua< f64, mediump > mediump_f64quat
 Medium double-qualifier floating-point quaternion. More...
 
typedef vec< 1, f64, mediump > mediump_f64vec1
 Medium double-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, f64, mediump > mediump_f64vec2
 Medium double-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, f64, mediump > mediump_f64vec3
 Medium double-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, f64, mediump > mediump_f64vec4
 Medium double-qualifier floating-point vector of 4 components. More...
 
typedef float mediump_float32
 Medium 32 bit single-qualifier floating-point scalar. More...
 
typedef float mediump_float32_t
 Medium 32 bit single-qualifier floating-point scalar. More...
 
typedef double mediump_float64
 Medium 64 bit double-qualifier floating-point scalar. More...
 
typedef double mediump_float64_t
 Medium 64 bit double-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f32, mediump > mediump_fmat2
 Medium single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f32, mediump > mediump_fmat2x2
 Medium single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f32, mediump > mediump_fmat2x3
 Medium single-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f32, mediump > mediump_fmat2x4
 Medium single-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f32, mediump > mediump_fmat3
 Medium single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f32, mediump > mediump_fmat3x2
 Medium single-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f32, mediump > mediump_fmat3x3
 Medium single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f32, mediump > mediump_fmat3x4
 Medium single-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f32, mediump > mediump_fmat4
 Medium single-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f32, mediump > mediump_fmat4x2
 Medium single-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f32, mediump > mediump_fmat4x3
 Medium single-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f32, mediump > mediump_fmat4x4
 Medium single-qualifier floating-point 4x4 matrix. More...
 
typedef vec< 1, float, mediump > mediump_fvec1
 Medium single-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, float, mediump > mediump_fvec2
 Medium Single-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, float, mediump > mediump_fvec3
 Medium Single-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, float, mediump > mediump_fvec4
 Medium Single-qualifier floating-point vector of 4 components. More...
 
typedef int16 mediump_i16
 Medium qualifier 16 bit signed integer type. More...
 
typedef vec< 1, i16, mediump > mediump_i16vec1
 Medium qualifier 16 bit signed integer scalar type. More...
 
typedef vec< 2, i16, mediump > mediump_i16vec2
 Medium qualifier 16 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i16, mediump > mediump_i16vec3
 Medium qualifier 16 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i16, mediump > mediump_i16vec4
 Medium qualifier 16 bit signed integer vector of 4 components type. More...
 
typedef int32 mediump_i32
 Medium qualifier 32 bit signed integer type. More...
 
typedef vec< 1, i32, mediump > mediump_i32vec1
 Medium qualifier 32 bit signed integer scalar type. More...
 
typedef vec< 2, i32, mediump > mediump_i32vec2
 Medium qualifier 32 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i32, mediump > mediump_i32vec3
 Medium qualifier 32 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i32, mediump > mediump_i32vec4
 Medium qualifier 32 bit signed integer vector of 4 components type. More...
 
typedef int64 mediump_i64
 Medium qualifier 64 bit signed integer type. More...
 
typedef vec< 1, i64, mediump > mediump_i64vec1
 Medium qualifier 64 bit signed integer scalar type. More...
 
typedef vec< 2, i64, mediump > mediump_i64vec2
 Medium qualifier 64 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i64, mediump > mediump_i64vec3
 Medium qualifier 64 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i64, mediump > mediump_i64vec4
 Medium qualifier 64 bit signed integer vector of 4 components type. More...
 
typedef int8 mediump_i8
 Medium qualifier 8 bit signed integer type. More...
 
typedef vec< 1, i8, mediump > mediump_i8vec1
 Medium qualifier 8 bit signed integer scalar type. More...
 
typedef vec< 2, i8, mediump > mediump_i8vec2
 Medium qualifier 8 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i8, mediump > mediump_i8vec3
 Medium qualifier 8 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i8, mediump > mediump_i8vec4
 Medium qualifier 8 bit signed integer vector of 4 components type. More...
 
typedef int16 mediump_int16
 Medium qualifier 16 bit signed integer type. More...
 
typedef int16 mediump_int16_t
 Medium qualifier 16 bit signed integer type. More...
 
typedef int32 mediump_int32
 Medium qualifier 32 bit signed integer type. More...
 
typedef int32 mediump_int32_t
 Medium qualifier 32 bit signed integer type. More...
 
typedef int64 mediump_int64
 Medium qualifier 64 bit signed integer type. More...
 
typedef int64 mediump_int64_t
 Medium qualifier 64 bit signed integer type. More...
 
typedef int8 mediump_int8
 Medium qualifier 8 bit signed integer type. More...
 
typedef int8 mediump_int8_t
 Medium qualifier 8 bit signed integer type. More...
 
typedef uint16 mediump_u16
 Medium qualifier 16 bit unsigned integer type. More...
 
typedef vec< 1, u16, mediump > mediump_u16vec1
 Medium qualifier 16 bit unsigned integer scalar type. More...
 
typedef vec< 2, u16, mediump > mediump_u16vec2
 Medium qualifier 16 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u16, mediump > mediump_u16vec3
 Medium qualifier 16 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u16, mediump > mediump_u16vec4
 Medium qualifier 16 bit unsigned integer vector of 4 components type. More...
 
typedef uint32 mediump_u32
 Medium qualifier 32 bit unsigned integer type. More...
 
typedef vec< 1, u32, mediump > mediump_u32vec1
 Medium qualifier 32 bit unsigned integer scalar type. More...
 
typedef vec< 2, u32, mediump > mediump_u32vec2
 Medium qualifier 32 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u32, mediump > mediump_u32vec3
 Medium qualifier 32 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u32, mediump > mediump_u32vec4
 Medium qualifier 32 bit unsigned integer vector of 4 components type. More...
 
typedef uint64 mediump_u64
 Medium qualifier 64 bit unsigned integer type. More...
 
typedef vec< 1, u64, mediump > mediump_u64vec1
 Medium qualifier 64 bit unsigned integer scalar type. More...
 
typedef vec< 2, u64, mediump > mediump_u64vec2
 Medium qualifier 64 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u64, mediump > mediump_u64vec3
 Medium qualifier 64 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u64, mediump > mediump_u64vec4
 Medium qualifier 64 bit unsigned integer vector of 4 components type. More...
 
typedef uint8 mediump_u8
 Medium qualifier 8 bit unsigned integer type. More...
 
typedef vec< 1, u8, mediump > mediump_u8vec1
 Medium qualifier 8 bit unsigned integer scalar type. More...
 
typedef vec< 2, u8, mediump > mediump_u8vec2
 Medium qualifier 8 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u8, mediump > mediump_u8vec3
 Medium qualifier 8 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u8, mediump > mediump_u8vec4
 Medium qualifier 8 bit unsigned integer vector of 4 components type. More...
 
typedef uint16 mediump_uint16
 Medium qualifier 16 bit unsigned integer type. More...
 
typedef uint16 mediump_uint16_t
 Medium qualifier 16 bit unsigned integer type. More...
 
typedef uint32 mediump_uint32
 Medium qualifier 32 bit unsigned integer type. More...
 
typedef uint32 mediump_uint32_t
 Medium qualifier 32 bit unsigned integer type. More...
 
typedef uint64 mediump_uint64
 Medium qualifier 64 bit unsigned integer type. More...
 
typedef uint64 mediump_uint64_t
 Medium qualifier 64 bit unsigned integer type. More...
 
typedef uint8 mediump_uint8
 Medium qualifier 8 bit unsigned integer type. More...
 
typedef uint8 mediump_uint8_t
 Medium qualifier 8 bit unsigned integer type. More...
 
typedef uint16 u16
 Default qualifier 16 bit unsigned integer type. More...
 
typedef vec< 1, u16, defaultp > u16vec1
 Default qualifier 16 bit unsigned integer scalar type. More...
 
typedef vec< 2, u16, defaultp > u16vec2
 Default qualifier 16 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u16, defaultp > u16vec3
 Default qualifier 16 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u16, defaultp > u16vec4
 Default qualifier 16 bit unsigned integer vector of 4 components type. More...
 
typedef uint32 u32
 Default qualifier 32 bit unsigned integer type. More...
 
typedef vec< 1, u32, defaultp > u32vec1
 Default qualifier 32 bit unsigned integer scalar type. More...
 
typedef vec< 2, u32, defaultp > u32vec2
 Default qualifier 32 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u32, defaultp > u32vec3
 Default qualifier 32 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u32, defaultp > u32vec4
 Default qualifier 32 bit unsigned integer vector of 4 components type. More...
 
typedef uint64 u64
 Default qualifier 64 bit unsigned integer type. More...
 
typedef vec< 1, u64, defaultp > u64vec1
 Default qualifier 64 bit unsigned integer scalar type. More...
 
typedef vec< 2, u64, defaultp > u64vec2
 Default qualifier 64 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u64, defaultp > u64vec3
 Default qualifier 64 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u64, defaultp > u64vec4
 Default qualifier 64 bit unsigned integer vector of 4 components type. More...
 
typedef uint8 u8
 Default qualifier 8 bit unsigned integer type. More...
 
typedef vec< 1, u8, defaultp > u8vec1
 Default qualifier 8 bit unsigned integer scalar type. More...
 
typedef vec< 2, u8, defaultp > u8vec2
 Default qualifier 8 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u8, defaultp > u8vec3
 Default qualifier 8 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u8, defaultp > u8vec4
 Default qualifier 8 bit unsigned integer vector of 4 components type. More...
 
typedef uint16 uint16_t
 Default qualifier 16 bit unsigned integer type. More...
 
typedef uint32 uint32_t
 Default qualifier 32 bit unsigned integer type. More...
 
typedef uint64 uint64_t
 Default qualifier 64 bit unsigned integer type. More...
 
typedef uint8 uint8_t
 Default qualifier 8 bit unsigned integer type. More...
 
-

Detailed Description

-

Include <glm/gtc/type_precision.hpp> to use the features of this extension.

-

Defines specific C++-based qualifier types.

-

Typedef Documentation

- -
-
- - - - -
typedef float32 f32
-
- -

Default 32 bit single-qualifier floating-point scalar.

-

32 bit single-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 150 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f32, defaultp > f32mat2
-
- -

Single-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision Single-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 552 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f32, defaultp > f32mat2x2
-
- -

Single-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision Single-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 700 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, f32, defaultp > f32mat2x3
-
- -

Single-qualifier floating-point 2x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 703 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, f32, defaultp > f32mat2x4
-
- -

Single-qualifier floating-point 2x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 706 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f32, defaultp > f32mat3
-
- -

Single-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 553 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, f32, defaultp > f32mat3x2
-
- -

Single-qualifier floating-point 3x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 701 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f32, defaultp > f32mat3x3
-
- -

Single-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 704 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, f32, defaultp > f32mat3x4
-
- -

Single-qualifier floating-point 3x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 707 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f32, defaultp > f32mat4
-
- -

Single-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 554 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, f32, defaultp > f32mat4x2
-
- -

Single-qualifier floating-point 4x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 702 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, f32, defaultp > f32mat4x3
-
- -

Single-qualifier floating-point 4x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 705 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f32, defaultp > f32mat4x4
-
- -

Single-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 708 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef qua< f32, defaultp > f32quat
-
- -

Single-qualifier floating-point quaternion.

-
See also
GLM_GTC_type_precision
- -

Definition at line 805 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, f32, defaultp > f32vec1
-
- -

Single-qualifier floating-point vector of 1 component.

-
See also
GLM_GTC_type_precision
- -

Definition at line 461 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, f32, defaultp > f32vec2
-
- -

Single-qualifier floating-point vector of 2 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 462 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, f32, defaultp > f32vec3
-
- -

Single-qualifier floating-point vector of 3 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 463 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, f32, defaultp > f32vec4
-
- -

Single-qualifier floating-point vector of 4 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 464 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float64 f64
-
- -

Default 64 bit double-qualifier floating-point scalar.

-

64 bit double-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 166 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f64, defaultp > f64mat2
-
- -

Double-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision Double-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 584 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f64, defaultp > f64mat2x2
-
- -

Double-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision Double-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 780 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, f64, defaultp > f64mat2x3
-
- -

Double-qualifier floating-point 2x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 783 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, f64, defaultp > f64mat2x4
-
- -

Double-qualifier floating-point 2x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 786 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f64, defaultp > f64mat3
-
- -

Double-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 585 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, f64, defaultp > f64mat3x2
-
- -

Double-qualifier floating-point 3x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 781 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f64, defaultp > f64mat3x3
-
- -

Double-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 784 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, f64, defaultp > f64mat3x4
-
- -

Double-qualifier floating-point 3x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 787 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f64, defaultp > f64mat4
-
- -

Double-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 586 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, f64, defaultp > f64mat4x2
-
- -

Double-qualifier floating-point 4x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 782 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, f64, defaultp > f64mat4x3
-
- -

Double-qualifier floating-point 4x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 785 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f64, defaultp > f64mat4x4
-
- -

Double-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 788 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef qua< f64, defaultp > f64quat
-
- -

Double-qualifier floating-point quaternion.

-
See also
GLM_GTC_type_precision
- -

Definition at line 815 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, f64, defaultp > f64vec1
-
- -

Double-qualifier floating-point vector of 1 component.

-
See also
GLM_GTC_type_precision
- -

Definition at line 501 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, f64, defaultp > f64vec2
-
- -

Double-qualifier floating-point vector of 2 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 502 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, f64, defaultp > f64vec3
-
- -

Double-qualifier floating-point vector of 3 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 503 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, f64, defaultp > f64vec4
-
- -

Double-qualifier floating-point vector of 4 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 504 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float float32
-
- -

Single-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 155 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float32 float32_t
-
- -

Default 32 bit single-qualifier floating-point scalar.

-

32 bit single-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 160 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef double float64
-
- -

Double-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 171 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float64 float64_t
-
- -

Default 64 bit double-qualifier floating-point scalar.

-

64 bit double-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 176 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f32, defaultp > fmat2
-
- -

Single-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision Single-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 536 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f32, defaultp > fmat2x2
-
- -

Single-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision Single-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 660 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, f32, defaultp > fmat2x3
-
- -

Single-qualifier floating-point 2x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 663 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, f32, defaultp > fmat2x4
-
- -

Single-qualifier floating-point 2x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 666 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f32, defaultp > fmat3
-
- -

Single-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 537 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, f32, defaultp > fmat3x2
-
- -

Single-qualifier floating-point 3x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 661 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f32, defaultp > fmat3x3
-
- -

Single-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 664 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, f32, defaultp > fmat3x4
-
- -

Single-qualifier floating-point 3x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 667 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f32, defaultp > fmat4
-
- -

Single-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 538 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, f32, defaultp > fmat4x2
-
- -

Single-qualifier floating-point 4x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 662 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, f32, defaultp > fmat4x3
-
- -

Single-qualifier floating-point 4x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 665 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f32, defaultp > fmat4x4
-
- -

Single-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 668 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, float, defaultp > fvec1
-
- -

Single-qualifier floating-point vector of 1 component.

-
See also
GLM_GTC_type_precision
- -

Definition at line 441 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, float, defaultp > fvec2
-
- -

Single-qualifier floating-point vector of 2 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 442 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, float, defaultp > fvec3
-
- -

Single-qualifier floating-point vector of 3 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 443 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, float, defaultp > fvec4
-
- -

Single-qualifier floating-point vector of 4 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 444 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float32 highp_f32
-
- -

High 32 bit single-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 149 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef highp_f32mat2x2 highp_f32mat2
-
- -

High single-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision High single-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 548 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f32, highp > highp_f32mat2x2
-
- -

High single-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision High single-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 690 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, f32, highp > highp_f32mat2x3
-
- -

High single-qualifier floating-point 2x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 691 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, f32, highp > highp_f32mat2x4
-
- -

High single-qualifier floating-point 2x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 692 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef highp_f32mat3x3 highp_f32mat3
-
- -

High single-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 549 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, f32, highp > highp_f32mat3x2
-
- -

High single-qualifier floating-point 3x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 693 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f32, highp > highp_f32mat3x3
-
- -

High single-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 694 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, f32, highp > highp_f32mat3x4
-
- -

High single-qualifier floating-point 3x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 695 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef highp_f32mat4x4 highp_f32mat4
-
- -

High single-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 550 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, f32, highp > highp_f32mat4x2
-
- -

High single-qualifier floating-point 4x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 696 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, f32, highp > highp_f32mat4x3
-
- -

High single-qualifier floating-point 4x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 697 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f32, highp > highp_f32mat4x4
-
- -

High single-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 698 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef qua< f32, highp > highp_f32quat
-
- -

High single-qualifier floating-point quaternion.

-
See also
GLM_GTC_type_precision
- -

Definition at line 804 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, f32, highp > highp_f32vec1
-
- -

High single-qualifier floating-point vector of 1 component.

-
See also
GLM_GTC_type_precision
- -

Definition at line 456 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, f32, highp > highp_f32vec2
-
- -

High single-qualifier floating-point vector of 2 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 457 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, f32, highp > highp_f32vec3
-
- -

High single-qualifier floating-point vector of 3 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 458 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, f32, highp > highp_f32vec4
-
- -

High single-qualifier floating-point vector of 4 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 459 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float64 highp_f64
-
- -

High 64 bit double-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 165 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef highp_f64mat2x2 highp_f64mat2
-
- -

High double-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision High double-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 580 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f64, highp > highp_f64mat2x2
-
- -

High double-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision High double-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 770 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, f64, highp > highp_f64mat2x3
-
- -

High double-qualifier floating-point 2x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 771 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, f64, highp > highp_f64mat2x4
-
- -

High double-qualifier floating-point 2x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 772 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef highp_f64mat3x3 highp_f64mat3
-
- -

High double-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 581 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, f64, highp > highp_f64mat3x2
-
- -

High double-qualifier floating-point 3x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 773 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f64, highp > highp_f64mat3x3
-
- -

High double-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 774 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, f64, highp > highp_f64mat3x4
-
- -

High double-qualifier floating-point 3x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 775 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef highp_f64mat4x4 highp_f64mat4
-
- -

High double-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 582 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, f64, highp > highp_f64mat4x2
-
- -

High double-qualifier floating-point 4x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 776 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, f64, highp > highp_f64mat4x3
-
- -

High double-qualifier floating-point 4x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 777 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f64, highp > highp_f64mat4x4
-
- -

High double-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 778 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef qua< f64, highp > highp_f64quat
-
- -

High double-qualifier floating-point quaternion.

-
See also
GLM_GTC_type_precision
- -

Definition at line 814 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, f64, highp > highp_f64vec1
-
- -

High double-qualifier floating-point vector of 1 component.

-
See also
GLM_GTC_type_precision
- -

Definition at line 496 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, f64, highp > highp_f64vec2
-
- -

High double-qualifier floating-point vector of 2 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 497 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, f64, highp > highp_f64vec3
-
- -

High double-qualifier floating-point vector of 3 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 498 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, f64, highp > highp_f64vec4
-
- -

High double-qualifier floating-point vector of 4 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 499 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float32 highp_float32
-
- -

High 32 bit single-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 154 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float32 highp_float32_t
-
- -

High 32 bit single-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 159 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float64 highp_float64
-
- -

High 64 bit double-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 170 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float64 highp_float64_t
-
- -

High 64 bit double-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 175 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef highp_fmat2x2 highp_fmat2
-
- -

High single-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision High single-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 532 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f32, highp > highp_fmat2x2
-
- -

High single-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision High single-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 650 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, f32, highp > highp_fmat2x3
-
- -

High single-qualifier floating-point 2x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 651 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, f32, highp > highp_fmat2x4
-
- -

High single-qualifier floating-point 2x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 652 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef highp_fmat3x3 highp_fmat3
-
- -

High single-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 533 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, f32, highp > highp_fmat3x2
-
- -

High single-qualifier floating-point 3x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 653 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f32, highp > highp_fmat3x3
-
- -

High single-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 654 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, f32, highp > highp_fmat3x4
-
- -

High single-qualifier floating-point 3x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 655 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef highp_fmat4x4 highp_fmat4
-
- -

High single-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 534 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, f32, highp > highp_fmat4x2
-
- -

High single-qualifier floating-point 4x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 656 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, f32, highp > highp_fmat4x3
-
- -

High single-qualifier floating-point 4x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 657 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f32, highp > highp_fmat4x4
-
- -

High single-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 658 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, float, highp > highp_fvec1
-
- -

High single-qualifier floating-point vector of 1 component.

-
See also
GLM_GTC_type_precision
- -

Definition at line 436 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, float, highp > highp_fvec2
-
- -

High Single-qualifier floating-point vector of 2 components.

-
See also
core_precision
- -

Definition at line 437 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, float, highp > highp_fvec3
-
- -

High Single-qualifier floating-point vector of 3 components.

-
See also
core_precision
- -

Definition at line 438 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, float, highp > highp_fvec4
-
- -

High Single-qualifier floating-point vector of 4 components.

-
See also
core_precision
- -

Definition at line 439 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int16 highp_i16
-
- -

High qualifier 16 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 47 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, i16, highp > highp_i16vec1
-
- -

High qualifier 16 bit signed integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 252 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i16, highp > highp_i16vec2
-
- -

High qualifier 16 bit signed integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 253 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i16, highp > highp_i16vec3
-
- -

High qualifier 16 bit signed integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 254 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i16, highp > highp_i16vec4
-
- -

High qualifier 16 bit signed integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 255 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int32 highp_i32
-
- -

High qualifier 32 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 61 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, i32, highp > highp_i32vec1
-
- -

High qualifier 32 bit signed integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 272 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i32, highp > highp_i32vec2
-
- -

High qualifier 32 bit signed integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 273 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i32, highp > highp_i32vec3
-
- -

High qualifier 32 bit signed integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 274 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i32, highp > highp_i32vec4
-
- -

High qualifier 32 bit signed integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 275 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int64 highp_i64
-
- -

High qualifier 64 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 75 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, i64, highp > highp_i64vec1
-
- -

High qualifier 64 bit signed integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 292 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i64, highp > highp_i64vec2
-
- -

High qualifier 64 bit signed integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 293 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i64, highp > highp_i64vec3
-
- -

High qualifier 64 bit signed integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 294 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i64, highp > highp_i64vec4
-
- -

High qualifier 64 bit signed integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 295 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int8 highp_i8
-
- -

High qualifier 8 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 33 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, i8, highp > highp_i8vec1
-
- -

High qualifier 8 bit signed integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 232 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i8, highp > highp_i8vec2
-
- -

High qualifier 8 bit signed integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 233 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i8, highp > highp_i8vec3
-
- -

High qualifier 8 bit signed integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 234 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i8, highp > highp_i8vec4
-
- -

High qualifier 8 bit signed integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 235 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int16 highp_int16
-
- -

High qualifier 16 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 52 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int16 highp_int16_t
-
- -

High qualifier 16 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 56 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int32 highp_int32
-
- -

High qualifier 32 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 66 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int32 highp_int32_t
-
- -

32 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 70 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int64 highp_int64
-
- -

High qualifier 64 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 80 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int64 highp_int64_t
-
- -

High qualifier 64 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 84 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int8 highp_int8
-
- -

High qualifier 8 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 38 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int8 highp_int8_t
-
- -

High qualifier 8 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 42 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint16 highp_u16
-
- -

High qualifier 16 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 105 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, u16, highp > highp_u16vec1
-
- -

High qualifier 16 bit unsigned integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 354 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u16, highp > highp_u16vec2
-
- -

High qualifier 16 bit unsigned integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 355 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u16, highp > highp_u16vec3
-
- -

High qualifier 16 bit unsigned integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 356 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u16, highp > highp_u16vec4
-
- -

High qualifier 16 bit unsigned integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 357 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint32 highp_u32
-
- -

High qualifier 32 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 119 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, u32, highp > highp_u32vec1
-
- -

High qualifier 32 bit unsigned integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 374 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u32, highp > highp_u32vec2
-
- -

High qualifier 32 bit unsigned integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 375 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u32, highp > highp_u32vec3
-
- -

High qualifier 32 bit unsigned integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 376 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u32, highp > highp_u32vec4
-
- -

High qualifier 32 bit unsigned integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 377 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint64 highp_u64
-
- -

High qualifier 64 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 133 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, u64, highp > highp_u64vec1
-
- -

High qualifier 64 bit unsigned integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 394 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u64, highp > highp_u64vec2
-
- -

High qualifier 64 bit unsigned integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 395 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u64, highp > highp_u64vec3
-
- -

High qualifier 64 bit unsigned integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 396 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u64, highp > highp_u64vec4
-
- -

High qualifier 64 bit unsigned integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 397 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint8 highp_u8
-
- -

High qualifier 8 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 91 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, u8, highp > highp_u8vec1
-
- -

High qualifier 8 bit unsigned integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 334 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u8, highp > highp_u8vec2
-
- -

High qualifier 8 bit unsigned integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 335 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u8, highp > highp_u8vec3
-
- -

High qualifier 8 bit unsigned integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 336 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u8, highp > highp_u8vec4
-
- -

High qualifier 8 bit unsigned integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 337 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint16 highp_uint16
-
- -

High qualifier 16 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 110 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint16 highp_uint16_t
-
- -

High qualifier 16 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 114 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint32 highp_uint32
-
- -

High qualifier 32 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 124 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint32 highp_uint32_t
-
- -

High qualifier 32 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 128 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint64 highp_uint64
-
- -

High qualifier 64 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 138 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint64 highp_uint64_t
-
- -

High qualifier 64 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 142 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint8 highp_uint8
-
- -

High qualifier 8 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 96 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint8 highp_uint8_t
-
- -

High qualifier 8 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 100 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int16 i16
-
- -

16 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 48 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, i16, defaultp > i16vec1
-
- -

16 bit signed integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 257 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i16, defaultp > i16vec2
-
- -

16 bit signed integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 258 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i16, defaultp > i16vec3
-
- -

16 bit signed integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 259 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i16, defaultp > i16vec4
-
- -

16 bit signed integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 260 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int32 i32
-
- -

32 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 62 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, i32, defaultp > i32vec1
-
- -

32 bit signed integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 277 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i32, defaultp > i32vec2
-
- -

32 bit signed integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 278 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i32, defaultp > i32vec3
-
- -

32 bit signed integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 279 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i32, defaultp > i32vec4
-
- -

32 bit signed integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 280 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int64 i64
-
- -

64 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 76 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, i64, defaultp > i64vec1
-
- -

64 bit signed integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 297 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i64, defaultp > i64vec2
-
- -

64 bit signed integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 298 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i64, defaultp > i64vec3
-
- -

64 bit signed integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 299 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i64, defaultp > i64vec4
-
- -

64 bit signed integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 300 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int8 i8
-
- -

8 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 34 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, i8, defaultp > i8vec1
-
- -

8 bit signed integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 237 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i8, defaultp > i8vec2
-
- -

8 bit signed integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 238 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i8, defaultp > i8vec3
-
- -

8 bit signed integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 239 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i8, defaultp > i8vec4
-
- -

8 bit signed integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 240 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int16 int16_t
-
- -

16 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 57 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int32 int32_t
-
- -

32 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 71 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int64 int64_t
-
- -

64 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 85 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int8 int8_t
-
- -

8 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 43 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float32 lowp_f32
-
- -

Low 32 bit single-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 147 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef lowp_f32mat2x2 lowp_f32mat2
-
- -

Low single-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision Low single-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 540 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f32, lowp > lowp_f32mat2x2
-
- -

Low single-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision Low single-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 670 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, f32, lowp > lowp_f32mat2x3
-
- -

Low single-qualifier floating-point 2x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 671 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, f32, lowp > lowp_f32mat2x4
-
- -

Low single-qualifier floating-point 2x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 672 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef lowp_f32mat3x3 lowp_f32mat3
-
- -

Low single-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 541 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, f32, lowp > lowp_f32mat3x2
-
- -

Low single-qualifier floating-point 3x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 673 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f32, lowp > lowp_f32mat3x3
-
- -

Low single-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 674 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, f32, lowp > lowp_f32mat3x4
-
- -

Low single-qualifier floating-point 3x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 675 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef lowp_f32mat4x4 lowp_f32mat4
-
- -

Low single-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 542 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, f32, lowp > lowp_f32mat4x2
-
- -

Low single-qualifier floating-point 4x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 676 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, f32, lowp > lowp_f32mat4x3
-
- -

Low single-qualifier floating-point 4x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 677 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f32, lowp > lowp_f32mat4x4
-
- -

Low single-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 678 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef qua< f32, lowp > lowp_f32quat
-
- -

Low single-qualifier floating-point quaternion.

-
See also
GLM_GTC_type_precision
- -

Definition at line 802 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, f32, lowp > lowp_f32vec1
-
- -

Low single-qualifier floating-point vector of 1 component.

-
See also
GLM_GTC_type_precision
- -

Definition at line 446 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, f32, lowp > lowp_f32vec2
-
- -

Low single-qualifier floating-point vector of 2 components.

-
See also
core_precision
- -

Definition at line 447 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, f32, lowp > lowp_f32vec3
-
- -

Low single-qualifier floating-point vector of 3 components.

-
See also
core_precision
- -

Definition at line 448 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, f32, lowp > lowp_f32vec4
-
- -

Low single-qualifier floating-point vector of 4 components.

-
See also
core_precision
- -

Definition at line 449 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float64 lowp_f64
-
- -

Low 64 bit double-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 163 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef lowp_f64mat2x2 lowp_f64mat2
-
- -

Low double-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision Low double-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 572 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f64, lowp > lowp_f64mat2x2
-
- -

Low double-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision Low double-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 750 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, f64, lowp > lowp_f64mat2x3
-
- -

Low double-qualifier floating-point 2x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 751 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, f64, lowp > lowp_f64mat2x4
-
- -

Low double-qualifier floating-point 2x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 752 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef lowp_f64mat3x3 lowp_f64mat3
-
- -

Low double-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 573 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, f64, lowp > lowp_f64mat3x2
-
- -

Low double-qualifier floating-point 3x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 753 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f64, lowp > lowp_f64mat3x3
-
- -

Low double-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 754 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, f64, lowp > lowp_f64mat3x4
-
- -

Low double-qualifier floating-point 3x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 755 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef lowp_f64mat4x4 lowp_f64mat4
-
- -

Low double-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 574 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, f64, lowp > lowp_f64mat4x2
-
- -

Low double-qualifier floating-point 4x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 756 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, f64, lowp > lowp_f64mat4x3
-
- -

Low double-qualifier floating-point 4x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 757 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f64, lowp > lowp_f64mat4x4
-
- -

Low double-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 758 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef qua< f64, lowp > lowp_f64quat
-
- -

Low double-qualifier floating-point quaternion.

-
See also
GLM_GTC_type_precision
- -

Definition at line 812 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, f64, lowp > lowp_f64vec1
-
- -

Low double-qualifier floating-point vector of 1 component.

-
See also
GLM_GTC_type_precision
- -

Definition at line 486 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, f64, lowp > lowp_f64vec2
-
- -

Low double-qualifier floating-point vector of 2 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 487 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, f64, lowp > lowp_f64vec3
-
- -

Low double-qualifier floating-point vector of 3 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 488 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, f64, lowp > lowp_f64vec4
-
- -

Low double-qualifier floating-point vector of 4 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 489 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float32 lowp_float32
-
- -

Low 32 bit single-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 152 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float32 lowp_float32_t
-
- -

Low 32 bit single-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 157 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float64 lowp_float64
-
- -

Low 64 bit double-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 168 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float64 lowp_float64_t
-
- -

Low 64 bit double-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 173 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef lowp_fmat2x2 lowp_fmat2
-
- -

Low single-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision Low single-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 524 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f32, lowp > lowp_fmat2x2
-
- -

Low single-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision Low single-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 630 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, f32, lowp > lowp_fmat2x3
-
- -

Low single-qualifier floating-point 2x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 631 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, f32, lowp > lowp_fmat2x4
-
- -

Low single-qualifier floating-point 2x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 632 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef lowp_fmat3x3 lowp_fmat3
-
- -

Low single-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 525 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, f32, lowp > lowp_fmat3x2
-
- -

Low single-qualifier floating-point 3x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 633 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f32, lowp > lowp_fmat3x3
-
- -

Low single-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 634 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, f32, lowp > lowp_fmat3x4
-
- -

Low single-qualifier floating-point 3x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 635 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef lowp_fmat4x4 lowp_fmat4
-
- -

Low single-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 526 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, f32, lowp > lowp_fmat4x2
-
- -

Low single-qualifier floating-point 4x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 636 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, f32, lowp > lowp_fmat4x3
-
- -

Low single-qualifier floating-point 4x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 637 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f32, lowp > lowp_fmat4x4
-
- -

Low single-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 638 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, float, lowp > lowp_fvec1
-
- -

Low single-qualifier floating-point vector of 1 component.

-
See also
GLM_GTC_type_precision
- -

Definition at line 426 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, float, lowp > lowp_fvec2
-
- -

Low single-qualifier floating-point vector of 2 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 427 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, float, lowp > lowp_fvec3
-
- -

Low single-qualifier floating-point vector of 3 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 428 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, float, lowp > lowp_fvec4
-
- -

Low single-qualifier floating-point vector of 4 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 429 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int16 lowp_i16
-
- -

Low qualifier 16 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 45 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, i16, lowp > lowp_i16vec1
-
- -

Low qualifier 16 bit signed integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 242 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i16, lowp > lowp_i16vec2
-
- -

Low qualifier 16 bit signed integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 243 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i16, lowp > lowp_i16vec3
-
- -

Low qualifier 16 bit signed integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 244 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i16, lowp > lowp_i16vec4
-
- -

Low qualifier 16 bit signed integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 245 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int32 lowp_i32
-
- -

Low qualifier 32 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 59 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, i32, lowp > lowp_i32vec1
-
- -

Low qualifier 32 bit signed integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 262 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i32, lowp > lowp_i32vec2
-
- -

Low qualifier 32 bit signed integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 263 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i32, lowp > lowp_i32vec3
-
- -

Low qualifier 32 bit signed integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 264 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i32, lowp > lowp_i32vec4
-
- -

Low qualifier 32 bit signed integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 265 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int64 lowp_i64
-
- -

Low qualifier 64 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 73 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, i64, lowp > lowp_i64vec1
-
- -

Low qualifier 64 bit signed integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 282 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i64, lowp > lowp_i64vec2
-
- -

Low qualifier 64 bit signed integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 283 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i64, lowp > lowp_i64vec3
-
- -

Low qualifier 64 bit signed integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 284 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i64, lowp > lowp_i64vec4
-
- -

Low qualifier 64 bit signed integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 285 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int8 lowp_i8
-
- -

Low qualifier 8 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 31 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, i8, lowp > lowp_i8vec1
-
- -

Low qualifier 8 bit signed integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 222 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i8, lowp > lowp_i8vec2
-
- -

Low qualifier 8 bit signed integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 223 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i8, lowp > lowp_i8vec3
-
- -

Low qualifier 8 bit signed integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 224 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i8, lowp > lowp_i8vec4
-
- -

Low qualifier 8 bit signed integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 225 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int16 lowp_int16
-
- -

Low qualifier 16 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 50 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int16 lowp_int16_t
-
- -

Low qualifier 16 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 54 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int32 lowp_int32
-
- -

Low qualifier 32 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 64 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int32 lowp_int32_t
-
- -

Low qualifier 32 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 68 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int64 lowp_int64
-
- -

Low qualifier 64 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 78 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int64 lowp_int64_t
-
- -

Low qualifier 64 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 82 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int8 lowp_int8
-
- -

Low qualifier 8 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 36 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int8 lowp_int8_t
-
- -

Low qualifier 8 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 40 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint16 lowp_u16
-
- -

Low qualifier 16 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 103 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, u16, lowp > lowp_u16vec1
-
- -

Low qualifier 16 bit unsigned integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 344 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u16, lowp > lowp_u16vec2
-
- -

Low qualifier 16 bit unsigned integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 345 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u16, lowp > lowp_u16vec3
-
- -

Low qualifier 16 bit unsigned integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 346 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u16, lowp > lowp_u16vec4
-
- -

Low qualifier 16 bit unsigned integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 347 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint32 lowp_u32
-
- -

Low qualifier 32 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 117 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, u32, lowp > lowp_u32vec1
-
- -

Low qualifier 32 bit unsigned integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 364 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u32, lowp > lowp_u32vec2
-
- -

Low qualifier 32 bit unsigned integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 365 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u32, lowp > lowp_u32vec3
-
- -

Low qualifier 32 bit unsigned integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 366 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u32, lowp > lowp_u32vec4
-
- -

Low qualifier 32 bit unsigned integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 367 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint64 lowp_u64
-
- -

Low qualifier 64 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 131 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, u64, lowp > lowp_u64vec1
-
- -

Low qualifier 64 bit unsigned integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 384 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u64, lowp > lowp_u64vec2
-
- -

Low qualifier 64 bit unsigned integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 385 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u64, lowp > lowp_u64vec3
-
- -

Low qualifier 64 bit unsigned integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 386 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u64, lowp > lowp_u64vec4
-
- -

Low qualifier 64 bit unsigned integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 387 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint8 lowp_u8
-
- -

Low qualifier 8 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 89 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, u8, lowp > lowp_u8vec1
-
- -

Low qualifier 8 bit unsigned integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 324 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u8, lowp > lowp_u8vec2
-
- -

Low qualifier 8 bit unsigned integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 325 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u8, lowp > lowp_u8vec3
-
- -

Low qualifier 8 bit unsigned integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 326 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u8, lowp > lowp_u8vec4
-
- -

Low qualifier 8 bit unsigned integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 327 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint16 lowp_uint16
-
- -

Low qualifier 16 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 108 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint16 lowp_uint16_t
-
- -

Low qualifier 16 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 112 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint32 lowp_uint32
-
- -

Low qualifier 32 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 122 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint32 lowp_uint32_t
-
- -

Low qualifier 32 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 126 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint64 lowp_uint64
-
- -

Low qualifier 64 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 136 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint64 lowp_uint64_t
-
- -

Low qualifier 64 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 140 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint8 lowp_uint8
-
- -

Low qualifier 8 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 94 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint8 lowp_uint8_t
-
- -

Low qualifier 8 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 98 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float32 mediump_f32
-
- -

Medium 32 bit single-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 148 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mediump_f32mat2x2 mediump_f32mat2
-
- -

Medium single-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision Medium single-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 544 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f32, mediump > mediump_f32mat2x2
-
- -

High single-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision Low single-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 680 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, f32, mediump > mediump_f32mat2x3
-
- -

Medium single-qualifier floating-point 2x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 681 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, f32, mediump > mediump_f32mat2x4
-
- -

Medium single-qualifier floating-point 2x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 682 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mediump_f32mat3x3 mediump_f32mat3
-
- -

Medium single-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 545 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, f32, mediump > mediump_f32mat3x2
-
- -

Medium single-qualifier floating-point 3x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 683 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f32, mediump > mediump_f32mat3x3
-
- -

Medium single-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 684 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, f32, mediump > mediump_f32mat3x4
-
- -

Medium single-qualifier floating-point 3x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 685 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mediump_f32mat4x4 mediump_f32mat4
-
- -

Medium single-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 546 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, f32, mediump > mediump_f32mat4x2
-
- -

Medium single-qualifier floating-point 4x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 686 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, f32, mediump > mediump_f32mat4x3
-
- -

Medium single-qualifier floating-point 4x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 687 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f32, mediump > mediump_f32mat4x4
-
- -

Medium single-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 688 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef qua< f32, mediump > mediump_f32quat
-
- -

Medium single-qualifier floating-point quaternion.

-
See also
GLM_GTC_type_precision
- -

Definition at line 803 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, f32, mediump > mediump_f32vec1
-
- -

Medium single-qualifier floating-point vector of 1 component.

-
See also
GLM_GTC_type_precision
- -

Definition at line 451 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, f32, mediump > mediump_f32vec2
-
- -

Medium single-qualifier floating-point vector of 2 components.

-
See also
core_precision
- -

Definition at line 452 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, f32, mediump > mediump_f32vec3
-
- -

Medium single-qualifier floating-point vector of 3 components.

-
See also
core_precision
- -

Definition at line 453 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, f32, mediump > mediump_f32vec4
-
- -

Medium single-qualifier floating-point vector of 4 components.

-
See also
core_precision
- -

Definition at line 454 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float64 mediump_f64
-
- -

Medium 64 bit double-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 164 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mediump_f64mat2x2 mediump_f64mat2
-
- -

Medium double-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision Medium double-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 576 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f64, mediump > mediump_f64mat2x2
-
- -

Medium double-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision Medium double-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 760 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, f64, mediump > mediump_f64mat2x3
-
- -

Medium double-qualifier floating-point 2x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 761 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, f64, mediump > mediump_f64mat2x4
-
- -

Medium double-qualifier floating-point 2x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 762 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mediump_f64mat3x3 mediump_f64mat3
-
- -

Medium double-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 577 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, f64, mediump > mediump_f64mat3x2
-
- -

Medium double-qualifier floating-point 3x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 763 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f64, mediump > mediump_f64mat3x3
-
- -

Medium double-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 764 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, f64, mediump > mediump_f64mat3x4
-
- -

Medium double-qualifier floating-point 3x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 765 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mediump_f64mat4x4 mediump_f64mat4
-
- -

Medium double-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 578 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, f64, mediump > mediump_f64mat4x2
-
- -

Medium double-qualifier floating-point 4x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 766 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, f64, mediump > mediump_f64mat4x3
-
- -

Medium double-qualifier floating-point 4x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 767 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f64, mediump > mediump_f64mat4x4
-
- -

Medium double-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 768 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef qua< f64, mediump > mediump_f64quat
-
- -

Medium double-qualifier floating-point quaternion.

-
See also
GLM_GTC_type_precision
- -

Definition at line 813 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, f64, mediump > mediump_f64vec1
-
- -

Medium double-qualifier floating-point vector of 1 component.

-
See also
GLM_GTC_type_precision
- -

Definition at line 491 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, f64, mediump > mediump_f64vec2
-
- -

Medium double-qualifier floating-point vector of 2 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 492 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, f64, mediump > mediump_f64vec3
-
- -

Medium double-qualifier floating-point vector of 3 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 493 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, f64, mediump > mediump_f64vec4
-
- -

Medium double-qualifier floating-point vector of 4 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 494 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float32 mediump_float32
-
- -

Medium 32 bit single-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 153 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float32 mediump_float32_t
-
- -

Medium 32 bit single-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 158 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float64 mediump_float64
-
- -

Medium 64 bit double-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 169 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef float64 mediump_float64_t
-
- -

Medium 64 bit double-qualifier floating-point scalar.

-
See also
GLM_GTC_type_precision
- -

Definition at line 174 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mediump_fmat2x2 mediump_fmat2
-
- -

Medium single-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision Medium single-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 528 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 2, f32, mediump > mediump_fmat2x2
-
- -

Medium single-qualifier floating-point 1x1 matrix.

-
See also
GLM_GTC_type_precision Medium single-qualifier floating-point 2x2 matrix.
-
-GLM_GTC_type_precision
- -

Definition at line 640 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 3, f32, mediump > mediump_fmat2x3
-
- -

Medium single-qualifier floating-point 2x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 641 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 2, 4, f32, mediump > mediump_fmat2x4
-
- -

Medium single-qualifier floating-point 2x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 642 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mediump_fmat3x3 mediump_fmat3
-
- -

Medium single-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 529 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 2, f32, mediump > mediump_fmat3x2
-
- -

Medium single-qualifier floating-point 3x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 643 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 3, f32, mediump > mediump_fmat3x3
-
- -

Medium single-qualifier floating-point 3x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 644 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 3, 4, f32, mediump > mediump_fmat3x4
-
- -

Medium single-qualifier floating-point 3x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 645 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mediump_fmat4x4 mediump_fmat4
-
- -

Medium single-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 530 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 2, f32, mediump > mediump_fmat4x2
-
- -

Medium single-qualifier floating-point 4x2 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 646 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 3, f32, mediump > mediump_fmat4x3
-
- -

Medium single-qualifier floating-point 4x3 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 647 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef mat< 4, 4, f32, mediump > mediump_fmat4x4
-
- -

Medium single-qualifier floating-point 4x4 matrix.

-
See also
GLM_GTC_type_precision
- -

Definition at line 648 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, float, mediump > mediump_fvec1
-
- -

Medium single-qualifier floating-point vector of 1 component.

-
See also
GLM_GTC_type_precision
- -

Definition at line 431 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, float, mediump > mediump_fvec2
-
- -

Medium Single-qualifier floating-point vector of 2 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 432 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, float, mediump > mediump_fvec3
-
- -

Medium Single-qualifier floating-point vector of 3 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 433 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, float, mediump > mediump_fvec4
-
- -

Medium Single-qualifier floating-point vector of 4 components.

-
See also
GLM_GTC_type_precision
- -

Definition at line 434 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int16 mediump_i16
-
- -

Medium qualifier 16 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 46 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, i16, mediump > mediump_i16vec1
-
- -

Medium qualifier 16 bit signed integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 247 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i16, mediump > mediump_i16vec2
-
- -

Medium qualifier 16 bit signed integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 248 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i16, mediump > mediump_i16vec3
-
- -

Medium qualifier 16 bit signed integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 249 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i16, mediump > mediump_i16vec4
-
- -

Medium qualifier 16 bit signed integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 250 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int32 mediump_i32
-
- -

Medium qualifier 32 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 60 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, i32, mediump > mediump_i32vec1
-
- -

Medium qualifier 32 bit signed integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 267 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i32, mediump > mediump_i32vec2
-
- -

Medium qualifier 32 bit signed integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 268 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i32, mediump > mediump_i32vec3
-
- -

Medium qualifier 32 bit signed integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 269 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i32, mediump > mediump_i32vec4
-
- -

Medium qualifier 32 bit signed integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 270 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int64 mediump_i64
-
- -

Medium qualifier 64 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 74 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, i64, mediump > mediump_i64vec1
-
- -

Medium qualifier 64 bit signed integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 287 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i64, mediump > mediump_i64vec2
-
- -

Medium qualifier 64 bit signed integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 288 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i64, mediump > mediump_i64vec3
-
- -

Medium qualifier 64 bit signed integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 289 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i64, mediump > mediump_i64vec4
-
- -

Medium qualifier 64 bit signed integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 290 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int8 mediump_i8
-
- -

Medium qualifier 8 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 32 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, i8, mediump > mediump_i8vec1
-
- -

Medium qualifier 8 bit signed integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 227 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, i8, mediump > mediump_i8vec2
-
- -

Medium qualifier 8 bit signed integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 228 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, i8, mediump > mediump_i8vec3
-
- -

Medium qualifier 8 bit signed integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 229 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, i8, mediump > mediump_i8vec4
-
- -

Medium qualifier 8 bit signed integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 230 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int16 mediump_int16
-
- -

Medium qualifier 16 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 51 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int16 mediump_int16_t
-
- -

Medium qualifier 16 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 55 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int32 mediump_int32
-
- -

Medium qualifier 32 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 65 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int32 mediump_int32_t
-
- -

Medium qualifier 32 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 69 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int64 mediump_int64
-
- -

Medium qualifier 64 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 79 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int64 mediump_int64_t
-
- -

Medium qualifier 64 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 83 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int8 mediump_int8
-
- -

Medium qualifier 8 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 37 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::int8 mediump_int8_t
-
- -

Medium qualifier 8 bit signed integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 41 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint16 mediump_u16
-
- -

Medium qualifier 16 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 104 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, u16, mediump > mediump_u16vec1
-
- -

Medium qualifier 16 bit unsigned integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 349 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u16, mediump > mediump_u16vec2
-
- -

Medium qualifier 16 bit unsigned integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 350 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u16, mediump > mediump_u16vec3
-
- -

Medium qualifier 16 bit unsigned integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 351 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u16, mediump > mediump_u16vec4
-
- -

Medium qualifier 16 bit unsigned integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 352 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint32 mediump_u32
-
- -

Medium qualifier 32 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 118 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, u32, mediump > mediump_u32vec1
-
- -

Medium qualifier 32 bit unsigned integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 369 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u32, mediump > mediump_u32vec2
-
- -

Medium qualifier 32 bit unsigned integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 370 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u32, mediump > mediump_u32vec3
-
- -

Medium qualifier 32 bit unsigned integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 371 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u32, mediump > mediump_u32vec4
-
- -

Medium qualifier 32 bit unsigned integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 372 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint64 mediump_u64
-
- -

Medium qualifier 64 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 132 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, u64, mediump > mediump_u64vec1
-
- -

Medium qualifier 64 bit unsigned integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 389 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u64, mediump > mediump_u64vec2
-
- -

Medium qualifier 64 bit unsigned integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 390 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u64, mediump > mediump_u64vec3
-
- -

Medium qualifier 64 bit unsigned integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 391 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u64, mediump > mediump_u64vec4
-
- -

Medium qualifier 64 bit unsigned integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 392 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint8 mediump_u8
-
- -

Medium qualifier 8 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 90 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, u8, mediump > mediump_u8vec1
-
- -

Medium qualifier 8 bit unsigned integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 329 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u8, mediump > mediump_u8vec2
-
- -

Medium qualifier 8 bit unsigned integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 330 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u8, mediump > mediump_u8vec3
-
- -

Medium qualifier 8 bit unsigned integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 331 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u8, mediump > mediump_u8vec4
-
- -

Medium qualifier 8 bit unsigned integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 332 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint16 mediump_uint16
-
- -

Medium qualifier 16 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 109 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint16 mediump_uint16_t
-
- -

Medium qualifier 16 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 113 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint32 mediump_uint32
-
- -

Medium qualifier 32 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 123 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint32 mediump_uint32_t
-
- -

Medium qualifier 32 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 127 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint64 mediump_uint64
-
- -

Medium qualifier 64 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 137 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint64 mediump_uint64_t
-
- -

Medium qualifier 64 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 141 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint8 mediump_uint8
-
- -

Medium qualifier 8 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 95 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint8 mediump_uint8_t
-
- -

Medium qualifier 8 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 99 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint16 u16
-
- -

Default qualifier 16 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 106 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, u16, defaultp > u16vec1
-
- -

Default qualifier 16 bit unsigned integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 359 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u16, defaultp > u16vec2
-
- -

Default qualifier 16 bit unsigned integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 360 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u16, defaultp > u16vec3
-
- -

Default qualifier 16 bit unsigned integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 361 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u16, defaultp > u16vec4
-
- -

Default qualifier 16 bit unsigned integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 362 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint32 u32
-
- -

Default qualifier 32 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 120 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, u32, defaultp > u32vec1
-
- -

Default qualifier 32 bit unsigned integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 379 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u32, defaultp > u32vec2
-
- -

Default qualifier 32 bit unsigned integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 380 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u32, defaultp > u32vec3
-
- -

Default qualifier 32 bit unsigned integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 381 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u32, defaultp > u32vec4
-
- -

Default qualifier 32 bit unsigned integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 382 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint64 u64
-
- -

Default qualifier 64 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 134 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, u64, defaultp > u64vec1
-
- -

Default qualifier 64 bit unsigned integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 399 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u64, defaultp > u64vec2
-
- -

Default qualifier 64 bit unsigned integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 400 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u64, defaultp > u64vec3
-
- -

Default qualifier 64 bit unsigned integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 401 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u64, defaultp > u64vec4
-
- -

Default qualifier 64 bit unsigned integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 402 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint8 u8
-
- -

Default qualifier 8 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 92 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 1, u8, defaultp > u8vec1
-
- -

Default qualifier 8 bit unsigned integer scalar type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 339 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 2, u8, defaultp > u8vec2
-
- -

Default qualifier 8 bit unsigned integer vector of 2 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 340 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 3, u8, defaultp > u8vec3
-
- -

Default qualifier 8 bit unsigned integer vector of 3 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 341 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef vec< 4, u8, defaultp > u8vec4
-
- -

Default qualifier 8 bit unsigned integer vector of 4 components type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 342 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint16 uint16_t
-
- -

Default qualifier 16 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 115 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint32 uint32_t
-
- -

Default qualifier 32 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 129 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint64 uint64_t
-
- -

Default qualifier 64 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 143 of file fwd.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint8 uint8_t
-
- -

Default qualifier 8 bit unsigned integer type.

-
See also
GLM_GTC_type_precision
- -

Definition at line 101 of file fwd.hpp.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00305.html b/tests/OpenGL/package/glm/doc/api/a00305.html deleted file mode 100644 index 3755526c..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00305.html +++ /dev/null @@ -1,873 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_type_ptr - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTC_type_ptr
-
-
- -

Include <glm/gtc/type_ptr.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtc/type_ptr.hpp> to use the features of this extension.

-

Handles the interaction between pointers and vector, matrix types.

-

This extension defines an overloaded function, glm::value_ptr. It returns a pointer to the memory layout of the object. Matrix types store their values in column-major order.

-

This is useful for uploading data to matrices or copying data to buffer objects.

-

Example:

#include <glm/glm.hpp>
- -
-
glm::vec3 aVector(3);
-
glm::mat4 someMatrix(1.0);
-
-
glUniform3fv(uniformLoc, 1, glm::value_ptr(aVector));
-
glUniformMatrix4fv(uniformMatrixLoc, 1, GL_FALSE, glm::value_ptr(someMatrix));
-

<glm/gtc/type_ptr.hpp> need to be included to use the features of this extension.

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<2, 2, T, defaultp> glm::make_mat2 (T const *const ptr)
-
- -

Build a matrix from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<2, 2, T, defaultp> glm::make_mat2x2 (T const *const ptr)
-
- -

Build a matrix from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<2, 3, T, defaultp> glm::make_mat2x3 (T const *const ptr)
-
- -

Build a matrix from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<2, 4, T, defaultp> glm::make_mat2x4 (T const *const ptr)
-
- -

Build a matrix from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<3, 3, T, defaultp> glm::make_mat3 (T const *const ptr)
-
- -

Build a matrix from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<3, 2, T, defaultp> glm::make_mat3x2 (T const *const ptr)
-
- -

Build a matrix from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<3, 3, T, defaultp> glm::make_mat3x3 (T const *const ptr)
-
- -

Build a matrix from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<3, 4, T, defaultp> glm::make_mat3x4 (T const *const ptr)
-
- -

Build a matrix from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::make_mat4 (T const *const ptr)
-
- -

Build a matrix from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 2, T, defaultp> glm::make_mat4x2 (T const *const ptr)
-
- -

Build a matrix from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 3, T, defaultp> glm::make_mat4x3 (T const *const ptr)
-
- -

Build a matrix from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::make_mat4x4 (T const *const ptr)
-
- -

Build a matrix from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL qua<T, defaultp> glm::make_quat (T const *const ptr)
-
- -

Build a quaternion from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<1, T, Q> glm::make_vec1 (vec< 1, T, Q > const & v)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<1, T, Q> glm::make_vec1 (vec< 2, T, Q > const & v)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<1, T, Q> glm::make_vec1 (vec< 3, T, Q > const & v)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<1, T, Q> glm::make_vec1 (vec< 4, T, Q > const & v)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<2, T, Q> glm::make_vec2 (vec< 1, T, Q > const & v)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<2, T, Q> glm::make_vec2 (vec< 2, T, Q > const & v)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<2, T, Q> glm::make_vec2 (vec< 3, T, Q > const & v)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<2, T, Q> glm::make_vec2 (vec< 4, T, Q > const & v)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<2, T, defaultp> glm::make_vec2 (T const *const ptr)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::make_vec3 (vec< 1, T, Q > const & v)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::make_vec3 (vec< 2, T, Q > const & v)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::make_vec3 (vec< 3, T, Q > const & v)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::make_vec3 (vec< 4, T, Q > const & v)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<3, T, defaultp> glm::make_vec3 (T const *const ptr)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<4, T, Q> glm::make_vec4 (vec< 1, T, Q > const & v)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<4, T, Q> glm::make_vec4 (vec< 2, T, Q > const & v)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<4, T, Q> glm::make_vec4 (vec< 3, T, Q > const & v)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<4, T, Q> glm::make_vec4 (vec< 4, T, Q > const & v)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<4, T, defaultp> glm::make_vec4 (T const *const ptr)
-
- -

Build a vector from a pointer.

-
See also
GLM_GTC_type_ptr
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType::value_type const* glm::value_ptr (genType const & v)
-
- -

Return the constant address to the data of the input parameter.

-
See also
GLM_GTC_type_ptr
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00306.html b/tests/OpenGL/package/glm/doc/api/a00306.html deleted file mode 100644 index 61c2d888..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00306.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_ulp - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
- -

Include <glm/gtc/ulp.hpp> to use the features of this extension. -More...

-

Include <glm/gtc/ulp.hpp> to use the features of this extension.

-

Allow the measurement of the accuracy of a function against a reference implementation. This extension works on floating-point data and provide results in ULP.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00307.html b/tests/OpenGL/package/glm/doc/api/a00307.html deleted file mode 100644 index ae43cce4..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00307.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTC_vec1 - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
-
-
-
-
- -

Include <glm/gtc/vec1.hpp> to use the features of this extension. -More...

-

Include <glm/gtc/vec1.hpp> to use the features of this extension.

-

Add vec1, ivec1, uvec1 and bvec1 types.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00308.html b/tests/OpenGL/package/glm/doc/api/a00308.html deleted file mode 100644 index 3768b7e7..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00308.html +++ /dev/null @@ -1,1357 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_associated_min_max - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_associated_min_max
-
-
- -

Include <glm/gtx/associated_min_max.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/associated_min_max.hpp> to use the features of this extension.

-

Min and max functions that return associated values not the compared onces.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL U glm::associatedMax (x,
a,
y,
b 
)
-
- -

Maximum comparison between 2 variables and returns 2 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<2, U, Q> glm::associatedMax (vec< L, T, Q > const & x,
vec< L, U, Q > const & a,
vec< L, T, Q > const & y,
vec< L, U, Q > const & b 
)
-
- -

Maximum comparison between 2 variables and returns 2 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::associatedMax (x,
vec< L, U, Q > const & a,
y,
vec< L, U, Q > const & b 
)
-
- -

Maximum comparison between 2 variables and returns 2 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMax (vec< L, T, Q > const & x,
a,
vec< L, T, Q > const & y,
b 
)
-
- -

Maximum comparison between 2 variables and returns 2 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL U glm::associatedMax (x,
a,
y,
b,
z,
c 
)
-
- -

Maximum comparison between 3 variables and returns 3 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMax (vec< L, T, Q > const & x,
vec< L, U, Q > const & a,
vec< L, T, Q > const & y,
vec< L, U, Q > const & b,
vec< L, T, Q > const & z,
vec< L, U, Q > const & c 
)
-
- -

Maximum comparison between 3 variables and returns 3 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::associatedMax (x,
vec< L, U, Q > const & a,
y,
vec< L, U, Q > const & b,
z,
vec< L, U, Q > const & c 
)
-
- -

Maximum comparison between 3 variables and returns 3 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMax (vec< L, T, Q > const & x,
a,
vec< L, T, Q > const & y,
b,
vec< L, T, Q > const & z,
c 
)
-
- -

Maximum comparison between 3 variables and returns 3 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL U glm::associatedMax (x,
a,
y,
b,
z,
c,
w,
d 
)
-
- -

Maximum comparison between 4 variables and returns 4 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMax (vec< L, T, Q > const & x,
vec< L, U, Q > const & a,
vec< L, T, Q > const & y,
vec< L, U, Q > const & b,
vec< L, T, Q > const & z,
vec< L, U, Q > const & c,
vec< L, T, Q > const & w,
vec< L, U, Q > const & d 
)
-
- -

Maximum comparison between 4 variables and returns 4 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMax (x,
vec< L, U, Q > const & a,
y,
vec< L, U, Q > const & b,
z,
vec< L, U, Q > const & c,
w,
vec< L, U, Q > const & d 
)
-
- -

Maximum comparison between 4 variables and returns 4 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMax (vec< L, T, Q > const & x,
a,
vec< L, T, Q > const & y,
b,
vec< L, T, Q > const & z,
c,
vec< L, T, Q > const & w,
d 
)
-
- -

Maximum comparison between 4 variables and returns 4 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL U glm::associatedMin (x,
a,
y,
b 
)
-
- -

Minimum comparison between 2 variables and returns 2 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<2, U, Q> glm::associatedMin (vec< L, T, Q > const & x,
vec< L, U, Q > const & a,
vec< L, T, Q > const & y,
vec< L, U, Q > const & b 
)
-
- -

Minimum comparison between 2 variables and returns 2 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMin (x,
const vec< L, U, Q > & a,
y,
const vec< L, U, Q > & b 
)
-
- -

Minimum comparison between 2 variables and returns 2 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMin (vec< L, T, Q > const & x,
a,
vec< L, T, Q > const & y,
b 
)
-
- -

Minimum comparison between 2 variables and returns 2 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL U glm::associatedMin (x,
a,
y,
b,
z,
c 
)
-
- -

Minimum comparison between 3 variables and returns 3 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMin (vec< L, T, Q > const & x,
vec< L, U, Q > const & a,
vec< L, T, Q > const & y,
vec< L, U, Q > const & b,
vec< L, T, Q > const & z,
vec< L, U, Q > const & c 
)
-
- -

Minimum comparison between 3 variables and returns 3 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL U glm::associatedMin (x,
a,
y,
b,
z,
c,
w,
d 
)
-
- -

Minimum comparison between 4 variables and returns 4 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMin (vec< L, T, Q > const & x,
vec< L, U, Q > const & a,
vec< L, T, Q > const & y,
vec< L, U, Q > const & b,
vec< L, T, Q > const & z,
vec< L, U, Q > const & c,
vec< L, T, Q > const & w,
vec< L, U, Q > const & d 
)
-
- -

Minimum comparison between 4 variables and returns 4 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMin (x,
vec< L, U, Q > const & a,
y,
vec< L, U, Q > const & b,
z,
vec< L, U, Q > const & c,
w,
vec< L, U, Q > const & d 
)
-
- -

Minimum comparison between 4 variables and returns 4 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMin (vec< L, T, Q > const & x,
a,
vec< L, T, Q > const & y,
b,
vec< L, T, Q > const & z,
c,
vec< L, T, Q > const & w,
d 
)
-
- -

Minimum comparison between 4 variables and returns 4 associated variable values.

-
See also
GLM_GTX_associated_min_max
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00309.html b/tests/OpenGL/package/glm/doc/api/a00309.html deleted file mode 100644 index e77c82ba..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00309.html +++ /dev/null @@ -1,322 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_bit - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- - -
- -

Include <glm/gtx/bit.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/bit.hpp> to use the features of this extension.

-

Allow to perform bit operations on integer values

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL genIUType glm::highestBitValue (genIUType Value)
-
-
See also
GLM_GTX_bit
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::highestBitValue (vec< L, T, Q > const & value)
-
- -

Find the highest bit set to 1 in a integer variable and return its value.

-
See also
GLM_GTX_bit
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genIUType glm::lowestBitValue (genIUType Value)
-
-
See also
GLM_GTX_bit
- -
-
- -
-
- - - - - - - - -
GLM_DEPRECATED GLM_FUNC_DECL genIUType glm::powerOfTwoAbove (genIUType Value)
-
- -

Return the power of two number which value is just higher the input value.

-

Deprecated, use ceilPowerOfTwo from GTC_round instead

-
See also
GLM_GTC_round
-
-GLM_GTX_bit
- -
-
- -
-
- - - - - - - - -
GLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> glm::powerOfTwoAbove (vec< L, T, Q > const & value)
-
- -

Return the power of two number which value is just higher the input value.

-

Deprecated, use ceilPowerOfTwo from GTC_round instead

-
See also
GLM_GTC_round
-
-GLM_GTX_bit
- -
-
- -
-
- - - - - - - - -
GLM_DEPRECATED GLM_FUNC_DECL genIUType glm::powerOfTwoBelow (genIUType Value)
-
- -

Return the power of two number which value is just lower the input value.

-

Deprecated, use floorPowerOfTwo from GTC_round instead

-
See also
GLM_GTC_round
-
-GLM_GTX_bit
- -
-
- -
-
- - - - - - - - -
GLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> glm::powerOfTwoBelow (vec< L, T, Q > const & value)
-
- -

Return the power of two number which value is just lower the input value.

-

Deprecated, use floorPowerOfTwo from GTC_round instead

-
See also
GLM_GTC_round
-
-GLM_GTX_bit
- -
-
- -
-
- - - - - - - - -
GLM_DEPRECATED GLM_FUNC_DECL genIUType glm::powerOfTwoNearest (genIUType Value)
-
- -

Return the power of two number which value is the closet to the input value.

-

Deprecated, use roundPowerOfTwo from GTC_round instead

-
See also
GLM_GTC_round
-
-GLM_GTX_bit
- -
-
- -
-
- - - - - - - - -
GLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> glm::powerOfTwoNearest (vec< L, T, Q > const & value)
-
- -

Return the power of two number which value is the closet to the input value.

-

Deprecated, use roundPowerOfTwo from GTC_round instead

-
See also
GLM_GTC_round
-
-GLM_GTX_bit
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00310.html b/tests/OpenGL/package/glm/doc/api/a00310.html deleted file mode 100644 index 72094902..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00310.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_closest_point - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_closest_point
-
-
- -

Include <glm/gtx/closest_point.hpp> to use the features of this extension. -More...

- - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/closest_point.hpp> to use the features of this extension.

-

Find the point on a straight line which is the closet of a point.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::closestPointOnLine (vec< 3, T, Q > const & point,
vec< 3, T, Q > const & a,
vec< 3, T, Q > const & b 
)
-
- -

Find the point on a straight line which is the closet of a point.

-
See also
GLM_GTX_closest_point
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00311.html b/tests/OpenGL/package/glm/doc/api/a00311.html deleted file mode 100644 index 89a09c75..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00311.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_color_encoding - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_color_encoding
-
-
- -

Include <glm/gtx/color_encoding.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/color_encoding.hpp> to use the features of this extension.

-

Allow to perform bit operations on integer values

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00312.html b/tests/OpenGL/package/glm/doc/api/a00312.html deleted file mode 100644 index 996fad75..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00312.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_color_space - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_color_space
-
-
- -

Include <glm/gtx/color_space.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > hsvColor (vec< 3, T, Q > const &rgbValue)
 Converts a color from RGB color space to its color in HSV color space. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T luminosity (vec< 3, T, Q > const &color)
 Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rgbColor (vec< 3, T, Q > const &hsvValue)
 Converts a color from HSV color space to its color in RGB color space. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > saturation (T const s)
 Build a saturation matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > saturation (T const s, vec< 3, T, Q > const &color)
 Modify the saturation of a color. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > saturation (T const s, vec< 4, T, Q > const &color)
 Modify the saturation of a color. More...
 
-

Detailed Description

-

Include <glm/gtx/color_space.hpp> to use the features of this extension.

-

Related to RGB to HSV conversions and operations.

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::hsvColor (vec< 3, T, Q > const & rgbValue)
-
- -

Converts a color from RGB color space to its color in HSV color space.

-
See also
GLM_GTX_color_space
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::luminosity (vec< 3, T, Q > const & color)
-
- -

Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals.

-
See also
GLM_GTX_color_space
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::rgbColor (vec< 3, T, Q > const & hsvValue)
-
- -

Converts a color from HSV color space to its color in RGB color space.

-
See also
GLM_GTX_color_space
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::saturation (T const s)
-
- -

Build a saturation matrix.

-
See also
GLM_GTX_color_space
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::saturation (T const s,
vec< 3, T, Q > const & color 
)
-
- -

Modify the saturation of a color.

-
See also
GLM_GTX_color_space
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<4, T, Q> glm::saturation (T const s,
vec< 4, T, Q > const & color 
)
-
- -

Modify the saturation of a color.

-
See also
GLM_GTX_color_space
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00313.html b/tests/OpenGL/package/glm/doc/api/a00313.html deleted file mode 100644 index cb18e845..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00313.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_color_space_YCoCg - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_color_space_YCoCg
-
-
- -

Include <glm/gtx/color_space_YCoCg.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/color_space_YCoCg.hpp> to use the features of this extension.

-

RGB to YCoCg conversions and operations

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::rgb2YCoCg (vec< 3, T, Q > const & rgbColor)
-
- -

Convert a color from RGB color space to YCoCg color space.

-
See also
GLM_GTX_color_space_YCoCg
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::rgb2YCoCgR (vec< 3, T, Q > const & rgbColor)
-
- -

Convert a color from RGB color space to YCoCgR color space.

-
See also
"YCoCg-R: A Color Space with RGB Reversibility and Low Dynamic Range"
-
-GLM_GTX_color_space_YCoCg
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::YCoCg2rgb (vec< 3, T, Q > const & YCoCgColor)
-
- -

Convert a color from YCoCg color space to RGB color space.

-
See also
GLM_GTX_color_space_YCoCg
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::YCoCgR2rgb (vec< 3, T, Q > const & YCoCgColor)
-
- -

Convert a color from YCoCgR color space to RGB color space.

-
See also
"YCoCg-R: A Color Space with RGB Reversibility and Low Dynamic Range"
-
-GLM_GTX_color_space_YCoCg
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00314.html b/tests/OpenGL/package/glm/doc/api/a00314.html deleted file mode 100644 index 80170a7b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00314.html +++ /dev/null @@ -1,257 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_common - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
-
-
- -

Include <glm/gtx/common.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - -

-Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > closeBounded (vec< L, T, Q > const &Value, vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)
 Returns whether vector components values are within an interval. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmod (vec< L, T, Q > const &v)
 Similar to 'mod' but with a different rounding and integer support. More...
 
template<typename genType >
GLM_FUNC_DECL genType::bool_type isdenormal (genType const &x)
 Returns true if x is a denormalized number Numbers whose absolute value is too small to be represented in the normal format are represented in an alternate, denormalized format. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > openBounded (vec< L, T, Q > const &Value, vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)
 Returns whether vector components values are within an interval. More...
 
-

Detailed Description

-

Include <glm/gtx/common.hpp> to use the features of this extension.

-

Provide functions to increase the compatibility with Cg and HLSL languages

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, bool, Q> glm::closeBounded (vec< L, T, Q > const & Value,
vec< L, T, Q > const & Min,
vec< L, T, Q > const & Max 
)
-
- -

Returns whether vector components values are within an interval.

-

A closed interval includes its endpoints, and is denoted with square brackets.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
-
See also
GLM_EXT_vector_relational
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fmod (vec< L, T, Q > const & v)
-
- -

Similar to 'mod' but with a different rounding and integer support.

-

Returns 'x - y * trunc(x/y)' instead of 'x - y * floor(x/y)'

-
See also
GLSL mod vs HLSL fmod
-
-GLSL mod man page
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType::bool_type glm::isdenormal (genType const & x)
-
- -

Returns true if x is a denormalized number Numbers whose absolute value is too small to be represented in the normal format are represented in an alternate, denormalized format.

-

This format is less precise but can represent values closer to zero.

-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
GLSL isnan man page
-
-GLSL 4.20.8 specification, section 8.3 Common Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, bool, Q> glm::openBounded (vec< L, T, Q > const & Value,
vec< L, T, Q > const & Min,
vec< L, T, Q > const & Max 
)
-
- -

Returns whether vector components values are within an interval.

-

A open interval excludes its endpoints, and is denoted with square brackets.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
-
-
-
See also
GLM_EXT_vector_relational
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00315.html b/tests/OpenGL/package/glm/doc/api/a00315.html deleted file mode 100644 index 0dfa682f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00315.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_compatibility - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_compatibility
-
-
- -

Include <glm/gtx/compatibility.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

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

-Functions

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

Detailed Description

-

Include <glm/gtx/compatibility.hpp> to use the features of this extension.

-

Provide functions to increase the compatibility with Cg and HLSL languages

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00316.html b/tests/OpenGL/package/glm/doc/api/a00316.html deleted file mode 100644 index 504a519c..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00316.html +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_component_wise - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_component_wise
-
-
- -

Include <glm/gtx/component_wise.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/component_wise.hpp> to use the features of this extension.

-

Operations between components of a type

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL genType::value_type glm::compAdd (genType const & v)
-
- -

Add all vector components together.

-
See also
GLM_GTX_component_wise
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType::value_type glm::compMax (genType const & v)
-
- -

Find the maximum value between single vector components.

-
See also
GLM_GTX_component_wise
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType::value_type glm::compMin (genType const & v)
-
- -

Find the minimum value between single vector components.

-
See also
GLM_GTX_component_wise
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType::value_type glm::compMul (genType const & v)
-
- -

Multiply all vector components together.

-
See also
GLM_GTX_component_wise
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, floatType, Q> glm::compNormalize (vec< L, T, Q > const & v)
-
- -

Convert an integer vector to a normalized float vector.

-

If the parameter value type is already a floating qualifier type, the value is passed through.

See also
GLM_GTX_component_wise
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::compScale (vec< L, floatType, Q > const & v)
-
- -

Convert a normalized float vector to an integer vector.

-

If the parameter value type is already a floating qualifier type, the value is passed through.

See also
GLM_GTX_component_wise
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00317.html b/tests/OpenGL/package/glm/doc/api/a00317.html deleted file mode 100644 index a97c9107..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00317.html +++ /dev/null @@ -1,547 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_dual_quaternion - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_dual_quaternion
-
-
- -

Include <glm/gtx/dual_quaternion.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

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

-Functions

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

Detailed Description

-

Include <glm/gtx/dual_quaternion.hpp> to use the features of this extension.

-

Defines a templated dual-quaternion type and several dual-quaternion operations.

-

Typedef Documentation

- -
-
- - - - -
typedef highp_ddualquat ddualquat
-
- -

Dual-quaternion of default double-qualifier floating-point numbers.

-
See also
GLM_GTX_dual_quaternion
- -

Definition at line 260 of file dual_quaternion.hpp.

- -
-
- -
-
- - - - -
typedef highp_fdualquat dualquat
-
- -

Dual-quaternion of floating-point numbers.

-
See also
GLM_GTX_dual_quaternion
- -

Definition at line 236 of file dual_quaternion.hpp.

- -
-
- -
-
- - - - -
typedef highp_fdualquat fdualquat
-
- -

Dual-quaternion of single-qualifier floating-point numbers.

-
See also
GLM_GTX_dual_quaternion
- -

Definition at line 241 of file dual_quaternion.hpp.

- -
-
- -
-
- - - - -
typedef tdualquat<double, highp> highp_ddualquat
-
- -

Dual-quaternion of high double-qualifier floating-point numbers.

-
See also
GLM_GTX_dual_quaternion
- -

Definition at line 229 of file dual_quaternion.hpp.

- -
-
- -
-
- - - - -
typedef tdualquat<float, highp> highp_dualquat
-
- -

Dual-quaternion of high single-qualifier floating-point numbers.

-
See also
GLM_GTX_dual_quaternion
- -

Definition at line 197 of file dual_quaternion.hpp.

- -
-
- -
-
- - - - -
typedef tdualquat<float, highp> highp_fdualquat
-
- -

Dual-quaternion of high single-qualifier floating-point numbers.

-
See also
GLM_GTX_dual_quaternion
- -

Definition at line 213 of file dual_quaternion.hpp.

- -
-
- -
-
- - - - -
typedef tdualquat<double, lowp> lowp_ddualquat
-
- -

Dual-quaternion of low double-qualifier floating-point numbers.

-
See also
GLM_GTX_dual_quaternion
- -

Definition at line 219 of file dual_quaternion.hpp.

- -
-
- -
-
- - - - -
typedef tdualquat<float, lowp> lowp_dualquat
-
- -

Dual-quaternion of low single-qualifier floating-point numbers.

-
See also
GLM_GTX_dual_quaternion
- -

Definition at line 187 of file dual_quaternion.hpp.

- -
-
- -
-
- - - - -
typedef tdualquat<float, lowp> lowp_fdualquat
-
- -

Dual-quaternion of low single-qualifier floating-point numbers.

-
See also
GLM_GTX_dual_quaternion
- -

Definition at line 203 of file dual_quaternion.hpp.

- -
-
- -
-
- - - - -
typedef tdualquat<double, mediump> mediump_ddualquat
-
- -

Dual-quaternion of medium double-qualifier floating-point numbers.

-
See also
GLM_GTX_dual_quaternion
- -

Definition at line 224 of file dual_quaternion.hpp.

- -
-
- -
-
- - - - -
typedef tdualquat<float, mediump> mediump_dualquat
-
- -

Dual-quaternion of medium single-qualifier floating-point numbers.

-
See also
GLM_GTX_dual_quaternion
- -

Definition at line 192 of file dual_quaternion.hpp.

- -
-
- -
-
- - - - -
typedef tdualquat<float, mediump> mediump_fdualquat
-
- -

Dual-quaternion of medium single-qualifier floating-point numbers.

-
See also
GLM_GTX_dual_quaternion
- -

Definition at line 208 of file dual_quaternion.hpp.

- -
-
-

Function Documentation

- -
-
- - - - - - - -
GLM_FUNC_DECL tdualquat<T, Q> glm::dual_quat_identity ()
-
- -

Creates an identity dual quaternion.

-
See also
GLM_GTX_dual_quaternion
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL tdualquat<T, Q> glm::dualquat_cast (mat< 2, 4, T, Q > const & x)
-
- -

Converts a 2 * 4 matrix (matrix which holds real and dual parts) to a quaternion.

-
See also
GLM_GTX_dual_quaternion
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL tdualquat<T, Q> glm::dualquat_cast (mat< 3, 4, T, Q > const & x)
-
- -

Converts a 3 * 4 matrix (augmented matrix rotation + translation) to a quaternion.

-
See also
GLM_GTX_dual_quaternion
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL tdualquat<T, Q> glm::inverse (tdualquat< T, Q > const & q)
-
- -

Returns the q inverse.

-
See also
GLM_GTX_dual_quaternion
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL tdualquat<T, Q> glm::lerp (tdualquat< T, Q > const & x,
tdualquat< T, Q > const & y,
T const & a 
)
-
- -

Returns the linear interpolation of two dual quaternion.

-
See also
gtc_dual_quaternion
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<2, 4, T, Q> glm::mat2x4_cast (tdualquat< T, Q > const & x)
-
- -

Converts a quaternion to a 2 * 4 matrix.

-
See also
GLM_GTX_dual_quaternion
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<3, 4, T, Q> glm::mat3x4_cast (tdualquat< T, Q > const & x)
-
- -

Converts a quaternion to a 3 * 4 matrix.

-
See also
GLM_GTX_dual_quaternion
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL tdualquat<T, Q> glm::normalize (tdualquat< T, Q > const & q)
-
- -

Returns the normalized quaternion.

-
See also
GLM_GTX_dual_quaternion
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00318.html b/tests/OpenGL/package/glm/doc/api/a00318.html deleted file mode 100644 index b508baab..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00318.html +++ /dev/null @@ -1,892 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_easing - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
-
-
- -

Include <glm/gtx/easing.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/easing.hpp> to use the features of this extension.

-

Easing functions for animations and transitons All functions take a parameter x in the range [0.0,1.0]

-

Based on the AHEasing project of Warren Moore (https://github.com/warrenm/AHEasing)

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::backEaseIn (genType const & a)
-
-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::backEaseIn (genType const & a,
genType const & o 
)
-
-
Parameters
- - - -
aparameter
oOptional overshoot modifier
-
-
-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::backEaseInOut (genType const & a)
-
-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::backEaseInOut (genType const & a,
genType const & o 
)
-
-
Parameters
- - - -
aparameter
oOptional overshoot modifier
-
-
-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::backEaseOut (genType const & a)
-
-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::backEaseOut (genType const & a,
genType const & o 
)
-
-
Parameters
- - - -
aparameter
oOptional overshoot modifier
-
-
-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::bounceEaseIn (genType const & a)
-
-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::bounceEaseInOut (genType const & a)
-
-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::bounceEaseOut (genType const & a)
-
-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::circularEaseIn (genType const & a)
-
- -

Modelled after shifted quadrant IV of unit circle.

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::circularEaseInOut (genType const & a)
-
- -

Modelled after the piecewise circular function y = (1/2)(1 - sqrt(1 - 4x^2)) ; [0, 0.5) y = (1/2)(sqrt(-(2x - 3)*(2x - 1)) + 1) ; [0.5, 1].

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::circularEaseOut (genType const & a)
-
- -

Modelled after shifted quadrant II of unit circle.

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::cubicEaseInOut (genType const & a)
-
- -

Modelled after the piecewise cubic y = (1/2)((2x)^3) ; [0, 0.5) y = (1/2)((2x-2)^3 + 2) ; [0.5, 1].

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::cubicEaseOut (genType const & a)
-
- -

Modelled after the cubic y = (x - 1)^3 + 1.

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::elasticEaseIn (genType const & a)
-
- -

Modelled after the damped sine wave y = sin(13pi/2*x)*pow(2, 10 * (x - 1))

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::elasticEaseInOut (genType const & a)
-
- -

Modelled after the piecewise exponentially-damped sine wave: y = (1/2)*sin(13pi/2*(2*x))*pow(2, 10 * ((2*x) - 1)) ; [0,0.5) y = (1/2)*(sin(-13pi/2*((2x-1)+1))*pow(2,-10(2*x-1)) + 2) ; [0.5, 1].

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::elasticEaseOut (genType const & a)
-
- -

Modelled after the damped sine wave y = sin(-13pi/2*(x + 1))*pow(2, -10x) + 1.

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::exponentialEaseIn (genType const & a)
-
- -

Modelled after the exponential function y = 2^(10(x - 1))

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::exponentialEaseInOut (genType const & a)
-
- -

Modelled after the piecewise exponential y = (1/2)2^(10(2x - 1)) ; [0,0.5) y = -(1/2)*2^(-10(2x - 1))) + 1 ; [0.5,1].

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::exponentialEaseOut (genType const & a)
-
- -

Modelled after the exponential function y = -2^(-10x) + 1.

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::linearInterpolation (genType const & a)
-
- -

Modelled after the line y = x.

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::quadraticEaseIn (genType const & a)
-
- -

Modelled after the parabola y = x^2.

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::quadraticEaseInOut (genType const & a)
-
- -

Modelled after the piecewise quadratic y = (1/2)((2x)^2) ; [0, 0.5) y = -(1/2)((2x-1)*(2x-3) - 1) ; [0.5, 1].

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::quadraticEaseOut (genType const & a)
-
- -

Modelled after the parabola y = -x^2 + 2x.

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::quarticEaseIn (genType const & a)
-
- -

Modelled after the quartic x^4.

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::quarticEaseInOut (genType const & a)
-
- -

Modelled after the piecewise quartic y = (1/2)((2x)^4) ; [0, 0.5) y = -(1/2)((2x-2)^4 - 2) ; [0.5, 1].

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::quarticEaseOut (genType const & a)
-
- -

Modelled after the quartic y = 1 - (x - 1)^4.

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::quinticEaseIn (genType const & a)
-
- -

Modelled after the quintic y = x^5.

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::quinticEaseInOut (genType const & a)
-
- -

Modelled after the piecewise quintic y = (1/2)((2x)^5) ; [0, 0.5) y = (1/2)((2x-2)^5 + 2) ; [0.5, 1].

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::quinticEaseOut (genType const & a)
-
- -

Modelled after the quintic y = (x - 1)^5 + 1.

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::sineEaseIn (genType const & a)
-
- -

Modelled after quarter-cycle of sine wave.

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::sineEaseInOut (genType const & a)
-
- -

Modelled after half sine wave.

-
See also
GLM_GTX_easing
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::sineEaseOut (genType const & a)
-
- -

Modelled after quarter-cycle of sine wave (different phase)

-
See also
GLM_GTX_easing
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00319.html b/tests/OpenGL/package/glm/doc/api/a00319.html deleted file mode 100644 index ba2ff984..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00319.html +++ /dev/null @@ -1,1609 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_euler_angles - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_euler_angles
-
-
- -

Include <glm/gtx/euler_angles.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/euler_angles.hpp> to use the features of this extension.

-

Build matrices from Euler angles.

-

Extraction of Euler angles from rotation matrix. Based on the original paper 2014 Mike Day - Extracting Euler Angles from a Rotation Matrix.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::derivedEulerAngleX (T const & angleX,
T const & angularVelocityX 
)
-
- -

Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about X-axis.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::derivedEulerAngleY (T const & angleY,
T const & angularVelocityY 
)
-
- -

Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about Y-axis.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::derivedEulerAngleZ (T const & angleZ,
T const & angularVelocityZ 
)
-
- -

Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about Z-axis.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleX (T const & angleX)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle X.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleXY (T const & angleX,
T const & angleY 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleXYX (T const & t1,
T const & t2,
T const & t3 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * X).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleXYZ (T const & t1,
T const & t2,
T const & t3 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * Z).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleXZ (T const & angleX,
T const & angleZ 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleXZX (T const & t1,
T const & t2,
T const & t3 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z * X).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleXZY (T const & t1,
T const & t2,
T const & t3 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z * Y).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleY (T const & angleY)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Y.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleYX (T const & angleY,
T const & angleX 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleYXY (T const & t1,
T const & t2,
T const & t3 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Y).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleYXZ (T const & yaw,
T const & pitch,
T const & roll 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleYZ (T const & angleY,
T const & angleZ 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleYZX (T const & t1,
T const & t2,
T const & t3 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z * X).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleYZY (T const & t1,
T const & t2,
T const & t3 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z * Y).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleZ (T const & angleZ)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Z.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleZX (T const & angle,
T const & angleX 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleZXY (T const & t1,
T const & t2,
T const & t3 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X * Y).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleZXZ (T const & t1,
T const & t2,
T const & t3 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X * Z).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleZY (T const & angleZ,
T const & angleY 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleZYX (T const & t1,
T const & t2,
T const & t3 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y * X).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleZYZ (T const & t1,
T const & t2,
T const & t3 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y * Z).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL void glm::extractEulerAngleXYX (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
-
- -

Extracts the (X * Y * X) Euler angles from the rotation matrix M.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL void glm::extractEulerAngleXYZ (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
-
- -

Extracts the (X * Y * Z) Euler angles from the rotation matrix M.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL void glm::extractEulerAngleXZX (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
-
- -

Extracts the (X * Z * X) Euler angles from the rotation matrix M.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL void glm::extractEulerAngleXZY (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
-
- -

Extracts the (X * Z * Y) Euler angles from the rotation matrix M.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL void glm::extractEulerAngleYXY (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
-
- -

Extracts the (Y * X * Y) Euler angles from the rotation matrix M.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL void glm::extractEulerAngleYXZ (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
-
- -

Extracts the (Y * X * Z) Euler angles from the rotation matrix M.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL void glm::extractEulerAngleYZX (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
-
- -

Extracts the (Y * Z * X) Euler angles from the rotation matrix M.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL void glm::extractEulerAngleYZY (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
-
- -

Extracts the (Y * Z * Y) Euler angles from the rotation matrix M.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL void glm::extractEulerAngleZXY (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
-
- -

Extracts the (Z * X * Y) Euler angles from the rotation matrix M.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL void glm::extractEulerAngleZXZ (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
-
- -

Extracts the (Z * X * Z) Euler angles from the rotation matrix M.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL void glm::extractEulerAngleZYX (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
-
- -

Extracts the (Z * Y * X) Euler angles from the rotation matrix M.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL void glm::extractEulerAngleZYZ (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
-
- -

Extracts the (Z * Y * Z) Euler angles from the rotation matrix M.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<2, 2, T, defaultp> glm::orientate2 (T const & angle)
-
- -

Creates a 2D 2 * 2 rotation matrix from an euler angle.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<3, 3, T, defaultp> glm::orientate3 (T const & angle)
-
- -

Creates a 2D 4 * 4 homogeneous rotation matrix from an euler angle.

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<3, 3, T, Q> glm::orientate3 (vec< 3, T, Q > const & angles)
-
- -

Creates a 3D 3 * 3 rotation matrix from euler angles (Y * X * Z).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::orientate4 (vec< 3, T, Q > const & angles)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).

-
See also
GLM_GTX_euler_angles
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::yawPitchRoll (T const & yaw,
T const & pitch,
T const & roll 
)
-
- -

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).

-
See also
GLM_GTX_euler_angles
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00320.html b/tests/OpenGL/package/glm/doc/api/a00320.html deleted file mode 100644 index c8d16dad..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00320.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_extend - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
-
-
- -

Include <glm/gtx/extend.hpp> to use the features of this extension. -More...

- - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/extend.hpp> to use the features of this extension.

-

Extend a position from a source to a position at a defined length.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::extend (genType const & Origin,
genType const & Source,
typename genType::value_type const Length 
)
-
- -

Extends of Length the Origin position using the (Source - Origin) direction.

-
See also
GLM_GTX_extend
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00321.html b/tests/OpenGL/package/glm/doc/api/a00321.html deleted file mode 100644 index fc46024b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00321.html +++ /dev/null @@ -1,831 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_extented_min_max - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_extented_min_max
-
-
- -

Include <glm/gtx/extented_min_max.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename genType >
GLM_FUNC_DECL genType fclamp (genType x, genType minVal, genType maxVal)
 Returns min(max(x, minVal), maxVal) for each component in x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fclamp (vec< L, T, Q > const &x, T minVal, T maxVal)
 Returns min(max(x, minVal), maxVal) for each component in x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fclamp (vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)
 Returns min(max(x, minVal), maxVal) for each component in x. More...
 
template<typename genType >
GLM_FUNC_DECL genType fmax (genType x, genType y)
 Returns y if x < y; otherwise, it returns x. More...
 
template<typename genType >
GLM_FUNC_DECL genType fmin (genType x, genType y)
 Returns y if y < x; otherwise, it returns x. More...
 
template<typename T >
GLM_FUNC_DECL T max (T const &x, T const &y, T const &z)
 Return the maximum component-wise values of 3 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)
 Return the maximum component-wise values of 3 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, C< T > const &y, C< T > const &z)
 Return the maximum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T max (T const &x, T const &y, T const &z, T const &w)
 Return the maximum component-wise values of 4 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)
 Return the maximum component-wise values of 4 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
 Return the maximum component-wise values of 4 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T min (T const &x, T const &y, T const &z)
 Return the minimum component-wise values of 3 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)
 Return the minimum component-wise values of 3 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, C< T > const &y, C< T > const &z)
 Return the minimum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T min (T const &x, T const &y, T const &z, T const &w)
 Return the minimum component-wise values of 4 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)
 Return the minimum component-wise values of 4 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
 Return the minimum component-wise values of 4 inputs. More...
 
-

Detailed Description

-

Include <glm/gtx/extented_min_max.hpp> to use the features of this extension.

-

Min and max functions for 3 to 4 parameters.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::fclamp (genType x,
genType minVal,
genType maxVal 
)
-
- -

Returns min(max(x, minVal), maxVal) for each component in x.

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - -
genTypeFloating-point scalar or vector types.
-
-
-
See also
gtx_extented_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fclamp (vec< L, T, Q > const & x,
minVal,
maxVal 
)
-
- -

Returns min(max(x, minVal), maxVal) for each component in x.

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
gtx_extented_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fclamp (vec< L, T, Q > const & x,
vec< L, T, Q > const & minVal,
vec< L, T, Q > const & maxVal 
)
-
- -

Returns min(max(x, minVal), maxVal) for each component in x.

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
gtx_extented_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::fmax (genType x,
genType y 
)
-
- -

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

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - -
genTypeFloating-point; scalar or vector types.
-
-
-
See also
gtx_extented_min_max
-
-std::fmax documentation
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::fmin (genType x,
genType y 
)
-
- -

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

-

If one of the two arguments is NaN, the value of the other argument is returned.

-
Template Parameters
- - -
genTypeFloating-point or integer; scalar or vector types.
-
-
-
See also
gtx_extented_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::max (T const & x,
T const & y,
T const & z 
)
-
- -

Return the maximum component-wise values of 3 inputs.

-
See also
gtx_extented_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL C<T> glm::max (C< T > const & x,
typename C< T >::T const & y,
typename C< T >::T const & z 
)
-
- -

Return the maximum component-wise values of 3 inputs.

-
See also
gtx_extented_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL C<T> glm::max (C< T > const & x,
C< T > const & y,
C< T > const & z 
)
-
- -

Return the maximum component-wise values of 3 inputs.

-
See also
gtx_extented_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::max (T const & x,
T const & y,
T const & z,
T const & w 
)
-
- -

Return the maximum component-wise values of 4 inputs.

-
See also
gtx_extented_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL C<T> glm::max (C< T > const & x,
typename C< T >::T const & y,
typename C< T >::T const & z,
typename C< T >::T const & w 
)
-
- -

Return the maximum component-wise values of 4 inputs.

-
See also
gtx_extented_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL C<T> glm::max (C< T > const & x,
C< T > const & y,
C< T > const & z,
C< T > const & w 
)
-
- -

Return the maximum component-wise values of 4 inputs.

-
See also
gtx_extented_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::min (T const & x,
T const & y,
T const & z 
)
-
- -

Return the minimum component-wise values of 3 inputs.

-
See also
gtx_extented_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL C<T> glm::min (C< T > const & x,
typename C< T >::T const & y,
typename C< T >::T const & z 
)
-
- -

Return the minimum component-wise values of 3 inputs.

-
See also
gtx_extented_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL C<T> glm::min (C< T > const & x,
C< T > const & y,
C< T > const & z 
)
-
- -

Return the minimum component-wise values of 3 inputs.

-
See also
gtx_extented_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::min (T const & x,
T const & y,
T const & z,
T const & w 
)
-
- -

Return the minimum component-wise values of 4 inputs.

-
See also
gtx_extented_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL C<T> glm::min (C< T > const & x,
typename C< T >::T const & y,
typename C< T >::T const & z,
typename C< T >::T const & w 
)
-
- -

Return the minimum component-wise values of 4 inputs.

-
See also
gtx_extented_min_max
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL C<T> glm::min (C< T > const & x,
C< T > const & y,
C< T > const & z,
C< T > const & w 
)
-
- -

Return the minimum component-wise values of 4 inputs.

-
See also
gtx_extented_min_max
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00322.html b/tests/OpenGL/package/glm/doc/api/a00322.html deleted file mode 100644 index 68677bf5..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00322.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_exterior_product - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_exterior_product
-
-
- -

Include <glm/gtx/exterior_product.hpp> to use the features of this extension. -More...

- - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/exterior_product.hpp> to use the features of this extension.

-

Allow to perform bit operations on integer values

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::cross (vec< 2, T, Q > const & v,
vec< 2, T, Q > const & u 
)
-
- -

Returns the cross product of x and y.

-
Template Parameters
- - - -
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
Exterior product
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00323.html b/tests/OpenGL/package/glm/doc/api/a00323.html deleted file mode 100644 index 96a9fe9c..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00323.html +++ /dev/null @@ -1,409 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_fast_exponential - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_fast_exponential
-
-
- -

Include <glm/gtx/fast_exponential.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/fast_exponential.hpp> to use the features of this extension.

-

Fast but less accurate implementations of exponential based functions.

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::fastExp (x)
-
- -

Faster than the common exp function but less accurate.

-
See also
GLM_GTX_fast_exponential
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fastExp (vec< L, T, Q > const & x)
-
- -

Faster than the common exp function but less accurate.

-
See also
GLM_GTX_fast_exponential
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::fastExp2 (x)
-
- -

Faster than the common exp2 function but less accurate.

-
See also
GLM_GTX_fast_exponential
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fastExp2 (vec< L, T, Q > const & x)
-
- -

Faster than the common exp2 function but less accurate.

-
See also
GLM_GTX_fast_exponential
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::fastLog (x)
-
- -

Faster than the common log function but less accurate.

-
See also
GLM_GTX_fast_exponential
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fastLog (vec< L, T, Q > const & x)
-
- -

Faster than the common exp2 function but less accurate.

-
See also
GLM_GTX_fast_exponential
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::fastLog2 (x)
-
- -

Faster than the common log2 function but less accurate.

-
See also
GLM_GTX_fast_exponential
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fastLog2 (vec< L, T, Q > const & x)
-
- -

Faster than the common log2 function but less accurate.

-
See also
GLM_GTX_fast_exponential
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::fastPow (genType x,
genType y 
)
-
- -

Faster than the common pow function but less accurate.

-
See also
GLM_GTX_fast_exponential
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fastPow (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
-
- -

Faster than the common pow function but less accurate.

-
See also
GLM_GTX_fast_exponential
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genTypeT glm::fastPow (genTypeT x,
genTypeU y 
)
-
- -

Faster than the common pow function but less accurate.

-
See also
GLM_GTX_fast_exponential
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fastPow (vec< L, T, Q > const & x)
-
- -

Faster than the common pow function but less accurate.

-
See also
GLM_GTX_fast_exponential
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00324.html b/tests/OpenGL/package/glm/doc/api/a00324.html deleted file mode 100644 index 9adcf060..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00324.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_fast_square_root - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_fast_square_root
-
-
- -

Include <glm/gtx/fast_square_root.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/fast_square_root.hpp> to use the features of this extension.

-

Fast but less accurate implementations of square root based functions.

    -
  • Sqrt optimisation based on Newton's method, www.gamedev.net/community/forums/topic.asp?topic id=139956
  • -
-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::fastDistance (genType x,
genType y 
)
-
- -

Faster than the common distance function but less accurate.

-
See also
GLM_GTX_fast_square_root extension.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::fastDistance (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
-
- -

Faster than the common distance function but less accurate.

-
See also
GLM_GTX_fast_square_root extension.
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::fastInverseSqrt (genType x)
-
- -

Faster than the common inversesqrt function but less accurate.

-
See also
GLM_GTX_fast_square_root extension.
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fastInverseSqrt (vec< L, T, Q > const & x)
-
- -

Faster than the common inversesqrt function but less accurate.

-
See also
GLM_GTX_fast_square_root extension.
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::fastLength (genType x)
-
- -

Faster than the common length function but less accurate.

-
See also
GLM_GTX_fast_square_root extension.
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::fastLength (vec< L, T, Q > const & x)
-
- -

Faster than the common length function but less accurate.

-
See also
GLM_GTX_fast_square_root extension.
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::fastNormalize (genType const & x)
-
- -

Faster than the common normalize function but less accurate.

-
See also
GLM_GTX_fast_square_root extension.
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::fastSqrt (genType x)
-
- -

Faster than the common sqrt function but less accurate.

-
See also
GLM_GTX_fast_square_root extension.
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::fastSqrt (vec< L, T, Q > const & x)
-
- -

Faster than the common sqrt function but less accurate.

-
See also
GLM_GTX_fast_square_root extension.
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00325.html b/tests/OpenGL/package/glm/doc/api/a00325.html deleted file mode 100644 index 0c8cc0b8..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00325.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_fast_trigonometry - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_fast_trigonometry
-
-
- -

Include <glm/gtx/fast_trigonometry.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/fast_trigonometry.hpp> to use the features of this extension.

-

Fast but less accurate implementations of trigonometric functions.

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::fastAcos (angle)
-
- -

Faster than the common acos function but less accurate.

-

Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::fastAsin (angle)
-
- -

Faster than the common asin function but less accurate.

-

Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::fastAtan (y,
x 
)
-
- -

Faster than the common atan function but less accurate.

-

Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::fastAtan (angle)
-
- -

Faster than the common atan function but less accurate.

-

Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::fastCos (angle)
-
- -

Faster than the common cos function but less accurate.

-

From GLM_GTX_fast_trigonometry extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::fastSin (angle)
-
- -

Faster than the common sin function but less accurate.

-

From GLM_GTX_fast_trigonometry extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::fastTan (angle)
-
- -

Faster than the common tan function but less accurate.

-

Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::wrapAngle (angle)
-
- -

Wrap an angle to [0 2pi[ From GLM_GTX_fast_trigonometry extension.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00326.html b/tests/OpenGL/package/glm/doc/api/a00326.html deleted file mode 100644 index d705401f..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00326.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_functions - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_functions
-
-
- -

Include <glm/gtx/functions.hpp> to use the features of this extension. -More...

- - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/functions.hpp> to use the features of this extension.

-

List of useful common functions.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::gauss (x,
ExpectedValue,
StandardDeviation 
)
-
- -

1D gauss function

-
See also
GLM_GTC_epsilon
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::gauss (vec< 2, T, Q > const & Coord,
vec< 2, T, Q > const & ExpectedValue,
vec< 2, T, Q > const & StandardDeviation 
)
-
- -

2D gauss function

-
See also
GLM_GTC_epsilon
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00327.html b/tests/OpenGL/package/glm/doc/api/a00327.html deleted file mode 100644 index 171895b6..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00327.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_gradient_paint - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_gradient_paint
-
-
- -

Include <glm/gtx/gradient_paint.hpp> to use the features of this extension. -More...

- - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/gradient_paint.hpp> to use the features of this extension.

-

Functions that return the color of procedural gradient for specific coordinates.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::linearGradient (vec< 2, T, Q > const & Point0,
vec< 2, T, Q > const & Point1,
vec< 2, T, Q > const & Position 
)
-
- -

Return a color from a linear gradient.

-
See also
- GLM_GTX_gradient_paint
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::radialGradient (vec< 2, T, Q > const & Center,
T const & Radius,
vec< 2, T, Q > const & Focal,
vec< 2, T, Q > const & Position 
)
-
- -

Return a color from a radial gradient.

-
See also
- GLM_GTX_gradient_paint
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00328.html b/tests/OpenGL/package/glm/doc/api/a00328.html deleted file mode 100644 index 2c29e335..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00328.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_handed_coordinate_space - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_handed_coordinate_space
-
-
- -

Include <glm/gtx/handed_coordinate_system.hpp> to use the features of this extension. -More...

- - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/handed_coordinate_system.hpp> to use the features of this extension.

-

To know if a set of three basis vectors defines a right or left-handed coordinate system.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::leftHanded (vec< 3, T, Q > const & tangent,
vec< 3, T, Q > const & binormal,
vec< 3, T, Q > const & normal 
)
-
- -

Return if a trihedron left handed or not.

-

From GLM_GTX_handed_coordinate_space extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::rightHanded (vec< 3, T, Q > const & tangent,
vec< 3, T, Q > const & binormal,
vec< 3, T, Q > const & normal 
)
-
- -

Return if a trihedron right handed or not.

-

From GLM_GTX_handed_coordinate_space extension.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00329.html b/tests/OpenGL/package/glm/doc/api/a00329.html deleted file mode 100644 index 4de30500..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00329.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_hash - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
- -

Include <glm/gtx/hash.hpp> to use the features of this extension. -More...

-

Include <glm/gtx/hash.hpp> to use the features of this extension.

-

Add std::hash support for glm types

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00330.html b/tests/OpenGL/package/glm/doc/api/a00330.html deleted file mode 100644 index ebac4a91..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00330.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_integer - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
-
-
- -

Include <glm/gtx/integer.hpp> to use the features of this extension. -More...

- - - - - -

-Typedefs

typedef signed int sint
 32bit signed integer. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename genType >
GLM_FUNC_DECL genType factorial (genType const &x)
 Return the factorial value of a number (!12 max, integer only) From GLM_GTX_integer extension. More...
 
GLM_FUNC_DECL unsigned int floor_log2 (unsigned int x)
 Returns the floor log2 of x. More...
 
GLM_FUNC_DECL int mod (int x, int y)
 Modulus. More...
 
GLM_FUNC_DECL uint mod (uint x, uint y)
 Modulus. More...
 
GLM_FUNC_DECL uint nlz (uint x)
 Returns the number of leading zeros. More...
 
GLM_FUNC_DECL int pow (int x, uint y)
 Returns x raised to the y power. More...
 
GLM_FUNC_DECL uint pow (uint x, uint y)
 Returns x raised to the y power. More...
 
GLM_FUNC_DECL int sqrt (int x)
 Returns the positive square root of x. More...
 
GLM_FUNC_DECL uint sqrt (uint x)
 Returns the positive square root of x. More...
 
-

Detailed Description

-

Include <glm/gtx/integer.hpp> to use the features of this extension.

-

Add support for integer for core functions

-

Typedef Documentation

- -
-
- - - - -
typedef signed int sint
-
- -

32bit signed integer.

-

From GLM_GTX_integer extension.

- -

Definition at line 55 of file gtx/integer.hpp.

- -
-
-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::factorial (genType const & x)
-
- -

Return the factorial value of a number (!12 max, integer only) From GLM_GTX_integer extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL unsigned int glm::floor_log2 (unsigned int x)
-
- -

Returns the floor log2 of x.

-

From GLM_GTX_integer extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL int glm::mod (int x,
int y 
)
-
- -

Modulus.

-

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

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL uint glm::mod (uint x,
uint y 
)
-
- -

Modulus.

-

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

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint glm::nlz (uint x)
-
- -

Returns the number of leading zeros.

-

From GLM_GTX_integer extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL int glm::pow (int x,
uint y 
)
-
- -

Returns x raised to the y power.

-

From GLM_GTX_integer extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL uint glm::pow (uint x,
uint y 
)
-
- -

Returns x raised to the y power.

-

From GLM_GTX_integer extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL int glm::sqrt (int x)
-
- -

Returns the positive square root of x.

-

From GLM_GTX_integer extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint glm::sqrt (uint x)
-
- -

Returns the positive square root of x.

-

From GLM_GTX_integer extension.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00331.html b/tests/OpenGL/package/glm/doc/api/a00331.html deleted file mode 100644 index 07aeaf8d..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00331.html +++ /dev/null @@ -1,451 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_intersect - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_intersect
-
-
- -

Include <glm/gtx/intersect.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/intersect.hpp> to use the features of this extension.

-

Add intersection functions

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::intersectLineSphere (genType const & point0,
genType const & point1,
genType const & sphereCenter,
typename genType::value_type sphereRadius,
genType & intersectionPosition1,
genType & intersectionNormal1,
genType & intersectionPosition2 = genType(),
genType & intersectionNormal2 = genType() 
)
-
- -

Compute the intersection of a line and a sphere.

-

From GLM_GTX_intersect extension

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::intersectLineTriangle (genType const & orig,
genType const & dir,
genType const & vert0,
genType const & vert1,
genType const & vert2,
genType & position 
)
-
- -

Compute the intersection of a line and a triangle.

-

From GLM_GTX_intersect extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::intersectRayPlane (genType const & orig,
genType const & dir,
genType const & planeOrig,
genType const & planeNormal,
typename genType::value_type & intersectionDistance 
)
-
- -

Compute the intersection of a ray and a plane.

-

Ray direction and plane normal must be unit length. From GLM_GTX_intersect extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::intersectRaySphere (genType const & rayStarting,
genType const & rayNormalizedDirection,
genType const & sphereCenter,
typename genType::value_type const sphereRadiusSquered,
typename genType::value_type & intersectionDistance 
)
-
- -

Compute the intersection distance of a ray and a sphere.

-

The ray direction vector is unit length. From GLM_GTX_intersect extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::intersectRaySphere (genType const & rayStarting,
genType const & rayNormalizedDirection,
genType const & sphereCenter,
const typename genType::value_type sphereRadius,
genType & intersectionPosition,
genType & intersectionNormal 
)
-
- -

Compute the intersection of a ray and a sphere.

-

From GLM_GTX_intersect extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::intersectRayTriangle (vec< 3, T, Q > const & orig,
vec< 3, T, Q > const & dir,
vec< 3, T, Q > const & v0,
vec< 3, T, Q > const & v1,
vec< 3, T, Q > const & v2,
vec< 2, T, Q > & baryPosition,
T & distance 
)
-
- -

Compute the intersection of a ray and a triangle.

-

Based om Tomas Möller implementation http://fileadmin.cs.lth.se/cs/Personal/Tomas_Akenine-Moller/raytri/ From GLM_GTX_intersect extension.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00332.html b/tests/OpenGL/package/glm/doc/api/a00332.html deleted file mode 100644 index 901371ad..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00332.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_io - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
- -

Include <glm/gtx/io.hpp> to use the features of this extension. -More...

-

Detailed Description

-

Include <glm/gtx/io.hpp> to use the features of this extension.

-

std::[w]ostream support for glm types

-

std::[w]ostream support for glm types + qualifier/width/etc. manipulators based on howard hinnant's std::chrono io proposal [http://home.roadrunner.com/~hinnant/bloomington/chrono_io.html]

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00333.html b/tests/OpenGL/package/glm/doc/api/a00333.html deleted file mode 100644 index 94f71bfb..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00333.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_log_base - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_log_base
-
-
- -

Include <glm/gtx/log_base.hpp> to use the features of this extension. -More...

- - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/log_base.hpp> to use the features of this extension.

-

Logarithm for any base. base can be a vector or a scalar.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::log (genType const & x,
genType const & base 
)
-
- -

Logarithm for any base.

-

From GLM_GTX_log_base.

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

Logarithm for any base.

-

From GLM_GTX_log_base.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00334.html b/tests/OpenGL/package/glm/doc/api/a00334.html deleted file mode 100644 index b6ed0be6..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00334.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_matrix_cross_product - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_matrix_cross_product
-
-
- -

Include <glm/gtx/matrix_cross_product.hpp> to use the features of this extension. -More...

- - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/matrix_cross_product.hpp> to use the features of this extension.

-

Build cross product matrices

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<3, 3, T, Q> glm::matrixCross3 (vec< 3, T, Q > const & x)
-
- -

Build a cross product matrix.

-

From GLM_GTX_matrix_cross_product extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::matrixCross4 (vec< 3, T, Q > const & x)
-
- -

Build a cross product matrix.

-

From GLM_GTX_matrix_cross_product extension.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00335.html b/tests/OpenGL/package/glm/doc/api/a00335.html deleted file mode 100644 index 5bcb4351..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00335.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_matrix_decompose - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_matrix_decompose
-
-
- -

Include <glm/gtx/matrix_decompose.hpp> to use the features of this extension. -More...

- - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/matrix_decompose.hpp> to use the features of this extension.

-

Decomposes a model matrix to translations, rotation and scale components

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::decompose (mat< 4, 4, T, Q > const & modelMatrix,
vec< 3, T, Q > & scale,
qua< T, Q > & orientation,
vec< 3, T, Q > & translation,
vec< 3, T, Q > & skew,
vec< 4, T, Q > & perspective 
)
-
- -

Decomposes a model matrix to translations, rotation and scale components.

-
See also
GLM_GTX_matrix_decompose
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00336.html b/tests/OpenGL/package/glm/doc/api/a00336.html deleted file mode 100644 index b73f45f6..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00336.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_matrix_factorisation - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_matrix_factorisation
-
-
- -

Include <glm/gtx/matrix_factorisation.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/matrix_factorisation.hpp> to use the features of this extension.

-

Functions to factor matrices in various forms

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<C, R, T, Q> glm::fliplr (mat< C, R, T, Q > const & in)
-
- -

Flips the matrix columns right and left.

-

From GLM_GTX_matrix_factorisation extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<C, R, T, Q> glm::flipud (mat< C, R, T, Q > const & in)
-
- -

Flips the matrix rows up and down.

-

From GLM_GTX_matrix_factorisation extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL void glm::qr_decompose (mat< C, R, T, Q > const & in)
-
- -

Performs QR factorisation of a matrix.

-

Returns 2 matrices, q and r, such that the columns of q are orthonormal and span the same subspace than those of the input matrix, r is an upper triangular matrix, and q*r=in. Given an n-by-m input matrix, q has dimensions min(n,m)-by-m, and r has dimensions n-by-min(n,m).

-

From GLM_GTX_matrix_factorisation extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL void glm::rq_decompose (mat< C, R, T, Q > const & in)
-
- -

Performs RQ factorisation of a matrix.

-

Returns 2 matrices, r and q, such that r is an upper triangular matrix, the rows of q are orthonormal and span the same subspace than those of the input matrix, and r*q=in. Note that in the context of RQ factorisation, the diagonal is seen as starting in the lower-right corner of the matrix, instead of the usual upper-left. Given an n-by-m input matrix, r has dimensions min(n,m)-by-m, and q has dimensions n-by-min(n,m).

-

From GLM_GTX_matrix_factorisation extension.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00337.html b/tests/OpenGL/package/glm/doc/api/a00337.html deleted file mode 100644 index 56bedcf9..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00337.html +++ /dev/null @@ -1,237 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_matrix_interpolation - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_matrix_interpolation
-
-
- -

Include <glm/gtx/matrix_interpolation.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/matrix_interpolation.hpp> to use the features of this extension.

-

Allows to directly interpolate two matrices.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL void glm::axisAngle (mat< 4, 4, T, Q > const & Mat,
vec< 3, T, Q > & Axis,
T & Angle 
)
-
- -

Get the axis and angle of the rotation from a matrix.

-

From GLM_GTX_matrix_interpolation extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::axisAngleMatrix (vec< 3, T, Q > const & Axis,
T const Angle 
)
-
- -

Build a matrix from axis and angle.

-

From GLM_GTX_matrix_interpolation extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::extractMatrixRotation (mat< 4, 4, T, Q > const & Mat)
-
- -

Extracts the rotation part of a matrix.

-

From GLM_GTX_matrix_interpolation extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::interpolate (mat< 4, 4, T, Q > const & m1,
mat< 4, 4, T, Q > const & m2,
T const Delta 
)
-
- -

Build a interpolation of 4 * 4 matrixes.

-

From GLM_GTX_matrix_interpolation extension. Warning! works only with rotation and/or translation matrixes, scale will generate unexpected results.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00338.html b/tests/OpenGL/package/glm/doc/api/a00338.html deleted file mode 100644 index 159c92a3..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00338.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_matrix_major_storage - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_matrix_major_storage
-
-
- -

Include <glm/gtx/matrix_major_storage.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/matrix_major_storage.hpp> to use the features of this extension.

-

Build matrices with specific matrix order, row or column

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<2, 2, T, Q> glm::colMajor2 (vec< 2, T, Q > const & v1,
vec< 2, T, Q > const & v2 
)
-
- -

Build a column major matrix from column vectors.

-

From GLM_GTX_matrix_major_storage extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<2, 2, T, Q> glm::colMajor2 (mat< 2, 2, T, Q > const & m)
-
- -

Build a column major matrix from other matrix.

-

From GLM_GTX_matrix_major_storage extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<3, 3, T, Q> glm::colMajor3 (vec< 3, T, Q > const & v1,
vec< 3, T, Q > const & v2,
vec< 3, T, Q > const & v3 
)
-
- -

Build a column major matrix from column vectors.

-

From GLM_GTX_matrix_major_storage extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<3, 3, T, Q> glm::colMajor3 (mat< 3, 3, T, Q > const & m)
-
- -

Build a column major matrix from other matrix.

-

From GLM_GTX_matrix_major_storage extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::colMajor4 (vec< 4, T, Q > const & v1,
vec< 4, T, Q > const & v2,
vec< 4, T, Q > const & v3,
vec< 4, T, Q > const & v4 
)
-
- -

Build a column major matrix from column vectors.

-

From GLM_GTX_matrix_major_storage extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::colMajor4 (mat< 4, 4, T, Q > const & m)
-
- -

Build a column major matrix from other matrix.

-

From GLM_GTX_matrix_major_storage extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<2, 2, T, Q> glm::rowMajor2 (vec< 2, T, Q > const & v1,
vec< 2, T, Q > const & v2 
)
-
- -

Build a row major matrix from row vectors.

-

From GLM_GTX_matrix_major_storage extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<2, 2, T, Q> glm::rowMajor2 (mat< 2, 2, T, Q > const & m)
-
- -

Build a row major matrix from other matrix.

-

From GLM_GTX_matrix_major_storage extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<3, 3, T, Q> glm::rowMajor3 (vec< 3, T, Q > const & v1,
vec< 3, T, Q > const & v2,
vec< 3, T, Q > const & v3 
)
-
- -

Build a row major matrix from row vectors.

-

From GLM_GTX_matrix_major_storage extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<3, 3, T, Q> glm::rowMajor3 (mat< 3, 3, T, Q > const & m)
-
- -

Build a row major matrix from other matrix.

-

From GLM_GTX_matrix_major_storage extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::rowMajor4 (vec< 4, T, Q > const & v1,
vec< 4, T, Q > const & v2,
vec< 4, T, Q > const & v3,
vec< 4, T, Q > const & v4 
)
-
- -

Build a row major matrix from row vectors.

-

From GLM_GTX_matrix_major_storage extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::rowMajor4 (mat< 4, 4, T, Q > const & m)
-
- -

Build a row major matrix from other matrix.

-

From GLM_GTX_matrix_major_storage extension.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00339.html b/tests/OpenGL/package/glm/doc/api/a00339.html deleted file mode 100644 index 17bbf924..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00339.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_matrix_operation - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_matrix_operation
-
-
- -

Include <glm/gtx/matrix_operation.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/matrix_operation.hpp> to use the features of this extension.

-

Build diagonal matrices from vectors.

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<2, 2, T, Q> glm::adjugate (mat< 2, 2, T, Q > const & m)
-
- -

Build an adjugate matrix.

-

From GLM_GTX_matrix_operation extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<3, 3, T, Q> glm::adjugate (mat< 3, 3, T, Q > const & m)
-
- -

Build an adjugate matrix.

-

From GLM_GTX_matrix_operation extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::adjugate (mat< 4, 4, T, Q > const & m)
-
- -

Build an adjugate matrix.

-

From GLM_GTX_matrix_operation extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<2, 2, T, Q> glm::diagonal2x2 (vec< 2, T, Q > const & v)
-
- -

Build a diagonal matrix.

-

From GLM_GTX_matrix_operation extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<2, 3, T, Q> glm::diagonal2x3 (vec< 2, T, Q > const & v)
-
- -

Build a diagonal matrix.

-

From GLM_GTX_matrix_operation extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<2, 4, T, Q> glm::diagonal2x4 (vec< 2, T, Q > const & v)
-
- -

Build a diagonal matrix.

-

From GLM_GTX_matrix_operation extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<3, 2, T, Q> glm::diagonal3x2 (vec< 2, T, Q > const & v)
-
- -

Build a diagonal matrix.

-

From GLM_GTX_matrix_operation extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<3, 3, T, Q> glm::diagonal3x3 (vec< 3, T, Q > const & v)
-
- -

Build a diagonal matrix.

-

From GLM_GTX_matrix_operation extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<3, 4, T, Q> glm::diagonal3x4 (vec< 3, T, Q > const & v)
-
- -

Build a diagonal matrix.

-

From GLM_GTX_matrix_operation extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 2, T, Q> glm::diagonal4x2 (vec< 2, T, Q > const & v)
-
- -

Build a diagonal matrix.

-

From GLM_GTX_matrix_operation extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 3, T, Q> glm::diagonal4x3 (vec< 3, T, Q > const & v)
-
- -

Build a diagonal matrix.

-

From GLM_GTX_matrix_operation extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::diagonal4x4 (vec< 4, T, Q > const & v)
-
- -

Build a diagonal matrix.

-

From GLM_GTX_matrix_operation extension.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00340.html b/tests/OpenGL/package/glm/doc/api/a00340.html deleted file mode 100644 index 626ab516..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00340.html +++ /dev/null @@ -1,367 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_matrix_query - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_matrix_query
-
-
- -

Include <glm/gtx/matrix_query.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/matrix_query.hpp> to use the features of this extension.

-

Query to evaluate matrix properties

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::isIdentity (matType< C, R, T, Q > const & m,
T const & epsilon 
)
-
- -

Return whether a matrix is an identity matrix.

-

From GLM_GTX_matrix_query extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::isNormalized (mat< 2, 2, T, Q > const & m,
T const & epsilon 
)
-
- -

Return whether a matrix is a normalized matrix.

-

From GLM_GTX_matrix_query extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::isNormalized (mat< 3, 3, T, Q > const & m,
T const & epsilon 
)
-
- -

Return whether a matrix is a normalized matrix.

-

From GLM_GTX_matrix_query extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::isNormalized (mat< 4, 4, T, Q > const & m,
T const & epsilon 
)
-
- -

Return whether a matrix is a normalized matrix.

-

From GLM_GTX_matrix_query extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::isNull (mat< 2, 2, T, Q > const & m,
T const & epsilon 
)
-
- -

Return whether a matrix a null matrix.

-

From GLM_GTX_matrix_query extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::isNull (mat< 3, 3, T, Q > const & m,
T const & epsilon 
)
-
- -

Return whether a matrix a null matrix.

-

From GLM_GTX_matrix_query extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::isNull (mat< 4, 4, T, Q > const & m,
T const & epsilon 
)
-
- -

Return whether a matrix is a null matrix.

-

From GLM_GTX_matrix_query extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::isOrthogonal (matType< C, R, T, Q > const & m,
T const & epsilon 
)
-
- -

Return whether a matrix is an orthonormalized matrix.

-

From GLM_GTX_matrix_query extension.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00341.html b/tests/OpenGL/package/glm/doc/api/a00341.html deleted file mode 100644 index c108f3fb..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00341.html +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_matrix_transform_2d - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_matrix_transform_2d
-
-
- -

Include <glm/gtx/matrix_transform_2d.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/matrix_transform_2d.hpp> to use the features of this extension.

-

Defines functions that generate common 2d transformation matrices.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_QUALIFIER mat<3, 3, T, Q> glm::rotate (mat< 3, 3, T, Q > const & m,
angle 
)
-
- -

Builds a rotation 3 * 3 matrix created from an angle.

-
Parameters
- - - -
mInput matrix multiplied by this translation matrix.
angleRotation angle expressed in radians.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_QUALIFIER mat<3, 3, T, Q> glm::scale (mat< 3, 3, T, Q > const & m,
vec< 2, T, Q > const & v 
)
-
- -

Builds a scale 3 * 3 matrix created from a vector of 2 components.

-
Parameters
- - - -
mInput matrix multiplied by this translation matrix.
vCoordinates of a scale vector.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_QUALIFIER mat<3, 3, T, Q> glm::shearX (mat< 3, 3, T, Q > const & m,
y 
)
-
- -

Builds an horizontal (parallel to the x axis) shear 3 * 3 matrix.

-
Parameters
- - - -
mInput matrix multiplied by this translation matrix.
yShear factor.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_QUALIFIER mat<3, 3, T, Q> glm::shearY (mat< 3, 3, T, Q > const & m,
x 
)
-
- -

Builds a vertical (parallel to the y axis) shear 3 * 3 matrix.

-
Parameters
- - - -
mInput matrix multiplied by this translation matrix.
xShear factor.
-
-
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_QUALIFIER mat<3, 3, T, Q> glm::translate (mat< 3, 3, T, Q > const & m,
vec< 2, T, Q > const & v 
)
-
- -

Builds a translation 3 * 3 matrix created from a vector of 2 components.

-
Parameters
- - - -
mInput matrix multiplied by this translation matrix.
vCoordinates of a translation vector.
-
-
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00342.html b/tests/OpenGL/package/glm/doc/api/a00342.html deleted file mode 100644 index 238176c3..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00342.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_mixed_producte - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_mixed_producte
-
-
- -

Include <glm/gtx/mixed_product.hpp> to use the features of this extension. -More...

- - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/mixed_product.hpp> to use the features of this extension.

-

Mixed product of 3 vectors.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00343.html b/tests/OpenGL/package/glm/doc/api/a00343.html deleted file mode 100644 index 779239f5..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00343.html +++ /dev/null @@ -1,399 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_norm - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- - -
-
- -

Include <glm/gtx/norm.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/norm.hpp> to use the features of this extension.

-

Various ways to compute vector norms.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::distance2 (vec< L, T, Q > const & p0,
vec< L, T, Q > const & p1 
)
-
- -

Returns the squared distance between p0 and p1, i.e., length2(p0 - p1).

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::l1Norm (vec< 3, T, Q > const & x,
vec< 3, T, Q > const & y 
)
-
- -

Returns the L1 norm between x and y.

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::l1Norm (vec< 3, T, Q > const & v)
-
- -

Returns the L1 norm of v.

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::l2Norm (vec< 3, T, Q > const & x,
vec< 3, T, Q > const & y 
)
-
- -

Returns the L2 norm between x and y.

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::l2Norm (vec< 3, T, Q > const & x)
-
- -

Returns the L2 norm of v.

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::length2 (vec< L, T, Q > const & x)
-
- -

Returns the squared length of x.

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::lMaxNorm (vec< 3, T, Q > const & x,
vec< 3, T, Q > const & y 
)
-
- -

Returns the LMax norm between x and y.

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::lMaxNorm (vec< 3, T, Q > const & x)
-
- -

Returns the LMax norm of v.

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::lxNorm (vec< 3, T, Q > const & x,
vec< 3, T, Q > const & y,
unsigned int Depth 
)
-
- -

Returns the L norm between x and y.

-

From GLM_GTX_norm extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::lxNorm (vec< 3, T, Q > const & x,
unsigned int Depth 
)
-
- -

Returns the L norm of v.

-

From GLM_GTX_norm extension.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00344.html b/tests/OpenGL/package/glm/doc/api/a00344.html deleted file mode 100644 index 8f08abff..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00344.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_normal - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
-
-
- -

Include <glm/gtx/normal.hpp> to use the features of this extension. -More...

- - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/normal.hpp> to use the features of this extension.

-

Compute the normal of a triangle.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::triangleNormal (vec< 3, T, Q > const & p1,
vec< 3, T, Q > const & p2,
vec< 3, T, Q > const & p3 
)
-
- -

Computes triangle normal from triangle points.

-
See also
GLM_GTX_normal
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00345.html b/tests/OpenGL/package/glm/doc/api/a00345.html deleted file mode 100644 index 29a165b8..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00345.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_normalize_dot - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_normalize_dot
-
-
- -

Include <glm/gtx/normalized_dot.hpp> to use the features of this extension. -More...

- - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/normalized_dot.hpp> to use the features of this extension.

-

Dot product of vectors that need to be normalize with a single square root.

-

Function Documentation

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

Normalize parameters and returns the dot product of x and y.

-

Faster that dot(fastNormalize(x), fastNormalize(y)).

-
See also
GLM_GTX_normalize_dot extension.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::normalizeDot (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
-
- -

Normalize parameters and returns the dot product of x and y.

-

It's faster that dot(normalize(x), normalize(y)).

-
See also
GLM_GTX_normalize_dot extension.
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00346.html b/tests/OpenGL/package/glm/doc/api/a00346.html deleted file mode 100644 index d782196a..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00346.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_number_precision - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_number_precision
-
-
- -

Include <glm/gtx/number_precision.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

-typedef f32 f32mat1
 Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
-typedef f32 f32mat1x1
 Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
-typedef f32 f32vec1
 Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
-typedef f64 f64mat1
 Double-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
-typedef f64 f64mat1x1
 Double-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
-typedef f64 f64vec1
 Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
-typedef u16 u16vec1
 16bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
 
-typedef u32 u32vec1
 32bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
 
-typedef u64 u64vec1
 64bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
 
-typedef u8 u8vec1
 8bit unsigned integer scalar. (from GLM_GTX_number_precision extension)
 
-

Detailed Description

-

Include <glm/gtx/number_precision.hpp> to use the features of this extension.

-

Defined size types.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00347.html b/tests/OpenGL/package/glm/doc/api/a00347.html deleted file mode 100644 index 95ac2cbe..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00347.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_optimum_pow - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_optimum_pow
-
-
- -

Include <glm/gtx/optimum_pow.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/optimum_pow.hpp> to use the features of this extension.

-

Integer exponentiation of power functions.

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::gtx::pow2 (genType const & x)
-
- -

Returns x raised to the power of 2.

-
See also
GLM_GTX_optimum_pow
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::gtx::pow3 (genType const & x)
-
- -

Returns x raised to the power of 3.

-
See also
GLM_GTX_optimum_pow
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::gtx::pow4 (genType const & x)
-
- -

Returns x raised to the power of 4.

-
See also
GLM_GTX_optimum_pow
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00348.html b/tests/OpenGL/package/glm/doc/api/a00348.html deleted file mode 100644 index 199adb5b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00348.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_orthonormalize - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_orthonormalize
-
-
- -

Include <glm/gtx/orthonormalize.hpp> to use the features of this extension. -More...

- - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/orthonormalize.hpp> to use the features of this extension.

-

Orthonormalize matrices.

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<3, 3, T, Q> glm::orthonormalize (mat< 3, 3, T, Q > const & m)
-
- -

Returns the orthonormalized matrix of m.

-
See also
GLM_GTX_orthonormalize
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::orthonormalize (vec< 3, T, Q > const & x,
vec< 3, T, Q > const & y 
)
-
- -

Orthonormalizes x according y.

-
See also
GLM_GTX_orthonormalize
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00349.html b/tests/OpenGL/package/glm/doc/api/a00349.html deleted file mode 100644 index 05ba05a6..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00349.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_perpendicular - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_perpendicular
-
-
- -

Include <glm/gtx/perpendicular.hpp> to use the features of this extension. -More...

- - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/perpendicular.hpp> to use the features of this extension.

-

Perpendicular of a vector from other one

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::perp (genType const & x,
genType const & Normal 
)
-
- -

Projects x a perpendicular axis of Normal.

-

From GLM_GTX_perpendicular extension.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00350.html b/tests/OpenGL/package/glm/doc/api/a00350.html deleted file mode 100644 index 88f40dec..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00350.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_polar_coordinates - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_polar_coordinates
-
-
- -

Include <glm/gtx/polar_coordinates.hpp> to use the features of this extension. -More...

- - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/polar_coordinates.hpp> to use the features of this extension.

-

Conversion from Euclidean space to polar space and revert.

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::euclidean (vec< 2, T, Q > const & polar)
-
- -

Convert Polar to Euclidean coordinates.

-
See also
GLM_GTX_polar_coordinates
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::polar (vec< 3, T, Q > const & euclidean)
-
- -

Convert Euclidean to Polar coordinates, x is the xz distance, y, the latitude and z the longitude.

-
See also
GLM_GTX_polar_coordinates
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00351.html b/tests/OpenGL/package/glm/doc/api/a00351.html deleted file mode 100644 index 9eedf7ba..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00351.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_projection - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_projection
-
-
- -

Include <glm/gtx/projection.hpp> to use the features of this extension. -More...

- - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/projection.hpp> to use the features of this extension.

-

Projection of a vector to other one

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::proj (genType const & x,
genType const & Normal 
)
-
- -

Projects x on Normal.

-
Parameters
- - - -
[in]xA vector to project
[in]NormalA normal that doesn't need to be of unit length.
-
-
-
See also
GLM_GTX_projection
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00352.html b/tests/OpenGL/package/glm/doc/api/a00352.html deleted file mode 100644 index a9c0a0aa..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00352.html +++ /dev/null @@ -1,622 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_quaternion - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_quaternion
-
-
- -

Include <glm/gtx/quaternion.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > cross (qua< T, Q > const &q, vec< 3, T, Q > const &v)
 Compute a cross product between a quaternion and a vector. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > cross (vec< 3, T, Q > const &v, qua< T, Q > const &q)
 Compute a cross product between a vector and a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T extractRealComponent (qua< T, Q > const &q)
 Extract the real component of a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > fastMix (qua< T, Q > const &x, qua< T, Q > const &y, T const &a)
 Quaternion normalized linear interpolation. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > intermediate (qua< T, Q > const &prev, qua< T, Q > const &curr, qua< T, Q > const &next)
 Returns an intermediate control point for squad interpolation. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T length2 (qua< T, Q > const &q)
 Returns the squared length of x. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quat_identity ()
 Create an identity quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rotate (qua< T, Q > const &q, vec< 3, T, Q > const &v)
 Returns quarternion square root. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > rotate (qua< T, Q > const &q, vec< 4, T, Q > const &v)
 Rotates a 4 components vector by a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > rotation (vec< 3, T, Q > const &orig, vec< 3, T, Q > const &dest)
 Compute the rotation between two vectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > shortMix (qua< T, Q > const &x, qua< T, Q > const &y, T const &a)
 Quaternion interpolation using the rotation short path. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > squad (qua< T, Q > const &q1, qua< T, Q > const &q2, qua< T, Q > const &s1, qua< T, Q > const &s2, T const &h)
 Compute a point on a path according squad equation. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > toMat3 (qua< T, Q > const &x)
 Converts a quaternion to a 3 * 3 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > toMat4 (qua< T, Q > const &x)
 Converts a quaternion to a 4 * 4 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > toQuat (mat< 3, 3, T, Q > const &x)
 Converts a 3 * 3 matrix to a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > toQuat (mat< 4, 4, T, Q > const &x)
 Converts a 4 * 4 matrix to a quaternion. More...
 
-

Detailed Description

-

Include <glm/gtx/quaternion.hpp> to use the features of this extension.

-

Extented quaternion types and functions

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::cross (qua< T, Q > const & q,
vec< 3, T, Q > const & v 
)
-
- -

Compute a cross product between a quaternion and a vector.

-
See also
GLM_GTX_quaternion
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::cross (vec< 3, T, Q > const & v,
qua< T, Q > const & q 
)
-
- -

Compute a cross product between a vector and a quaternion.

-
See also
GLM_GTX_quaternion
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::extractRealComponent (qua< T, Q > const & q)
-
- -

Extract the real component of a quaternion.

-
See also
GLM_GTX_quaternion
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::fastMix (qua< T, Q > const & x,
qua< T, Q > const & y,
T const & a 
)
-
- -

Quaternion normalized linear interpolation.

-
See also
GLM_GTX_quaternion
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::intermediate (qua< T, Q > const & prev,
qua< T, Q > const & curr,
qua< T, Q > const & next 
)
-
- -

Returns an intermediate control point for squad interpolation.

-
See also
GLM_GTX_quaternion
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::length2 (qua< T, Q > const & q)
-
- -

Returns the squared length of x.

-
See also
GLM_GTX_quaternion
- -
-
- -
-
- - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::quat_identity ()
-
- -

Create an identity quaternion.

-
See also
GLM_GTX_quaternion
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::rotate (qua< T, Q > const & q,
vec< 3, T, Q > const & v 
)
-
- -

Returns quarternion square root.

-
See also
GLM_GTX_quaternion Rotates a 3 components vector by a quaternion.
-
-GLM_GTX_quaternion
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<4, T, Q> glm::rotate (qua< T, Q > const & q,
vec< 4, T, Q > const & v 
)
-
- -

Rotates a 4 components vector by a quaternion.

-
See also
GLM_GTX_quaternion
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::rotation (vec< 3, T, Q > const & orig,
vec< 3, T, Q > const & dest 
)
-
- -

Compute the rotation between two vectors.

-
Parameters
- - - -
origvector, needs to be normalized
destvector, needs to be normalized
-
-
-
See also
GLM_GTX_quaternion
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::shortMix (qua< T, Q > const & x,
qua< T, Q > const & y,
T const & a 
)
-
- -

Quaternion interpolation using the rotation short path.

-
See also
GLM_GTX_quaternion
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::squad (qua< T, Q > const & q1,
qua< T, Q > const & q2,
qua< T, Q > const & s1,
qua< T, Q > const & s2,
T const & h 
)
-
- -

Compute a point on a path according squad equation.

-

q1 and q2 are control points; s1 and s2 are intermediate control points.

-
See also
GLM_GTX_quaternion
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<3, 3, T, Q> glm::toMat3 (qua< T, Q > const & x)
-
- -

Converts a quaternion to a 3 * 3 matrix.

-
See also
GLM_GTX_quaternion
- -

Definition at line 113 of file gtx/quaternion.hpp.

- -

References glm::mat3_cast().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::toMat4 (qua< T, Q > const & x)
-
- -

Converts a quaternion to a 4 * 4 matrix.

-
See also
GLM_GTX_quaternion
- -

Definition at line 120 of file gtx/quaternion.hpp.

- -

References glm::mat4_cast().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::toQuat (mat< 3, 3, T, Q > const & x)
-
- -

Converts a 3 * 3 matrix to a quaternion.

-
See also
GLM_GTX_quaternion
- -

Definition at line 127 of file gtx/quaternion.hpp.

- -

References glm::quat_cast().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::toQuat (mat< 4, 4, T, Q > const & x)
-
- -

Converts a 4 * 4 matrix to a quaternion.

-
See also
GLM_GTX_quaternion
- -

Definition at line 134 of file gtx/quaternion.hpp.

- -

References glm::quat_cast().

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00353.html b/tests/OpenGL/package/glm/doc/api/a00353.html deleted file mode 100644 index a728811c..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00353.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_range - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
-
-
-
-
- -

Include <glm/gtx/range.hpp> to use the features of this extension. -More...

-

Detailed Description

-

Include <glm/gtx/range.hpp> to use the features of this extension.

-

Defines begin and end for vectors and matrices. Useful for range-based for loop. The range is defined over the elements, not over columns or rows (e.g. mat4 has 16 elements).

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00354.html b/tests/OpenGL/package/glm/doc/api/a00354.html deleted file mode 100644 index e14d7ba6..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00354.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_raw_data - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_raw_data
-
-
- -

Include <glm/gtx/raw_data.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - -

-Typedefs

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

Detailed Description

-

Include <glm/gtx/raw_data.hpp> to use the features of this extension.

-

Projection of a vector to other one

-

Typedef Documentation

- -
-
- - - - -
typedef detail::uint8 byte
-
- -

Type for byte numbers.

-

From GLM_GTX_raw_data extension.

- -

Definition at line 34 of file raw_data.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint32 dword
-
- -

Type for dword numbers.

-

From GLM_GTX_raw_data extension.

- -

Definition at line 42 of file raw_data.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint64 qword
-
- -

Type for qword numbers.

-

From GLM_GTX_raw_data extension.

- -

Definition at line 46 of file raw_data.hpp.

- -
-
- -
-
- - - - -
typedef detail::uint16 word
-
- -

Type for word numbers.

-

From GLM_GTX_raw_data extension.

- -

Definition at line 38 of file raw_data.hpp.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00355.html b/tests/OpenGL/package/glm/doc/api/a00355.html deleted file mode 100644 index b9807dd3..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00355.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_rotate_normalized_axis - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_rotate_normalized_axis
-
-
- -

Include <glm/gtx/rotate_normalized_axis.hpp> to use the features of this extension. -More...

- - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/rotate_normalized_axis.hpp> to use the features of this extension.

-

Quaternions and matrices rotations around normalized axis.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::rotateNormalizedAxis (mat< 4, 4, T, Q > const & m,
T const & angle,
vec< 3, T, Q > const & axis 
)
-
- -

Builds a rotation 4 * 4 matrix created from a normalized axis and an angle.

-
Parameters
- - - - -
mInput matrix multiplied by this rotation matrix.
angleRotation angle expressed in radians.
axisRotation axis, must be normalized.
-
-
-
Template Parameters
- - -
TValue type used to build the matrix. Currently supported: half (not recommended), float or double.
-
-
-
See also
GLM_GTX_rotate_normalized_axis
-
-- rotate(T angle, T x, T y, T z)
-
-- rotate(mat<4, 4, T, Q> const& m, T angle, T x, T y, T z)
-
-- rotate(T angle, vec<3, T, Q> const& v)
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL qua<T, Q> glm::rotateNormalizedAxis (qua< T, Q > const & q,
T const & angle,
vec< 3, T, Q > const & axis 
)
-
- -

Rotates a quaternion from a vector of 3 components normalized axis and an angle.

-
Parameters
- - - - -
qSource orientation
angleAngle expressed in radians.
axisNormalized axis of the rotation, must be normalized.
-
-
-
See also
GLM_GTX_rotate_normalized_axis
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00356.html b/tests/OpenGL/package/glm/doc/api/a00356.html deleted file mode 100644 index 3e6441b5..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00356.html +++ /dev/null @@ -1,492 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_rotate_vector - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_rotate_vector
-
-
- -

Include <glm/gtx/rotate_vector.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/rotate_vector.hpp> to use the features of this extension.

-

Function to directly rotate a vector

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::orientation (vec< 3, T, Q > const & Normal,
vec< 3, T, Q > const & Up 
)
-
- -

Build a rotation matrix from a normal and a up vector.

-

From GLM_GTX_rotate_vector extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<2, T, Q> glm::rotate (vec< 2, T, Q > const & v,
T const & angle 
)
-
- -

Rotate a two dimensional vector.

-

From GLM_GTX_rotate_vector extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::rotate (vec< 3, T, Q > const & v,
T const & angle,
vec< 3, T, Q > const & normal 
)
-
- -

Rotate a three dimensional vector around an axis.

-

From GLM_GTX_rotate_vector extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<4, T, Q> glm::rotate (vec< 4, T, Q > const & v,
T const & angle,
vec< 3, T, Q > const & normal 
)
-
- -

Rotate a four dimensional vector around an axis.

-

From GLM_GTX_rotate_vector extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::rotateX (vec< 3, T, Q > const & v,
T const & angle 
)
-
- -

Rotate a three dimensional vector around the X axis.

-

From GLM_GTX_rotate_vector extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<4, T, Q> glm::rotateX (vec< 4, T, Q > const & v,
T const & angle 
)
-
- -

Rotate a four dimensional vector around the X axis.

-

From GLM_GTX_rotate_vector extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::rotateY (vec< 3, T, Q > const & v,
T const & angle 
)
-
- -

Rotate a three dimensional vector around the Y axis.

-

From GLM_GTX_rotate_vector extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<4, T, Q> glm::rotateY (vec< 4, T, Q > const & v,
T const & angle 
)
-
- -

Rotate a four dimensional vector around the Y axis.

-

From GLM_GTX_rotate_vector extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::rotateZ (vec< 3, T, Q > const & v,
T const & angle 
)
-
- -

Rotate a three dimensional vector around the Z axis.

-

From GLM_GTX_rotate_vector extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<4, T, Q> glm::rotateZ (vec< 4, T, Q > const & v,
T const & angle 
)
-
- -

Rotate a four dimensional vector around the Z axis.

-

From GLM_GTX_rotate_vector extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<3, T, Q> glm::slerp (vec< 3, T, Q > const & x,
vec< 3, T, Q > const & y,
T const & a 
)
-
- -

Returns Spherical interpolation between two vectors.

-
Parameters
- - - - -
xA first vector
yA second vector
aInterpolation factor. The interpolation is defined beyond the range [0, 1].
-
-
-
See also
GLM_GTX_rotate_vector
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00357.html b/tests/OpenGL/package/glm/doc/api/a00357.html deleted file mode 100644 index 78e85e33..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00357.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_scalar_relational - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
-
-
GLM_GTX_scalar_relational
-
-
- -

Include <glm/gtx/scalar_relational.hpp> to use the features of this extension. -More...

-

Include <glm/gtx/scalar_relational.hpp> to use the features of this extension.

-

Extend a position from a source to a position at a defined length.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00358.html b/tests/OpenGL/package/glm/doc/api/a00358.html deleted file mode 100644 index 6b1f77bf..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00358.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_spline - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
-
-
- -

Include <glm/gtx/spline.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/spline.hpp> to use the features of this extension.

-

Spline functions

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::catmullRom (genType const & v1,
genType const & v2,
genType const & v3,
genType const & v4,
typename genType::value_type const & s 
)
-
- -

Return a point from a catmull rom curve.

-
See also
GLM_GTX_spline extension.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::cubic (genType const & v1,
genType const & v2,
genType const & v3,
genType const & v4,
typename genType::value_type const & s 
)
-
- -

Return a point from a cubic curve.

-
See also
GLM_GTX_spline extension.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL genType glm::hermite (genType const & v1,
genType const & t1,
genType const & v2,
genType const & t2,
typename genType::value_type const & s 
)
-
- -

Return a point from a hermite curve.

-
See also
GLM_GTX_spline extension.
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00359.html b/tests/OpenGL/package/glm/doc/api/a00359.html deleted file mode 100644 index 4bccea24..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00359.html +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_std_based_type - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_std_based_type
-
-
- -

Include <glm/gtx/std_based_type.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Typedefs

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

Detailed Description

-

Include <glm/gtx/std_based_type.hpp> to use the features of this extension.

-

Adds vector types based on STL value types.

-

Typedef Documentation

- -
-
- - - - -
typedef vec<1, std::size_t, defaultp> size1
-
- -

Vector type based of one std::size_t component.

-
See also
GLM_GTX_std_based_type
- -

Definition at line 35 of file std_based_type.hpp.

- -
-
- -
-
- - - - -
typedef vec<1, std::size_t, defaultp> size1_t
-
- -

Vector type based of one std::size_t component.

-
See also
GLM_GTX_std_based_type
- -

Definition at line 51 of file std_based_type.hpp.

- -
-
- -
-
- - - - -
typedef vec<2, std::size_t, defaultp> size2
-
- -

Vector type based of two std::size_t components.

-
See also
GLM_GTX_std_based_type
- -

Definition at line 39 of file std_based_type.hpp.

- -
-
- -
-
- - - - -
typedef vec<2, std::size_t, defaultp> size2_t
-
- -

Vector type based of two std::size_t components.

-
See also
GLM_GTX_std_based_type
- -

Definition at line 55 of file std_based_type.hpp.

- -
-
- -
-
- - - - -
typedef vec<3, std::size_t, defaultp> size3
-
- -

Vector type based of three std::size_t components.

-
See also
GLM_GTX_std_based_type
- -

Definition at line 43 of file std_based_type.hpp.

- -
-
- -
-
- - - - -
typedef vec<3, std::size_t, defaultp> size3_t
-
- -

Vector type based of three std::size_t components.

-
See also
GLM_GTX_std_based_type
- -

Definition at line 59 of file std_based_type.hpp.

- -
-
- -
-
- - - - -
typedef vec<4, std::size_t, defaultp> size4
-
- -

Vector type based of four std::size_t components.

-
See also
GLM_GTX_std_based_type
- -

Definition at line 47 of file std_based_type.hpp.

- -
-
- -
-
- - - - -
typedef vec<4, std::size_t, defaultp> size4_t
-
- -

Vector type based of four std::size_t components.

-
See also
GLM_GTX_std_based_type
- -

Definition at line 63 of file std_based_type.hpp.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00360.html b/tests/OpenGL/package/glm/doc/api/a00360.html deleted file mode 100644 index 15834ca0..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00360.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_string_cast - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_string_cast
-
-
- -

Include <glm/gtx/string_cast.hpp> to use the features of this extension. -More...

- - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/string_cast.hpp> to use the features of this extension.

-

Setup strings for GLM type values

-

This extension is not supported with CUDA

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL std::string glm::to_string (genType const & x)
-
- -

Create a string from a GLM vector or matrix typed variable.

-
See also
GLM_GTX_string_cast extension.
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00361.html b/tests/OpenGL/package/glm/doc/api/a00361.html deleted file mode 100644 index 4f438c32..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00361.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_texture - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
-
-
- -

Include <glm/gtx/texture.hpp> to use the features of this extension. -More...

- - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/texture.hpp> to use the features of this extension.

-

Wrapping mode of texture coordinates.

-

Function Documentation

- -
-
- - - - - - - - -
T glm::levels (vec< L, T, Q > const & Extent)
-
- -

Compute the number of mipmaps levels necessary to create a mipmap complete texture.

-
Parameters
- - -
ExtentExtent of the texture base level mipmap
-
-
-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or signed integer scalar types
QValue from qualifier enum
-
-
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00362.html b/tests/OpenGL/package/glm/doc/api/a00362.html deleted file mode 100644 index 5b6acb9b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00362.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_transform - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_transform
-
-
- -

Include <glm/gtx/transform.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/transform.hpp> to use the features of this extension.

-

Add transformation matrices

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::rotate (angle,
vec< 3, T, Q > const & v 
)
-
- -

Builds a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in radians.

-
See also
GLM_GTC_matrix_transform
-
-GLM_GTX_transform
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::scale (vec< 3, T, Q > const & v)
-
- -

Transforms a matrix with a scale 4 * 4 matrix created from a vector of 3 components.

-
See also
GLM_GTC_matrix_transform
-
-GLM_GTX_transform
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::translate (vec< 3, T, Q > const & v)
-
- -

Transforms a matrix with a translation 4 * 4 matrix created from 3 scalars.

-
See also
GLM_GTC_matrix_transform
-
-GLM_GTX_transform
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00363.html b/tests/OpenGL/package/glm/doc/api/a00363.html deleted file mode 100644 index 838999eb..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00363.html +++ /dev/null @@ -1,423 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_transform2 - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_transform2
-
-
- -

Include <glm/gtx/transform2.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/transform2.hpp> to use the features of this extension.

-

Add extra transformation matrices

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<3, 3, T, Q> glm::proj2D (mat< 3, 3, T, Q > const & m,
vec< 3, T, Q > const & normal 
)
-
- -

Build planar projection matrix along normal axis.

-

From GLM_GTX_transform2 extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::proj3D (mat< 4, 4, T, Q > const & m,
vec< 3, T, Q > const & normal 
)
-
- -

Build planar projection matrix along normal axis.

-

From GLM_GTX_transform2 extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::scaleBias (scale,
bias 
)
-
- -

Build a scale bias matrix.

-

From GLM_GTX_transform2 extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::scaleBias (mat< 4, 4, T, Q > const & m,
scale,
bias 
)
-
- -

Build a scale bias matrix.

-

From GLM_GTX_transform2 extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<3, 3, T, Q> glm::shearX2D (mat< 3, 3, T, Q > const & m,
y 
)
-
- -

Transforms a matrix with a shearing on X axis.

-

From GLM_GTX_transform2 extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::shearX3D (mat< 4, 4, T, Q > const & m,
y,
z 
)
-
- -

Transforms a matrix with a shearing on X axis From GLM_GTX_transform2 extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<3, 3, T, Q> glm::shearY2D (mat< 3, 3, T, Q > const & m,
x 
)
-
- -

Transforms a matrix with a shearing on Y axis.

-

From GLM_GTX_transform2 extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::shearY3D (mat< 4, 4, T, Q > const & m,
x,
z 
)
-
- -

Transforms a matrix with a shearing on Y axis.

-

From GLM_GTX_transform2 extension.

- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<4, 4, T, Q> glm::shearZ3D (mat< 4, 4, T, Q > const & m,
x,
y 
)
-
- -

Transforms a matrix with a shearing on Z axis.

-

From GLM_GTX_transform2 extension.

- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00364.html b/tests/OpenGL/package/glm/doc/api/a00364.html deleted file mode 100644 index d54b6042..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00364.html +++ /dev/null @@ -1,7945 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_type_aligned - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_type_aligned
-
-
- -

Include <glm/gtx/type_aligned.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

 GLM_ALIGNED_TYPEDEF (lowp_int8, aligned_lowp_int8, 1)
 Low qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int16, aligned_lowp_int16, 2)
 Low qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int32, aligned_lowp_int32, 4)
 Low qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int64, aligned_lowp_int64, 8)
 Low qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int8_t, aligned_lowp_int8_t, 1)
 Low qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int16_t, aligned_lowp_int16_t, 2)
 Low qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int32_t, aligned_lowp_int32_t, 4)
 Low qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int64_t, aligned_lowp_int64_t, 8)
 Low qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_i8, aligned_lowp_i8, 1)
 Low qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_i16, aligned_lowp_i16, 2)
 Low qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_i32, aligned_lowp_i32, 4)
 Low qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_i64, aligned_lowp_i64, 8)
 Low qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int8, aligned_mediump_int8, 1)
 Medium qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int16, aligned_mediump_int16, 2)
 Medium qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int32, aligned_mediump_int32, 4)
 Medium qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int64, aligned_mediump_int64, 8)
 Medium qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int8_t, aligned_mediump_int8_t, 1)
 Medium qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int16_t, aligned_mediump_int16_t, 2)
 Medium qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int32_t, aligned_mediump_int32_t, 4)
 Medium qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int64_t, aligned_mediump_int64_t, 8)
 Medium qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_i8, aligned_mediump_i8, 1)
 Medium qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_i16, aligned_mediump_i16, 2)
 Medium qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_i32, aligned_mediump_i32, 4)
 Medium qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_i64, aligned_mediump_i64, 8)
 Medium qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int8, aligned_highp_int8, 1)
 High qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int16, aligned_highp_int16, 2)
 High qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int32, aligned_highp_int32, 4)
 High qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int64, aligned_highp_int64, 8)
 High qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int8_t, aligned_highp_int8_t, 1)
 High qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int16_t, aligned_highp_int16_t, 2)
 High qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int32_t, aligned_highp_int32_t, 4)
 High qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int64_t, aligned_highp_int64_t, 8)
 High qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_i8, aligned_highp_i8, 1)
 High qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_i16, aligned_highp_i16, 2)
 High qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_i32, aligned_highp_i32, 4)
 High qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_i64, aligned_highp_i64, 8)
 High qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int8, aligned_int8, 1)
 Default qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int16, aligned_int16, 2)
 Default qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int32, aligned_int32, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int64, aligned_int64, 8)
 Default qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int8_t, aligned_int8_t, 1)
 Default qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int16_t, aligned_int16_t, 2)
 Default qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int32_t, aligned_int32_t, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int64_t, aligned_int64_t, 8)
 Default qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i8, aligned_i8, 1)
 Default qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i16, aligned_i16, 2)
 Default qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i32, aligned_i32, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i64, aligned_i64, 8)
 Default qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (ivec1, aligned_ivec1, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (ivec2, aligned_ivec2, 8)
 Default qualifier 32 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (ivec3, aligned_ivec3, 16)
 Default qualifier 32 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (ivec4, aligned_ivec4, 16)
 Default qualifier 32 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i8vec1, aligned_i8vec1, 1)
 Default qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i8vec2, aligned_i8vec2, 2)
 Default qualifier 8 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i8vec3, aligned_i8vec3, 4)
 Default qualifier 8 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i8vec4, aligned_i8vec4, 4)
 Default qualifier 8 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i16vec1, aligned_i16vec1, 2)
 Default qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i16vec2, aligned_i16vec2, 4)
 Default qualifier 16 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i16vec3, aligned_i16vec3, 8)
 Default qualifier 16 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i16vec4, aligned_i16vec4, 8)
 Default qualifier 16 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i32vec1, aligned_i32vec1, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i32vec2, aligned_i32vec2, 8)
 Default qualifier 32 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i32vec3, aligned_i32vec3, 16)
 Default qualifier 32 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i32vec4, aligned_i32vec4, 16)
 Default qualifier 32 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i64vec1, aligned_i64vec1, 8)
 Default qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i64vec2, aligned_i64vec2, 16)
 Default qualifier 64 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i64vec3, aligned_i64vec3, 32)
 Default qualifier 64 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i64vec4, aligned_i64vec4, 32)
 Default qualifier 64 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint8, aligned_lowp_uint8, 1)
 Low qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint16, aligned_lowp_uint16, 2)
 Low qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint32, aligned_lowp_uint32, 4)
 Low qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint64, aligned_lowp_uint64, 8)
 Low qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint8_t, aligned_lowp_uint8_t, 1)
 Low qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint16_t, aligned_lowp_uint16_t, 2)
 Low qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint32_t, aligned_lowp_uint32_t, 4)
 Low qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint64_t, aligned_lowp_uint64_t, 8)
 Low qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_u8, aligned_lowp_u8, 1)
 Low qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_u16, aligned_lowp_u16, 2)
 Low qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_u32, aligned_lowp_u32, 4)
 Low qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_u64, aligned_lowp_u64, 8)
 Low qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint8, aligned_mediump_uint8, 1)
 Medium qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint16, aligned_mediump_uint16, 2)
 Medium qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint32, aligned_mediump_uint32, 4)
 Medium qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint64, aligned_mediump_uint64, 8)
 Medium qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint8_t, aligned_mediump_uint8_t, 1)
 Medium qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint16_t, aligned_mediump_uint16_t, 2)
 Medium qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint32_t, aligned_mediump_uint32_t, 4)
 Medium qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint64_t, aligned_mediump_uint64_t, 8)
 Medium qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_u8, aligned_mediump_u8, 1)
 Medium qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_u16, aligned_mediump_u16, 2)
 Medium qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_u32, aligned_mediump_u32, 4)
 Medium qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_u64, aligned_mediump_u64, 8)
 Medium qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint8, aligned_highp_uint8, 1)
 High qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint16, aligned_highp_uint16, 2)
 High qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint32, aligned_highp_uint32, 4)
 High qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint64, aligned_highp_uint64, 8)
 High qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint8_t, aligned_highp_uint8_t, 1)
 High qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint16_t, aligned_highp_uint16_t, 2)
 High qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint32_t, aligned_highp_uint32_t, 4)
 High qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint64_t, aligned_highp_uint64_t, 8)
 High qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_u8, aligned_highp_u8, 1)
 High qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_u16, aligned_highp_u16, 2)
 High qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_u32, aligned_highp_u32, 4)
 High qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_u64, aligned_highp_u64, 8)
 High qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint8, aligned_uint8, 1)
 Default qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint16, aligned_uint16, 2)
 Default qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint32, aligned_uint32, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint64, aligned_uint64, 8)
 Default qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint8_t, aligned_uint8_t, 1)
 Default qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint16_t, aligned_uint16_t, 2)
 Default qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint32_t, aligned_uint32_t, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint64_t, aligned_uint64_t, 8)
 Default qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u8, aligned_u8, 1)
 Default qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u16, aligned_u16, 2)
 Default qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u32, aligned_u32, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u64, aligned_u64, 8)
 Default qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uvec1, aligned_uvec1, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uvec2, aligned_uvec2, 8)
 Default qualifier 32 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (uvec3, aligned_uvec3, 16)
 Default qualifier 32 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (uvec4, aligned_uvec4, 16)
 Default qualifier 32 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u8vec1, aligned_u8vec1, 1)
 Default qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u8vec2, aligned_u8vec2, 2)
 Default qualifier 8 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u8vec3, aligned_u8vec3, 4)
 Default qualifier 8 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u8vec4, aligned_u8vec4, 4)
 Default qualifier 8 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u16vec1, aligned_u16vec1, 2)
 Default qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u16vec2, aligned_u16vec2, 4)
 Default qualifier 16 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u16vec3, aligned_u16vec3, 8)
 Default qualifier 16 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u16vec4, aligned_u16vec4, 8)
 Default qualifier 16 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u32vec1, aligned_u32vec1, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u32vec2, aligned_u32vec2, 8)
 Default qualifier 32 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u32vec3, aligned_u32vec3, 16)
 Default qualifier 32 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u32vec4, aligned_u32vec4, 16)
 Default qualifier 32 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u64vec1, aligned_u64vec1, 8)
 Default qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u64vec2, aligned_u64vec2, 16)
 Default qualifier 64 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u64vec3, aligned_u64vec3, 32)
 Default qualifier 64 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u64vec4, aligned_u64vec4, 32)
 Default qualifier 64 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (float32, aligned_float32, 4)
 32 bit single-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float32_t, aligned_float32_t, 4)
 32 bit single-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float32, aligned_f32, 4)
 32 bit single-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float64, aligned_float64, 8)
 64 bit double-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float64_t, aligned_float64_t, 8)
 64 bit double-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float64, aligned_f64, 8)
 64 bit double-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (vec1, aligned_vec1, 4)
 Single-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (vec2, aligned_vec2, 8)
 Single-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (vec3, aligned_vec3, 16)
 Single-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (vec4, aligned_vec4, 16)
 Single-qualifier floating-point aligned vector of 4 components. More...
 
 GLM_ALIGNED_TYPEDEF (fvec1, aligned_fvec1, 4)
 Single-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (fvec2, aligned_fvec2, 8)
 Single-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (fvec3, aligned_fvec3, 16)
 Single-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (fvec4, aligned_fvec4, 16)
 Single-qualifier floating-point aligned vector of 4 components. More...
 
 GLM_ALIGNED_TYPEDEF (f32vec1, aligned_f32vec1, 4)
 Single-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (f32vec2, aligned_f32vec2, 8)
 Single-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (f32vec3, aligned_f32vec3, 16)
 Single-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (f32vec4, aligned_f32vec4, 16)
 Single-qualifier floating-point aligned vector of 4 components. More...
 
 GLM_ALIGNED_TYPEDEF (dvec1, aligned_dvec1, 8)
 Double-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (dvec2, aligned_dvec2, 16)
 Double-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (dvec3, aligned_dvec3, 32)
 Double-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (dvec4, aligned_dvec4, 32)
 Double-qualifier floating-point aligned vector of 4 components. More...
 
 GLM_ALIGNED_TYPEDEF (f64vec1, aligned_f64vec1, 8)
 Double-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (f64vec2, aligned_f64vec2, 16)
 Double-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (f64vec3, aligned_f64vec3, 32)
 Double-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (f64vec4, aligned_f64vec4, 32)
 Double-qualifier floating-point aligned vector of 4 components. More...
 
 GLM_ALIGNED_TYPEDEF (mat2, aligned_mat2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (mat3, aligned_mat3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (mat4, aligned_mat4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat2x2, aligned_fmat2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat3x3, aligned_fmat3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat4x4, aligned_fmat4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat2x2, aligned_fmat2x2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat2x3, aligned_fmat2x3, 16)
 Single-qualifier floating-point aligned 2x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat2x4, aligned_fmat2x4, 16)
 Single-qualifier floating-point aligned 2x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat3x2, aligned_fmat3x2, 16)
 Single-qualifier floating-point aligned 3x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat3x3, aligned_fmat3x3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat3x4, aligned_fmat3x4, 16)
 Single-qualifier floating-point aligned 3x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat4x2, aligned_fmat4x2, 16)
 Single-qualifier floating-point aligned 4x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat4x3, aligned_fmat4x3, 16)
 Single-qualifier floating-point aligned 4x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat4x4, aligned_fmat4x4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat2x2, aligned_f32mat2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat3x3, aligned_f32mat3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat4x4, aligned_f32mat4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat2x2, aligned_f32mat2x2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat2x3, aligned_f32mat2x3, 16)
 Single-qualifier floating-point aligned 2x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat2x4, aligned_f32mat2x4, 16)
 Single-qualifier floating-point aligned 2x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat3x2, aligned_f32mat3x2, 16)
 Single-qualifier floating-point aligned 3x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat3x3, aligned_f32mat3x3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat3x4, aligned_f32mat3x4, 16)
 Single-qualifier floating-point aligned 3x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat4x2, aligned_f32mat4x2, 16)
 Single-qualifier floating-point aligned 4x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat4x3, aligned_f32mat4x3, 16)
 Single-qualifier floating-point aligned 4x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat4x4, aligned_f32mat4x4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat2x2, aligned_f64mat2, 32)
 Double-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat3x3, aligned_f64mat3, 32)
 Double-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat4x4, aligned_f64mat4, 32)
 Double-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat2x2, aligned_f64mat2x2, 32)
 Double-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat2x3, aligned_f64mat2x3, 32)
 Double-qualifier floating-point aligned 2x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat2x4, aligned_f64mat2x4, 32)
 Double-qualifier floating-point aligned 2x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat3x2, aligned_f64mat3x2, 32)
 Double-qualifier floating-point aligned 3x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat3x3, aligned_f64mat3x3, 32)
 Double-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat3x4, aligned_f64mat3x4, 32)
 Double-qualifier floating-point aligned 3x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat4x2, aligned_f64mat4x2, 32)
 Double-qualifier floating-point aligned 4x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat4x3, aligned_f64mat4x3, 32)
 Double-qualifier floating-point aligned 4x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat4x4, aligned_f64mat4x4, 32)
 Double-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (quat, aligned_quat, 16)
 Single-qualifier floating-point aligned quaternion. More...
 
 GLM_ALIGNED_TYPEDEF (quat, aligned_fquat, 16)
 Single-qualifier floating-point aligned quaternion. More...
 
 GLM_ALIGNED_TYPEDEF (dquat, aligned_dquat, 32)
 Double-qualifier floating-point aligned quaternion. More...
 
 GLM_ALIGNED_TYPEDEF (f32quat, aligned_f32quat, 16)
 Single-qualifier floating-point aligned quaternion. More...
 
 GLM_ALIGNED_TYPEDEF (f64quat, aligned_f64quat, 32)
 Double-qualifier floating-point aligned quaternion. More...
 
-

Detailed Description

-

Include <glm/gtx/type_aligned.hpp> to use the features of this extension.

-

Defines aligned types.

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_int8 ,
aligned_lowp_int8 ,
 
)
-
- -

Low qualifier 8 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_int16 ,
aligned_lowp_int16 ,
 
)
-
- -

Low qualifier 16 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_int32 ,
aligned_lowp_int32 ,
 
)
-
- -

Low qualifier 32 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_int64 ,
aligned_lowp_int64 ,
 
)
-
- -

Low qualifier 64 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_int8_t ,
aligned_lowp_int8_t ,
 
)
-
- -

Low qualifier 8 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_int16_t ,
aligned_lowp_int16_t ,
 
)
-
- -

Low qualifier 16 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_int32_t ,
aligned_lowp_int32_t ,
 
)
-
- -

Low qualifier 32 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_int64_t ,
aligned_lowp_int64_t ,
 
)
-
- -

Low qualifier 64 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_i8 ,
aligned_lowp_i8 ,
 
)
-
- -

Low qualifier 8 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_i16 ,
aligned_lowp_i16 ,
 
)
-
- -

Low qualifier 16 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_i32 ,
aligned_lowp_i32 ,
 
)
-
- -

Low qualifier 32 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_i64 ,
aligned_lowp_i64 ,
 
)
-
- -

Low qualifier 64 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_int8 ,
aligned_mediump_int8 ,
 
)
-
- -

Medium qualifier 8 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_int16 ,
aligned_mediump_int16 ,
 
)
-
- -

Medium qualifier 16 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_int32 ,
aligned_mediump_int32 ,
 
)
-
- -

Medium qualifier 32 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_int64 ,
aligned_mediump_int64 ,
 
)
-
- -

Medium qualifier 64 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_int8_t ,
aligned_mediump_int8_t ,
 
)
-
- -

Medium qualifier 8 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_int16_t ,
aligned_mediump_int16_t ,
 
)
-
- -

Medium qualifier 16 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_int32_t ,
aligned_mediump_int32_t ,
 
)
-
- -

Medium qualifier 32 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_int64_t ,
aligned_mediump_int64_t ,
 
)
-
- -

Medium qualifier 64 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_i8 ,
aligned_mediump_i8 ,
 
)
-
- -

Medium qualifier 8 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_i16 ,
aligned_mediump_i16 ,
 
)
-
- -

Medium qualifier 16 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_i32 ,
aligned_mediump_i32 ,
 
)
-
- -

Medium qualifier 32 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_i64 ,
aligned_mediump_i64 ,
 
)
-
- -

Medium qualifier 64 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_int8 ,
aligned_highp_int8 ,
 
)
-
- -

High qualifier 8 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_int16 ,
aligned_highp_int16 ,
 
)
-
- -

High qualifier 16 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_int32 ,
aligned_highp_int32 ,
 
)
-
- -

High qualifier 32 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_int64 ,
aligned_highp_int64 ,
 
)
-
- -

High qualifier 64 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_int8_t ,
aligned_highp_int8_t ,
 
)
-
- -

High qualifier 8 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_int16_t ,
aligned_highp_int16_t ,
 
)
-
- -

High qualifier 16 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_int32_t ,
aligned_highp_int32_t ,
 
)
-
- -

High qualifier 32 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_int64_t ,
aligned_highp_int64_t ,
 
)
-
- -

High qualifier 64 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_i8 ,
aligned_highp_i8 ,
 
)
-
- -

High qualifier 8 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_i16 ,
aligned_highp_i16 ,
 
)
-
- -

High qualifier 16 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_i32 ,
aligned_highp_i32 ,
 
)
-
- -

High qualifier 32 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_i64 ,
aligned_highp_i64 ,
 
)
-
- -

High qualifier 64 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (int8 ,
aligned_int8 ,
 
)
-
- -

Default qualifier 8 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (int16 ,
aligned_int16 ,
 
)
-
- -

Default qualifier 16 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (int32 ,
aligned_int32 ,
 
)
-
- -

Default qualifier 32 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (int64 ,
aligned_int64 ,
 
)
-
- -

Default qualifier 64 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (int8_t ,
aligned_int8_t ,
 
)
-
- -

Default qualifier 8 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (int16_t ,
aligned_int16_t ,
 
)
-
- -

Default qualifier 16 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (int32_t ,
aligned_int32_t ,
 
)
-
- -

Default qualifier 32 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (int64_t ,
aligned_int64_t ,
 
)
-
- -

Default qualifier 64 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i8 ,
aligned_i8 ,
 
)
-
- -

Default qualifier 8 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i16 ,
aligned_i16 ,
 
)
-
- -

Default qualifier 16 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i32 ,
aligned_i32 ,
 
)
-
- -

Default qualifier 32 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i64 ,
aligned_i64 ,
 
)
-
- -

Default qualifier 64 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (ivec1 ,
aligned_ivec1 ,
 
)
-
- -

Default qualifier 32 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (ivec2 ,
aligned_ivec2 ,
 
)
-
- -

Default qualifier 32 bit signed integer aligned vector of 2 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (ivec3 ,
aligned_ivec3 ,
16  
)
-
- -

Default qualifier 32 bit signed integer aligned vector of 3 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (ivec4 ,
aligned_ivec4 ,
16  
)
-
- -

Default qualifier 32 bit signed integer aligned vector of 4 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i8vec1 ,
aligned_i8vec1 ,
 
)
-
- -

Default qualifier 8 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i8vec2 ,
aligned_i8vec2 ,
 
)
-
- -

Default qualifier 8 bit signed integer aligned vector of 2 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i8vec3 ,
aligned_i8vec3 ,
 
)
-
- -

Default qualifier 8 bit signed integer aligned vector of 3 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i8vec4 ,
aligned_i8vec4 ,
 
)
-
- -

Default qualifier 8 bit signed integer aligned vector of 4 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i16vec1 ,
aligned_i16vec1 ,
 
)
-
- -

Default qualifier 16 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i16vec2 ,
aligned_i16vec2 ,
 
)
-
- -

Default qualifier 16 bit signed integer aligned vector of 2 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i16vec3 ,
aligned_i16vec3 ,
 
)
-
- -

Default qualifier 16 bit signed integer aligned vector of 3 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i16vec4 ,
aligned_i16vec4 ,
 
)
-
- -

Default qualifier 16 bit signed integer aligned vector of 4 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i32vec1 ,
aligned_i32vec1 ,
 
)
-
- -

Default qualifier 32 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i32vec2 ,
aligned_i32vec2 ,
 
)
-
- -

Default qualifier 32 bit signed integer aligned vector of 2 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i32vec3 ,
aligned_i32vec3 ,
16  
)
-
- -

Default qualifier 32 bit signed integer aligned vector of 3 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i32vec4 ,
aligned_i32vec4 ,
16  
)
-
- -

Default qualifier 32 bit signed integer aligned vector of 4 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i64vec1 ,
aligned_i64vec1 ,
 
)
-
- -

Default qualifier 64 bit signed integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i64vec2 ,
aligned_i64vec2 ,
16  
)
-
- -

Default qualifier 64 bit signed integer aligned vector of 2 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i64vec3 ,
aligned_i64vec3 ,
32  
)
-
- -

Default qualifier 64 bit signed integer aligned vector of 3 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (i64vec4 ,
aligned_i64vec4 ,
32  
)
-
- -

Default qualifier 64 bit signed integer aligned vector of 4 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_uint8 ,
aligned_lowp_uint8 ,
 
)
-
- -

Low qualifier 8 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_uint16 ,
aligned_lowp_uint16 ,
 
)
-
- -

Low qualifier 16 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_uint32 ,
aligned_lowp_uint32 ,
 
)
-
- -

Low qualifier 32 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_uint64 ,
aligned_lowp_uint64 ,
 
)
-
- -

Low qualifier 64 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_uint8_t ,
aligned_lowp_uint8_t ,
 
)
-
- -

Low qualifier 8 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_uint16_t ,
aligned_lowp_uint16_t ,
 
)
-
- -

Low qualifier 16 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_uint32_t ,
aligned_lowp_uint32_t ,
 
)
-
- -

Low qualifier 32 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_uint64_t ,
aligned_lowp_uint64_t ,
 
)
-
- -

Low qualifier 64 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_u8 ,
aligned_lowp_u8 ,
 
)
-
- -

Low qualifier 8 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_u16 ,
aligned_lowp_u16 ,
 
)
-
- -

Low qualifier 16 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_u32 ,
aligned_lowp_u32 ,
 
)
-
- -

Low qualifier 32 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (lowp_u64 ,
aligned_lowp_u64 ,
 
)
-
- -

Low qualifier 64 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_uint8 ,
aligned_mediump_uint8 ,
 
)
-
- -

Medium qualifier 8 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_uint16 ,
aligned_mediump_uint16 ,
 
)
-
- -

Medium qualifier 16 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_uint32 ,
aligned_mediump_uint32 ,
 
)
-
- -

Medium qualifier 32 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_uint64 ,
aligned_mediump_uint64 ,
 
)
-
- -

Medium qualifier 64 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_uint8_t ,
aligned_mediump_uint8_t ,
 
)
-
- -

Medium qualifier 8 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_uint16_t ,
aligned_mediump_uint16_t ,
 
)
-
- -

Medium qualifier 16 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_uint32_t ,
aligned_mediump_uint32_t ,
 
)
-
- -

Medium qualifier 32 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_uint64_t ,
aligned_mediump_uint64_t ,
 
)
-
- -

Medium qualifier 64 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_u8 ,
aligned_mediump_u8 ,
 
)
-
- -

Medium qualifier 8 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_u16 ,
aligned_mediump_u16 ,
 
)
-
- -

Medium qualifier 16 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_u32 ,
aligned_mediump_u32 ,
 
)
-
- -

Medium qualifier 32 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (mediump_u64 ,
aligned_mediump_u64 ,
 
)
-
- -

Medium qualifier 64 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_uint8 ,
aligned_highp_uint8 ,
 
)
-
- -

High qualifier 8 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_uint16 ,
aligned_highp_uint16 ,
 
)
-
- -

High qualifier 16 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_uint32 ,
aligned_highp_uint32 ,
 
)
-
- -

High qualifier 32 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_uint64 ,
aligned_highp_uint64 ,
 
)
-
- -

High qualifier 64 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_uint8_t ,
aligned_highp_uint8_t ,
 
)
-
- -

High qualifier 8 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_uint16_t ,
aligned_highp_uint16_t ,
 
)
-
- -

High qualifier 16 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_uint32_t ,
aligned_highp_uint32_t ,
 
)
-
- -

High qualifier 32 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_uint64_t ,
aligned_highp_uint64_t ,
 
)
-
- -

High qualifier 64 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_u8 ,
aligned_highp_u8 ,
 
)
-
- -

High qualifier 8 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_u16 ,
aligned_highp_u16 ,
 
)
-
- -

High qualifier 16 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_u32 ,
aligned_highp_u32 ,
 
)
-
- -

High qualifier 32 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (highp_u64 ,
aligned_highp_u64 ,
 
)
-
- -

High qualifier 64 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (uint8 ,
aligned_uint8 ,
 
)
-
- -

Default qualifier 8 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (uint16 ,
aligned_uint16 ,
 
)
-
- -

Default qualifier 16 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (uint32 ,
aligned_uint32 ,
 
)
-
- -

Default qualifier 32 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (uint64 ,
aligned_uint64 ,
 
)
-
- -

Default qualifier 64 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (uint8_t ,
aligned_uint8_t ,
 
)
-
- -

Default qualifier 8 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (uint16_t ,
aligned_uint16_t ,
 
)
-
- -

Default qualifier 16 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (uint32_t ,
aligned_uint32_t ,
 
)
-
- -

Default qualifier 32 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (uint64_t ,
aligned_uint64_t ,
 
)
-
- -

Default qualifier 64 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u8 ,
aligned_u8 ,
 
)
-
- -

Default qualifier 8 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u16 ,
aligned_u16 ,
 
)
-
- -

Default qualifier 16 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u32 ,
aligned_u32 ,
 
)
-
- -

Default qualifier 32 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u64 ,
aligned_u64 ,
 
)
-
- -

Default qualifier 64 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (uvec1 ,
aligned_uvec1 ,
 
)
-
- -

Default qualifier 32 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (uvec2 ,
aligned_uvec2 ,
 
)
-
- -

Default qualifier 32 bit unsigned integer aligned vector of 2 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (uvec3 ,
aligned_uvec3 ,
16  
)
-
- -

Default qualifier 32 bit unsigned integer aligned vector of 3 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (uvec4 ,
aligned_uvec4 ,
16  
)
-
- -

Default qualifier 32 bit unsigned integer aligned vector of 4 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u8vec1 ,
aligned_u8vec1 ,
 
)
-
- -

Default qualifier 8 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u8vec2 ,
aligned_u8vec2 ,
 
)
-
- -

Default qualifier 8 bit unsigned integer aligned vector of 2 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u8vec3 ,
aligned_u8vec3 ,
 
)
-
- -

Default qualifier 8 bit unsigned integer aligned vector of 3 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u8vec4 ,
aligned_u8vec4 ,
 
)
-
- -

Default qualifier 8 bit unsigned integer aligned vector of 4 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u16vec1 ,
aligned_u16vec1 ,
 
)
-
- -

Default qualifier 16 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u16vec2 ,
aligned_u16vec2 ,
 
)
-
- -

Default qualifier 16 bit unsigned integer aligned vector of 2 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u16vec3 ,
aligned_u16vec3 ,
 
)
-
- -

Default qualifier 16 bit unsigned integer aligned vector of 3 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u16vec4 ,
aligned_u16vec4 ,
 
)
-
- -

Default qualifier 16 bit unsigned integer aligned vector of 4 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u32vec1 ,
aligned_u32vec1 ,
 
)
-
- -

Default qualifier 32 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u32vec2 ,
aligned_u32vec2 ,
 
)
-
- -

Default qualifier 32 bit unsigned integer aligned vector of 2 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u32vec3 ,
aligned_u32vec3 ,
16  
)
-
- -

Default qualifier 32 bit unsigned integer aligned vector of 3 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u32vec4 ,
aligned_u32vec4 ,
16  
)
-
- -

Default qualifier 32 bit unsigned integer aligned vector of 4 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u64vec1 ,
aligned_u64vec1 ,
 
)
-
- -

Default qualifier 64 bit unsigned integer aligned scalar type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u64vec2 ,
aligned_u64vec2 ,
16  
)
-
- -

Default qualifier 64 bit unsigned integer aligned vector of 2 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u64vec3 ,
aligned_u64vec3 ,
32  
)
-
- -

Default qualifier 64 bit unsigned integer aligned vector of 3 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (u64vec4 ,
aligned_u64vec4 ,
32  
)
-
- -

Default qualifier 64 bit unsigned integer aligned vector of 4 components type.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (float32 ,
aligned_float32 ,
 
)
-
- -

32 bit single-qualifier floating-point aligned scalar.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (float32_t ,
aligned_float32_t ,
 
)
-
- -

32 bit single-qualifier floating-point aligned scalar.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (float32 ,
aligned_f32 ,
 
)
-
- -

32 bit single-qualifier floating-point aligned scalar.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (float64 ,
aligned_float64 ,
 
)
-
- -

64 bit double-qualifier floating-point aligned scalar.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (float64_t ,
aligned_float64_t ,
 
)
-
- -

64 bit double-qualifier floating-point aligned scalar.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (float64 ,
aligned_f64 ,
 
)
-
- -

64 bit double-qualifier floating-point aligned scalar.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (vec1 ,
aligned_vec1 ,
 
)
-
- -

Single-qualifier floating-point aligned vector of 1 component.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (vec2 ,
aligned_vec2 ,
 
)
-
- -

Single-qualifier floating-point aligned vector of 2 components.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (vec3 ,
aligned_vec3 ,
16  
)
-
- -

Single-qualifier floating-point aligned vector of 3 components.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (vec4 ,
aligned_vec4 ,
16  
)
-
- -

Single-qualifier floating-point aligned vector of 4 components.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (fvec1 ,
aligned_fvec1 ,
 
)
-
- -

Single-qualifier floating-point aligned vector of 1 component.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (fvec2 ,
aligned_fvec2 ,
 
)
-
- -

Single-qualifier floating-point aligned vector of 2 components.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (fvec3 ,
aligned_fvec3 ,
16  
)
-
- -

Single-qualifier floating-point aligned vector of 3 components.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (fvec4 ,
aligned_fvec4 ,
16  
)
-
- -

Single-qualifier floating-point aligned vector of 4 components.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f32vec1 ,
aligned_f32vec1 ,
 
)
-
- -

Single-qualifier floating-point aligned vector of 1 component.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f32vec2 ,
aligned_f32vec2 ,
 
)
-
- -

Single-qualifier floating-point aligned vector of 2 components.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f32vec3 ,
aligned_f32vec3 ,
16  
)
-
- -

Single-qualifier floating-point aligned vector of 3 components.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f32vec4 ,
aligned_f32vec4 ,
16  
)
-
- -

Single-qualifier floating-point aligned vector of 4 components.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (dvec1 ,
aligned_dvec1 ,
 
)
-
- -

Double-qualifier floating-point aligned vector of 1 component.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (dvec2 ,
aligned_dvec2 ,
16  
)
-
- -

Double-qualifier floating-point aligned vector of 2 components.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (dvec3 ,
aligned_dvec3 ,
32  
)
-
- -

Double-qualifier floating-point aligned vector of 3 components.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (dvec4 ,
aligned_dvec4 ,
32  
)
-
- -

Double-qualifier floating-point aligned vector of 4 components.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f64vec1 ,
aligned_f64vec1 ,
 
)
-
- -

Double-qualifier floating-point aligned vector of 1 component.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f64vec2 ,
aligned_f64vec2 ,
16  
)
-
- -

Double-qualifier floating-point aligned vector of 2 components.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f64vec3 ,
aligned_f64vec3 ,
32  
)
-
- -

Double-qualifier floating-point aligned vector of 3 components.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f64vec4 ,
aligned_f64vec4 ,
32  
)
-
- -

Double-qualifier floating-point aligned vector of 4 components.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_ALIGNED_TYPEDEF (mat2 ,
aligned_mat2 ,
16  
)
-
- -

Single-qualifier floating-point aligned 1x1 matrix.

-
See also
GLM_GTX_type_aligned Single-qualifier floating-point aligned 2x2 matrix.
-
-GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_ALIGNED_TYPEDEF (mat3 ,
aligned_mat3 ,
16  
)
-
- -

Single-qualifier floating-point aligned 3x3 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_ALIGNED_TYPEDEF (mat4 ,
aligned_mat4 ,
16  
)
-
- -

Single-qualifier floating-point aligned 4x4 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (fmat2x2 ,
aligned_fmat2 ,
16  
)
-
- -

Single-qualifier floating-point aligned 1x1 matrix.

-
See also
GLM_GTX_type_aligned Single-qualifier floating-point aligned 2x2 matrix.
-
-GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (fmat3x3 ,
aligned_fmat3 ,
16  
)
-
- -

Single-qualifier floating-point aligned 3x3 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (fmat4x4 ,
aligned_fmat4 ,
16  
)
-
- -

Single-qualifier floating-point aligned 4x4 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (fmat2x2 ,
aligned_fmat2x2 ,
16  
)
-
- -

Single-qualifier floating-point aligned 1x1 matrix.

-
See also
GLM_GTX_type_aligned Single-qualifier floating-point aligned 2x2 matrix.
-
-GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (fmat2x3 ,
aligned_fmat2x3 ,
16  
)
-
- -

Single-qualifier floating-point aligned 2x3 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (fmat2x4 ,
aligned_fmat2x4 ,
16  
)
-
- -

Single-qualifier floating-point aligned 2x4 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (fmat3x2 ,
aligned_fmat3x2 ,
16  
)
-
- -

Single-qualifier floating-point aligned 3x2 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (fmat3x3 ,
aligned_fmat3x3 ,
16  
)
-
- -

Single-qualifier floating-point aligned 3x3 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (fmat3x4 ,
aligned_fmat3x4 ,
16  
)
-
- -

Single-qualifier floating-point aligned 3x4 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (fmat4x2 ,
aligned_fmat4x2 ,
16  
)
-
- -

Single-qualifier floating-point aligned 4x2 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (fmat4x3 ,
aligned_fmat4x3 ,
16  
)
-
- -

Single-qualifier floating-point aligned 4x3 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (fmat4x4 ,
aligned_fmat4x4 ,
16  
)
-
- -

Single-qualifier floating-point aligned 4x4 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f32mat2x2 ,
aligned_f32mat2 ,
16  
)
-
- -

Single-qualifier floating-point aligned 1x1 matrix.

-
See also
GLM_GTX_type_aligned Single-qualifier floating-point aligned 2x2 matrix.
-
-GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f32mat3x3 ,
aligned_f32mat3 ,
16  
)
-
- -

Single-qualifier floating-point aligned 3x3 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f32mat4x4 ,
aligned_f32mat4 ,
16  
)
-
- -

Single-qualifier floating-point aligned 4x4 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f32mat2x2 ,
aligned_f32mat2x2 ,
16  
)
-
- -

Single-qualifier floating-point aligned 1x1 matrix.

-
See also
GLM_GTX_type_aligned Single-qualifier floating-point aligned 2x2 matrix.
-
-GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f32mat2x3 ,
aligned_f32mat2x3 ,
16  
)
-
- -

Single-qualifier floating-point aligned 2x3 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f32mat2x4 ,
aligned_f32mat2x4 ,
16  
)
-
- -

Single-qualifier floating-point aligned 2x4 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f32mat3x2 ,
aligned_f32mat3x2 ,
16  
)
-
- -

Single-qualifier floating-point aligned 3x2 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f32mat3x3 ,
aligned_f32mat3x3 ,
16  
)
-
- -

Single-qualifier floating-point aligned 3x3 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f32mat3x4 ,
aligned_f32mat3x4 ,
16  
)
-
- -

Single-qualifier floating-point aligned 3x4 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f32mat4x2 ,
aligned_f32mat4x2 ,
16  
)
-
- -

Single-qualifier floating-point aligned 4x2 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f32mat4x3 ,
aligned_f32mat4x3 ,
16  
)
-
- -

Single-qualifier floating-point aligned 4x3 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f32mat4x4 ,
aligned_f32mat4x4 ,
16  
)
-
- -

Single-qualifier floating-point aligned 4x4 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f64mat2x2 ,
aligned_f64mat2 ,
32  
)
-
- -

Double-qualifier floating-point aligned 1x1 matrix.

-
See also
GLM_GTX_type_aligned Double-qualifier floating-point aligned 2x2 matrix.
-
-GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f64mat3x3 ,
aligned_f64mat3 ,
32  
)
-
- -

Double-qualifier floating-point aligned 3x3 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f64mat4x4 ,
aligned_f64mat4 ,
32  
)
-
- -

Double-qualifier floating-point aligned 4x4 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f64mat2x2 ,
aligned_f64mat2x2 ,
32  
)
-
- -

Double-qualifier floating-point aligned 1x1 matrix.

-
See also
GLM_GTX_type_aligned Double-qualifier floating-point aligned 2x2 matrix.
-
-GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f64mat2x3 ,
aligned_f64mat2x3 ,
32  
)
-
- -

Double-qualifier floating-point aligned 2x3 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f64mat2x4 ,
aligned_f64mat2x4 ,
32  
)
-
- -

Double-qualifier floating-point aligned 2x4 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f64mat3x2 ,
aligned_f64mat3x2 ,
32  
)
-
- -

Double-qualifier floating-point aligned 3x2 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f64mat3x3 ,
aligned_f64mat3x3 ,
32  
)
-
- -

Double-qualifier floating-point aligned 3x3 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f64mat3x4 ,
aligned_f64mat3x4 ,
32  
)
-
- -

Double-qualifier floating-point aligned 3x4 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f64mat4x2 ,
aligned_f64mat4x2 ,
32  
)
-
- -

Double-qualifier floating-point aligned 4x2 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f64mat4x3 ,
aligned_f64mat4x3 ,
32  
)
-
- -

Double-qualifier floating-point aligned 4x3 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f64mat4x4 ,
aligned_f64mat4x4 ,
32  
)
-
- -

Double-qualifier floating-point aligned 4x4 matrix.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (quat ,
aligned_quat ,
16  
)
-
- -

Single-qualifier floating-point aligned quaternion.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (quat ,
aligned_fquat ,
16  
)
-
- -

Single-qualifier floating-point aligned quaternion.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (dquat ,
aligned_dquat ,
32  
)
-
- -

Double-qualifier floating-point aligned quaternion.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f32quat ,
aligned_f32quat ,
16  
)
-
- -

Single-qualifier floating-point aligned quaternion.

-
See also
GLM_GTX_type_aligned
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
glm::GLM_ALIGNED_TYPEDEF (f64quat ,
aligned_f64quat ,
32  
)
-
- -

Double-qualifier floating-point aligned quaternion.

-
See also
GLM_GTX_type_aligned
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00365.html b/tests/OpenGL/package/glm/doc/api/a00365.html deleted file mode 100644 index 5d673dea..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00365.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_type_trait - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
-
-
GLM_GTX_type_trait
-
-
- -

Include <glm/gtx/type_trait.hpp> to use the features of this extension. -More...

-

Detailed Description

-

Include <glm/gtx/type_trait.hpp> to use the features of this extension.

-

Defines traits for each type.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00366.html b/tests/OpenGL/package/glm/doc/api/a00366.html deleted file mode 100644 index 4cc45b53..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00366.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_vec_swizzle - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
-
-
GLM_GTX_vec_swizzle
-
-
- -

Include <glm/gtx/vec_swizzle.hpp> to use the features of this extension. -More...

-

Include <glm/gtx/vec_swizzle.hpp> to use the features of this extension.

-

Functions to perform swizzle operation.

-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00367.html b/tests/OpenGL/package/glm/doc/api/a00367.html deleted file mode 100644 index 2b76d356..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00367.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_vector_angle - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_vector_angle
-
-
- -

Include <glm/gtx/vector_angle.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/vector_angle.hpp> to use the features of this extension.

-

Compute angle between vectors

-

Function Documentation

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

Returns the absolute angle between two vectors.

-

Parameters need to be normalized.

See also
GLM_GTX_vector_angle extension.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::orientedAngle (vec< 2, T, Q > const & x,
vec< 2, T, Q > const & y 
)
-
- -

Returns the oriented angle between two 2d vectors.

-

Parameters need to be normalized.

See also
GLM_GTX_vector_angle extension.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL T glm::orientedAngle (vec< 3, T, Q > const & x,
vec< 3, T, Q > const & y,
vec< 3, T, Q > const & ref 
)
-
- -

Returns the oriented angle between two 3d vectors based from a reference axis.

-

Parameters need to be normalized.

See also
GLM_GTX_vector_angle extension.
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00368.html b/tests/OpenGL/package/glm/doc/api/a00368.html deleted file mode 100644 index 935786a9..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00368.html +++ /dev/null @@ -1,319 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_vector_query - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
GLM_GTX_vector_query
-
-
- -

Include <glm/gtx/vector_query.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Include <glm/gtx/vector_query.hpp> to use the features of this extension.

-

Query informations of vector types

-

Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::areCollinear (vec< L, T, Q > const & v0,
vec< L, T, Q > const & v1,
T const & epsilon 
)
-
- -

Check whether two vectors are collinears.

-
See also
GLM_GTX_vector_query extensions.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::areOrthogonal (vec< L, T, Q > const & v0,
vec< L, T, Q > const & v1,
T const & epsilon 
)
-
- -

Check whether two vectors are orthogonals.

-
See also
GLM_GTX_vector_query extensions.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::areOrthonormal (vec< L, T, Q > const & v0,
vec< L, T, Q > const & v1,
T const & epsilon 
)
-
- -

Check whether two vectors are orthonormal.

-
See also
GLM_GTX_vector_query extensions.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, bool, Q> glm::isCompNull (vec< L, T, Q > const & v,
T const & epsilon 
)
-
- -

Check whether a each component of a vector is null.

-
See also
GLM_GTX_vector_query extensions.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::isNormalized (vec< L, T, Q > const & v,
T const & epsilon 
)
-
- -

Check whether a vector is normalized.

-
See also
GLM_GTX_vector_query extensions.
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL bool glm::isNull (vec< L, T, Q > const & v,
T const & epsilon 
)
-
- -

Check whether a vector is null.

-
See also
GLM_GTX_vector_query extensions.
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00369.html b/tests/OpenGL/package/glm/doc/api/a00369.html deleted file mode 100644 index c2496349..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00369.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - -0.9.9 API documentation: GLM_GTX_wrap - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- - -
-
- -

Include <glm/gtx/wrap.hpp> to use the features of this extension. -More...

- - - - - - - - - - - - - - - - - - -

-Functions

template<typename genType >
GLM_FUNC_DECL genType clamp (genType const &Texcoord)
 Simulate GL_CLAMP OpenGL wrap mode. More...
 
template<typename genType >
GLM_FUNC_DECL genType mirrorClamp (genType const &Texcoord)
 Simulate GL_MIRRORED_REPEAT OpenGL wrap mode. More...
 
template<typename genType >
GLM_FUNC_DECL genType mirrorRepeat (genType const &Texcoord)
 Simulate GL_MIRROR_REPEAT OpenGL wrap mode. More...
 
template<typename genType >
GLM_FUNC_DECL genType repeat (genType const &Texcoord)
 Simulate GL_REPEAT OpenGL wrap mode. More...
 
-

Detailed Description

-

Include <glm/gtx/wrap.hpp> to use the features of this extension.

-

Wrapping mode of texture coordinates.

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::clamp (genType const & Texcoord)
-
- -

Simulate GL_CLAMP OpenGL wrap mode.

-
See also
GLM_GTX_wrap extension.
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::mirrorClamp (genType const & Texcoord)
-
- -

Simulate GL_MIRRORED_REPEAT OpenGL wrap mode.

-
See also
GLM_GTX_wrap extension.
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::mirrorRepeat (genType const & Texcoord)
-
- -

Simulate GL_MIRROR_REPEAT OpenGL wrap mode.

-
See also
GLM_GTX_wrap extension.
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL genType glm::repeat (genType const & Texcoord)
-
- -

Simulate GL_REPEAT OpenGL wrap mode.

-
See also
GLM_GTX_wrap extension.
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00370.html b/tests/OpenGL/package/glm/doc/api/a00370.html deleted file mode 100644 index d829e28b..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00370.html +++ /dev/null @@ -1,639 +0,0 @@ - - - - - - -0.9.9 API documentation: Integer functions - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
Integer functions
-
-
- -

Provides GLSL functions on integer types. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Provides GLSL functions on integer types.

-

These all operate component-wise. The description is per component. The notation [a, b] means the set of bits from bit-number a through bit-number b, inclusive. The lowest-order bit is bit 0.

-

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

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL int glm::bitCount (genType v)
-
- -

Returns the number of bits set to 1 in the binary representation of value.

-
Template Parameters
- - -
genTypeSigned or unsigned integer scalar or vector types.
-
-
-
See also
GLSL bitCount man page
-
-GLSL 4.20.8 specification, section 8.8 Integer Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, int, Q> glm::bitCount (vec< L, T, Q > const & v)
-
- -

Returns the number of bits set to 1 in the binary representation of value.

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TSigned or unsigned integer scalar or vector types.
-
-
-
See also
GLSL bitCount man page
-
-GLSL 4.20.8 specification, section 8.8 Integer Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::bitfieldExtract (vec< L, T, Q > const & Value,
int Offset,
int Bits 
)
-
- -

Extracts bits [offset, offset + bits - 1] from value, returning them in the least significant bits of the result.

-

For unsigned data types, the most significant bits of the result will be set to zero. For signed data types, the most significant bits will be set to the value of bit offset + base - 1.

-

If bits is zero, the result will be zero. The result will be undefined if offset or bits is negative, or if the sum of offset and bits is greater than the number of bits used to store the operand.

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TSigned or unsigned integer scalar types.
-
-
-
See also
GLSL bitfieldExtract man page
-
-GLSL 4.20.8 specification, section 8.8 Integer Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::bitfieldInsert (vec< L, T, Q > const & Base,
vec< L, T, Q > const & Insert,
int Offset,
int Bits 
)
-
- -

Returns the insertion the bits least-significant bits of insert into base.

-

The result will have bits [offset, offset + bits - 1] taken from bits [0, bits - 1] of insert, and all other bits taken directly from the corresponding bits of base. If bits is zero, the result will simply be base. The result will be undefined if offset or bits is negative, or if the sum of offset and bits is greater than the number of bits used to store the operand.

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TSigned or unsigned integer scalar or vector types.
-
-
-
See also
GLSL bitfieldInsert man page
-
-GLSL 4.20.8 specification, section 8.8 Integer Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::bitfieldReverse (vec< L, T, Q > const & v)
-
- -

Returns the reversal of the bits of value.

-

The bit numbered n of the result will be taken from bit (bits - 1) - n of value, where bits is the total number of bits used to represent value.

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TSigned or unsigned integer scalar or vector types.
-
-
-
See also
GLSL bitfieldReverse man page
-
-GLSL 4.20.8 specification, section 8.8 Integer Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL int glm::findLSB (genIUType x)
-
- -

Returns the bit number of the least significant bit set to 1 in the binary representation of value.

-

If value is zero, -1 will be returned.

-
Template Parameters
- - -
genIUTypeSigned or unsigned integer scalar types.
-
-
-
See also
GLSL findLSB man page
-
-GLSL 4.20.8 specification, section 8.8 Integer Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, int, Q> glm::findLSB (vec< L, T, Q > const & v)
-
- -

Returns the bit number of the least significant bit set to 1 in the binary representation of value.

-

If value is zero, -1 will be returned.

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TSigned or unsigned integer scalar types.
-
-
-
See also
GLSL findLSB man page
-
-GLSL 4.20.8 specification, section 8.8 Integer Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL int glm::findMSB (genIUType x)
-
- -

Returns the bit number of the most significant bit in the binary representation of value.

-

For positive integers, the result will be the bit number of the most significant bit set to 1. For negative integers, the result will be the bit number of the most significant bit set to 0. For a value of zero or negative one, -1 will be returned.

-
Template Parameters
- - -
genIUTypeSigned or unsigned integer scalar types.
-
-
-
See also
GLSL findMSB man page
-
-GLSL 4.20.8 specification, section 8.8 Integer Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, int, Q> glm::findMSB (vec< L, T, Q > const & v)
-
- -

Returns the bit number of the most significant bit in the binary representation of value.

-

For positive integers, the result will be the bit number of the most significant bit set to 1. For negative integers, the result will be the bit number of the most significant bit set to 0. For a value of zero or negative one, -1 will be returned.

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TSigned or unsigned integer scalar types.
-
-
-
See also
GLSL findMSB man page
-
-GLSL 4.20.8 specification, section 8.8 Integer Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL void glm::imulExtended (vec< L, int, Q > const & x,
vec< L, int, Q > const & y,
vec< L, int, Q > & msb,
vec< L, int, Q > & lsb 
)
-
- -

Multiplies 32-bit integers x and y, producing a 64-bit result.

-

The 32 least-significant bits are returned in lsb. The 32 most-significant bits are returned in msb.

-
Template Parameters
- - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
-
-
-
See also
GLSL imulExtended man page
-
-GLSL 4.20.8 specification, section 8.8 Integer Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, uint, Q> glm::uaddCarry (vec< L, uint, Q > const & x,
vec< L, uint, Q > const & y,
vec< L, uint, Q > & carry 
)
-
- -

Adds 32-bit unsigned integer x and y, returning the sum modulo pow(2, 32).

-

The value carry is set to 0 if the sum was less than pow(2, 32), or to 1 otherwise.

-
Template Parameters
- - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
-
-
-
See also
GLSL uaddCarry man page
-
-GLSL 4.20.8 specification, section 8.8 Integer Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL void glm::umulExtended (vec< L, uint, Q > const & x,
vec< L, uint, Q > const & y,
vec< L, uint, Q > & msb,
vec< L, uint, Q > & lsb 
)
-
- -

Multiplies 32-bit integers x and y, producing a 64-bit result.

-

The 32 least-significant bits are returned in lsb. The 32 most-significant bits are returned in msb.

-
Template Parameters
- - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
-
-
-
See also
GLSL umulExtended man page
-
-GLSL 4.20.8 specification, section 8.8 Integer Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, uint, Q> glm::usubBorrow (vec< L, uint, Q > const & x,
vec< L, uint, Q > const & y,
vec< L, uint, Q > & borrow 
)
-
- -

Subtracts the 32-bit unsigned integer y from x, returning the difference if non-negative, or pow(2, 32) plus the difference otherwise.

-

The value borrow is set to 0 if x >= y, or to 1 otherwise.

-
Template Parameters
- - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
-
-
-
See also
GLSL usubBorrow man page
-
-GLSL 4.20.8 specification, section 8.8 Integer Functions
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00371.html b/tests/OpenGL/package/glm/doc/api/a00371.html deleted file mode 100644 index 055d1d05..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00371.html +++ /dev/null @@ -1,293 +0,0 @@ - - - - - - -0.9.9 API documentation: Matrix functions - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
Matrix functions
-
-
- -

Provides GLSL matrix functions. -More...

- - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Provides GLSL matrix functions.

-

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

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL T glm::determinant (mat< C, R, T, Q > const & m)
-
- -

Return the determinant of a squared matrix.

-
Template Parameters
- - - - - -
CInteger between 1 and 4 included that qualify the number a column
RInteger between 1 and 4 included that qualify the number a row
TFloating-point or signed integer scalar types
QValue from qualifier enum
-
-
-
See also
GLSL determinant man page
-
-GLSL 4.20.8 specification, section 8.6 Matrix Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<C, R, T, Q> glm::inverse (mat< C, R, T, Q > const & m)
-
- -

Return the inverse of a squared matrix.

-
Template Parameters
- - - - - -
CInteger between 1 and 4 included that qualify the number a column
RInteger between 1 and 4 included that qualify the number a row
TFloating-point or signed integer scalar types
QValue from qualifier enum
-
-
-
See also
GLSL inverse man page
-
-GLSL 4.20.8 specification, section 8.6 Matrix Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL mat<C, R, T, Q> glm::matrixCompMult (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y 
)
-
- -

Multiply matrix x by matrix y component-wise, i.e., result[i][j] is the scalar product of x[i][j] and y[i][j].

-
Template Parameters
- - - - - -
CInteger between 1 and 4 included that qualify the number a column
RInteger between 1 and 4 included that qualify the number a row
TFloating-point or signed integer scalar types
QValue from qualifier enum
-
-
-
See also
GLSL matrixCompMult man page
-
-GLSL 4.20.8 specification, section 8.6 Matrix Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL detail::outerProduct_trait<C, R, T, Q>::type glm::outerProduct (vec< C, T, Q > const & c,
vec< R, T, Q > const & r 
)
-
- -

Treats the first parameter c as a column vector and the second parameter r as a row vector and does a linear algebraic matrix multiply c * r.

-
Template Parameters
- - - - - -
CInteger between 1 and 4 included that qualify the number a column
RInteger between 1 and 4 included that qualify the number a row
TFloating-point or signed integer scalar types
QValue from qualifier enum
-
-
-
See also
GLSL outerProduct man page
-
-GLSL 4.20.8 specification, section 8.6 Matrix Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL mat<C, R, T, Q>::transpose_type glm::transpose (mat< C, R, T, Q > const & x)
-
- -

Returns the transposed matrix of x.

-
Template Parameters
- - - - - -
CInteger between 1 and 4 included that qualify the number a column
RInteger between 1 and 4 included that qualify the number a row
TFloating-point or signed integer scalar types
QValue from qualifier enum
-
-
-
See also
GLSL transpose man page
-
-GLSL 4.20.8 specification, section 8.6 Matrix Functions
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00372.html b/tests/OpenGL/package/glm/doc/api/a00372.html deleted file mode 100644 index 23b704c1..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00372.html +++ /dev/null @@ -1,420 +0,0 @@ - - - - - - -0.9.9 API documentation: Floating-Point Pack and Unpack Functions - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
Floating-Point Pack and Unpack Functions
-
-
- -

Provides GLSL functions to pack and unpack half, single and double-precision floating point values into more compact integer types. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Provides GLSL functions to pack and unpack half, single and double-precision floating point values into more compact integer types.

-

These functions do not operate component-wise, rather as described in each case.

-

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

-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL double glm::packDouble2x32 (uvec2 const & v)
-
- -

Returns a double-qualifier value obtained by packing the components of v into a 64-bit value.

-

If an IEEE 754 Inf or NaN is created, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit- level representation of v is preserved. The first vector component specifies the 32 least significant bits; the second component specifies the 32 most significant bits.

-
See also
GLSL packDouble2x32 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint glm::packHalf2x16 (vec2 const & v)
-
- -

Returns an unsigned integer obtained by converting the components of a two-component floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification, and then packing these two 16- bit integers into a 32-bit unsigned integer.

-

The first vector component specifies the 16 least-significant bits of the result; the second component specifies the 16 most-significant bits.

-
See also
GLSL packHalf2x16 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint glm::packSnorm2x16 (vec2 const & v)
-
- -

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

-

Then, the results are packed into the returned 32-bit unsigned integer.

-

The conversion for component c of v to fixed point is done as follows: packSnorm2x16: round(clamp(v, -1, +1) * 32767.0)

-

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

-
See also
GLSL packSnorm2x16 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint glm::packSnorm4x8 (vec4 const & v)
-
- -

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

-

Then, the results are packed into the returned 32-bit unsigned integer.

-

The conversion for component c of v to fixed point is done as follows: packSnorm4x8: round(clamp(c, -1, +1) * 127.0)

-

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

-
See also
GLSL packSnorm4x8 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint glm::packUnorm2x16 (vec2 const & v)
-
- -

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

-

Then, the results are packed into the returned 32-bit unsigned integer.

-

The conversion for component c of v to fixed point is done as follows: packUnorm2x16: round(clamp(c, 0, +1) * 65535.0)

-

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

-
See also
GLSL packUnorm2x16 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uint glm::packUnorm4x8 (vec4 const & v)
-
- -

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

-

Then, the results are packed into the returned 32-bit unsigned integer.

-

The conversion for component c of v to fixed point is done as follows: packUnorm4x8: round(clamp(c, 0, +1) * 255.0)

-

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

-
See also
GLSL packUnorm4x8 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL uvec2 glm::unpackDouble2x32 (double v)
-
- -

Returns a two-component unsigned integer vector representation of v.

-

The bit-level representation of v is preserved. The first component of the vector contains the 32 least significant bits of the double; the second component consists the 32 most significant bits.

-
See also
GLSL unpackDouble2x32 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec2 glm::unpackHalf2x16 (uint v)
-
- -

Returns a two-component floating-point vector with components obtained by unpacking a 32-bit unsigned integer into a pair of 16-bit values, interpreting those values as 16-bit floating-point numbers according to the OpenGL Specification, and converting them to 32-bit floating-point values.

-

The first component of the vector is obtained from the 16 least-significant bits of v; the second component is obtained from the 16 most-significant bits of v.

-
See also
GLSL unpackHalf2x16 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec2 glm::unpackSnorm2x16 (uint p)
-
- -

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

-

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

-

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm2x16: clamp(f / 32767.0, -1, +1)

-

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

-
See also
GLSL unpackSnorm2x16 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec4 glm::unpackSnorm4x8 (uint p)
-
- -

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

-

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

-

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm4x8: clamp(f / 127.0, -1, +1)

-

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

-
See also
GLSL unpackSnorm4x8 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec2 glm::unpackUnorm2x16 (uint p)
-
- -

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

-

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

-

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm2x16: f / 65535.0

-

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

-
See also
GLSL unpackUnorm2x16 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec4 glm::unpackUnorm4x8 (uint p)
-
- -

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

-

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

-

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm4x8: f / 255.0

-

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

-
See also
GLSL unpackUnorm4x8 man page
-
-GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00373.html b/tests/OpenGL/package/glm/doc/api/a00373.html deleted file mode 100644 index 7f6e4685..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00373.html +++ /dev/null @@ -1,621 +0,0 @@ - - - - - - -0.9.9 API documentation: Angle and Trigonometry Functions - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
Angle and Trigonometry Functions
-
-
- -

Function parameters specified as angle are assumed to be in units of radians. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Function parameters specified as angle are assumed to be in units of radians.

-

In no case will any of these functions result in a divide by zero error. If the divisor of a ratio is 0, then results will be undefined.

-

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

-

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

-
See also
ext_vector_trigonometric
-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::acos (vec< L, T, Q > const & x)
-
- -

Arc cosine.

-

Returns an angle whose sine is x. The range of values returned by this function is [0, PI]. Results are undefined if |x| > 1.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL acos man page
-
-GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::acosh (vec< L, T, Q > const & x)
-
- -

Arc hyperbolic cosine; returns the non-negative inverse of cosh.

-

Results are undefined if x < 1.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL acosh man page
-
-GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::asin (vec< L, T, Q > const & x)
-
- -

Arc sine.

-

Returns an angle whose sine is x. The range of values returned by this function is [-PI/2, PI/2]. Results are undefined if |x| > 1.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL asin man page
-
-GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::asinh (vec< L, T, Q > const & x)
-
- -

Arc hyperbolic sine; returns the inverse of sinh.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL asinh man page
-
-GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::atan (vec< L, T, Q > const & y,
vec< L, T, Q > const & x 
)
-
- -

Arc tangent.

-

Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0.

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

Referenced by glm::atan2().

- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::atan (vec< L, T, Q > const & y_over_x)
-
- -

Arc tangent.

-

Returns an angle whose tangent is y_over_x. The range of values returned by this function is [-PI/2, PI/2].

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL atan man page
-
-GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::atanh (vec< L, T, Q > const & x)
-
- -

Arc hyperbolic tangent; returns the inverse of tanh.

-

Results are undefined if abs(x) >= 1.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL atanh man page
-
-GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::cos (vec< L, T, Q > const & angle)
-
- -

The standard trigonometric cosine function.

-

The values returned by this function will range from [-1, 1].

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL cos man page
-
-GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::cosh (vec< L, T, Q > const & angle)
-
- -

Returns the hyperbolic cosine function, (exp(x) + exp(-x)) / 2.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL cosh man page
-
-GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::degrees (vec< L, T, Q > const & radians)
-
- -

Converts radians to degrees and returns the result.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL degrees man page
-
-GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::radians (vec< L, T, Q > const & degrees)
-
- -

Converts degrees to radians and returns the result.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL radians man page
-
-GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::sin (vec< L, T, Q > const & angle)
-
- -

The standard trigonometric sine function.

-

The values returned by this function will range from [-1, 1].

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL sin man page
-
-GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::sinh (vec< L, T, Q > const & angle)
-
- -

Returns the hyperbolic sine function, (exp(x) - exp(-x)) / 2.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL sinh man page
-
-GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::tan (vec< L, T, Q > const & angle)
-
- -

The standard trigonometric tangent function.

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL tan man page
-
-GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL vec<L, T, Q> glm::tanh (vec< L, T, Q > const & angle)
-
- -

Returns the hyperbolic tangent function, sinh(angle) / cosh(angle)

-
Template Parameters
- - - - -
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
-
-
-
See also
GLSL tanh man page
-
-GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/a00374.html b/tests/OpenGL/package/glm/doc/api/a00374.html deleted file mode 100644 index 114bd700..00000000 --- a/tests/OpenGL/package/glm/doc/api/a00374.html +++ /dev/null @@ -1,452 +0,0 @@ - - - - - - -0.9.9 API documentation: Vector Relational Functions - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
- -
-
Vector Relational Functions
-
-
- -

Relational and equality operators (<, <=, >, >=, ==, !=) are defined to operate on scalars and produce scalar Boolean results. -More...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

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

Detailed Description

-

Relational and equality operators (<, <=, >, >=, ==, !=) are defined to operate on scalars and produce scalar Boolean results.

-

For vector results, use the following built-in functions.

-

In all cases, the sizes of all the input and return vectors for any particular call must match.

-

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

-
See also
GLM_EXT_vector_relational
-

Function Documentation

- -
-
- - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR bool glm::all (vec< L, bool, Q > const & v)
-
- -

Returns true if all components of x are true.

-
Template Parameters
- - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
-
-
-
See also
GLSL all man page
-
-GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR bool glm::any (vec< L, bool, Q > const & v)
-
- -

Returns true if any component of x is true.

-
Template Parameters
- - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
-
-
-
See also
GLSL any man page
-
-GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::equal (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
-
- -

Returns the component-wise comparison of result x == y.

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TA floating-point, integer or bool scalar type.
-
-
-
See also
GLSL equal man page
-
-GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::greaterThan (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
-
- -

Returns the component-wise comparison of result x > y.

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TA floating-point or integer scalar type.
-
-
-
See also
GLSL greaterThan man page
-
-GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::greaterThanEqual (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
-
- -

Returns the component-wise comparison of result x >= y.

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TA floating-point or integer scalar type.
-
-
-
See also
GLSL greaterThanEqual man page
-
-GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::lessThan (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
-
- -

Returns the component-wise comparison result of x < y.

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TA floating-point or integer scalar type.
-
-
-
See also
GLSL lessThan man page
-
-GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::lessThanEqual (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
-
- -

Returns the component-wise comparison of result x <= y.

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TA floating-point or integer scalar type.
-
-
-
See also
GLSL lessThanEqual man page
-
-GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
- -
-
- -
-
- - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::not_ (vec< L, bool, Q > const & v)
-
- -

Returns the component-wise logical complement of x.

-

/!\ Because of language incompatibilities between C++ and GLSL, GLM defines the function not but not_ instead.

-
Template Parameters
- - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
-
-
-
See also
GLSL not man page
-
-GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
- -
-
- -
-
- - - - - - - - - - - - - - - - - - -
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::notEqual (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
-
- -

Returns the component-wise comparison of result x != y.

-
Template Parameters
- - - -
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TA floating-point, integer or bool scalar type.
-
-
-
See also
GLSL notEqual man page
-
-GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
- -
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/arrowdown.png b/tests/OpenGL/package/glm/doc/api/arrowdown.png deleted file mode 100644 index 0b63f6d3..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/arrowdown.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/arrowright.png b/tests/OpenGL/package/glm/doc/api/arrowright.png deleted file mode 100644 index c6ee22f9..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/arrowright.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/bc_s.png b/tests/OpenGL/package/glm/doc/api/bc_s.png deleted file mode 100644 index a2741171..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/bc_s.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/bdwn.png b/tests/OpenGL/package/glm/doc/api/bdwn.png deleted file mode 100644 index 52e0f771..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/bdwn.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/closed.png b/tests/OpenGL/package/glm/doc/api/closed.png deleted file mode 100644 index c2ff2e8a..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/closed.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/dir_033f5edb0915b828d2c46ed4804e5503.html b/tests/OpenGL/package/glm/doc/api/dir_033f5edb0915b828d2c46ed4804e5503.html deleted file mode 100644 index a6d3c488..00000000 --- a/tests/OpenGL/package/glm/doc/api/dir_033f5edb0915b828d2c46ed4804e5503.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - -0.9.9 API documentation: detail Directory Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - -
-
- - -
- -
- - -
-
-
-
detail Directory Reference
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Files

file  _features.hpp [code]
 
file  _fixes.hpp [code]
 
file  _noise.hpp [code]
 
file  _swizzle.hpp [code]
 
file  _swizzle_func.hpp [code]
 
file  _vectorize.hpp [code]
 
file  compute_common.hpp [code]
 
file  compute_vector_relational.hpp [code]
 
file  qualifier.hpp [code]
 
file  setup.hpp [code]
 
file  type_float.hpp [code]
 
file  type_half.hpp [code]
 
file  type_mat2x2.hpp [code]
 Core features
 
file  type_mat2x3.hpp [code]
 Core features
 
file  type_mat2x4.hpp [code]
 Core features
 
file  type_mat3x2.hpp [code]
 Core features
 
file  type_mat3x3.hpp [code]
 Core features
 
file  type_mat3x4.hpp [code]
 Core features
 
file  type_mat4x2.hpp [code]
 Core features
 
file  type_mat4x3.hpp [code]
 Core features
 
file  type_mat4x4.hpp [code]
 Core features
 
file  type_quat.hpp [code]
 Core features
 
file  type_vec1.hpp [code]
 Core features
 
file  type_vec2.hpp [code]
 Core features
 
file  type_vec3.hpp [code]
 Core features
 
file  type_vec4.hpp [code]
 Core features
 
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/dir_3a581ba30d25676e4b797b1f96d53b45.html b/tests/OpenGL/package/glm/doc/api/dir_3a581ba30d25676e4b797b1f96d53b45.html deleted file mode 100644 index 4fbf6250..00000000 --- a/tests/OpenGL/package/glm/doc/api/dir_3a581ba30d25676e4b797b1f96d53b45.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - -0.9.9 API documentation: F: Directory Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - -
-
- - -
- -
- - -
-
-
-
F: Directory Reference
-
-
- - - - -

-Directories

directory  G-Truc
 
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/dir_44e5e654415abd9ca6fdeaddaff8565e.html b/tests/OpenGL/package/glm/doc/api/dir_44e5e654415abd9ca6fdeaddaff8565e.html deleted file mode 100644 index 0e3b7743..00000000 --- a/tests/OpenGL/package/glm/doc/api/dir_44e5e654415abd9ca6fdeaddaff8565e.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - -0.9.9 API documentation: glm Directory Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - -
-
- - -
- -
- - -
-
-
-
glm Directory Reference
-
-
- - - - - - -

-Directories

directory  doc
 
directory  glm
 
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/dir_4c6bd29c73fa4e5a2509e1c15f846751.html b/tests/OpenGL/package/glm/doc/api/dir_4c6bd29c73fa4e5a2509e1c15f846751.html deleted file mode 100644 index 006a7cbe..00000000 --- a/tests/OpenGL/package/glm/doc/api/dir_4c6bd29c73fa4e5a2509e1c15f846751.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - -0.9.9 API documentation: gtc Directory Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - -
-
- - -
- -
- - -
-
-
-
gtc Directory Reference
-
- - - - - diff --git a/tests/OpenGL/package/glm/doc/api/dir_5189610d3ba09ec39b766fb99b34cd93.html b/tests/OpenGL/package/glm/doc/api/dir_5189610d3ba09ec39b766fb99b34cd93.html deleted file mode 100644 index 10dd489d..00000000 --- a/tests/OpenGL/package/glm/doc/api/dir_5189610d3ba09ec39b766fb99b34cd93.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - -0.9.9 API documentation: doc Directory Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - -
-
- - -
- -
- - -
-
-
-
doc Directory Reference
-
-
- - - - -

-Files

file  man.doxy [code]
 
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/dir_6b66465792d005310484819a0eb0b0d3.html b/tests/OpenGL/package/glm/doc/api/dir_6b66465792d005310484819a0eb0b0d3.html deleted file mode 100644 index e2821d0c..00000000 --- a/tests/OpenGL/package/glm/doc/api/dir_6b66465792d005310484819a0eb0b0d3.html +++ /dev/null @@ -1,403 +0,0 @@ - - - - - - -0.9.9 API documentation: ext Directory Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - -
-
- - -
- -
- - -
-
-
-
ext Directory Reference
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Files

file  matrix_clip_space.hpp [code]
 GLM_EXT_matrix_clip_space
 
file  matrix_common.hpp [code]
 GLM_EXT_matrix_common
 
file  matrix_double2x2.hpp [code]
 Core features
 
file  matrix_double2x2_precision.hpp [code]
 Core features
 
file  matrix_double2x3.hpp [code]
 Core features
 
file  matrix_double2x3_precision.hpp [code]
 Core features
 
file  matrix_double2x4.hpp [code]
 Core features
 
file  matrix_double2x4_precision.hpp [code]
 Core features
 
file  matrix_double3x2.hpp [code]
 Core features
 
file  matrix_double3x2_precision.hpp [code]
 Core features
 
file  matrix_double3x3.hpp [code]
 Core features
 
file  matrix_double3x3_precision.hpp [code]
 Core features
 
file  matrix_double3x4.hpp [code]
 Core features
 
file  matrix_double3x4_precision.hpp [code]
 Core features
 
file  matrix_double4x2.hpp [code]
 Core features
 
file  matrix_double4x2_precision.hpp [code]
 Core features
 
file  matrix_double4x3.hpp [code]
 Core features
 
file  matrix_double4x3_precision.hpp [code]
 Core features
 
file  matrix_double4x4.hpp [code]
 Core features
 
file  matrix_double4x4_precision.hpp [code]
 Core features
 
file  matrix_float2x2.hpp [code]
 Core features
 
file  matrix_float2x2_precision.hpp [code]
 Core features
 
file  matrix_float2x3.hpp [code]
 Core features
 
file  matrix_float2x3_precision.hpp [code]
 Core features
 
file  matrix_float2x4.hpp [code]
 Core features
 
file  matrix_float2x4_precision.hpp [code]
 Core features
 
file  matrix_float3x2.hpp [code]
 Core features
 
file  matrix_float3x2_precision.hpp [code]
 Core features
 
file  matrix_float3x3.hpp [code]
 Core features
 
file  matrix_float3x3_precision.hpp [code]
 Core features
 
file  matrix_float3x4.hpp [code]
 Core features
 
file  matrix_float3x4_precision.hpp [code]
 Core features
 
file  matrix_float4x2.hpp [code]
 Core features
 
file  matrix_float4x2_precision.hpp [code]
 
file  matrix_float4x3.hpp [code]
 Core features
 
file  matrix_float4x3_precision.hpp [code]
 Core features
 
file  matrix_float4x4.hpp [code]
 Core features
 
file  matrix_float4x4_precision.hpp [code]
 Core features
 
file  matrix_projection.hpp [code]
 GLM_EXT_matrix_projection
 
file  matrix_relational.hpp [code]
 GLM_EXT_matrix_relational
 
file  ext/matrix_transform.hpp [code]
 GLM_EXT_matrix_transform
 
file  quaternion_common.hpp [code]
 GLM_EXT_quaternion_common
 
file  quaternion_double.hpp [code]
 GLM_EXT_quaternion_double
 
file  quaternion_double_precision.hpp [code]
 GLM_EXT_quaternion_double_precision
 
file  quaternion_exponential.hpp [code]
 GLM_EXT_quaternion_exponential
 
file  quaternion_float.hpp [code]
 GLM_EXT_quaternion_float
 
file  quaternion_float_precision.hpp [code]
 GLM_EXT_quaternion_float_precision
 
file  quaternion_geometric.hpp [code]
 GLM_EXT_quaternion_geometric
 
file  quaternion_relational.hpp [code]
 GLM_EXT_quaternion_relational
 
file  quaternion_transform.hpp [code]
 GLM_EXT_quaternion_transform
 
file  quaternion_trigonometric.hpp [code]
 GLM_EXT_quaternion_trigonometric
 
file  scalar_common.hpp [code]
 GLM_EXT_scalar_common
 
file  scalar_constants.hpp [code]
 GLM_EXT_scalar_constants
 
file  scalar_int_sized.hpp [code]
 GLM_EXT_scalar_int_sized
 
file  scalar_integer.hpp [code]
 GLM_EXT_scalar_integer
 
file  ext/scalar_relational.hpp [code]
 GLM_EXT_scalar_relational
 
file  scalar_uint_sized.hpp [code]
 GLM_EXT_scalar_uint_sized
 
file  scalar_ulp.hpp [code]
 GLM_EXT_scalar_ulp
 
file  vector_bool1.hpp [code]
 GLM_EXT_vector_bool1
 
file  vector_bool1_precision.hpp [code]
 GLM_EXT_vector_bool1_precision
 
file  vector_bool2.hpp [code]
 Core features
 
file  vector_bool2_precision.hpp [code]
 Core features
 
file  vector_bool3.hpp [code]
 Core features
 
file  vector_bool3_precision.hpp [code]
 Core features
 
file  vector_bool4.hpp [code]
 Core features
 
file  vector_bool4_precision.hpp [code]
 Core features
 
file  vector_common.hpp [code]
 GLM_EXT_vector_common
 
file  vector_double1.hpp [code]
 GLM_EXT_vector_double1
 
file  vector_double1_precision.hpp [code]
 GLM_EXT_vector_double1_precision
 
file  vector_double2.hpp [code]
 Core features
 
file  vector_double2_precision.hpp [code]
 Core features
 
file  vector_double3.hpp [code]
 Core features
 
file  vector_double3_precision.hpp [code]
 Core features
 
file  vector_double4.hpp [code]
 Core features
 
file  vector_double4_precision.hpp [code]
 Core features
 
file  vector_float1.hpp [code]
 GLM_EXT_vector_float1
 
file  vector_float1_precision.hpp [code]
 GLM_EXT_vector_float1_precision
 
file  vector_float2.hpp [code]
 Core features
 
file  vector_float2_precision.hpp [code]
 Core features
 
file  vector_float3.hpp [code]
 Core features
 
file  vector_float3_precision.hpp [code]
 Core features
 
file  vector_float4.hpp [code]
 Core features
 
file  vector_float4_precision.hpp [code]
 Core features
 
file  vector_int1.hpp [code]
 GLM_EXT_vector_int1
 
file  vector_int1_precision.hpp [code]
 GLM_EXT_vector_int1_precision
 
file  vector_int2.hpp [code]
 Core features
 
file  vector_int2_precision.hpp [code]
 Core features
 
file  vector_int3.hpp [code]
 Core features
 
file  vector_int3_precision.hpp [code]
 Core features
 
file  vector_int4.hpp [code]
 Core features
 
file  vector_int4_precision.hpp [code]
 Core features
 
file  vector_integer.hpp [code]
 GLM_EXT_vector_integer
 
file  ext/vector_relational.hpp [code]
 GLM_EXT_vector_relational
 
file  vector_uint1.hpp [code]
 GLM_EXT_vector_uint1
 
file  vector_uint1_precision.hpp [code]
 GLM_EXT_vector_uint1_precision
 
file  vector_uint2.hpp [code]
 Core features
 
file  vector_uint2_precision.hpp [code]
 Core features
 
file  vector_uint3.hpp [code]
 Core features
 
file  vector_uint3_precision.hpp [code]
 Core features
 
file  vector_uint4.hpp [code]
 Core features
 
file  vector_uint4_precision.hpp [code]
 Core features
 
file  vector_ulp.hpp [code]
 GLM_EXT_vector_ulp
 
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/dir_9e5fe034a00e89334fd5186c3e7db156.html b/tests/OpenGL/package/glm/doc/api/dir_9e5fe034a00e89334fd5186c3e7db156.html deleted file mode 100644 index 1f566e99..00000000 --- a/tests/OpenGL/package/glm/doc/api/dir_9e5fe034a00e89334fd5186c3e7db156.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - -0.9.9 API documentation: G-Truc Directory Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - -
-
- - -
- -
- - -
-
-
-
G-Truc Directory Reference
-
-
- - - - -

-Directories

directory  Source
 
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/dir_a8bee7be44182a33f3820393ae0b105d.html b/tests/OpenGL/package/glm/doc/api/dir_a8bee7be44182a33f3820393ae0b105d.html deleted file mode 100644 index 55fb6cc9..00000000 --- a/tests/OpenGL/package/glm/doc/api/dir_a8bee7be44182a33f3820393ae0b105d.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - -0.9.9 API documentation: G-Truc Directory Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - -
-
- - -
- -
- - -
-
-
-
G-Truc Directory Reference
-
-
- - - - -

-Directories

directory  glm
 
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/dir_cef2d71d502cb69a9252bca2297d9549.html b/tests/OpenGL/package/glm/doc/api/dir_cef2d71d502cb69a9252bca2297d9549.html deleted file mode 100644 index 15e72a45..00000000 --- a/tests/OpenGL/package/glm/doc/api/dir_cef2d71d502cb69a9252bca2297d9549.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - -0.9.9 API documentation: glm Directory Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - -
-
- - -
- -
- - -
-
-
-
glm Directory Reference
-
-
- - - - - - - - - - -

-Directories

directory  detail
 
directory  ext
 
directory  gtc
 
directory  gtx
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Files

file  common.hpp [code]
 Core features
 
file  exponential.hpp [code]
 Core features
 
file  ext.hpp [code]
 Core features (Dependence)
 
file  fwd.hpp [code]
 
file  geometric.hpp [code]
 Core features
 
file  glm.hpp [code]
 Core features
 
file  integer.hpp [code]
 Core features
 
file  mat2x2.hpp [code]
 Core features
 
file  mat2x3.hpp [code]
 Core features
 
file  mat2x4.hpp [code]
 Core features
 
file  mat3x2.hpp [code]
 Core features
 
file  mat3x3.hpp [code]
 Core features
 
file  mat3x4.hpp [code]
 Core features
 
file  mat4x2.hpp [code]
 Core features
 
file  mat4x3.hpp [code]
 Core features
 
file  mat4x4.hpp [code]
 Core features
 
file  matrix.hpp [code]
 Core features
 
file  packing.hpp [code]
 Core features
 
file  trigonometric.hpp [code]
 Core features
 
file  vec2.hpp [code]
 Core features
 
file  vec3.hpp [code]
 Core features
 
file  vec4.hpp [code]
 Core features
 
file  vector_relational.hpp [code]
 Core features
 
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/dir_d9496f0844b48bc7e53b5af8c99b9ab2.html b/tests/OpenGL/package/glm/doc/api/dir_d9496f0844b48bc7e53b5af8c99b9ab2.html deleted file mode 100644 index 199ee8f6..00000000 --- a/tests/OpenGL/package/glm/doc/api/dir_d9496f0844b48bc7e53b5af8c99b9ab2.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - -0.9.9 API documentation: Source Directory Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - -
-
- - -
- -
- - -
-
-
-
Source Directory Reference
-
-
- - - - -

-Directories

directory  G-Truc
 
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/dir_f35778ec600a1b9bbc4524e62e226aa2.html b/tests/OpenGL/package/glm/doc/api/dir_f35778ec600a1b9bbc4524e62e226aa2.html deleted file mode 100644 index be7d433d..00000000 --- a/tests/OpenGL/package/glm/doc/api/dir_f35778ec600a1b9bbc4524e62e226aa2.html +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - -0.9.9 API documentation: gtx Directory Reference - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - -
-
- - -
- -
- - -
-
-
-
gtx Directory Reference
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Files

file  associated_min_max.hpp [code]
 GLM_GTX_associated_min_max
 
file  bit.hpp [code]
 GLM_GTX_bit
 
file  closest_point.hpp [code]
 GLM_GTX_closest_point
 
file  color_encoding.hpp [code]
 GLM_GTX_color_encoding
 
file  gtx/color_space.hpp [code]
 GLM_GTX_color_space
 
file  color_space_YCoCg.hpp [code]
 GLM_GTX_color_space_YCoCg
 
file  gtx/common.hpp [code]
 GLM_GTX_common
 
file  compatibility.hpp [code]
 GLM_GTX_compatibility
 
file  component_wise.hpp [code]
 GLM_GTX_component_wise
 
file  dual_quaternion.hpp [code]
 GLM_GTX_dual_quaternion
 
file  easing.hpp [code]
 GLM_GTX_easing
 
file  euler_angles.hpp [code]
 GLM_GTX_euler_angles
 
file  extend.hpp [code]
 GLM_GTX_extend
 
file  extended_min_max.hpp [code]
 GLM_GTX_extented_min_max
 
file  exterior_product.hpp [code]
 GLM_GTX_exterior_product
 
file  fast_exponential.hpp [code]
 GLM_GTX_fast_exponential
 
file  fast_square_root.hpp [code]
 GLM_GTX_fast_square_root
 
file  fast_trigonometry.hpp [code]
 GLM_GTX_fast_trigonometry
 
file  functions.hpp [code]
 GLM_GTX_functions
 
file  gradient_paint.hpp [code]
 GLM_GTX_gradient_paint
 
file  handed_coordinate_space.hpp [code]
 GLM_GTX_handed_coordinate_space
 
file  hash.hpp [code]
 GLM_GTX_hash
 
file  gtx/integer.hpp [code]
 GLM_GTX_integer
 
file  intersect.hpp [code]
 GLM_GTX_intersect
 
file  io.hpp [code]
 GLM_GTX_io
 
file  log_base.hpp [code]
 GLM_GTX_log_base
 
file  matrix_cross_product.hpp [code]
 GLM_GTX_matrix_cross_product
 
file  matrix_decompose.hpp [code]
 GLM_GTX_matrix_decompose
 
file  matrix_factorisation.hpp [code]
 GLM_GTX_matrix_factorisation
 
file  matrix_interpolation.hpp [code]
 GLM_GTX_matrix_interpolation
 
file  matrix_major_storage.hpp [code]
 GLM_GTX_matrix_major_storage
 
file  matrix_operation.hpp [code]
 GLM_GTX_matrix_operation
 
file  matrix_query.hpp [code]
 GLM_GTX_matrix_query
 
file  matrix_transform_2d.hpp [code]
 GLM_GTX_matrix_transform_2d
 
file  mixed_product.hpp [code]
 GLM_GTX_mixed_producte
 
file  norm.hpp [code]
 GLM_GTX_norm
 
file  normal.hpp [code]
 GLM_GTX_normal
 
file  normalize_dot.hpp [code]
 GLM_GTX_normalize_dot
 
file  number_precision.hpp [code]
 GLM_GTX_number_precision
 
file  optimum_pow.hpp [code]
 GLM_GTX_optimum_pow
 
file  orthonormalize.hpp [code]
 GLM_GTX_orthonormalize
 
file  perpendicular.hpp [code]
 GLM_GTX_perpendicular
 
file  polar_coordinates.hpp [code]
 GLM_GTX_polar_coordinates
 
file  projection.hpp [code]
 GLM_GTX_projection
 
file  gtx/quaternion.hpp [code]
 GLM_GTX_quaternion
 
file  range.hpp [code]
 GLM_GTX_range
 
file  raw_data.hpp [code]
 GLM_GTX_raw_data
 
file  rotate_normalized_axis.hpp [code]
 GLM_GTX_rotate_normalized_axis
 
file  rotate_vector.hpp [code]
 GLM_GTX_rotate_vector
 
file  scalar_multiplication.hpp [code]
 Experimental extensions
 
file  gtx/scalar_relational.hpp [code]
 GLM_GTX_scalar_relational
 
file  spline.hpp [code]
 GLM_GTX_spline
 
file  std_based_type.hpp [code]
 GLM_GTX_std_based_type
 
file  string_cast.hpp [code]
 GLM_GTX_string_cast
 
file  texture.hpp [code]
 GLM_GTX_texture
 
file  transform.hpp [code]
 GLM_GTX_transform
 
file  transform2.hpp [code]
 GLM_GTX_transform2
 
file  gtx/type_aligned.hpp [code]
 GLM_GTX_type_aligned
 
file  type_trait.hpp [code]
 GLM_GTX_type_trait
 
file  vec_swizzle.hpp [code]
 GLM_GTX_vec_swizzle
 
file  vector_angle.hpp [code]
 GLM_GTX_vector_angle
 
file  vector_query.hpp [code]
 GLM_GTX_vector_query
 
file  wrap.hpp [code]
 GLM_GTX_wrap
 
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/doc.png b/tests/OpenGL/package/glm/doc/api/doc.png deleted file mode 100644 index f3953d1f..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/doc.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/doxygen.css b/tests/OpenGL/package/glm/doc/api/doxygen.css deleted file mode 100644 index 1b9d11f3..00000000 --- a/tests/OpenGL/package/glm/doc/api/doxygen.css +++ /dev/null @@ -1,1496 +0,0 @@ -/* The standard CSS for doxygen 1.8.10 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -body -{ - margin:0px; - padding:0px; - background-color:#bf6000; - background-repeat:no-repeat; - background-position:center center; - background-attachment:fixed; - min-height:1200px; - overflow:auto; -} - -/* @group Heading Levels */ - -h1.groupheader { - color:#bf6000; - font-size: 150%; -} - -.title { - color:#bf6000; - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #bf6000; - color:#bf6000; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; -} - -dt { - font-weight: bold; -} - -div.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #FFF8F0; - border: 1px solid #FF8000; - text-align: center; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #000000; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #606060; -} - -.contents{ - background-color: #FFFFFF; - padding-top:8px; - padding-bottom:8px; - padding-left:32px; - padding-right:32px; - margin:0px; - margin-left:auto; - margin-right:auto; - width:1216px; - border-bottom-left-radius: 8px; - border-bottom-right-radius: 8px; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #ffffff; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #ffffff; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -pre.fragment { - border: 1px solid #FF8000; - background-color: #FFF8F0; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 4px 6px; - margin: 4px 8px 4px 2px; - background-color: #FFF8F0; - border: 1px solid #FF8000; -} - -div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -div.ah, span.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - color: black; - margin: 0; -} - -td.indexkey { - background-color: #FFF8F0; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #FFF8F0; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #FFF8F0; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - display: none; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #FF8000; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - display: none; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #FFFCF8; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #FFF8F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight { - width: 100%; -} - -.memTemplParams { - color: #bf6000; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #FFF8F0; - border: 1px solid #FF8000; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: bold; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #bf6000; - border-left: 1px solid #bf6000; - border-right: 1px solid #bf6000; - padding: 6px 0px 6px 0px; - /*color: #253555;*/ - font-weight: bold; - /*text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);*/ - /*background-image:url('nav_f.png');*/ - background-repeat:repeat-x; - background-color: #FFF8F0; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - border-top-left-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - -moz-border-radius-topleft: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -webkit-border-top-left-radius: 4px; - -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #bf6000; - border-left: 1px solid #bf6000; - border-right: 1px solid #bf6000; - padding: 6px 10px 2px 10px; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFDFB; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #bf6000; - border-bottom: 1px solid #bf6000; - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.even { - padding-left: 6px; - background-color: #FFFDFB; -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #bf6000; -} - -.arrow { - color: #bf6000; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: Arial, Helvetica; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: #bf6000; - color: white; - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('doc.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -table.directory { - font: 400 14px Roboto,sans-serif; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #A8B8D9; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - font-size: 90%; - color: #253555; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - /*background-image:url('tab_b.png');*/ - background-color: #FFF8F0; - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#bf6000; - border:solid 0px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#bf6000; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #bf6000; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#bf6000; - font-size: 8pt; -} - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-repeat:repeat-x; - background-color: #FFFCF8; - - padding:0px; - margin:0px; - margin-left:auto; - margin-right:auto; - width:1280px; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -dl -{ - padding: 0 0 0 10px; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ -dl.section -{ - margin-left: 0px; - padding-left: 0px; -} - -dl.note -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00D000; -} - -dl.deprecated -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #505050; -} - -dl.todo -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #E0C000; -} - -dl.test -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #3030E0; -} - -dl.bug -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; - color: #FF8000; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #90A5CE; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; -} - -dl.citelist dd { - margin:2px 0; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 20px 10px 10px; - width: 200px; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; - border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: grey; - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: #006318; -} - -#powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before { - border-top-color: #808080; - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#titlearea -{ - margin: 0px; - padding-top: 8px; - padding-bottom: 8px; - margin-top: 32px; - width: 100%; - border-bottom: 0px solid #FF8000; - border-top-left-radius: 8px; - border-top-right-radius: 8px; - background-color:#FFFFFF; -} - -#top -{ - margin-left:auto; - margin-right:auto; - width:1280px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - diff --git a/tests/OpenGL/package/glm/doc/api/doxygen.png b/tests/OpenGL/package/glm/doc/api/doxygen.png deleted file mode 100644 index a7f4be80..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/doxygen.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/dynsections.js b/tests/OpenGL/package/glm/doc/api/dynsections.js deleted file mode 100644 index 1e6bf07f..00000000 --- a/tests/OpenGL/package/glm/doc/api/dynsections.js +++ /dev/null @@ -1,104 +0,0 @@ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l - - - - - -0.9.9 API documentation: File List - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - - -
- -
-
- - -
- -
- -
-
-
File List
-
-
-
Here is a list of all documented files with brief descriptions:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 _features.hpp
 _fixes.hpp
 _noise.hpp
 _swizzle.hpp
 _swizzle_func.hpp
 _vectorize.hpp
 associated_min_max.hppGLM_GTX_associated_min_max
 bit.hppGLM_GTX_bit
 bitfield.hppGLM_GTC_bitfield
 closest_point.hppGLM_GTX_closest_point
 color_encoding.hppGLM_GTX_color_encoding
 gtc/color_space.hppGLM_GTC_color_space
 gtx/color_space.hppGLM_GTX_color_space
 color_space_YCoCg.hppGLM_GTX_color_space_YCoCg
 common.hppCore features
 gtx/common.hppGLM_GTX_common
 compatibility.hppGLM_GTX_compatibility
 component_wise.hppGLM_GTX_component_wise
 compute_common.hpp
 compute_vector_relational.hpp
 constants.hppGLM_GTC_constants
 dual_quaternion.hppGLM_GTX_dual_quaternion
 easing.hppGLM_GTX_easing
 epsilon.hppGLM_GTC_epsilon
 euler_angles.hppGLM_GTX_euler_angles
 exponential.hppCore features
 ext.hppCore features (Dependence)
 extend.hppGLM_GTX_extend
 extended_min_max.hppGLM_GTX_extented_min_max
 exterior_product.hppGLM_GTX_exterior_product
 fast_exponential.hppGLM_GTX_fast_exponential
 fast_square_root.hppGLM_GTX_fast_square_root
 fast_trigonometry.hppGLM_GTX_fast_trigonometry
 functions.hppGLM_GTX_functions
 fwd.hpp
 geometric.hppCore features
 glm.hppCore features
 gradient_paint.hppGLM_GTX_gradient_paint
 handed_coordinate_space.hppGLM_GTX_handed_coordinate_space
 hash.hppGLM_GTX_hash
 gtc/integer.hppGLM_GTC_integer
 gtx/integer.hppGLM_GTX_integer
 integer.hppCore features
 intersect.hppGLM_GTX_intersect
 io.hppGLM_GTX_io
 log_base.hppGLM_GTX_log_base
 man.doxy
 mat2x2.hppCore features
 mat2x3.hppCore features
 mat2x4.hppCore features
 mat3x2.hppCore features
 mat3x3.hppCore features
 mat3x4.hppCore features
 mat4x2.hppCore features
 mat4x3.hppCore features
 mat4x4.hppCore features
 matrix.hppCore features
 matrix_access.hppGLM_GTC_matrix_access
 matrix_clip_space.hppGLM_EXT_matrix_clip_space
 matrix_common.hppGLM_EXT_matrix_common
 matrix_cross_product.hppGLM_GTX_matrix_cross_product
 matrix_decompose.hppGLM_GTX_matrix_decompose
 matrix_double2x2.hppCore features
 matrix_double2x2_precision.hppCore features
 matrix_double2x3.hppCore features
 matrix_double2x3_precision.hppCore features
 matrix_double2x4.hppCore features
 matrix_double2x4_precision.hppCore features
 matrix_double3x2.hppCore features
 matrix_double3x2_precision.hppCore features
 matrix_double3x3.hppCore features
 matrix_double3x3_precision.hppCore features
 matrix_double3x4.hppCore features
 matrix_double3x4_precision.hppCore features
 matrix_double4x2.hppCore features
 matrix_double4x2_precision.hppCore features
 matrix_double4x3.hppCore features
 matrix_double4x3_precision.hppCore features
 matrix_double4x4.hppCore features
 matrix_double4x4_precision.hppCore features
 matrix_factorisation.hppGLM_GTX_matrix_factorisation
 matrix_float2x2.hppCore features
 matrix_float2x2_precision.hppCore features
 matrix_float2x3.hppCore features
 matrix_float2x3_precision.hppCore features
 matrix_float2x4.hppCore features
 matrix_float2x4_precision.hppCore features
 matrix_float3x2.hppCore features
 matrix_float3x2_precision.hppCore features
 matrix_float3x3.hppCore features
 matrix_float3x3_precision.hppCore features
 matrix_float3x4.hppCore features
 matrix_float3x4_precision.hppCore features
 matrix_float4x2.hppCore features
 matrix_float4x2_precision.hpp
 matrix_float4x3.hppCore features
 matrix_float4x3_precision.hppCore features
 matrix_float4x4.hppCore features
 matrix_float4x4_precision.hppCore features
 matrix_integer.hppGLM_GTC_matrix_integer
 matrix_interpolation.hppGLM_GTX_matrix_interpolation
 matrix_inverse.hppGLM_GTC_matrix_inverse
 matrix_major_storage.hppGLM_GTX_matrix_major_storage
 matrix_operation.hppGLM_GTX_matrix_operation
 matrix_projection.hppGLM_EXT_matrix_projection
 matrix_query.hppGLM_GTX_matrix_query
 matrix_relational.hppGLM_EXT_matrix_relational
 ext/matrix_transform.hppGLM_EXT_matrix_transform
 gtc/matrix_transform.hppGLM_GTC_matrix_transform
 matrix_transform_2d.hppGLM_GTX_matrix_transform_2d
 mixed_product.hppGLM_GTX_mixed_producte
 noise.hppGLM_GTC_noise
 norm.hppGLM_GTX_norm
 normal.hppGLM_GTX_normal
 normalize_dot.hppGLM_GTX_normalize_dot
 number_precision.hppGLM_GTX_number_precision
 optimum_pow.hppGLM_GTX_optimum_pow
 orthonormalize.hppGLM_GTX_orthonormalize
 gtc/packing.hppGLM_GTC_packing
 packing.hppCore features
 perpendicular.hppGLM_GTX_perpendicular
 polar_coordinates.hppGLM_GTX_polar_coordinates
 projection.hppGLM_GTX_projection
 qualifier.hpp
 gtc/quaternion.hppGLM_GTC_quaternion
 gtx/quaternion.hppGLM_GTX_quaternion
 quaternion_common.hppGLM_EXT_quaternion_common
 quaternion_double.hppGLM_EXT_quaternion_double
 quaternion_double_precision.hppGLM_EXT_quaternion_double_precision
 quaternion_exponential.hppGLM_EXT_quaternion_exponential
 quaternion_float.hppGLM_EXT_quaternion_float
 quaternion_float_precision.hppGLM_EXT_quaternion_float_precision
 quaternion_geometric.hppGLM_EXT_quaternion_geometric
 quaternion_relational.hppGLM_EXT_quaternion_relational
 quaternion_transform.hppGLM_EXT_quaternion_transform
 quaternion_trigonometric.hppGLM_EXT_quaternion_trigonometric
 random.hppGLM_GTC_random
 range.hppGLM_GTX_range
 raw_data.hppGLM_GTX_raw_data
 reciprocal.hppGLM_GTC_reciprocal
 rotate_normalized_axis.hppGLM_GTX_rotate_normalized_axis
 rotate_vector.hppGLM_GTX_rotate_vector
 round.hppGLM_GTC_round
 scalar_common.hppGLM_EXT_scalar_common
 scalar_constants.hppGLM_EXT_scalar_constants
 scalar_int_sized.hppGLM_EXT_scalar_int_sized
 scalar_integer.hppGLM_EXT_scalar_integer
 scalar_multiplication.hppExperimental extensions
 ext/scalar_relational.hppGLM_EXT_scalar_relational
 gtx/scalar_relational.hppGLM_GTX_scalar_relational
 scalar_uint_sized.hppGLM_EXT_scalar_uint_sized
 scalar_ulp.hppGLM_EXT_scalar_ulp
 setup.hpp
 spline.hppGLM_GTX_spline
 std_based_type.hppGLM_GTX_std_based_type
 string_cast.hppGLM_GTX_string_cast
 texture.hppGLM_GTX_texture
 transform.hppGLM_GTX_transform
 transform2.hppGLM_GTX_transform2
 trigonometric.hppCore features
 gtc/type_aligned.hppGLM_GTC_type_aligned
 gtx/type_aligned.hppGLM_GTX_type_aligned
 type_float.hpp
 type_half.hpp
 type_mat2x2.hppCore features
 type_mat2x3.hppCore features
 type_mat2x4.hppCore features
 type_mat3x2.hppCore features
 type_mat3x3.hppCore features
 type_mat3x4.hppCore features
 type_mat4x2.hppCore features
 type_mat4x3.hppCore features
 type_mat4x4.hppCore features
 type_precision.hppGLM_GTC_type_precision
 type_ptr.hppGLM_GTC_type_ptr
 type_quat.hppCore features
 type_trait.hppGLM_GTX_type_trait
 type_vec1.hppCore features
 type_vec2.hppCore features
 type_vec3.hppCore features
 type_vec4.hppCore features
 ulp.hppGLM_GTC_ulp
 vec1.hppGLM_GTC_vec1
 vec2.hppCore features
 vec3.hppCore features
 vec4.hppCore features
 vec_swizzle.hppGLM_GTX_vec_swizzle
 vector_angle.hppGLM_GTX_vector_angle
 vector_bool1.hppGLM_EXT_vector_bool1
 vector_bool1_precision.hppGLM_EXT_vector_bool1_precision
 vector_bool2.hppCore features
 vector_bool2_precision.hppCore features
 vector_bool3.hppCore features
 vector_bool3_precision.hppCore features
 vector_bool4.hppCore features
 vector_bool4_precision.hppCore features
 vector_common.hppGLM_EXT_vector_common
 vector_double1.hppGLM_EXT_vector_double1
 vector_double1_precision.hppGLM_EXT_vector_double1_precision
 vector_double2.hppCore features
 vector_double2_precision.hppCore features
 vector_double3.hppCore features
 vector_double3_precision.hppCore features
 vector_double4.hppCore features
 vector_double4_precision.hppCore features
 vector_float1.hppGLM_EXT_vector_float1
 vector_float1_precision.hppGLM_EXT_vector_float1_precision
 vector_float2.hppCore features
 vector_float2_precision.hppCore features
 vector_float3.hppCore features
 vector_float3_precision.hppCore features
 vector_float4.hppCore features
 vector_float4_precision.hppCore features
 vector_int1.hppGLM_EXT_vector_int1
 vector_int1_precision.hppGLM_EXT_vector_int1_precision
 vector_int2.hppCore features
 vector_int2_precision.hppCore features
 vector_int3.hppCore features
 vector_int3_precision.hppCore features
 vector_int4.hppCore features
 vector_int4_precision.hppCore features
 vector_integer.hppGLM_EXT_vector_integer
 vector_query.hppGLM_GTX_vector_query
 ext/vector_relational.hppGLM_EXT_vector_relational
 vector_relational.hppCore features
 vector_uint1.hppGLM_EXT_vector_uint1
 vector_uint1_precision.hppGLM_EXT_vector_uint1_precision
 vector_uint2.hppCore features
 vector_uint2_precision.hppCore features
 vector_uint3.hppCore features
 vector_uint3_precision.hppCore features
 vector_uint4.hppCore features
 vector_uint4_precision.hppCore features
 vector_ulp.hppGLM_EXT_vector_ulp
 wrap.hppGLM_GTX_wrap
-
-
- - - - diff --git a/tests/OpenGL/package/glm/doc/api/folderclosed.png b/tests/OpenGL/package/glm/doc/api/folderclosed.png deleted file mode 100644 index 2a4bb4a5..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/folderclosed.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/folderopen.png b/tests/OpenGL/package/glm/doc/api/folderopen.png deleted file mode 100644 index cac00780..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/folderopen.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/index.html b/tests/OpenGL/package/glm/doc/api/index.html deleted file mode 100644 index 5342648f..00000000 --- a/tests/OpenGL/package/glm/doc/api/index.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - -0.9.9 API documentation: OpenGL Mathematics (GLM) - - - - - - - - - - -
-
- - - - - - - -
-
0.9.9 API documentation -
-
-
- - - - -
- -
-
- - -
- -
- -
-
-
OpenGL Mathematics (GLM)
-
- - - - - diff --git a/tests/OpenGL/package/glm/doc/api/jquery.js b/tests/OpenGL/package/glm/doc/api/jquery.js deleted file mode 100644 index 1f4d0b47..00000000 --- a/tests/OpenGL/package/glm/doc/api/jquery.js +++ /dev/null @@ -1,68 +0,0 @@ -/*! - * jQuery JavaScript Library v1.7.1 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Mon Nov 21 21:11:03 2011 -0500 - */ -(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); -/*! - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! - * jQuery UI 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! - * jQuery UI Widget 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Widget - */ -(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! - * jQuery UI Mouse 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Mouse - * - * Depends: - * jquery.ui.widget.js - */ -(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! - * jQuery hashchange event - v1.3 - 7/21/2010 - * http://benalman.com/projects/jquery-hashchange-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ -(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' - - -
-
-
Modules
-
-
-
Here is a list of all modules:
-
[detail level 12]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 Core featuresFeatures that implement in C++ the GLSL specification as closely as possible
 Stable extensionsAdditional features not specified by GLSL specification
 Recommended extensionsAdditional features not specified by GLSL specification
 Experimental extensionsExperimental features not specified by GLSL specification
- - - - - - diff --git a/tests/OpenGL/package/glm/doc/api/nav_f.png b/tests/OpenGL/package/glm/doc/api/nav_f.png deleted file mode 100644 index c77a42e7..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/nav_f.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/nav_g.png b/tests/OpenGL/package/glm/doc/api/nav_g.png deleted file mode 100644 index 2093a237..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/nav_g.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/nav_h.png b/tests/OpenGL/package/glm/doc/api/nav_h.png deleted file mode 100644 index 249a852f..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/nav_h.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/open.png b/tests/OpenGL/package/glm/doc/api/open.png deleted file mode 100644 index a4d70975..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/open.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/search/all_0.html b/tests/OpenGL/package/glm/doc/api/search/all_0.html deleted file mode 100644 index 1d469500..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_0.js b/tests/OpenGL/package/glm/doc/api/search/all_0.js deleted file mode 100644 index 448238b8..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_0.js +++ /dev/null @@ -1,209 +0,0 @@ -var searchData= -[ - ['abs',['abs',['../a00241.html#ga439e60a72eadecfeda2df5449c613a64',1,'glm::abs(genType x)'],['../a00241.html#ga81d3abddd0ef0c8de579bc541ecadab6',1,'glm::abs(vec< L, T, Q > const &x)']]], - ['acos',['acos',['../a00373.html#gacc9b092df8257c68f19c9053703e2563',1,'glm']]], - ['acosh',['acosh',['../a00373.html#ga858f35dc66fd2688f20c52b5f25be76a',1,'glm']]], - ['acot',['acot',['../a00301.html#gaeadfb9c9d71093f7865b2ba2ca8d104d',1,'glm']]], - ['acoth',['acoth',['../a00301.html#gafaca98a7100170db8841f446282debfa',1,'glm']]], - ['acsc',['acsc',['../a00301.html#ga1b4bed91476b9b915e76b4a30236d330',1,'glm']]], - ['acsch',['acsch',['../a00301.html#ga4b50aa5e5afc7e19ec113ab91596c576',1,'glm']]], - ['adjugate',['adjugate',['../a00339.html#ga40a38402a30860af6e508fe76211e659',1,'glm::adjugate(mat< 2, 2, T, Q > const &m)'],['../a00339.html#gaddb09f7abc1a9c56a243d32ff3538be6',1,'glm::adjugate(mat< 3, 3, T, Q > const &m)'],['../a00339.html#ga9aaa7d1f40391b0b5cacccb60e104ba8',1,'glm::adjugate(mat< 4, 4, T, Q > const &m)']]], - ['affineinverse',['affineInverse',['../a00295.html#gae0fcc5fc8783291f9702272de428fa0e',1,'glm']]], - ['aligned_5fbvec1',['aligned_bvec1',['../a00303.html#ga780a35f764020f553a9601a3fcdcd059',1,'glm']]], - ['aligned_5fbvec2',['aligned_bvec2',['../a00303.html#gae766b317c5afec852bfb3d74a3c54bc8',1,'glm']]], - ['aligned_5fbvec3',['aligned_bvec3',['../a00303.html#gae1964ba70d15915e5b710926decbb3cb',1,'glm']]], - ['aligned_5fbvec4',['aligned_bvec4',['../a00303.html#gae164a1f7879f828bc35e50b79d786b05',1,'glm']]], - ['aligned_5fdmat2',['aligned_dmat2',['../a00303.html#ga6783859382677d35fcd5dac7dcbefdbd',1,'glm']]], - ['aligned_5fdmat2x2',['aligned_dmat2x2',['../a00303.html#ga449a3ec2dde6b6bb4bb94c49a6aad388',1,'glm']]], - ['aligned_5fdmat2x3',['aligned_dmat2x3',['../a00303.html#ga53d519a7b1bfb69076b3ec206a6b3bd1',1,'glm']]], - ['aligned_5fdmat2x4',['aligned_dmat2x4',['../a00303.html#ga5ccb2baeb0ab57b818c24e0d486c59d0',1,'glm']]], - ['aligned_5fdmat3',['aligned_dmat3',['../a00303.html#ga19aa695ffdb45ce29f7ea0b5029627de',1,'glm']]], - ['aligned_5fdmat3x2',['aligned_dmat3x2',['../a00303.html#ga5f5123d834bd1170edf8c386834e112c',1,'glm']]], - ['aligned_5fdmat3x3',['aligned_dmat3x3',['../a00303.html#ga635bf3732281a2c2ca54d8f9d33d178f',1,'glm']]], - ['aligned_5fdmat3x4',['aligned_dmat3x4',['../a00303.html#gaf488c6ad88c185054595d4d5c7ba5b9d',1,'glm']]], - ['aligned_5fdmat4',['aligned_dmat4',['../a00303.html#ga001bb387ae8192fa94dbd8b23b600439',1,'glm']]], - ['aligned_5fdmat4x2',['aligned_dmat4x2',['../a00303.html#gaa409cfb737bd59b68dc683e9b03930cc',1,'glm']]], - ['aligned_5fdmat4x3',['aligned_dmat4x3',['../a00303.html#ga621e89ca1dbdcb7b5a3e7de237c44121',1,'glm']]], - ['aligned_5fdmat4x4',['aligned_dmat4x4',['../a00303.html#gac9bda778d0b7ad82f656dab99b71857a',1,'glm']]], - ['aligned_5fdvec1',['aligned_dvec1',['../a00303.html#ga4974f46ae5a19415d91316960a53617a',1,'glm']]], - ['aligned_5fdvec2',['aligned_dvec2',['../a00303.html#ga18d859f87122b2b3b2992ffe86dbebc0',1,'glm']]], - ['aligned_5fdvec3',['aligned_dvec3',['../a00303.html#gaa37869eea77d28419b2fb0ff70b69bf0',1,'glm']]], - ['aligned_5fdvec4',['aligned_dvec4',['../a00303.html#ga8a9f0a4795ccc442fa9901845026f9f5',1,'glm']]], - ['aligned_5fhighp_5fbvec1',['aligned_highp_bvec1',['../a00303.html#ga862843a45b01c35ffe4d44c47ea774ad',1,'glm']]], - ['aligned_5fhighp_5fbvec2',['aligned_highp_bvec2',['../a00303.html#ga0731b593c5e33559954c80f8687e76c6',1,'glm']]], - ['aligned_5fhighp_5fbvec3',['aligned_highp_bvec3',['../a00303.html#ga0913bdf048d0cb74af1d2512aec675bc',1,'glm']]], - ['aligned_5fhighp_5fbvec4',['aligned_highp_bvec4',['../a00303.html#ga9df1d0c425852cf63a57e533b7a83f4f',1,'glm']]], - ['aligned_5fhighp_5fdmat2',['aligned_highp_dmat2',['../a00303.html#ga3a7eeae43cb7673e14cc89bf02f7dd45',1,'glm']]], - ['aligned_5fhighp_5fdmat2x2',['aligned_highp_dmat2x2',['../a00303.html#gaef26dfe3855a91644665b55c9096a8c8',1,'glm']]], - ['aligned_5fhighp_5fdmat2x3',['aligned_highp_dmat2x3',['../a00303.html#gaa7c9d4ab7ab651cdf8001fe7843e238b',1,'glm']]], - ['aligned_5fhighp_5fdmat2x4',['aligned_highp_dmat2x4',['../a00303.html#gaa0d2b8a75f1908dcf32c27f8524bdced',1,'glm']]], - ['aligned_5fhighp_5fdmat3',['aligned_highp_dmat3',['../a00303.html#gad8f6abb2c9994850b5d5c04a5f979ed8',1,'glm']]], - ['aligned_5fhighp_5fdmat3x2',['aligned_highp_dmat3x2',['../a00303.html#gab069b2fc2ec785fc4e193cf26c022679',1,'glm']]], - ['aligned_5fhighp_5fdmat3x3',['aligned_highp_dmat3x3',['../a00303.html#ga66073b1ddef34b681741f572338ddb8e',1,'glm']]], - ['aligned_5fhighp_5fdmat3x4',['aligned_highp_dmat3x4',['../a00303.html#ga683c8ca66de323ea533a760abedd0efc',1,'glm']]], - ['aligned_5fhighp_5fdmat4',['aligned_highp_dmat4',['../a00303.html#gacaa7407ea00ffdd322ce86a57adb547e',1,'glm']]], - ['aligned_5fhighp_5fdmat4x2',['aligned_highp_dmat4x2',['../a00303.html#ga93a23ca3d42818d56e0702213c66354b',1,'glm']]], - ['aligned_5fhighp_5fdmat4x3',['aligned_highp_dmat4x3',['../a00303.html#gacab7374b560745cb1d0a306a90353f58',1,'glm']]], - ['aligned_5fhighp_5fdmat4x4',['aligned_highp_dmat4x4',['../a00303.html#ga1fbfba14368b742972d3b58a0a303682',1,'glm']]], - ['aligned_5fhighp_5fdvec1',['aligned_highp_dvec1',['../a00303.html#gaf0448b0f7ceb8273f7eda3a92205eefc',1,'glm']]], - ['aligned_5fhighp_5fdvec2',['aligned_highp_dvec2',['../a00303.html#gab173a333e6b7ce153ceba66ac4a321cf',1,'glm']]], - ['aligned_5fhighp_5fdvec3',['aligned_highp_dvec3',['../a00303.html#gae94ef61edfa047d05bc69b6065fc42ba',1,'glm']]], - ['aligned_5fhighp_5fdvec4',['aligned_highp_dvec4',['../a00303.html#ga8fad35c5677f228e261fe541f15363a4',1,'glm']]], - ['aligned_5fhighp_5fivec1',['aligned_highp_ivec1',['../a00303.html#gad63b8c5b4dc0500d54d7414ef555178f',1,'glm']]], - ['aligned_5fhighp_5fivec2',['aligned_highp_ivec2',['../a00303.html#ga41563650f36cb7f479e080de21e08418',1,'glm']]], - ['aligned_5fhighp_5fivec3',['aligned_highp_ivec3',['../a00303.html#ga6eca5170bb35eac90b4972590fd31a06',1,'glm']]], - ['aligned_5fhighp_5fivec4',['aligned_highp_ivec4',['../a00303.html#ga31bfa801e1579fdba752ec3f7a45ec91',1,'glm']]], - ['aligned_5fhighp_5fmat2',['aligned_highp_mat2',['../a00303.html#gaf9db5e8a929c317da5aa12cc53741b63',1,'glm']]], - ['aligned_5fhighp_5fmat2x2',['aligned_highp_mat2x2',['../a00303.html#gab559d943abf92bc588bcd3f4c0e4664b',1,'glm']]], - ['aligned_5fhighp_5fmat2x3',['aligned_highp_mat2x3',['../a00303.html#ga50c9af5aa3a848956d625fc64dc8488e',1,'glm']]], - ['aligned_5fhighp_5fmat2x4',['aligned_highp_mat2x4',['../a00303.html#ga0edcfdd179f8a158342eead48a4d0c2a',1,'glm']]], - ['aligned_5fhighp_5fmat3',['aligned_highp_mat3',['../a00303.html#gabab3afcc04459c7b123604ae5dc663f6',1,'glm']]], - ['aligned_5fhighp_5fmat3x2',['aligned_highp_mat3x2',['../a00303.html#ga9fc2167b47c9be9295f2d8eea7f0ca75',1,'glm']]], - ['aligned_5fhighp_5fmat3x3',['aligned_highp_mat3x3',['../a00303.html#ga2f7b8c99ba6f2d07c73a195a8143c259',1,'glm']]], - ['aligned_5fhighp_5fmat3x4',['aligned_highp_mat3x4',['../a00303.html#ga52e00afd0eb181e6738f40cf41787049',1,'glm']]], - ['aligned_5fhighp_5fmat4',['aligned_highp_mat4',['../a00303.html#ga058ae939bfdbcbb80521dd4a3b01afba',1,'glm']]], - ['aligned_5fhighp_5fmat4x2',['aligned_highp_mat4x2',['../a00303.html#ga84e1f5e0718952a079b748825c03f956',1,'glm']]], - ['aligned_5fhighp_5fmat4x3',['aligned_highp_mat4x3',['../a00303.html#gafff1684c4ff19b4a818138ccacc1e78d',1,'glm']]], - ['aligned_5fhighp_5fmat4x4',['aligned_highp_mat4x4',['../a00303.html#ga40d49648083a0498a12a4bb41ae6ece8',1,'glm']]], - ['aligned_5fhighp_5fuvec1',['aligned_highp_uvec1',['../a00303.html#ga5b80e28396c6ef7d32c6fd18df498451',1,'glm']]], - ['aligned_5fhighp_5fuvec2',['aligned_highp_uvec2',['../a00303.html#ga04db692662a4908beeaf5a5ba6e19483',1,'glm']]], - ['aligned_5fhighp_5fuvec3',['aligned_highp_uvec3',['../a00303.html#ga073fd6e8b241afade6d8afbd676b2667',1,'glm']]], - ['aligned_5fhighp_5fuvec4',['aligned_highp_uvec4',['../a00303.html#gabdd60462042859f876c17c7346c732a5',1,'glm']]], - ['aligned_5fhighp_5fvec1',['aligned_highp_vec1',['../a00303.html#ga4d0bd70d5fac49b800546d608b707513',1,'glm']]], - ['aligned_5fhighp_5fvec2',['aligned_highp_vec2',['../a00303.html#gac9f8482dde741fb6bab7248b81a45465',1,'glm']]], - ['aligned_5fhighp_5fvec3',['aligned_highp_vec3',['../a00303.html#ga65415d2d68c9cc0ca554524a8f5510b2',1,'glm']]], - ['aligned_5fhighp_5fvec4',['aligned_highp_vec4',['../a00303.html#ga7cb26d354dd69d23849c34c4fba88da9',1,'glm']]], - ['aligned_5fivec1',['aligned_ivec1',['../a00303.html#ga76298aed82a439063c3d55980c84aa0b',1,'glm']]], - ['aligned_5fivec2',['aligned_ivec2',['../a00303.html#gae4f38fd2c86cee6940986197777b3ca4',1,'glm']]], - ['aligned_5fivec3',['aligned_ivec3',['../a00303.html#ga32794322d294e5ace7fed4a61896f270',1,'glm']]], - ['aligned_5fivec4',['aligned_ivec4',['../a00303.html#ga7f79eae5927c9033d84617e49f6f34e4',1,'glm']]], - ['aligned_5flowp_5fbvec1',['aligned_lowp_bvec1',['../a00303.html#gac6036449ab1c4abf8efe1ea00fcdd1c9',1,'glm']]], - ['aligned_5flowp_5fbvec2',['aligned_lowp_bvec2',['../a00303.html#ga59fadcd3835646e419372ae8b43c5d37',1,'glm']]], - ['aligned_5flowp_5fbvec3',['aligned_lowp_bvec3',['../a00303.html#ga83aab4d191053f169c93a3e364f2e118',1,'glm']]], - ['aligned_5flowp_5fbvec4',['aligned_lowp_bvec4',['../a00303.html#gaa7a76555ee4853614e5755181a8dd54e',1,'glm']]], - ['aligned_5flowp_5fdmat2',['aligned_lowp_dmat2',['../a00303.html#ga79a90173d8faa9816dc852ce447d66ca',1,'glm']]], - ['aligned_5flowp_5fdmat2x2',['aligned_lowp_dmat2x2',['../a00303.html#ga07cb8e846666cbf56045b064fb553d2e',1,'glm']]], - ['aligned_5flowp_5fdmat2x3',['aligned_lowp_dmat2x3',['../a00303.html#ga7a4536b6e1f2ebb690f63816b5d7e48b',1,'glm']]], - ['aligned_5flowp_5fdmat2x4',['aligned_lowp_dmat2x4',['../a00303.html#gab0cf4f7c9a264941519acad286e055ea',1,'glm']]], - ['aligned_5flowp_5fdmat3',['aligned_lowp_dmat3',['../a00303.html#gac00e15efded8a57c9dec3aed0fb547e7',1,'glm']]], - ['aligned_5flowp_5fdmat3x2',['aligned_lowp_dmat3x2',['../a00303.html#gaa281a47d5d627313984d0f8df993b648',1,'glm']]], - ['aligned_5flowp_5fdmat3x3',['aligned_lowp_dmat3x3',['../a00303.html#ga7f3148a72355e39932d6855baca42ebc',1,'glm']]], - ['aligned_5flowp_5fdmat3x4',['aligned_lowp_dmat3x4',['../a00303.html#gaea3ccc5ef5b178e6e49b4fa1427605d3',1,'glm']]], - ['aligned_5flowp_5fdmat4',['aligned_lowp_dmat4',['../a00303.html#gab92c6d7d58d43dfb8147e9aedfe8351b',1,'glm']]], - ['aligned_5flowp_5fdmat4x2',['aligned_lowp_dmat4x2',['../a00303.html#gaf806dfdaffb2e9f7681b1cd2825898ce',1,'glm']]], - ['aligned_5flowp_5fdmat4x3',['aligned_lowp_dmat4x3',['../a00303.html#gab0931ac7807fa1428c7bbf249efcdf0d',1,'glm']]], - ['aligned_5flowp_5fdmat4x4',['aligned_lowp_dmat4x4',['../a00303.html#gad8220a93d2fca2dd707821b4ab6f809e',1,'glm']]], - ['aligned_5flowp_5fdvec1',['aligned_lowp_dvec1',['../a00303.html#ga7f8a2cc5a686e52b1615761f4978ca62',1,'glm']]], - ['aligned_5flowp_5fdvec2',['aligned_lowp_dvec2',['../a00303.html#ga0e37cff4a43cca866101f0a35f01db6d',1,'glm']]], - ['aligned_5flowp_5fdvec3',['aligned_lowp_dvec3',['../a00303.html#gab9e669c4efd52d3347fc6d5f6b20fd59',1,'glm']]], - ['aligned_5flowp_5fdvec4',['aligned_lowp_dvec4',['../a00303.html#ga226f5ec7a953cea559c16fe3aff9924f',1,'glm']]], - ['aligned_5flowp_5fivec1',['aligned_lowp_ivec1',['../a00303.html#ga1101d3a82b2e3f5f8828bd8f3adab3e1',1,'glm']]], - ['aligned_5flowp_5fivec2',['aligned_lowp_ivec2',['../a00303.html#ga44c4accad582cfbd7226a19b83b0cadc',1,'glm']]], - ['aligned_5flowp_5fivec3',['aligned_lowp_ivec3',['../a00303.html#ga65663f10a02e52cedcddbcfe36ddf38d',1,'glm']]], - ['aligned_5flowp_5fivec4',['aligned_lowp_ivec4',['../a00303.html#gaae92fcec8b2e0328ffbeac31cc4fc419',1,'glm']]], - ['aligned_5flowp_5fmat2',['aligned_lowp_mat2',['../a00303.html#ga17c424412207b00dba1cf587b099eea3',1,'glm']]], - ['aligned_5flowp_5fmat2x2',['aligned_lowp_mat2x2',['../a00303.html#ga0e44aeb930a47f9cbf2db15b56433b0f',1,'glm']]], - ['aligned_5flowp_5fmat2x3',['aligned_lowp_mat2x3',['../a00303.html#ga7dec6d96bc61312b1e56d137c9c74030',1,'glm']]], - ['aligned_5flowp_5fmat2x4',['aligned_lowp_mat2x4',['../a00303.html#gaa694fab1f8df5f658846573ba8ffc563',1,'glm']]], - ['aligned_5flowp_5fmat3',['aligned_lowp_mat3',['../a00303.html#ga1eb9076cc28ead5020fd3029fd0472c5',1,'glm']]], - ['aligned_5flowp_5fmat3x2',['aligned_lowp_mat3x2',['../a00303.html#ga2d6639f0bd777bae1ee0eba71cd7bfdc',1,'glm']]], - ['aligned_5flowp_5fmat3x3',['aligned_lowp_mat3x3',['../a00303.html#gaeaab04e378a90956eec8d68a99d777ed',1,'glm']]], - ['aligned_5flowp_5fmat3x4',['aligned_lowp_mat3x4',['../a00303.html#ga1f03696ab066572c6c044e63edf635a2',1,'glm']]], - ['aligned_5flowp_5fmat4',['aligned_lowp_mat4',['../a00303.html#ga25ea2f684e36aa5e978b4f2f86593824',1,'glm']]], - ['aligned_5flowp_5fmat4x2',['aligned_lowp_mat4x2',['../a00303.html#ga2cb16c3fdfb15e0719d942ee3b548bc4',1,'glm']]], - ['aligned_5flowp_5fmat4x3',['aligned_lowp_mat4x3',['../a00303.html#ga7e96981e872f17a780d9f1c22dc1f512',1,'glm']]], - ['aligned_5flowp_5fmat4x4',['aligned_lowp_mat4x4',['../a00303.html#gadae3dcfc22d28c64d0548cbfd9d08719',1,'glm']]], - ['aligned_5flowp_5fuvec1',['aligned_lowp_uvec1',['../a00303.html#gad09b93acc43c43423408d17a64f6d7ca',1,'glm']]], - ['aligned_5flowp_5fuvec2',['aligned_lowp_uvec2',['../a00303.html#ga6f94fcd28dde906fc6cad5f742b55c1a',1,'glm']]], - ['aligned_5flowp_5fuvec3',['aligned_lowp_uvec3',['../a00303.html#ga9e9f006970b1a00862e3e6e599eedd4c',1,'glm']]], - ['aligned_5flowp_5fuvec4',['aligned_lowp_uvec4',['../a00303.html#ga46b1b0b9eb8625a5d69137bd66cd13dc',1,'glm']]], - ['aligned_5flowp_5fvec1',['aligned_lowp_vec1',['../a00303.html#gab34aee3d5e121c543fea11d2c50ecc43',1,'glm']]], - ['aligned_5flowp_5fvec2',['aligned_lowp_vec2',['../a00303.html#ga53ac5d252317f1fa43c2ef921857bf13',1,'glm']]], - ['aligned_5flowp_5fvec3',['aligned_lowp_vec3',['../a00303.html#ga98f0b5cd65fce164ff1367c2a3b3aa1e',1,'glm']]], - ['aligned_5flowp_5fvec4',['aligned_lowp_vec4',['../a00303.html#ga82f7275d6102593a69ce38cdad680409',1,'glm']]], - ['aligned_5fmat2',['aligned_mat2',['../a00303.html#ga5a8a5f8c47cd7d5502dd9932f83472b9',1,'glm']]], - ['aligned_5fmat2x2',['aligned_mat2x2',['../a00303.html#gabb04f459d81d753d278b2072e2375e8e',1,'glm']]], - ['aligned_5fmat2x3',['aligned_mat2x3',['../a00303.html#ga832476bb1c59ef673db37433ff34e399',1,'glm']]], - ['aligned_5fmat2x4',['aligned_mat2x4',['../a00303.html#gadab11a7504430825b648ff7c7e36b725',1,'glm']]], - ['aligned_5fmat3',['aligned_mat3',['../a00303.html#ga43a92a24ca863e0e0f3b65834b3cf714',1,'glm']]], - ['aligned_5fmat3x2',['aligned_mat3x2',['../a00303.html#ga5c0df24ba85eafafc0eb0c90690510ed',1,'glm']]], - ['aligned_5fmat3x3',['aligned_mat3x3',['../a00303.html#gadb065dbe5c11271fef8cf2ea8608f187',1,'glm']]], - ['aligned_5fmat3x4',['aligned_mat3x4',['../a00303.html#ga88061c72c997b94c420f2b0a60d9df26',1,'glm']]], - ['aligned_5fmat4',['aligned_mat4',['../a00303.html#gab0fddcf95dd51cbcbf624ea7c40dfeb8',1,'glm']]], - ['aligned_5fmat4x2',['aligned_mat4x2',['../a00303.html#gac9a2d0fb815fd5c2bd58b869c55e32d3',1,'glm']]], - ['aligned_5fmat4x3',['aligned_mat4x3',['../a00303.html#ga452bbbfd26e244de216e4d004d50bb74',1,'glm']]], - ['aligned_5fmat4x4',['aligned_mat4x4',['../a00303.html#ga8b8fb86973a0b768c5bd802c92fac1a1',1,'glm']]], - ['aligned_5fmediump_5fbvec1',['aligned_mediump_bvec1',['../a00303.html#gadd3b8bd71a758f7fb0da8e525156f34e',1,'glm']]], - ['aligned_5fmediump_5fbvec2',['aligned_mediump_bvec2',['../a00303.html#gacb183eb5e67ec0d0ea5a016cba962810',1,'glm']]], - ['aligned_5fmediump_5fbvec3',['aligned_mediump_bvec3',['../a00303.html#gacfa4a542f1b20a5b63ad702dfb6fd587',1,'glm']]], - ['aligned_5fmediump_5fbvec4',['aligned_mediump_bvec4',['../a00303.html#ga91bc1f513bb9b0fd60281d57ded9a48c',1,'glm']]], - ['aligned_5fmediump_5fdmat2',['aligned_mediump_dmat2',['../a00303.html#ga62a2dfd668c91072b72c3109fc6cda28',1,'glm']]], - ['aligned_5fmediump_5fdmat2x2',['aligned_mediump_dmat2x2',['../a00303.html#ga9b7feec247d378dd407ba81f56ea96c8',1,'glm']]], - ['aligned_5fmediump_5fdmat2x3',['aligned_mediump_dmat2x3',['../a00303.html#gafcb189f4f93648fe7ca802ca4aca2eb8',1,'glm']]], - ['aligned_5fmediump_5fdmat2x4',['aligned_mediump_dmat2x4',['../a00303.html#ga92f8873e3bbd5ca1323c8bbe5725cc5e',1,'glm']]], - ['aligned_5fmediump_5fdmat3',['aligned_mediump_dmat3',['../a00303.html#ga6dc2832b747c00e0a0df621aba196960',1,'glm']]], - ['aligned_5fmediump_5fdmat3x2',['aligned_mediump_dmat3x2',['../a00303.html#ga5a97f0355d801de3444d42c1d5b40438',1,'glm']]], - ['aligned_5fmediump_5fdmat3x3',['aligned_mediump_dmat3x3',['../a00303.html#ga649d0acf01054b17e679cf00e150e025',1,'glm']]], - ['aligned_5fmediump_5fdmat3x4',['aligned_mediump_dmat3x4',['../a00303.html#ga45e155a4840f69b2fa4ed8047a676860',1,'glm']]], - ['aligned_5fmediump_5fdmat4',['aligned_mediump_dmat4',['../a00303.html#ga8a9376d82f0e946e25137eb55543e6ce',1,'glm']]], - ['aligned_5fmediump_5fdmat4x2',['aligned_mediump_dmat4x2',['../a00303.html#gabc25e547f4de4af62403492532cd1b6d',1,'glm']]], - ['aligned_5fmediump_5fdmat4x3',['aligned_mediump_dmat4x3',['../a00303.html#gae84f4763ecdc7457ecb7930bad12057c',1,'glm']]], - ['aligned_5fmediump_5fdmat4x4',['aligned_mediump_dmat4x4',['../a00303.html#gaa292ebaa907afdecb2d5967fb4fb1247',1,'glm']]], - ['aligned_5fmediump_5fdvec1',['aligned_mediump_dvec1',['../a00303.html#ga7180b685c581adb224406a7f831608e3',1,'glm']]], - ['aligned_5fmediump_5fdvec2',['aligned_mediump_dvec2',['../a00303.html#ga9af1eabe22f569e70d9893be72eda0f5',1,'glm']]], - ['aligned_5fmediump_5fdvec3',['aligned_mediump_dvec3',['../a00303.html#ga058e7ddab1428e47f2197bdd3a5a6953',1,'glm']]], - ['aligned_5fmediump_5fdvec4',['aligned_mediump_dvec4',['../a00303.html#gaffd747ea2aea1e69c2ecb04e68521b21',1,'glm']]], - ['aligned_5fmediump_5fivec1',['aligned_mediump_ivec1',['../a00303.html#ga20e63dd980b81af10cadbbe219316650',1,'glm']]], - ['aligned_5fmediump_5fivec2',['aligned_mediump_ivec2',['../a00303.html#gaea13d89d49daca2c796aeaa82fc2c2f2',1,'glm']]], - ['aligned_5fmediump_5fivec3',['aligned_mediump_ivec3',['../a00303.html#gabbf0f15e9c3d9868e43241ad018f82bd',1,'glm']]], - ['aligned_5fmediump_5fivec4',['aligned_mediump_ivec4',['../a00303.html#ga6099dd7878d0a78101a4250d8cd2d736',1,'glm']]], - ['aligned_5fmediump_5fmat2',['aligned_mediump_mat2',['../a00303.html#gaf6f041b212c57664d88bc6aefb7e36f3',1,'glm']]], - ['aligned_5fmediump_5fmat2x2',['aligned_mediump_mat2x2',['../a00303.html#ga04bf49316ee777d42fcfe681ee37d7be',1,'glm']]], - ['aligned_5fmediump_5fmat2x3',['aligned_mediump_mat2x3',['../a00303.html#ga26a0b61e444a51a37b9737cf4d84291b',1,'glm']]], - ['aligned_5fmediump_5fmat2x4',['aligned_mediump_mat2x4',['../a00303.html#ga163facc9ed2692ea1300ed57c5d12b17',1,'glm']]], - ['aligned_5fmediump_5fmat3',['aligned_mediump_mat3',['../a00303.html#ga3b76ba17ae5d53debeb6f7e55919a57c',1,'glm']]], - ['aligned_5fmediump_5fmat3x2',['aligned_mediump_mat3x2',['../a00303.html#ga80dee705d714300378e0847f45059097',1,'glm']]], - ['aligned_5fmediump_5fmat3x3',['aligned_mediump_mat3x3',['../a00303.html#ga721f5404caf40d68962dcc0529de71d9',1,'glm']]], - ['aligned_5fmediump_5fmat3x4',['aligned_mediump_mat3x4',['../a00303.html#ga98f4dc6722a2541a990918c074075359',1,'glm']]], - ['aligned_5fmediump_5fmat4',['aligned_mediump_mat4',['../a00303.html#gaeefee8317192174596852ce19b602720',1,'glm']]], - ['aligned_5fmediump_5fmat4x2',['aligned_mediump_mat4x2',['../a00303.html#ga46f372a006345c252a41267657cc22c0',1,'glm']]], - ['aligned_5fmediump_5fmat4x3',['aligned_mediump_mat4x3',['../a00303.html#ga0effece4545acdebdc2a5512a303110e',1,'glm']]], - ['aligned_5fmediump_5fmat4x4',['aligned_mediump_mat4x4',['../a00303.html#ga312864244cae4e8f10f478cffd0f76de',1,'glm']]], - ['aligned_5fmediump_5fuvec1',['aligned_mediump_uvec1',['../a00303.html#gacb78126ea2eb779b41c7511128ff1283',1,'glm']]], - ['aligned_5fmediump_5fuvec2',['aligned_mediump_uvec2',['../a00303.html#ga081d53e0a71443d0b68ea61c870f9adc',1,'glm']]], - ['aligned_5fmediump_5fuvec3',['aligned_mediump_uvec3',['../a00303.html#gad6fc921bdde2bdbc7e09b028e1e9b379',1,'glm']]], - ['aligned_5fmediump_5fuvec4',['aligned_mediump_uvec4',['../a00303.html#ga73ea0c1ba31580e107d21270883f51fc',1,'glm']]], - ['aligned_5fmediump_5fvec1',['aligned_mediump_vec1',['../a00303.html#ga6b797eec76fa471e300158f3453b3b2e',1,'glm']]], - ['aligned_5fmediump_5fvec2',['aligned_mediump_vec2',['../a00303.html#ga026a55ddbf2bafb1432f1157a2708616',1,'glm']]], - ['aligned_5fmediump_5fvec3',['aligned_mediump_vec3',['../a00303.html#ga3a25e494173f6a64637b08a1b50a2132',1,'glm']]], - ['aligned_5fmediump_5fvec4',['aligned_mediump_vec4',['../a00303.html#ga320d1c661cff2ef214eb50241f2928b2',1,'glm']]], - ['aligned_5fuvec1',['aligned_uvec1',['../a00303.html#ga1ff8ed402c93d280ff0597c1c5e7c548',1,'glm']]], - ['aligned_5fuvec2',['aligned_uvec2',['../a00303.html#ga074137e3be58528d67041c223d49f398',1,'glm']]], - ['aligned_5fuvec3',['aligned_uvec3',['../a00303.html#ga2a8d9c3046f89d854eb758adfa0811c0',1,'glm']]], - ['aligned_5fuvec4',['aligned_uvec4',['../a00303.html#gabf842c45eea186170c267a328e3f3b7d',1,'glm']]], - ['aligned_5fvec1',['aligned_vec1',['../a00303.html#ga05e6d4c908965d04191c2070a8d0a65e',1,'glm']]], - ['aligned_5fvec2',['aligned_vec2',['../a00303.html#ga0682462f8096a226773e20fac993cde5',1,'glm']]], - ['aligned_5fvec3',['aligned_vec3',['../a00303.html#ga7cf643b66664e0cd3c48759ae66c2bd0',1,'glm']]], - ['aligned_5fvec4',['aligned_vec4',['../a00303.html#ga85d89e83cb8137e1be1446de8c3b643a',1,'glm']]], - ['all',['all',['../a00374.html#ga87e53f50b679f5f95c5cb4780311b3dd',1,'glm']]], - ['angle',['angle',['../a00257.html#ga8aa248b31d5ade470c87304df5eb7bd8',1,'glm::angle(qua< T, Q > const &x)'],['../a00367.html#ga2e2917b4cb75ca3d043ac15ff88f14e1',1,'glm::angle(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], - ['angleaxis',['angleAxis',['../a00257.html#ga5c0095cfcb218c75a4b79d7687950036',1,'glm']]], - ['any',['any',['../a00374.html#ga911b3f8e41459dd551ccb6d385d91061',1,'glm']]], - ['arecollinear',['areCollinear',['../a00368.html#ga13da4a787a2ff70e95d561fb19ff91b4',1,'glm']]], - ['areorthogonal',['areOrthogonal',['../a00368.html#gac7b95b3f798e3c293262b2bdaad47c57',1,'glm']]], - ['areorthonormal',['areOrthonormal',['../a00368.html#ga1b091c3d7f9ee3b0708311c001c293e3',1,'glm']]], - ['asec',['asec',['../a00301.html#ga2c5b7f962c2c9ff684e6d2de48db1f10',1,'glm']]], - ['asech',['asech',['../a00301.html#gaec7586dccfe431f850d006f3824b8ca6',1,'glm']]], - ['asin',['asin',['../a00373.html#ga0552d2df4865fa8c3d7cfc3ec2caac73',1,'glm']]], - ['asinh',['asinh',['../a00373.html#ga3ef16b501ee859fddde88e22192a5950',1,'glm']]], - ['associated_5fmin_5fmax_2ehpp',['associated_min_max.hpp',['../a00007.html',1,'']]], - ['associatedmax',['associatedMax',['../a00308.html#ga7d9c8785230c8db60f72ec8975f1ba45',1,'glm::associatedMax(T x, U a, T y, U b)'],['../a00308.html#ga5c6758bc50aa7fbe700f87123a045aad',1,'glm::associatedMax(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)'],['../a00308.html#ga0d169d6ce26b03248df175f39005d77f',1,'glm::associatedMax(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b)'],['../a00308.html#ga4086269afabcb81dd7ded33cb3448653',1,'glm::associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)'],['../a00308.html#gaec891e363d91abbf3a4443cf2f652209',1,'glm::associatedMax(T x, U a, T y, U b, T z, U c)'],['../a00308.html#gab84fdc35016a31e8cd0cbb8296bddf7c',1,'glm::associatedMax(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)'],['../a00308.html#gadd2a2002f4f2144bbc39eb2336dd2fba',1,'glm::associatedMax(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c)'],['../a00308.html#ga19f59d1141a51a3b2108a9807af78f7f',1,'glm::associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c)'],['../a00308.html#ga3038ffcb43eaa6af75897a99a5047ccc',1,'glm::associatedMax(T x, U a, T y, U b, T z, U c, T w, U d)'],['../a00308.html#gaf5ab0c428f8d1cd9e3b45fcfbf6423a6',1,'glm::associatedMax(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)'],['../a00308.html#ga11477c2c4b5b0bfd1b72b29df3725a9d',1,'glm::associatedMax(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)'],['../a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb',1,'glm::associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)']]], - ['associatedmin',['associatedMin',['../a00308.html#gacc01bd272359572fc28437ae214a02df',1,'glm::associatedMin(T x, U a, T y, U b)'],['../a00308.html#gac2f0dff90948f2e44386a5eafd941d1c',1,'glm::associatedMin(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)'],['../a00308.html#gacfec519c820331d023ef53a511749319',1,'glm::associatedMin(T x, const vec< L, U, Q > &a, T y, const vec< L, U, Q > &b)'],['../a00308.html#ga4757c7cab2d809124a8525d0a9deeb37',1,'glm::associatedMin(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)'],['../a00308.html#gad0aa8f86259a26d839d34a3577a923fc',1,'glm::associatedMin(T x, U a, T y, U b, T z, U c)'],['../a00308.html#ga723e5411cebc7ffbd5c81ffeec61127d',1,'glm::associatedMin(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)'],['../a00308.html#ga432224ebe2085eaa2b63a077ecbbbff6',1,'glm::associatedMin(T x, U a, T y, U b, T z, U c, T w, U d)'],['../a00308.html#ga66b08118bc88f0494bcacb7cdb940556',1,'glm::associatedMin(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)'],['../a00308.html#ga78c28fde1a7080fb7420bd88e68c6c68',1,'glm::associatedMin(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)'],['../a00308.html#ga2db7e351994baee78540a562d4bb6d3b',1,'glm::associatedMin(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)']]], - ['atan',['atan',['../a00373.html#gac61629f3a4aa14057e7a8cae002291db',1,'glm::atan(vec< L, T, Q > const &y, vec< L, T, Q > const &x)'],['../a00373.html#ga5229f087eaccbc466f1c609ce3107b95',1,'glm::atan(vec< L, T, Q > const &y_over_x)']]], - ['atan2',['atan2',['../a00315.html#gac63011205bf6d0be82589dc56dd26708',1,'glm::atan2(T x, T y)'],['../a00315.html#ga83bc41bd6f89113ee8006576b12bfc50',1,'glm::atan2(const vec< 2, T, Q > &x, const vec< 2, T, Q > &y)'],['../a00315.html#gac39314f5087e7e51e592897cabbc1927',1,'glm::atan2(const vec< 3, T, Q > &x, const vec< 3, T, Q > &y)'],['../a00315.html#gaba86c28da7bf5bdac64fecf7d56e8ff3',1,'glm::atan2(const vec< 4, T, Q > &x, const vec< 4, T, Q > &y)']]], - ['atanh',['atanh',['../a00373.html#gabc925650e618357d07da255531658b87',1,'glm']]], - ['axis',['axis',['../a00257.html#ga764254f10248b505e936e5309a88c23d',1,'glm']]], - ['axisangle',['axisAngle',['../a00337.html#gafefe32ce5a90a135287ba34fac3623bc',1,'glm']]], - ['axisanglematrix',['axisAngleMatrix',['../a00337.html#ga3a788e2f5223397df5c426413ecc2f6b',1,'glm']]], - ['angle_20and_20trigonometry_20functions',['Angle and Trigonometry Functions',['../a00373.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_1.html b/tests/OpenGL/package/glm/doc/api/search/all_1.html deleted file mode 100644 index 1fbc509c..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_1.js b/tests/OpenGL/package/glm/doc/api/search/all_1.js deleted file mode 100644 index aad8fc7f..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_1.js +++ /dev/null @@ -1,41 +0,0 @@ -var searchData= -[ - ['backeasein',['backEaseIn',['../a00318.html#ga93cddcdb6347a44d5927cc2bf2570816',1,'glm::backEaseIn(genType const &a)'],['../a00318.html#ga33777c9dd98f61d9472f96aafdf2bd36',1,'glm::backEaseIn(genType const &a, genType const &o)']]], - ['backeaseinout',['backEaseInOut',['../a00318.html#gace6d24722a2f6722b56398206eb810bb',1,'glm::backEaseInOut(genType const &a)'],['../a00318.html#ga68a7b760f2afdfab298d5cd6d7611fb1',1,'glm::backEaseInOut(genType const &a, genType const &o)']]], - ['backeaseout',['backEaseOut',['../a00318.html#gabf25069fa906413c858fd46903d520b9',1,'glm::backEaseOut(genType const &a)'],['../a00318.html#ga640c1ac6fe9d277a197da69daf60ee4f',1,'glm::backEaseOut(genType const &a, genType const &o)']]], - ['ballrand',['ballRand',['../a00300.html#ga7c53b7797f3147af68a11c767679fa3f',1,'glm']]], - ['bit_2ehpp',['bit.hpp',['../a00008.html',1,'']]], - ['bitcount',['bitCount',['../a00370.html#ga44abfe3379e11cbd29425a843420d0d6',1,'glm::bitCount(genType v)'],['../a00370.html#gaac7b15e40bdea8d9aa4c4cb34049f7b5',1,'glm::bitCount(vec< L, T, Q > const &v)']]], - ['bitfield_2ehpp',['bitfield.hpp',['../a00009.html',1,'']]], - ['bitfielddeinterleave',['bitfieldDeinterleave',['../a00288.html#ga091d934233a2e121df91b8c7230357c8',1,'glm::bitfieldDeinterleave(glm::uint16 x)'],['../a00288.html#ga7d1cc24dfbcdd932c3a2abbb76235f98',1,'glm::bitfieldDeinterleave(glm::uint32 x)'],['../a00288.html#ga8dbb8c87092f33bd815dd8a840be5d60',1,'glm::bitfieldDeinterleave(glm::uint64 x)']]], - ['bitfieldextract',['bitfieldExtract',['../a00370.html#ga346b25ab11e793e91a4a69c8aa6819f2',1,'glm']]], - ['bitfieldfillone',['bitfieldFillOne',['../a00288.html#ga46f9295abe3b5c7658f5b13c7f819f0a',1,'glm::bitfieldFillOne(genIUType Value, int FirstBit, int BitCount)'],['../a00288.html#ga3e96dd1f0a4bc892f063251ed118c0c1',1,'glm::bitfieldFillOne(vec< L, T, Q > const &Value, int FirstBit, int BitCount)']]], - ['bitfieldfillzero',['bitfieldFillZero',['../a00288.html#ga697b86998b7d74ee0a69d8e9f8819fee',1,'glm::bitfieldFillZero(genIUType Value, int FirstBit, int BitCount)'],['../a00288.html#ga0d16c9acef4be79ea9b47c082a0cf7c2',1,'glm::bitfieldFillZero(vec< L, T, Q > const &Value, int FirstBit, int BitCount)']]], - ['bitfieldinsert',['bitfieldInsert',['../a00370.html#ga2e82992340d421fadb61a473df699b20',1,'glm']]], - ['bitfieldinterleave',['bitfieldInterleave',['../a00288.html#ga24cad0069f9a0450abd80b3e89501adf',1,'glm::bitfieldInterleave(int8 x, int8 y)'],['../a00288.html#ga9a4976a529aec2cee56525e1165da484',1,'glm::bitfieldInterleave(uint8 x, uint8 y)'],['../a00288.html#ga4a76bbca39c40153f3203d0a1926e142',1,'glm::bitfieldInterleave(u8vec2 const &v)'],['../a00288.html#gac51c33a394593f0631fa3aa5bb778809',1,'glm::bitfieldInterleave(int16 x, int16 y)'],['../a00288.html#ga94f3646a5667f4be56f8dcf3310e963f',1,'glm::bitfieldInterleave(uint16 x, uint16 y)'],['../a00288.html#ga406c4ee56af4ca37a73f449f154eca3e',1,'glm::bitfieldInterleave(u16vec2 const &v)'],['../a00288.html#gaebb756a24a0784e3d6fba8bd011ab77a',1,'glm::bitfieldInterleave(int32 x, int32 y)'],['../a00288.html#ga2f1e2b3fe699e7d897ae38b2115ddcbd',1,'glm::bitfieldInterleave(uint32 x, uint32 y)'],['../a00288.html#ga8cb17574d60abd6ade84bc57c10e8f78',1,'glm::bitfieldInterleave(u32vec2 const &v)'],['../a00288.html#ga8fdb724dccd4a07d57efc01147102137',1,'glm::bitfieldInterleave(int8 x, int8 y, int8 z)'],['../a00288.html#ga9fc2a0dd5dcf8b00e113f272a5feca93',1,'glm::bitfieldInterleave(uint8 x, uint8 y, uint8 z)'],['../a00288.html#gaa901c36a842fa5d126ea650549f17b24',1,'glm::bitfieldInterleave(int16 x, int16 y, int16 z)'],['../a00288.html#ga3afd6d38881fe3948c53d4214d2197fd',1,'glm::bitfieldInterleave(uint16 x, uint16 y, uint16 z)'],['../a00288.html#gad2075d96a6640121edaa98ea534102ca',1,'glm::bitfieldInterleave(int32 x, int32 y, int32 z)'],['../a00288.html#gab19fbc739fc0cf7247978602c36f7da8',1,'glm::bitfieldInterleave(uint32 x, uint32 y, uint32 z)'],['../a00288.html#ga8a44ae22f5c953b296c42d067dccbe6d',1,'glm::bitfieldInterleave(int8 x, int8 y, int8 z, int8 w)'],['../a00288.html#ga14bb274d54a3c26f4919dd7ed0dd0c36',1,'glm::bitfieldInterleave(uint8 x, uint8 y, uint8 z, uint8 w)'],['../a00288.html#ga180a63161e1319fbd5a53c84d0429c7a',1,'glm::bitfieldInterleave(int16 x, int16 y, int16 z, int16 w)'],['../a00288.html#gafca8768671a14c8016facccb66a89f26',1,'glm::bitfieldInterleave(uint16 x, uint16 y, uint16 z, uint16 w)']]], - ['bitfieldreverse',['bitfieldReverse',['../a00370.html#ga750a1d92464489b7711dee67aa3441b6',1,'glm']]], - ['bitfieldrotateleft',['bitfieldRotateLeft',['../a00288.html#ga2eb49678a344ce1495bdb5586d9896b9',1,'glm::bitfieldRotateLeft(genIUType In, int Shift)'],['../a00288.html#gae186317091b1a39214ebf79008d44a1e',1,'glm::bitfieldRotateLeft(vec< L, T, Q > const &In, int Shift)']]], - ['bitfieldrotateright',['bitfieldRotateRight',['../a00288.html#ga1c33d075c5fb8bd8dbfd5092bfc851ca',1,'glm::bitfieldRotateRight(genIUType In, int Shift)'],['../a00288.html#ga590488e1fc00a6cfe5d3bcaf93fbfe88',1,'glm::bitfieldRotateRight(vec< L, T, Q > const &In, int Shift)']]], - ['bool1',['bool1',['../a00315.html#gaddcd7aa2e30e61af5b38660613d3979e',1,'glm']]], - ['bool1x1',['bool1x1',['../a00315.html#ga7f895c936f0c29c8729afbbf22806090',1,'glm']]], - ['bool2',['bool2',['../a00315.html#gaa09ab65ec9c3c54305ff502e2b1fe6d9',1,'glm']]], - ['bool2x2',['bool2x2',['../a00315.html#gadb3703955e513632f98ba12fe051ba3e',1,'glm']]], - ['bool2x3',['bool2x3',['../a00315.html#ga9ae6ee155d0f90cb1ae5b6c4546738a0',1,'glm']]], - ['bool2x4',['bool2x4',['../a00315.html#ga4d7fa65be8e8e4ad6d920b45c44e471f',1,'glm']]], - ['bool3',['bool3',['../a00315.html#ga99629f818737f342204071ef8296b2ed',1,'glm']]], - ['bool3x2',['bool3x2',['../a00315.html#gac7d7311f7e0fa8b6163d96dab033a755',1,'glm']]], - ['bool3x3',['bool3x3',['../a00315.html#ga6c97b99aac3e302053ffb58aace9033c',1,'glm']]], - ['bool3x4',['bool3x4',['../a00315.html#gae7d6b679463d37d6c527d478fb470fdf',1,'glm']]], - ['bool4',['bool4',['../a00315.html#ga13c3200b82708f73faac6d7f09ec91a3',1,'glm']]], - ['bool4x2',['bool4x2',['../a00315.html#ga9ed830f52408b2f83c085063a3eaf1d0',1,'glm']]], - ['bool4x3',['bool4x3',['../a00315.html#gad0f5dc7f22c2065b1b06d57f1c0658fe',1,'glm']]], - ['bool4x4',['bool4x4',['../a00315.html#ga7d2a7d13986602ae2896bfaa394235d4',1,'glm']]], - ['bounceeasein',['bounceEaseIn',['../a00318.html#gaac30767f2e430b0c3fc859a4d59c7b5b',1,'glm']]], - ['bounceeaseinout',['bounceEaseInOut',['../a00318.html#gadf9f38eff1e5f4c2fa5b629a25ae413e',1,'glm']]], - ['bounceeaseout',['bounceEaseOut',['../a00318.html#ga94007005ff0dcfa0749ebfa2aec540b2',1,'glm']]], - ['bvec1',['bvec1',['../a00265.html#ga067af382616d93f8e850baae5154cdcc',1,'glm']]], - ['bvec2',['bvec2',['../a00281.html#ga0b6123e03653cc1bbe366fc55238a934',1,'glm']]], - ['bvec3',['bvec3',['../a00281.html#ga197151b72dfaf289daf98b361760ffe7',1,'glm']]], - ['bvec4',['bvec4',['../a00281.html#ga9f7b9712373ff4342d9114619b55f5e3',1,'glm']]], - ['byte',['byte',['../a00354.html#ga3005cb0d839d546c616becfa6602c607',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_10.html b/tests/OpenGL/package/glm/doc/api/search/all_10.html deleted file mode 100644 index 80581d5a..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_10.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_10.js b/tests/OpenGL/package/glm/doc/api/search/all_10.js deleted file mode 100644 index 481be8c2..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_10.js +++ /dev/null @@ -1,50 +0,0 @@ -var searchData= -[ - ['stable_20extensions',['Stable extensions',['../a00285.html',1,'']]], - ['saturate',['saturate',['../a00315.html#ga0fd09e616d122bc2ed9726682ffd44b7',1,'glm::saturate(T x)'],['../a00315.html#gaee97b8001c794a78a44f5d59f62a8aba',1,'glm::saturate(const vec< 2, T, Q > &x)'],['../a00315.html#ga39bfe3a421286ee31680d45c31ccc161',1,'glm::saturate(const vec< 3, T, Q > &x)'],['../a00315.html#ga356f8c3a7e7d6376d3d4b0a026407183',1,'glm::saturate(const vec< 4, T, Q > &x)']]], - ['saturation',['saturation',['../a00312.html#ga01a97152b44e1550edcac60bd849e884',1,'glm::saturation(T const s)'],['../a00312.html#ga2156cea600e90148ece5bc96fd6db43a',1,'glm::saturation(T const s, vec< 3, T, Q > const &color)'],['../a00312.html#gaba0eacee0736dae860e9371cc1ae4785',1,'glm::saturation(T const s, vec< 4, T, Q > const &color)']]], - ['scalar_5fcommon_2ehpp',['scalar_common.hpp',['../a00144.html',1,'']]], - ['scalar_5fconstants_2ehpp',['scalar_constants.hpp',['../a00145.html',1,'']]], - ['scalar_5fint_5fsized_2ehpp',['scalar_int_sized.hpp',['../a00146.html',1,'']]], - ['scalar_5finteger_2ehpp',['scalar_integer.hpp',['../a00147.html',1,'']]], - ['scalar_5fmultiplication_2ehpp',['scalar_multiplication.hpp',['../a00148.html',1,'']]], - ['scalar_5fuint_5fsized_2ehpp',['scalar_uint_sized.hpp',['../a00151.html',1,'']]], - ['scalar_5fulp_2ehpp',['scalar_ulp.hpp',['../a00152.html',1,'']]], - ['scale',['scale',['../a00247.html#ga05051adbee603fb3c5095d8cf5cc229b',1,'glm::scale(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)'],['../a00341.html#gadb47d2ad2bd984b213e8ff7d9cd8154e',1,'glm::scale(mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)'],['../a00362.html#gafbeefee8fec884d566e4ada0049174d7',1,'glm::scale(vec< 3, T, Q > const &v)']]], - ['scalebias',['scaleBias',['../a00363.html#gabf249498b236e62c983d90d30d63c99c',1,'glm::scaleBias(T scale, T bias)'],['../a00363.html#gae2bdd91a76759fecfbaef97e3020aa8e',1,'glm::scaleBias(mat< 4, 4, T, Q > const &m, T scale, T bias)']]], - ['sec',['sec',['../a00301.html#gae4bcbebee670c5ea155f0777b3acbd84',1,'glm']]], - ['sech',['sech',['../a00301.html#ga9a5cfd1e7170104a7b33863b1b75e5ae',1,'glm']]], - ['shearx',['shearX',['../a00341.html#ga2a118ece5db1e2022112b954846012af',1,'glm']]], - ['shearx2d',['shearX2D',['../a00363.html#gabf714b8a358181572b32a45555f71948',1,'glm']]], - ['shearx3d',['shearX3D',['../a00363.html#ga73e867c6cd4d700fe2054437e56106c4',1,'glm']]], - ['sheary',['shearY',['../a00341.html#ga717f1833369c1ac4a40e4ac015af885e',1,'glm']]], - ['sheary2d',['shearY2D',['../a00363.html#gac7998d0763d9181550c77e8af09a182c',1,'glm']]], - ['sheary3d',['shearY3D',['../a00363.html#gade5bb65ffcb513973db1a1314fb5cfac',1,'glm']]], - ['shearz3d',['shearZ3D',['../a00363.html#ga6591e0a3a9d2c9c0b6577bb4dace0255',1,'glm']]], - ['shortmix',['shortMix',['../a00352.html#gadc576cc957adc2a568cdcbc3799175bc',1,'glm']]], - ['sign',['sign',['../a00241.html#ga1e2e5cfff800056540e32f6c9b604b28',1,'glm::sign(vec< L, T, Q > const &x)'],['../a00333.html#ga04ef803a24f3d4f8c67dbccb33b0fce0',1,'glm::sign(vec< L, T, Q > const &x, vec< L, T, Q > const &base)']]], - ['simplex',['simplex',['../a00297.html#ga8122468c69015ff397349a7dcc638b27',1,'glm']]], - ['sin',['sin',['../a00373.html#ga29747fd108cb7292ae5a284f69691a69',1,'glm']]], - ['sineeasein',['sineEaseIn',['../a00318.html#gafb338ac6f6b2bcafee50e3dca5201dbf',1,'glm']]], - ['sineeaseinout',['sineEaseInOut',['../a00318.html#gaa46e3d5fbf7a15caa28eff9ef192d7c7',1,'glm']]], - ['sineeaseout',['sineEaseOut',['../a00318.html#gab3e454f883afc1606ef91363881bf5a3',1,'glm']]], - ['sinh',['sinh',['../a00373.html#gac7c39ff21809e281552b4dbe46f4a39d',1,'glm']]], - ['sint',['sint',['../a00330.html#gada7e83fdfe943aba4f1d5bf80cb66f40',1,'glm']]], - ['size1',['size1',['../a00359.html#gaeb877ac8f9a3703961736c1c5072cf68',1,'glm']]], - ['size1_5ft',['size1_t',['../a00359.html#gaaf6accc57f5aa50447ba7310ce3f0d6f',1,'glm']]], - ['size2',['size2',['../a00359.html#ga1bfe8c4975ff282bce41be2bacd524fe',1,'glm']]], - ['size2_5ft',['size2_t',['../a00359.html#ga5976c25657d4e2b5f73f39364c3845d6',1,'glm']]], - ['size3',['size3',['../a00359.html#gae1c72956d0359b0db332c6c8774d3b04',1,'glm']]], - ['size3_5ft',['size3_t',['../a00359.html#gaf2654983c60d641fd3808e65a8dfad8d',1,'glm']]], - ['size4',['size4',['../a00359.html#ga3a19dde617beaf8ce3cfc2ac5064e9aa',1,'glm']]], - ['size4_5ft',['size4_t',['../a00359.html#gaa423efcea63675a2df26990dbcb58656',1,'glm']]], - ['slerp',['slerp',['../a00248.html#gae7fc3c945be366b9942b842f55da428a',1,'glm::slerp(qua< T, Q > const &x, qua< T, Q > const &y, T a)'],['../a00356.html#ga8b11b18ce824174ea1a5a69ea14e2cee',1,'glm::slerp(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, T const &a)']]], - ['smoothstep',['smoothstep',['../a00241.html#ga562edf7eca082cc5b7a0aaf180436daf',1,'glm']]], - ['sphericalrand',['sphericalRand',['../a00300.html#ga22f90fcaccdf001c516ca90f6428e138',1,'glm']]], - ['spline_2ehpp',['spline.hpp',['../a00154.html',1,'']]], - ['sqrt',['sqrt',['../a00242.html#gaa83e5f1648b7ccdf33b87c07c76cb77c',1,'glm::sqrt(vec< L, T, Q > const &v)'],['../a00256.html#ga64b7b255ed7bcba616fe6b44470b022e',1,'glm::sqrt(qua< T, Q > const &q)'],['../a00330.html#ga7ce36693a75879ccd9bb10167cfa722d',1,'glm::sqrt(int x)'],['../a00330.html#ga1975d318978d6dacf78b6444fa5ed7bc',1,'glm::sqrt(uint x)']]], - ['squad',['squad',['../a00352.html#ga0b9bf3459e132ad8a18fe970669e3e35',1,'glm']]], - ['std_5fbased_5ftype_2ehpp',['std_based_type.hpp',['../a00155.html',1,'']]], - ['step',['step',['../a00241.html#ga015a1261ff23e12650211aa872863cce',1,'glm::step(genType edge, genType x)'],['../a00241.html#ga8f9a911a48ef244b51654eaefc81c551',1,'glm::step(T edge, vec< L, T, Q > const &x)'],['../a00241.html#gaf4a5fc81619c7d3e8b22f53d4a098c7f',1,'glm::step(vec< L, T, Q > const &edge, vec< L, T, Q > const &x)']]], - ['string_5fcast_2ehpp',['string_cast.hpp',['../a00156.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_11.html b/tests/OpenGL/package/glm/doc/api/search/all_11.html deleted file mode 100644 index bb6241be..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_11.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_11.js b/tests/OpenGL/package/glm/doc/api/search/all_11.js deleted file mode 100644 index 9ae88efd..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_11.js +++ /dev/null @@ -1,41 +0,0 @@ -var searchData= -[ - ['tan',['tan',['../a00373.html#ga293a34cfb9f0115cc606b4a97c84f11f',1,'glm']]], - ['tanh',['tanh',['../a00373.html#gaa1bccbfdcbe40ed2ffcddc2aa8bfd0f1',1,'glm']]], - ['texture_2ehpp',['texture.hpp',['../a00157.html',1,'']]], - ['third',['third',['../a00290.html#ga3077c6311010a214b69ddc8214ec13b5',1,'glm']]], - ['three_5fover_5ftwo_5fpi',['three_over_two_pi',['../a00290.html#gae94950df74b0ce382b1fc1d978ef7394',1,'glm']]], - ['to_5fstring',['to_string',['../a00360.html#ga8f0dced1fd45e67e2d77e80ab93c7af5',1,'glm']]], - ['tomat3',['toMat3',['../a00352.html#gaab0afabb894b28a983fb8ec610409d56',1,'glm']]], - ['tomat4',['toMat4',['../a00352.html#gadfa2c77094e8cc9adad321d938855ffb',1,'glm']]], - ['toquat',['toQuat',['../a00352.html#ga798de5d186499c9a9231cd92c8afaef1',1,'glm::toQuat(mat< 3, 3, T, Q > const &x)'],['../a00352.html#ga5eb36f51e1638e710451eba194dbc011',1,'glm::toQuat(mat< 4, 4, T, Q > const &x)']]], - ['transform_2ehpp',['transform.hpp',['../a00158.html',1,'']]], - ['transform2_2ehpp',['transform2.hpp',['../a00159.html',1,'']]], - ['translate',['translate',['../a00247.html#ga1a4ecc4ad82652b8fb14dcb087879284',1,'glm::translate(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)'],['../a00341.html#gaf4573ae47c80938aa9053ef6a33755ab',1,'glm::translate(mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)'],['../a00362.html#ga309a30e652e58c396e2c3d4db3ee7658',1,'glm::translate(vec< 3, T, Q > const &v)']]], - ['transpose',['transpose',['../a00371.html#gae679d841da8ce9dbcc6c2d454f15bc35',1,'glm']]], - ['trianglenormal',['triangleNormal',['../a00344.html#gaff1cb5496925dfa7962df457772a7f35',1,'glm']]], - ['trigonometric_2ehpp',['trigonometric.hpp',['../a00160.html',1,'']]], - ['trunc',['trunc',['../a00241.html#gaf9375e3e06173271d49e6ffa3a334259',1,'glm']]], - ['tweakedinfiniteperspective',['tweakedInfinitePerspective',['../a00243.html#gaaeacc04a2a6f4b18c5899d37e7bb3ef9',1,'glm::tweakedInfinitePerspective(T fovy, T aspect, T near)'],['../a00243.html#gaf5b3c85ff6737030a1d2214474ffa7a8',1,'glm::tweakedInfinitePerspective(T fovy, T aspect, T near, T ep)']]], - ['two_5fover_5fpi',['two_over_pi',['../a00290.html#ga74eadc8a211253079683219a3ea0462a',1,'glm']]], - ['two_5fover_5froot_5fpi',['two_over_root_pi',['../a00290.html#ga5827301817640843cf02026a8d493894',1,'glm']]], - ['two_5fpi',['two_pi',['../a00290.html#gaa5276a4617566abcfe49286f40e3a256',1,'glm']]], - ['two_5fthirds',['two_thirds',['../a00290.html#ga9b4d2f4322edcf63a6737b92a29dd1f5',1,'glm']]], - ['type_5fmat2x2_2ehpp',['type_mat2x2.hpp',['../a00165.html',1,'']]], - ['type_5fmat2x3_2ehpp',['type_mat2x3.hpp',['../a00166.html',1,'']]], - ['type_5fmat2x4_2ehpp',['type_mat2x4.hpp',['../a00167.html',1,'']]], - ['type_5fmat3x2_2ehpp',['type_mat3x2.hpp',['../a00168.html',1,'']]], - ['type_5fmat3x3_2ehpp',['type_mat3x3.hpp',['../a00169.html',1,'']]], - ['type_5fmat3x4_2ehpp',['type_mat3x4.hpp',['../a00170.html',1,'']]], - ['type_5fmat4x2_2ehpp',['type_mat4x2.hpp',['../a00171.html',1,'']]], - ['type_5fmat4x3_2ehpp',['type_mat4x3.hpp',['../a00172.html',1,'']]], - ['type_5fmat4x4_2ehpp',['type_mat4x4.hpp',['../a00173.html',1,'']]], - ['type_5fprecision_2ehpp',['type_precision.hpp',['../a00174.html',1,'']]], - ['type_5fptr_2ehpp',['type_ptr.hpp',['../a00175.html',1,'']]], - ['type_5fquat_2ehpp',['type_quat.hpp',['../a00176.html',1,'']]], - ['type_5ftrait_2ehpp',['type_trait.hpp',['../a00177.html',1,'']]], - ['type_5fvec1_2ehpp',['type_vec1.hpp',['../a00178.html',1,'']]], - ['type_5fvec2_2ehpp',['type_vec2.hpp',['../a00179.html',1,'']]], - ['type_5fvec3_2ehpp',['type_vec3.hpp',['../a00180.html',1,'']]], - ['type_5fvec4_2ehpp',['type_vec4.hpp',['../a00181.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_12.html b/tests/OpenGL/package/glm/doc/api/search/all_12.html deleted file mode 100644 index fe93a5bf..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_12.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_12.js b/tests/OpenGL/package/glm/doc/api/search/all_12.js deleted file mode 100644 index a7435af9..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_12.js +++ /dev/null @@ -1,97 +0,0 @@ -var searchData= -[ - ['u16',['u16',['../a00304.html#gaa2d7acc0adb536fab71fe261232a40ff',1,'glm']]], - ['u16vec1',['u16vec1',['../a00304.html#ga08c05ba8ffb19f5d14ab584e1e9e9ee5',1,'glm::u16vec1()'],['../a00346.html#ga52cc069a92e126c3a8dcde93424d2ef0',1,'glm::gtx::u16vec1()']]], - ['u16vec2',['u16vec2',['../a00304.html#ga2a78447eb9d66a114b193f4a25899c16',1,'glm']]], - ['u16vec3',['u16vec3',['../a00304.html#ga1c522ca821c27b862fe51cf4024b064b',1,'glm']]], - ['u16vec4',['u16vec4',['../a00304.html#ga529496d75775fb656a07993ea9af2450',1,'glm']]], - ['u32',['u32',['../a00304.html#ga8165913e068444f7842302d40ba897b9',1,'glm']]], - ['u32vec1',['u32vec1',['../a00304.html#gae627372cfd5f20dd87db490387b71195',1,'glm::u32vec1()'],['../a00346.html#ga9bbc1e14aea65cba5e2dcfef6a67d9f3',1,'glm::gtx::u32vec1()']]], - ['u32vec2',['u32vec2',['../a00304.html#ga2a266e46ee218d0c680f12b35c500cc0',1,'glm']]], - ['u32vec3',['u32vec3',['../a00304.html#gae267358ff2a41d156d97f5762630235a',1,'glm']]], - ['u32vec4',['u32vec4',['../a00304.html#ga31cef34e4cd04840c54741ff2f7005f0',1,'glm']]], - ['u64',['u64',['../a00304.html#gaf3f312156984c365e9f65620354da70b',1,'glm']]], - ['u64vec1',['u64vec1',['../a00304.html#gaf09f3ca4b671a4a4f84505eb4cc865fd',1,'glm::u64vec1()'],['../a00346.html#ga818de170e2584ab037130f2881925974',1,'glm::gtx::u64vec1()']]], - ['u64vec2',['u64vec2',['../a00304.html#gaef3824ed4fe435a019c5b9dddf53fec5',1,'glm']]], - ['u64vec3',['u64vec3',['../a00304.html#ga489b89ba93d4f7b3934df78debc52276',1,'glm']]], - ['u64vec4',['u64vec4',['../a00304.html#ga3945dd6515d4498cb603e65ff867ab03',1,'glm']]], - ['u8',['u8',['../a00304.html#gaecc7082561fc9028b844b6cf3d305d36',1,'glm']]], - ['u8vec1',['u8vec1',['../a00304.html#ga29b349e037f0b24320b4548a143daee2',1,'glm::u8vec1()'],['../a00346.html#ga5853fe457f4c8a6bc09343d0e9833980',1,'glm::gtx::u8vec1()']]], - ['u8vec2',['u8vec2',['../a00304.html#ga518b8d948a6b4ddb72f84d5c3b7b6611',1,'glm']]], - ['u8vec3',['u8vec3',['../a00304.html#ga7c5706f6bbe5282e5598acf7e7b377e2',1,'glm']]], - ['u8vec4',['u8vec4',['../a00304.html#ga20779a61de2fd526a17f12fe53ec46b1',1,'glm']]], - ['uaddcarry',['uaddCarry',['../a00370.html#gaedcec48743632dff6786bcc492074b1b',1,'glm']]], - ['uint16',['uint16',['../a00263.html#ga05f6b0ae8f6a6e135b0e290c25fe0e4e',1,'glm']]], - ['uint16_5ft',['uint16_t',['../a00304.html#ga91f91f411080c37730856ff5887f5bcf',1,'glm']]], - ['uint32',['uint32',['../a00263.html#ga1134b580f8da4de94ca6b1de4d37975e',1,'glm']]], - ['uint32_5ft',['uint32_t',['../a00304.html#ga2171d9dc1fefb1c82e2817f45b622eac',1,'glm']]], - ['uint64',['uint64',['../a00263.html#gab630f76c26b50298187f7889104d4b9c',1,'glm']]], - ['uint64_5ft',['uint64_t',['../a00304.html#ga3999d3e7ff22025c16ddb601e14dfdee',1,'glm']]], - ['uint8',['uint8',['../a00263.html#gadde6aaee8457bee49c2a92621fe22b79',1,'glm']]], - ['uint8_5ft',['uint8_t',['../a00304.html#ga28d97808322d3c92186e4a0c067d7e8e',1,'glm']]], - ['uintbitstofloat',['uintBitsToFloat',['../a00241.html#gab2bae0d15dcdca6093f88f76b3975d97',1,'glm::uintBitsToFloat(uint const &v)'],['../a00241.html#ga97f46b5f7b42fe44482e13356eb394ae',1,'glm::uintBitsToFloat(vec< L, uint, Q > const &v)']]], - ['ulp_2ehpp',['ulp.hpp',['../a00182.html',1,'']]], - ['umat2',['umat2',['../a00294.html#ga4cae85566f900debf930c41944b64691',1,'glm']]], - ['umat2x2',['umat2x2',['../a00294.html#gabf8acdd33ce8951051edbca5200898aa',1,'glm']]], - ['umat2x3',['umat2x3',['../a00294.html#ga1870da7578d5022b973a83155d386ab3',1,'glm']]], - ['umat2x4',['umat2x4',['../a00294.html#ga57936a3998e992370e59a223e0ee4fd4',1,'glm']]], - ['umat3',['umat3',['../a00294.html#ga5085e3ff02abbac5e537eb7b89ab63b6',1,'glm']]], - ['umat3x2',['umat3x2',['../a00294.html#ga9cd7fa637a4a6788337f45231fad9e1a',1,'glm']]], - ['umat3x3',['umat3x3',['../a00294.html#ga1f2cfcf3357db0cdf31fcb15e3c6bafb',1,'glm']]], - ['umat3x4',['umat3x4',['../a00294.html#gae7c78ff3fc4309605ab0fa186c8d48ba',1,'glm']]], - ['umat4',['umat4',['../a00294.html#ga38bc7bb6494e344185df596deeb4544c',1,'glm']]], - ['umat4x2',['umat4x2',['../a00294.html#ga70fa2d05896aa83cbc8c07672a429b53',1,'glm']]], - ['umat4x3',['umat4x3',['../a00294.html#ga87581417945411f75cb31dd6ca1dba98',1,'glm']]], - ['umat4x4',['umat4x4',['../a00294.html#gaf72e6d399c42985db6872c50f53d7eb8',1,'glm']]], - ['umulextended',['umulExtended',['../a00370.html#ga732e2fb56db57ea541c7e5c92b7121be',1,'glm']]], - ['unpackdouble2x32',['unpackDouble2x32',['../a00372.html#ga5f4296dc5f12f0aa67ac05b8bb322483',1,'glm']]], - ['unpackf2x11_5f1x10',['unpackF2x11_1x10',['../a00298.html#ga2b1fd1e854705b1345e98409e0a25e50',1,'glm']]], - ['unpackf3x9_5fe1x5',['unpackF3x9_E1x5',['../a00298.html#gab9e60ebe3ad3eeced6a9ec6eb876d74e',1,'glm']]], - ['unpackhalf',['unpackHalf',['../a00298.html#ga30d6b2f1806315bcd6047131f547d33b',1,'glm']]], - ['unpackhalf1x16',['unpackHalf1x16',['../a00298.html#gac37dedaba24b00adb4ec6e8f92c19dbf',1,'glm']]], - ['unpackhalf2x16',['unpackHalf2x16',['../a00372.html#gaf59b52e6b28da9335322c4ae19b5d745',1,'glm']]], - ['unpackhalf4x16',['unpackHalf4x16',['../a00298.html#ga57dfc41b2eb20b0ac00efae7d9c49dcd',1,'glm']]], - ['unpacki3x10_5f1x2',['unpackI3x10_1x2',['../a00298.html#ga9a05330e5490be0908d3b117d82aff56',1,'glm']]], - ['unpackint2x16',['unpackInt2x16',['../a00298.html#gaccde055882918a3175de82f4ca8b7d8e',1,'glm']]], - ['unpackint2x32',['unpackInt2x32',['../a00298.html#gab297c0bfd38433524791eb0584d8f08d',1,'glm']]], - ['unpackint2x8',['unpackInt2x8',['../a00298.html#gab0c59f1e259fca9e68adb2207a6b665e',1,'glm']]], - ['unpackint4x16',['unpackInt4x16',['../a00298.html#ga52c154a9b232b62c22517a700cc0c78c',1,'glm']]], - ['unpackint4x8',['unpackInt4x8',['../a00298.html#ga1cd8d2038cdd33a860801aa155a26221',1,'glm']]], - ['unpackrgbm',['unpackRGBM',['../a00298.html#ga5c1ec97894b05ea21a05aea4f0204a02',1,'glm']]], - ['unpacksnorm',['unpackSnorm',['../a00298.html#ga6d49b31e5c3f9df8e1f99ab62b999482',1,'glm']]], - ['unpacksnorm1x16',['unpackSnorm1x16',['../a00298.html#ga96dd15002370627a443c835ab03a766c',1,'glm']]], - ['unpacksnorm1x8',['unpackSnorm1x8',['../a00298.html#ga4851ff86678aa1c7ace9d67846894285',1,'glm']]], - ['unpacksnorm2x16',['unpackSnorm2x16',['../a00372.html#gacd8f8971a3fe28418be0d0fa1f786b38',1,'glm']]], - ['unpacksnorm2x8',['unpackSnorm2x8',['../a00298.html#ga8b128e89be449fc71336968a66bf6e1a',1,'glm']]], - ['unpacksnorm3x10_5f1x2',['unpackSnorm3x10_1x2',['../a00298.html#ga7a4fbf79be9740e3c57737bc2af05e5b',1,'glm']]], - ['unpacksnorm4x16',['unpackSnorm4x16',['../a00298.html#gaaddf9c353528fe896106f7181219c7f4',1,'glm']]], - ['unpacksnorm4x8',['unpackSnorm4x8',['../a00372.html#ga2db488646d48b7c43d3218954523fe82',1,'glm']]], - ['unpacku3x10_5f1x2',['unpackU3x10_1x2',['../a00298.html#ga48df3042a7d079767f5891a1bfd8a60a',1,'glm']]], - ['unpackuint2x16',['unpackUint2x16',['../a00298.html#ga035bbbeab7ec2b28c0529757395b645b',1,'glm']]], - ['unpackuint2x32',['unpackUint2x32',['../a00298.html#gaf942ff11b65e83eb5f77e68329ebc6ab',1,'glm']]], - ['unpackuint2x8',['unpackUint2x8',['../a00298.html#gaa7600a6c71784b637a410869d2a5adcd',1,'glm']]], - ['unpackuint4x16',['unpackUint4x16',['../a00298.html#gab173834ef14cfc23a96a959f3ff4b8dc',1,'glm']]], - ['unpackuint4x8',['unpackUint4x8',['../a00298.html#gaf6dc0e4341810a641c7ed08f10e335d1',1,'glm']]], - ['unpackunorm',['unpackUnorm',['../a00298.html#ga3e6ac9178b59f0b1b2f7599f2183eb7f',1,'glm']]], - ['unpackunorm1x16',['unpackUnorm1x16',['../a00298.html#ga83d34160a5cb7bcb5339823210fc7501',1,'glm']]], - ['unpackunorm1x5_5f1x6_5f1x5',['unpackUnorm1x5_1x6_1x5',['../a00298.html#gab3bc08ecfc0f3339be93fb2b3b56d88a',1,'glm']]], - ['unpackunorm1x8',['unpackUnorm1x8',['../a00298.html#ga1319207e30874fb4931a9ee913983ee1',1,'glm']]], - ['unpackunorm2x16',['unpackUnorm2x16',['../a00372.html#ga1f66188e5d65afeb9ffba1ad971e4007',1,'glm']]], - ['unpackunorm2x3_5f1x2',['unpackUnorm2x3_1x2',['../a00298.html#ga6abd5a9014df3b5ce4059008d2491260',1,'glm']]], - ['unpackunorm2x4',['unpackUnorm2x4',['../a00298.html#ga2e50476132fe5f27f08e273d9c70d85b',1,'glm']]], - ['unpackunorm2x8',['unpackUnorm2x8',['../a00298.html#ga637cbe3913dd95c6e7b4c99c61bd611f',1,'glm']]], - ['unpackunorm3x10_5f1x2',['unpackUnorm3x10_1x2',['../a00298.html#ga5156d3060355fe332865da2c7f78815f',1,'glm']]], - ['unpackunorm3x5_5f1x1',['unpackUnorm3x5_1x1',['../a00298.html#ga5ff95ff5bc16f396432ab67243dbae4d',1,'glm']]], - ['unpackunorm4x16',['unpackUnorm4x16',['../a00298.html#ga2ae149c5d2473ac1e5f347bb654a242d',1,'glm']]], - ['unpackunorm4x4',['unpackUnorm4x4',['../a00298.html#gac58ee89d0e224bb6df5e8bbb18843a2d',1,'glm']]], - ['unpackunorm4x8',['unpackUnorm4x8',['../a00372.html#ga7f903259150b67e9466f5f8edffcd197',1,'glm']]], - ['unproject',['unProject',['../a00245.html#ga36641e5d60f994e01c3d8f56b10263d2',1,'glm']]], - ['unprojectno',['unProjectNO',['../a00245.html#gae089ba9fc150ff69c252a20e508857b5',1,'glm']]], - ['unprojectzo',['unProjectZO',['../a00245.html#gade5136413ce530f8e606124d570fba32',1,'glm']]], - ['uround',['uround',['../a00292.html#ga6715b9d573972a0f7763d30d45bcaec4',1,'glm']]], - ['usubborrow',['usubBorrow',['../a00370.html#gae3316ba1229ad9b9f09480833321b053',1,'glm']]], - ['uvec1',['uvec1',['../a00276.html#gac3bdd96183d23876c58a1424585fefe7',1,'glm']]], - ['uvec2',['uvec2',['../a00281.html#ga2f6d9ec3ae14813ade37d6aee3715fdb',1,'glm']]], - ['uvec3',['uvec3',['../a00281.html#ga3d3e55874babd4bf93baa7bbc83ae418',1,'glm']]], - ['uvec4',['uvec4',['../a00281.html#gaa57e96bb337867329d5f43bcc27c1095',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_13.html b/tests/OpenGL/package/glm/doc/api/search/all_13.html deleted file mode 100644 index cb938b91..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_13.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_13.js b/tests/OpenGL/package/glm/doc/api/search/all_13.js deleted file mode 100644 index 22d14f56..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_13.js +++ /dev/null @@ -1,62 +0,0 @@ -var searchData= -[ - ['vector_20relational_20functions',['Vector Relational Functions',['../a00374.html',1,'']]], - ['vector_20types',['Vector types',['../a00281.html',1,'']]], - ['vector_20types_20with_20precision_20qualifiers',['Vector types with precision qualifiers',['../a00282.html',1,'']]], - ['value_5fptr',['value_ptr',['../a00305.html#ga1c64669e1ba1160ad9386e43dc57569a',1,'glm']]], - ['vec1',['vec1',['../a00270.html#gadfc071d934d8dae7955a1d530a3cf656',1,'glm']]], - ['vec1_2ehpp',['vec1.hpp',['../a00183.html',1,'']]], - ['vec2',['vec2',['../a00281.html#gabe65c061834f61b4f7cb6037b19006a4',1,'glm']]], - ['vec2_2ehpp',['vec2.hpp',['../a00184.html',1,'']]], - ['vec3',['vec3',['../a00281.html#ga9c3019b13faf179e4ad3626ea66df334',1,'glm']]], - ['vec3_2ehpp',['vec3.hpp',['../a00185.html',1,'']]], - ['vec4',['vec4',['../a00281.html#gac215a35481a6597d1bf622a382e9d6e2',1,'glm']]], - ['vec4_2ehpp',['vec4.hpp',['../a00186.html',1,'']]], - ['vec_5fswizzle_2ehpp',['vec_swizzle.hpp',['../a00187.html',1,'']]], - ['vector_5fangle_2ehpp',['vector_angle.hpp',['../a00188.html',1,'']]], - ['vector_5fbool1_2ehpp',['vector_bool1.hpp',['../a00189.html',1,'']]], - ['vector_5fbool1_5fprecision_2ehpp',['vector_bool1_precision.hpp',['../a00190.html',1,'']]], - ['vector_5fbool2_2ehpp',['vector_bool2.hpp',['../a00191.html',1,'']]], - ['vector_5fbool2_5fprecision_2ehpp',['vector_bool2_precision.hpp',['../a00192.html',1,'']]], - ['vector_5fbool3_2ehpp',['vector_bool3.hpp',['../a00193.html',1,'']]], - ['vector_5fbool3_5fprecision_2ehpp',['vector_bool3_precision.hpp',['../a00194.html',1,'']]], - ['vector_5fbool4_2ehpp',['vector_bool4.hpp',['../a00195.html',1,'']]], - ['vector_5fbool4_5fprecision_2ehpp',['vector_bool4_precision.hpp',['../a00196.html',1,'']]], - ['vector_5fcommon_2ehpp',['vector_common.hpp',['../a00197.html',1,'']]], - ['vector_5fdouble1_2ehpp',['vector_double1.hpp',['../a00198.html',1,'']]], - ['vector_5fdouble1_5fprecision_2ehpp',['vector_double1_precision.hpp',['../a00199.html',1,'']]], - ['vector_5fdouble2_2ehpp',['vector_double2.hpp',['../a00200.html',1,'']]], - ['vector_5fdouble2_5fprecision_2ehpp',['vector_double2_precision.hpp',['../a00201.html',1,'']]], - ['vector_5fdouble3_2ehpp',['vector_double3.hpp',['../a00202.html',1,'']]], - ['vector_5fdouble3_5fprecision_2ehpp',['vector_double3_precision.hpp',['../a00203.html',1,'']]], - ['vector_5fdouble4_2ehpp',['vector_double4.hpp',['../a00204.html',1,'']]], - ['vector_5fdouble4_5fprecision_2ehpp',['vector_double4_precision.hpp',['../a00205.html',1,'']]], - ['vector_5ffloat1_2ehpp',['vector_float1.hpp',['../a00206.html',1,'']]], - ['vector_5ffloat1_5fprecision_2ehpp',['vector_float1_precision.hpp',['../a00207.html',1,'']]], - ['vector_5ffloat2_2ehpp',['vector_float2.hpp',['../a00208.html',1,'']]], - ['vector_5ffloat2_5fprecision_2ehpp',['vector_float2_precision.hpp',['../a00209.html',1,'']]], - ['vector_5ffloat3_2ehpp',['vector_float3.hpp',['../a00210.html',1,'']]], - ['vector_5ffloat3_5fprecision_2ehpp',['vector_float3_precision.hpp',['../a00211.html',1,'']]], - ['vector_5ffloat4_2ehpp',['vector_float4.hpp',['../a00212.html',1,'']]], - ['vector_5ffloat4_5fprecision_2ehpp',['vector_float4_precision.hpp',['../a00213.html',1,'']]], - ['vector_5fint1_2ehpp',['vector_int1.hpp',['../a00214.html',1,'']]], - ['vector_5fint1_5fprecision_2ehpp',['vector_int1_precision.hpp',['../a00215.html',1,'']]], - ['vector_5fint2_2ehpp',['vector_int2.hpp',['../a00216.html',1,'']]], - ['vector_5fint2_5fprecision_2ehpp',['vector_int2_precision.hpp',['../a00217.html',1,'']]], - ['vector_5fint3_2ehpp',['vector_int3.hpp',['../a00218.html',1,'']]], - ['vector_5fint3_5fprecision_2ehpp',['vector_int3_precision.hpp',['../a00219.html',1,'']]], - ['vector_5fint4_2ehpp',['vector_int4.hpp',['../a00220.html',1,'']]], - ['vector_5fint4_5fprecision_2ehpp',['vector_int4_precision.hpp',['../a00221.html',1,'']]], - ['vector_5finteger_2ehpp',['vector_integer.hpp',['../a00222.html',1,'']]], - ['vector_5fquery_2ehpp',['vector_query.hpp',['../a00223.html',1,'']]], - ['vector_5frelational_2ehpp',['vector_relational.hpp',['../a00225.html',1,'']]], - ['vector_5fuint1_2ehpp',['vector_uint1.hpp',['../a00226.html',1,'']]], - ['vector_5fuint1_5fprecision_2ehpp',['vector_uint1_precision.hpp',['../a00227.html',1,'']]], - ['vector_5fuint2_2ehpp',['vector_uint2.hpp',['../a00228.html',1,'']]], - ['vector_5fuint2_5fprecision_2ehpp',['vector_uint2_precision.hpp',['../a00229.html',1,'']]], - ['vector_5fuint3_2ehpp',['vector_uint3.hpp',['../a00230.html',1,'']]], - ['vector_5fuint3_5fprecision_2ehpp',['vector_uint3_precision.hpp',['../a00231.html',1,'']]], - ['vector_5fuint4_2ehpp',['vector_uint4.hpp',['../a00232.html',1,'']]], - ['vector_5fuint4_5fprecision_2ehpp',['vector_uint4_precision.hpp',['../a00233.html',1,'']]], - ['vector_5fulp_2ehpp',['vector_ulp.hpp',['../a00234.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_14.html b/tests/OpenGL/package/glm/doc/api/search/all_14.html deleted file mode 100644 index 2fcfb13a..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_14.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_14.js b/tests/OpenGL/package/glm/doc/api/search/all_14.js deleted file mode 100644 index e06e2e2b..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_14.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['word',['word',['../a00354.html#ga16e9fea0ef1e6c4ef472d3d1731c49a5',1,'glm']]], - ['wrap_2ehpp',['wrap.hpp',['../a00235.html',1,'']]], - ['wrapangle',['wrapAngle',['../a00325.html#ga069527c6dbd64f53435b8ebc4878b473',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_15.html b/tests/OpenGL/package/glm/doc/api/search/all_15.html deleted file mode 100644 index a31c6e8f..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_15.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_15.js b/tests/OpenGL/package/glm/doc/api/search/all_15.js deleted file mode 100644 index 4153a6e0..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_15.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['yaw',['yaw',['../a00299.html#ga8da38cdfdc452dafa660c2f46506bad5',1,'glm']]], - ['yawpitchroll',['yawPitchRoll',['../a00319.html#gae6aa26ccb020d281b449619e419a609e',1,'glm']]], - ['ycocg2rgb',['YCoCg2rgb',['../a00313.html#ga163596b804c7241810b2534a99eb1343',1,'glm']]], - ['ycocgr2rgb',['YCoCgR2rgb',['../a00313.html#gaf8d30574c8576838097d8e20c295384a',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_16.html b/tests/OpenGL/package/glm/doc/api/search/all_16.html deleted file mode 100644 index 6343dec5..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_16.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_16.js b/tests/OpenGL/package/glm/doc/api/search/all_16.js deleted file mode 100644 index 66a52170..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_16.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['zero',['zero',['../a00290.html#ga788f5a421fc0f40a1296ebc094cbaa8a',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_2.html b/tests/OpenGL/package/glm/doc/api/search/all_2.html deleted file mode 100644 index 93962b72..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_2.js b/tests/OpenGL/package/glm/doc/api/search/all_2.js deleted file mode 100644 index 24ec01ad..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_2.js +++ /dev/null @@ -1,51 +0,0 @@ -var searchData= -[ - ['catmullrom',['catmullRom',['../a00358.html#ga8119c04f8210fd0d292757565cd6918d',1,'glm']]], - ['ceil',['ceil',['../a00241.html#gafb9d2a645a23aca12d4d6de0104b7657',1,'glm']]], - ['ceilmultiple',['ceilMultiple',['../a00302.html#ga1d89ac88582aaf4d5dfa5feb4a376fd4',1,'glm::ceilMultiple(genType v, genType Multiple)'],['../a00302.html#gab77fdcc13f8e92d2e0b1b7d7aeab8e9d',1,'glm::ceilMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], - ['ceilpoweroftwo',['ceilPowerOfTwo',['../a00302.html#ga5c3ef36ae32aa4271f1544f92bd578b6',1,'glm::ceilPowerOfTwo(genIUType v)'],['../a00302.html#gab53d4a97c0d3e297be5f693cdfdfe5d2',1,'glm::ceilPowerOfTwo(vec< L, T, Q > const &v)']]], - ['circulareasein',['circularEaseIn',['../a00318.html#ga34508d4b204a321ec26d6086aa047997',1,'glm']]], - ['circulareaseinout',['circularEaseInOut',['../a00318.html#ga0c1027637a5b02d4bb3612aa12599d69',1,'glm']]], - ['circulareaseout',['circularEaseOut',['../a00318.html#ga26fefde9ced9b72745fe21f1a3fe8da7',1,'glm']]], - ['circularrand',['circularRand',['../a00300.html#ga9dd05c36025088fae25b97c869e88517',1,'glm']]], - ['clamp',['clamp',['../a00241.html#ga7cd77683da6361e297c56443fc70806d',1,'glm::clamp(genType x, genType minVal, genType maxVal)'],['../a00241.html#gafba2e0674deb5953878d89483cd6323d',1,'glm::clamp(vec< L, T, Q > const &x, T minVal, T maxVal)'],['../a00241.html#gaa0f2f12e9108b09e22a3f0b2008a0b5d',1,'glm::clamp(vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)'],['../a00369.html#ga6c0cc6bd1d67ea1008d2592e998bad33',1,'glm::clamp(genType const &Texcoord)']]], - ['closebounded',['closeBounded',['../a00314.html#gab7d89c14c48ad01f720fb5daf8813161',1,'glm']]], - ['closest_5fpoint_2ehpp',['closest_point.hpp',['../a00010.html',1,'']]], - ['closestpointonline',['closestPointOnLine',['../a00310.html#ga36529c278ef716986151d58d151d697d',1,'glm::closestPointOnLine(vec< 3, T, Q > const &point, vec< 3, T, Q > const &a, vec< 3, T, Q > const &b)'],['../a00310.html#ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0',1,'glm::closestPointOnLine(vec< 2, T, Q > const &point, vec< 2, T, Q > const &a, vec< 2, T, Q > const &b)']]], - ['colmajor2',['colMajor2',['../a00338.html#gaaff72f11286e59a4a88ed21a347f284c',1,'glm::colMajor2(vec< 2, T, Q > const &v1, vec< 2, T, Q > const &v2)'],['../a00338.html#gafc25fd44196c92b1397b127aec1281ab',1,'glm::colMajor2(mat< 2, 2, T, Q > const &m)']]], - ['colmajor3',['colMajor3',['../a00338.html#ga1e25b72b085087740c92f5c70f3b051f',1,'glm::colMajor3(vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)'],['../a00338.html#ga86bd0656e787bb7f217607572590af27',1,'glm::colMajor3(mat< 3, 3, T, Q > const &m)']]], - ['colmajor4',['colMajor4',['../a00338.html#gaf4aa6c7e17bfce41a6c13bf6469fab05',1,'glm::colMajor4(vec< 4, T, Q > const &v1, vec< 4, T, Q > const &v2, vec< 4, T, Q > const &v3, vec< 4, T, Q > const &v4)'],['../a00338.html#gaf3f9511c366c20ba2e4a64c9e4cec2b3',1,'glm::colMajor4(mat< 4, 4, T, Q > const &m)']]], - ['color_5fencoding_2ehpp',['color_encoding.hpp',['../a00011.html',1,'']]], - ['color_5fspace_5fycocg_2ehpp',['color_space_YCoCg.hpp',['../a00014.html',1,'']]], - ['column',['column',['../a00293.html#ga96022eb0d3fae39d89fc7a954e59b374',1,'glm::column(genType const &m, length_t index)'],['../a00293.html#ga9e757377523890e8b80c5843dbe4dd15',1,'glm::column(genType const &m, length_t index, typename genType::col_type const &x)']]], - ['common_2ehpp',['common.hpp',['../a00015.html',1,'']]], - ['compadd',['compAdd',['../a00316.html#gaf71833350e15e74d31cbf8a3e7f27051',1,'glm']]], - ['compatibility_2ehpp',['compatibility.hpp',['../a00017.html',1,'']]], - ['compmax',['compMax',['../a00316.html#gabfa4bb19298c8c73d4217ba759c496b6',1,'glm']]], - ['compmin',['compMin',['../a00316.html#gab5d0832b5c7bb01b8d7395973bfb1425',1,'glm']]], - ['compmul',['compMul',['../a00316.html#gae8ab88024197202c9479d33bdc5a8a5d',1,'glm']]], - ['compnormalize',['compNormalize',['../a00316.html#ga8f2b81ada8515875e58cb1667b6b9908',1,'glm']]], - ['component_5fwise_2ehpp',['component_wise.hpp',['../a00018.html',1,'']]], - ['compscale',['compScale',['../a00316.html#ga80abc2980d65d675f435d178c36880eb',1,'glm']]], - ['conjugate',['conjugate',['../a00248.html#ga10d7bda73201788ac2ab28cd8d0d409b',1,'glm']]], - ['constants_2ehpp',['constants.hpp',['../a00021.html',1,'']]], - ['convertd65xyztod50xyz',['convertD65XYZToD50XYZ',['../a00311.html#gad12f4f65022b2c80e33fcba2ced0dc48',1,'glm']]], - ['convertd65xyztolinearsrgb',['convertD65XYZToLinearSRGB',['../a00311.html#ga5265386fc3ac29e4c580d37ed470859c',1,'glm']]], - ['convertlinearsrgbtod50xyz',['convertLinearSRGBToD50XYZ',['../a00311.html#ga1522ba180e3d83d554a734056da031f9',1,'glm']]], - ['convertlinearsrgbtod65xyz',['convertLinearSRGBToD65XYZ',['../a00311.html#gaf9e130d9d4ccf51cc99317de7449f369',1,'glm']]], - ['convertlineartosrgb',['convertLinearToSRGB',['../a00289.html#ga42239e7b3da900f7ef37cec7e2476579',1,'glm::convertLinearToSRGB(vec< L, T, Q > const &ColorLinear)'],['../a00289.html#gaace0a21167d13d26116c283009af57f6',1,'glm::convertLinearToSRGB(vec< L, T, Q > const &ColorLinear, T Gamma)']]], - ['convertsrgbtolinear',['convertSRGBToLinear',['../a00289.html#ga16c798b7a226b2c3079dedc55083d187',1,'glm::convertSRGBToLinear(vec< L, T, Q > const &ColorSRGB)'],['../a00289.html#gad1b91f27a9726c9cb403f9fee6e2e200',1,'glm::convertSRGBToLinear(vec< L, T, Q > const &ColorSRGB, T Gamma)']]], - ['core_20features',['Core features',['../a00280.html',1,'']]], - ['common_20functions',['Common functions',['../a00241.html',1,'']]], - ['cos',['cos',['../a00373.html#ga6a41efc740e3b3c937447d3a6284130e',1,'glm']]], - ['cosh',['cosh',['../a00373.html#ga4e260e372742c5f517aca196cf1e62b3',1,'glm']]], - ['cot',['cot',['../a00301.html#ga3a7b517a95bbd3ad74da3aea87a66314',1,'glm']]], - ['coth',['coth',['../a00301.html#ga6b8b770eb7198e4dea59d52e6db81442',1,'glm']]], - ['cross',['cross',['../a00254.html#ga755beaa929c75751dee646cccba37e4c',1,'glm::cross(qua< T, Q > const &q1, qua< T, Q > const &q2)'],['../a00279.html#gaeeec0794212fe84fc9d261de067c9587',1,'glm::cross(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00322.html#gac36e72b934ea6a9dd313772d7e78fa93',1,'glm::cross(vec< 2, T, Q > const &v, vec< 2, T, Q > const &u)'],['../a00352.html#ga2f32f970411c44cdd38bb98960198385',1,'glm::cross(qua< T, Q > const &q, vec< 3, T, Q > const &v)'],['../a00352.html#ga9f5f77255756e5668dfee7f0d07ed021',1,'glm::cross(vec< 3, T, Q > const &v, qua< T, Q > const &q)']]], - ['csc',['csc',['../a00301.html#ga59dd0005b6474eea48af743b4f14ebbb',1,'glm']]], - ['csch',['csch',['../a00301.html#ga6d95843ff3ca6472ab399ba171d290a0',1,'glm']]], - ['cubic',['cubic',['../a00358.html#ga6b867eb52e2fc933d2e0bf26aabc9a70',1,'glm']]], - ['cubiceasein',['cubicEaseIn',['../a00318.html#gaff52f746102b94864d105563ba8895ae',1,'glm']]], - ['cubiceaseinout',['cubicEaseInOut',['../a00318.html#ga55134072b42d75452189321d4a2ad91c',1,'glm']]], - ['cubiceaseout',['cubicEaseOut',['../a00318.html#ga40d746385d8bcc5973f5bc6a2340ca91',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_3.html b/tests/OpenGL/package/glm/doc/api/search/all_3.html deleted file mode 100644 index 679f93ca..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_3.js b/tests/OpenGL/package/glm/doc/api/search/all_3.js deleted file mode 100644 index 879655de..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_3.js +++ /dev/null @@ -1,59 +0,0 @@ -var searchData= -[ - ['ddualquat',['ddualquat',['../a00317.html#ga3d71f98d84ba59dfe4e369fde4714cd6',1,'glm']]], - ['decompose',['decompose',['../a00335.html#gac0e342656ba09a9bc97c57182ba73124',1,'glm']]], - ['degrees',['degrees',['../a00373.html#ga8faec9e303538065911ba8b3caf7326b',1,'glm']]], - ['derivedeuleranglex',['derivedEulerAngleX',['../a00319.html#ga994b8186b3b80d91cf90bc403164692f',1,'glm']]], - ['derivedeulerangley',['derivedEulerAngleY',['../a00319.html#ga0a4c56ecce7abcb69508ebe6313e9d10',1,'glm']]], - ['derivedeuleranglez',['derivedEulerAngleZ',['../a00319.html#gae8b397348201c42667be983ba3f344df',1,'glm']]], - ['determinant',['determinant',['../a00371.html#gad7928795124768e058f99dce270f5c8d',1,'glm']]], - ['diagonal2x2',['diagonal2x2',['../a00339.html#ga58a32a2beeb2478dae2a721368cdd4ac',1,'glm']]], - ['diagonal2x3',['diagonal2x3',['../a00339.html#gab69f900206a430e2875a5a073851e175',1,'glm']]], - ['diagonal2x4',['diagonal2x4',['../a00339.html#ga30b4dbfed60a919d66acc8a63bcdc549',1,'glm']]], - ['diagonal3x2',['diagonal3x2',['../a00339.html#ga832c805d5130d28ad76236958d15b47d',1,'glm']]], - ['diagonal3x3',['diagonal3x3',['../a00339.html#ga5487ff9cdbc8e04d594adef1bcb16ee0',1,'glm']]], - ['diagonal3x4',['diagonal3x4',['../a00339.html#gad7551139cff0c4208d27f0ad3437833e',1,'glm']]], - ['diagonal4x2',['diagonal4x2',['../a00339.html#gacb8969e6543ba775c6638161a37ac330',1,'glm']]], - ['diagonal4x3',['diagonal4x3',['../a00339.html#gae235def5049d6740f0028433f5e13f90',1,'glm']]], - ['diagonal4x4',['diagonal4x4',['../a00339.html#ga0b4cd8dea436791b072356231ee8578f',1,'glm']]], - ['diskrand',['diskRand',['../a00300.html#gaa0b18071f3f97dbf8bcf6f53c6fe5f73',1,'glm']]], - ['distance',['distance',['../a00279.html#gaa68de6c53e20dfb2dac2d20197562e3f',1,'glm']]], - ['distance2',['distance2',['../a00343.html#ga85660f1b79f66c09c7b5a6f80e68c89f',1,'glm']]], - ['dmat2',['dmat2',['../a00283.html#ga21dbd1f987775d7cc7607c139531c7e6',1,'glm']]], - ['dmat2x2',['dmat2x2',['../a00283.html#ga66b6a9af787e468a46dfe24189e87f9b',1,'glm']]], - ['dmat2x3',['dmat2x3',['../a00283.html#ga92cd388753d48e20de69ea2dbedf826a',1,'glm']]], - ['dmat2x4',['dmat2x4',['../a00283.html#gaef2198807e937072803ae0ae45e1965e',1,'glm']]], - ['dmat3',['dmat3',['../a00283.html#ga6f40aa56265b4b0ccad41b86802efe33',1,'glm']]], - ['dmat3x2',['dmat3x2',['../a00283.html#ga001e3e0638fbf8719788fc64c5b8cf39',1,'glm']]], - ['dmat3x3',['dmat3x3',['../a00283.html#ga970cb3306be25a5ca5db5a9456831228',1,'glm']]], - ['dmat3x4',['dmat3x4',['../a00283.html#ga0412a634d183587e6188e9b11869f8f4',1,'glm']]], - ['dmat4',['dmat4',['../a00283.html#ga0f34486bb7fec8e5a5b3830b6a6cbeca',1,'glm']]], - ['dmat4x2',['dmat4x2',['../a00283.html#ga9bc0b3ab8b6ba2cb6782e179ad7ad156',1,'glm']]], - ['dmat4x3',['dmat4x3',['../a00283.html#gacd18864049f8c83799babe7e596ca05b',1,'glm']]], - ['dmat4x4',['dmat4x4',['../a00283.html#gad5a6484b983b74f9d801cab8bc4e6a10',1,'glm']]], - ['dot',['dot',['../a00254.html#ga84865a56acb8fbd7bc4f5c0b928e3cfc',1,'glm::dot(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00279.html#gaad6c5d9d39bdc0bf43baf1b22e147a0a',1,'glm::dot(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], - ['double1',['double1',['../a00315.html#ga20b861a9b6e2a300323671c57a02525b',1,'glm']]], - ['double1x1',['double1x1',['../a00315.html#ga45f16a4dd0db1f199afaed9fd12fe9a8',1,'glm']]], - ['double2',['double2',['../a00315.html#ga31b729b04facccda73f07ed26958b3c2',1,'glm']]], - ['double2x2',['double2x2',['../a00315.html#gae57d0201096834d25f2b91b319e7cdbd',1,'glm']]], - ['double2x3',['double2x3',['../a00315.html#ga3655bc324008553ca61f39952d0b2d08',1,'glm']]], - ['double2x4',['double2x4',['../a00315.html#gacd33061fc64a7b2dcfd7322c49d9557a',1,'glm']]], - ['double3',['double3',['../a00315.html#ga3d8b9028a1053a44a98902cd1c389472',1,'glm']]], - ['double3x2',['double3x2',['../a00315.html#ga5ec08fc39c9d783dfcc488be240fe975',1,'glm']]], - ['double3x3',['double3x3',['../a00315.html#ga4bad5bb20c6ddaecfe4006c93841d180',1,'glm']]], - ['double3x4',['double3x4',['../a00315.html#ga2ef022e453d663d70aec414b2a80f756',1,'glm']]], - ['double4',['double4',['../a00315.html#gaf92f58af24f35617518aeb3d4f63fda6',1,'glm']]], - ['double4x2',['double4x2',['../a00315.html#gabca29ccceea53669618b751aae0ba83d',1,'glm']]], - ['double4x3',['double4x3',['../a00315.html#gafad66a02ccd360c86d6ab9ff9cfbc19c',1,'glm']]], - ['double4x4',['double4x4',['../a00315.html#gaab541bed2e788e4537852a2492860806',1,'glm']]], - ['dquat',['dquat',['../a00249.html#ga1181459aa5d640a3ea43861b118f3f0b',1,'glm']]], - ['dual_5fquat_5fidentity',['dual_quat_identity',['../a00317.html#ga0b35c0e30df8a875dbaa751e0bd800e0',1,'glm']]], - ['dual_5fquaternion_2ehpp',['dual_quaternion.hpp',['../a00022.html',1,'']]], - ['dualquat',['dualquat',['../a00317.html#gae93abee0c979902fbec6a7bee0f6fae1',1,'glm']]], - ['dualquat_5fcast',['dualquat_cast',['../a00317.html#gac4064ff813759740201765350eac4236',1,'glm::dualquat_cast(mat< 2, 4, T, Q > const &x)'],['../a00317.html#ga91025ebdca0f4ea54da08497b00e8c84',1,'glm::dualquat_cast(mat< 3, 4, T, Q > const &x)']]], - ['dvec1',['dvec1',['../a00268.html#ga6221af17edc2d4477a4583d2cd53e569',1,'glm']]], - ['dvec2',['dvec2',['../a00281.html#ga8b09c71aaac7da7867ae58377fe219a8',1,'glm']]], - ['dvec3',['dvec3',['../a00281.html#ga5b83ae3d0fdec519c038e4d2cf967cf0',1,'glm']]], - ['dvec4',['dvec4',['../a00281.html#ga57debab5d98ce618f7b2a97fe26eb3ac',1,'glm']]], - ['dword',['dword',['../a00354.html#ga86e46fff9f80ae33893d8d697f2ca98a',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_4.html b/tests/OpenGL/package/glm/doc/api/search/all_4.html deleted file mode 100644 index adc99fbb..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_4.js b/tests/OpenGL/package/glm/doc/api/search/all_4.js deleted file mode 100644 index 8b0ab1f8..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_4.js +++ /dev/null @@ -1,68 +0,0 @@ -var searchData= -[ - ['exponential_20functions',['Exponential functions',['../a00242.html',1,'']]], - ['e',['e',['../a00290.html#ga4b7956eb6e2fbedfc7cf2e46e85c5139',1,'glm']]], - ['easing_2ehpp',['easing.hpp',['../a00023.html',1,'']]], - ['elasticeasein',['elasticEaseIn',['../a00318.html#ga230918eccee4e113d10ec5b8cdc58695',1,'glm']]], - ['elasticeaseinout',['elasticEaseInOut',['../a00318.html#ga2db4ac8959559b11b4029e54812908d6',1,'glm']]], - ['elasticeaseout',['elasticEaseOut',['../a00318.html#gace9c9d1bdf88bf2ab1e7cdefa54c7365',1,'glm']]], - ['epsilon',['epsilon',['../a00259.html#ga2a1e57fc5592b69cfae84174cbfc9429',1,'glm']]], - ['epsilon_2ehpp',['epsilon.hpp',['../a00024.html',1,'']]], - ['epsilonequal',['epsilonEqual',['../a00291.html#ga91b417866cafadd076004778217a1844',1,'glm::epsilonEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T const &epsilon)'],['../a00291.html#gaa7f227999ca09e7ca994e8b35aba47bb',1,'glm::epsilonEqual(genType const &x, genType const &y, genType const &epsilon)']]], - ['epsilonnotequal',['epsilonNotEqual',['../a00291.html#gaf840d33b9a5261ec78dcd5125743b025',1,'glm::epsilonNotEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T const &epsilon)'],['../a00291.html#ga50a92103fb0cbd796908e1bf20c79aaf',1,'glm::epsilonNotEqual(genType const &x, genType const &y, genType const &epsilon)']]], - ['equal',['equal',['../a00246.html#ga27e90dcb7941c9b70e295dc3f6f6369f',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)'],['../a00246.html#gaf5d687d70d11708b68c36c6db5777040',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, T epsilon)'],['../a00246.html#gafa6a053e81179fa4292b35651c83c3fb',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, T, Q > const &epsilon)'],['../a00246.html#gab3a93f19e72e9141f50527c9de21d0c0',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, int ULPs)'],['../a00246.html#ga5305af376173f1902719fa309bbae671',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, int, Q > const &ULPs)'],['../a00255.html#gad7827af0549504ff1cd6a359786acc7a',1,'glm::equal(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00255.html#gaa001eecb91106463169a8e5ef1577b39',1,'glm::equal(qua< T, Q > const &x, qua< T, Q > const &y, T epsilon)'],['../a00275.html#ga2ac7651a2fa7354f2da610dbd50d28e2',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T epsilon)'],['../a00275.html#ga37d261a65f69babc82cec2ae1af7145f',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &epsilon)'],['../a00275.html#ga2b46cb50911e97b32f4cd743c2c69771',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, int ULPs)'],['../a00275.html#ga7da2b8605be7f245b39cb6fbf6d9d581',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)'],['../a00374.html#gab4c5cfdaa70834421397a85aa83ad946',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], - ['euclidean',['euclidean',['../a00350.html#ga1821d5b3324201e60a9e2823d0b5d0c8',1,'glm']]], - ['euler',['euler',['../a00290.html#gad8fe2e6f90bce9d829e9723b649fbd42',1,'glm']]], - ['euler_5fangles_2ehpp',['euler_angles.hpp',['../a00025.html',1,'']]], - ['eulerangles',['eulerAngles',['../a00299.html#gaf4dd967dead22dd932fc7460ceecb03f',1,'glm']]], - ['euleranglex',['eulerAngleX',['../a00319.html#gafba6282e4ed3ff8b5c75331abfba3489',1,'glm']]], - ['euleranglexy',['eulerAngleXY',['../a00319.html#ga64036577ee17a2d24be0dbc05881d4e2',1,'glm']]], - ['euleranglexyx',['eulerAngleXYX',['../a00319.html#ga29bd0787a28a6648159c0d6e69706066',1,'glm']]], - ['euleranglexyz',['eulerAngleXYZ',['../a00319.html#ga1975e0f0e9bed7f716dc9946da2ab645',1,'glm']]], - ['euleranglexz',['eulerAngleXZ',['../a00319.html#gaa39bd323c65c2fc0a1508be33a237ce9',1,'glm']]], - ['euleranglexzx',['eulerAngleXZX',['../a00319.html#ga60171c79a17aec85d7891ae1d1533ec9',1,'glm']]], - ['euleranglexzy',['eulerAngleXZY',['../a00319.html#ga996dce12a60d8a674ba6737a535fa910',1,'glm']]], - ['eulerangley',['eulerAngleY',['../a00319.html#gab84bf4746805fd69b8ecbb230e3974c5',1,'glm']]], - ['eulerangleyx',['eulerAngleYX',['../a00319.html#ga4f57e6dd25c3cffbbd4daa6ef3f4486d',1,'glm']]], - ['eulerangleyxy',['eulerAngleYXY',['../a00319.html#ga750fba9894117f87bcc529d7349d11de',1,'glm']]], - ['eulerangleyxz',['eulerAngleYXZ',['../a00319.html#gab8ba99a9814f6d9edf417b6c6d5b0c10',1,'glm']]], - ['eulerangleyz',['eulerAngleYZ',['../a00319.html#ga220379e10ac8cca55e275f0c9018fed9',1,'glm']]], - ['eulerangleyzx',['eulerAngleYZX',['../a00319.html#ga08bef16357b8f9b3051b3dcaec4b7848',1,'glm']]], - ['eulerangleyzy',['eulerAngleYZY',['../a00319.html#ga5e5e40abc27630749b42b3327c76d6e4',1,'glm']]], - ['euleranglez',['eulerAngleZ',['../a00319.html#ga5b3935248bb6c3ec6b0d9297d406e251',1,'glm']]], - ['euleranglezx',['eulerAngleZX',['../a00319.html#ga483903115cd4059228961046a28d69b5',1,'glm']]], - ['euleranglezxy',['eulerAngleZXY',['../a00319.html#gab4505c54d2dd654df4569fd1f04c43aa',1,'glm']]], - ['euleranglezxz',['eulerAngleZXZ',['../a00319.html#ga178f966c52b01e4d65e31ebd007e3247',1,'glm']]], - ['euleranglezy',['eulerAngleZY',['../a00319.html#ga400b2bd5984999efab663f3a68e1d020',1,'glm']]], - ['euleranglezyx',['eulerAngleZYX',['../a00319.html#ga2e61f1e39069c47530acab9167852dd6',1,'glm']]], - ['euleranglezyz',['eulerAngleZYZ',['../a00319.html#gacd795f1dbecaf74974f9c76bbcca6830',1,'glm']]], - ['exp',['exp',['../a00242.html#ga071566cadc7505455e611f2a0353f4d4',1,'glm::exp(vec< L, T, Q > const &v)'],['../a00256.html#gaab2d37ef7265819f1d2939b9dc2c52ac',1,'glm::exp(qua< T, Q > const &q)']]], - ['exp2',['exp2',['../a00242.html#gaff17ace6b579a03bf223ed4d1ed2cd16',1,'glm']]], - ['exponential_2ehpp',['exponential.hpp',['../a00026.html',1,'']]], - ['exponentialeasein',['exponentialEaseIn',['../a00318.html#ga7f24ee9219ab4c84dc8de24be84c1e3c',1,'glm']]], - ['exponentialeaseinout',['exponentialEaseInOut',['../a00318.html#ga232fb6dc093c5ce94bee105ff2947501',1,'glm']]], - ['exponentialeaseout',['exponentialEaseOut',['../a00318.html#ga517f2bcfd15bc2c25c466ae50808efc3',1,'glm']]], - ['ext_2ehpp',['ext.hpp',['../a00027.html',1,'']]], - ['extend',['extend',['../a00320.html#ga8140caae613b0f847ab0d7175dc03a37',1,'glm']]], - ['extend_2ehpp',['extend.hpp',['../a00028.html',1,'']]], - ['extended_5fmin_5fmax_2ehpp',['extended_min_max.hpp',['../a00029.html',1,'']]], - ['exterior_5fproduct_2ehpp',['exterior_product.hpp',['../a00030.html',1,'']]], - ['extracteuleranglexyx',['extractEulerAngleXYX',['../a00319.html#gaf1077a72171d0f3b08f022ab5ff88af7',1,'glm']]], - ['extracteuleranglexyz',['extractEulerAngleXYZ',['../a00319.html#gacea701562f778c1da4d3a0a1cf091000',1,'glm']]], - ['extracteuleranglexzx',['extractEulerAngleXZX',['../a00319.html#gacf0bc6c031f25fa3ee0055b62c8260d0',1,'glm']]], - ['extracteuleranglexzy',['extractEulerAngleXZY',['../a00319.html#gabe5a65d8eb1cd873c8de121cce1a15ed',1,'glm']]], - ['extracteulerangleyxy',['extractEulerAngleYXY',['../a00319.html#gaab8868556361a190db94374e9983ed39',1,'glm']]], - ['extracteulerangleyxz',['extractEulerAngleYXZ',['../a00319.html#gaf0937518e63037335a0e8358b6f053c5',1,'glm']]], - ['extracteulerangleyzx',['extractEulerAngleYZX',['../a00319.html#ga9049b78466796c0de2971756e25b93d3',1,'glm']]], - ['extracteulerangleyzy',['extractEulerAngleYZY',['../a00319.html#ga11dad972c109e4bf8694c915017c44a6',1,'glm']]], - ['extracteuleranglezxy',['extractEulerAngleZXY',['../a00319.html#ga81fbbca2ba0c778b9662d5355b4e2363',1,'glm']]], - ['extracteuleranglezxz',['extractEulerAngleZXZ',['../a00319.html#ga59359fef9bad92afaca55e193f91e702',1,'glm']]], - ['extracteuleranglezyx',['extractEulerAngleZYX',['../a00319.html#ga2d6c11a4abfa60c565483cee2d3f7665',1,'glm']]], - ['extracteuleranglezyz',['extractEulerAngleZYZ',['../a00319.html#gafdfa880a64b565223550c2d3938b1aeb',1,'glm']]], - ['extractmatrixrotation',['extractMatrixRotation',['../a00337.html#gabbc1c7385a145f04b5c54228965df145',1,'glm']]], - ['extractrealcomponent',['extractRealComponent',['../a00352.html#ga321953c1b2e7befe6f5dcfddbfc6b76b',1,'glm']]], - ['experimental_20extensions',['Experimental extensions',['../a00287.html',1,'']]], - ['matrix_5ftransform_2ehpp',['matrix_transform.hpp',['../a00108.html',1,'']]], - ['scalar_5frelational_2ehpp',['scalar_relational.hpp',['../a00149.html',1,'']]], - ['vector_5frelational_2ehpp',['vector_relational.hpp',['../a00224.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_5.html b/tests/OpenGL/package/glm/doc/api/search/all_5.html deleted file mode 100644 index a9fcd170..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_5.js b/tests/OpenGL/package/glm/doc/api/search/all_5.js deleted file mode 100644 index 0273a3fc..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_5.js +++ /dev/null @@ -1,131 +0,0 @@ -var searchData= -[ - ['floating_2dpoint_20pack_20and_20unpack_20functions',['Floating-Point Pack and Unpack Functions',['../a00372.html',1,'']]], - ['f32',['f32',['../a00304.html#gabe6a542dd6c1d5ffd847f1b9b4c9c9b7',1,'glm']]], - ['f32mat1',['f32mat1',['../a00346.html#ga145ad477a2a3e152855511c3b52469a6',1,'glm::gtx']]], - ['f32mat1x1',['f32mat1x1',['../a00346.html#gac88c6a4dbfc380aa26e3adbbade36348',1,'glm::gtx']]], - ['f32mat2',['f32mat2',['../a00304.html#gab12383ed6ac7595ed6fde4d266c58425',1,'glm']]], - ['f32mat2x2',['f32mat2x2',['../a00304.html#ga04100c76f7d55a0dd0983ccf05142bff',1,'glm']]], - ['f32mat2x3',['f32mat2x3',['../a00304.html#gab256cdab5eb582e426d749ae77b5b566',1,'glm']]], - ['f32mat2x4',['f32mat2x4',['../a00304.html#gaf512b74c4400b68f9fdf9388b3d6aac8',1,'glm']]], - ['f32mat3',['f32mat3',['../a00304.html#ga856f3905ee7cc2e4890a8a1d56c150be',1,'glm']]], - ['f32mat3x2',['f32mat3x2',['../a00304.html#ga1320a08e14fdff3821241eefab6947e9',1,'glm']]], - ['f32mat3x3',['f32mat3x3',['../a00304.html#ga65261fa8a21045c8646ddff114a56174',1,'glm']]], - ['f32mat3x4',['f32mat3x4',['../a00304.html#gab90ade28222f8b861d5ceaf81a3a7f5d',1,'glm']]], - ['f32mat4',['f32mat4',['../a00304.html#ga99d1b85ff99956b33da7e9992aad129a',1,'glm']]], - ['f32mat4x2',['f32mat4x2',['../a00304.html#ga3b32ca1e57a4ef91babbc3d35a34ea20',1,'glm']]], - ['f32mat4x3',['f32mat4x3',['../a00304.html#ga239b96198771b7add8eea7e6b59840c0',1,'glm']]], - ['f32mat4x4',['f32mat4x4',['../a00304.html#gaee4da0e9fbd8cfa2f89cb80889719dc3',1,'glm']]], - ['f32quat',['f32quat',['../a00304.html#ga38e674196ba411d642be40c47bf33939',1,'glm']]], - ['f32vec1',['f32vec1',['../a00304.html#ga701f32ab5b3fb06996b41f5c0d643805',1,'glm::f32vec1()'],['../a00346.html#ga07f8d7348eb7ae059a84c118fdfeb943',1,'glm::gtx::f32vec1()']]], - ['f32vec2',['f32vec2',['../a00304.html#ga5d6c70e080409a76a257dc55bd8ea2c8',1,'glm']]], - ['f32vec3',['f32vec3',['../a00304.html#gaea5c4518e175162e306d2c2b5ef5ac79',1,'glm']]], - ['f32vec4',['f32vec4',['../a00304.html#ga31c6ca0e074a44007f49a9a3720b18c8',1,'glm']]], - ['f64',['f64',['../a00304.html#ga1d794d240091678f602e8de225b8d8c9',1,'glm']]], - ['f64mat1',['f64mat1',['../a00346.html#ga59bfa589419b5265d01314fcecd33435',1,'glm::gtx']]], - ['f64mat1x1',['f64mat1x1',['../a00346.html#ga448eeb08d0b7d8c43a8b292c981955fd',1,'glm::gtx']]], - ['f64mat2',['f64mat2',['../a00304.html#gad9771450a54785d13080cdde0fe20c1d',1,'glm']]], - ['f64mat2x2',['f64mat2x2',['../a00304.html#ga9ec7c4c79e303c053e30729a95fb2c37',1,'glm']]], - ['f64mat2x3',['f64mat2x3',['../a00304.html#gae3ab5719fc4c1e966631dbbcba8d412a',1,'glm']]], - ['f64mat2x4',['f64mat2x4',['../a00304.html#gac87278e0c702ba8afff76316d4eeb769',1,'glm']]], - ['f64mat3',['f64mat3',['../a00304.html#ga9b69181efbf8f37ae934f135137b29c0',1,'glm']]], - ['f64mat3x2',['f64mat3x2',['../a00304.html#ga2473d8bf3f4abf967c4d0e18175be6f7',1,'glm']]], - ['f64mat3x3',['f64mat3x3',['../a00304.html#ga916c1aed91cf91f7b41399ebe7c6e185',1,'glm']]], - ['f64mat3x4',['f64mat3x4',['../a00304.html#gaab239fa9e35b65a67cbaa6ac082f3675',1,'glm']]], - ['f64mat4',['f64mat4',['../a00304.html#ga0ecd3f4952536e5ef12702b44d2626fc',1,'glm']]], - ['f64mat4x2',['f64mat4x2',['../a00304.html#gab7daf79d6bc06a68bea1c6f5e11b5512',1,'glm']]], - ['f64mat4x3',['f64mat4x3',['../a00304.html#ga3e2e66ffbe341a80bc005ba2b9552110',1,'glm']]], - ['f64mat4x4',['f64mat4x4',['../a00304.html#gae52e2b7077a9ff928a06ab5ce600b81e',1,'glm']]], - ['f64quat',['f64quat',['../a00304.html#ga2b114a2f2af0fe1dfeb569c767822940',1,'glm']]], - ['f64vec1',['f64vec1',['../a00304.html#gade502df1ce14f837fae7f60a03ddb9b0',1,'glm::f64vec1()'],['../a00346.html#gae5987a61b8c03d5c432a9e62f0b3efe1',1,'glm::gtx::f64vec1()']]], - ['f64vec2',['f64vec2',['../a00304.html#gadc4e1594f9555d919131ee02b17822a2',1,'glm']]], - ['f64vec3',['f64vec3',['../a00304.html#gaa7a1ddca75c5f629173bf4772db7a635',1,'glm']]], - ['f64vec4',['f64vec4',['../a00304.html#ga66e92e57260bdb910609b9a56bf83e97',1,'glm']]], - ['faceforward',['faceforward',['../a00279.html#ga7aed0a36c738169402404a3a5d54e43b',1,'glm']]], - ['factorial',['factorial',['../a00330.html#ga8cbd3120905f398ec321b5d1836e08fb',1,'glm']]], - ['fast_5fexponential_2ehpp',['fast_exponential.hpp',['../a00031.html',1,'']]], - ['fast_5fsquare_5froot_2ehpp',['fast_square_root.hpp',['../a00032.html',1,'']]], - ['fast_5ftrigonometry_2ehpp',['fast_trigonometry.hpp',['../a00033.html',1,'']]], - ['fastacos',['fastAcos',['../a00325.html#ga9721d63356e5d94fdc4b393a426ab26b',1,'glm']]], - ['fastasin',['fastAsin',['../a00325.html#ga562cb62c51fbfe7fac7db0bce706b81f',1,'glm']]], - ['fastatan',['fastAtan',['../a00325.html#ga8d197c6ef564f5e5d59af3b3f8adcc2c',1,'glm::fastAtan(T y, T x)'],['../a00325.html#gae25de86a968490ff56856fa425ec9d30',1,'glm::fastAtan(T angle)']]], - ['fastcos',['fastCos',['../a00325.html#gab34c8b45c23c0165a64dcecfcc3b302a',1,'glm']]], - ['fastdistance',['fastDistance',['../a00324.html#gaac333418d0c4e0cc6d3d219ed606c238',1,'glm::fastDistance(genType x, genType y)'],['../a00324.html#ga42d3e771fa7cb3c60d828e315829df19',1,'glm::fastDistance(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], - ['fastexp',['fastExp',['../a00323.html#gaa3180ac8f96ab37ab96e0cacaf608e10',1,'glm::fastExp(T x)'],['../a00323.html#ga3ba6153aec6bd74628f8b00530aa8d58',1,'glm::fastExp(vec< L, T, Q > const &x)']]], - ['fastexp2',['fastExp2',['../a00323.html#ga0af50585955eb14c60bb286297fabab2',1,'glm::fastExp2(T x)'],['../a00323.html#gacaaed8b67d20d244b7de217e7816c1b6',1,'glm::fastExp2(vec< L, T, Q > const &x)']]], - ['fastinversesqrt',['fastInverseSqrt',['../a00324.html#ga7f081b14d9c7035c8714eba5f7f75a8f',1,'glm::fastInverseSqrt(genType x)'],['../a00324.html#gadcd7be12b1e5ee182141359d4c45dd24',1,'glm::fastInverseSqrt(vec< L, T, Q > const &x)']]], - ['fastlength',['fastLength',['../a00324.html#gafe697d6287719538346bbdf8b1367c59',1,'glm::fastLength(genType x)'],['../a00324.html#ga90f66be92ef61e705c005e7b3209edb8',1,'glm::fastLength(vec< L, T, Q > const &x)']]], - ['fastlog',['fastLog',['../a00323.html#gae1bdc97b7f96a600e29c753f1cd4388a',1,'glm::fastLog(T x)'],['../a00323.html#ga937256993a7219e73f186bb348fe6be8',1,'glm::fastLog(vec< L, T, Q > const &x)']]], - ['fastlog2',['fastLog2',['../a00323.html#ga6e98118685f6dc9e05fbb13dd5e5234e',1,'glm::fastLog2(T x)'],['../a00323.html#ga7562043539194ccc24649f8475bc5584',1,'glm::fastLog2(vec< L, T, Q > const &x)']]], - ['fastmix',['fastMix',['../a00352.html#ga264e10708d58dd0ff53b7902a2bd2561',1,'glm']]], - ['fastnormalize',['fastNormalize',['../a00324.html#ga3b02c1d6e0c754144e2f1e110bf9f16c',1,'glm']]], - ['fastnormalizedot',['fastNormalizeDot',['../a00345.html#ga2746fb9b5bd22b06b2f7c8babba5de9e',1,'glm']]], - ['fastpow',['fastPow',['../a00323.html#ga5340e98a11fcbbd936ba6e983a154d50',1,'glm::fastPow(genType x, genType y)'],['../a00323.html#ga15325a8ed2d1c4ed2412c4b3b3927aa2',1,'glm::fastPow(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00323.html#ga7f2562db9c3e02ae76169c36b086c3f6',1,'glm::fastPow(genTypeT x, genTypeU y)'],['../a00323.html#ga1abe488c0829da5b9de70ac64aeaa7e5',1,'glm::fastPow(vec< L, T, Q > const &x)']]], - ['fastsin',['fastSin',['../a00325.html#ga0aab3257bb3b628d10a1e0483e2c6915',1,'glm']]], - ['fastsqrt',['fastSqrt',['../a00324.html#ga6c460e9414a50b2fc455c8f64c86cdc9',1,'glm::fastSqrt(genType x)'],['../a00324.html#gae83f0c03614f73eae5478c5b6274ee6d',1,'glm::fastSqrt(vec< L, T, Q > const &x)']]], - ['fasttan',['fastTan',['../a00325.html#gaf29b9c1101a10007b4f79ee89df27ba2',1,'glm']]], - ['fclamp',['fclamp',['../a00321.html#ga1e28539d3a46965ed9ef92ec7cb3b18a',1,'glm::fclamp(genType x, genType minVal, genType maxVal)'],['../a00321.html#ga60796d08903489ee185373593bc16b9d',1,'glm::fclamp(vec< L, T, Q > const &x, T minVal, T maxVal)'],['../a00321.html#ga5c15fa4709763c269c86c0b8b3aa2297',1,'glm::fclamp(vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)']]], - ['fdualquat',['fdualquat',['../a00317.html#ga237c2b9b42c9a930e49de5840ae0f930',1,'glm']]], - ['findlsb',['findLSB',['../a00370.html#gaf74c4d969fa34ab8acb9d390f5ca5274',1,'glm::findLSB(genIUType x)'],['../a00370.html#ga4454c0331d6369888c28ab677f4810c7',1,'glm::findLSB(vec< L, T, Q > const &v)']]], - ['findmsb',['findMSB',['../a00370.html#ga7e4a794d766861c70bc961630f8ef621',1,'glm::findMSB(genIUType x)'],['../a00370.html#ga39ac4d52028bb6ab08db5ad6562c2872',1,'glm::findMSB(vec< L, T, Q > const &v)']]], - ['findnsb',['findNSB',['../a00261.html#ga2777901e41ad6e1e9d0ad6cc855d1075',1,'glm::findNSB(genIUType x, int significantBitCount)'],['../a00274.html#gaff61eca266da315002a3db92ff0dd604',1,'glm::findNSB(vec< L, T, Q > const &Source, vec< L, int, Q > SignificantBitCount)']]], - ['fliplr',['fliplr',['../a00336.html#gaf39f4e5f78eb29c1a90277d45b9b3feb',1,'glm']]], - ['flipud',['flipud',['../a00336.html#ga85003371f0ba97380dd25e8905de1870',1,'glm']]], - ['float1',['float1',['../a00315.html#gaf5208d01f6c6fbcb7bb55d610b9c0ead',1,'glm']]], - ['float1x1',['float1x1',['../a00315.html#ga73720b8dc4620835b17f74d428f98c0c',1,'glm']]], - ['float2',['float2',['../a00315.html#ga02d3c013982c183906c61d74aa3166ce',1,'glm']]], - ['float2x2',['float2x2',['../a00315.html#ga33d43ecbb60a85a1366ff83f8a0ec85f',1,'glm']]], - ['float2x3',['float2x3',['../a00315.html#ga939b0cff15cee3030f75c1b2e36f89fe',1,'glm']]], - ['float2x4',['float2x4',['../a00315.html#gafec3cfd901ab334a92e0242b8f2269b4',1,'glm']]], - ['float3',['float3',['../a00315.html#ga821ff110fc8533a053cbfcc93e078cc0',1,'glm']]], - ['float32',['float32',['../a00304.html#gaacdc525d6f7bddb3ae95d5c311bd06a1',1,'glm']]], - ['float32_5ft',['float32_t',['../a00304.html#gaa4947bc8b47c72fceea9bda730ecf603',1,'glm']]], - ['float3x2',['float3x2',['../a00315.html#gaa6c69f04ba95f3faedf95dae874de576',1,'glm']]], - ['float3x3',['float3x3',['../a00315.html#ga6ceb5d38a58becdf420026e12a6562f3',1,'glm']]], - ['float3x4',['float3x4',['../a00315.html#ga4d2679c321b793ca3784fe0315bb5332',1,'glm']]], - ['float4',['float4',['../a00315.html#gae2da7345087db3815a25d8837a727ef1',1,'glm']]], - ['float4x2',['float4x2',['../a00315.html#ga308b9af0c221145bcfe9bfc129d9098e',1,'glm']]], - ['float4x3',['float4x3',['../a00315.html#gac0a51b4812038aa81d73ffcc37f741ac',1,'glm']]], - ['float4x4',['float4x4',['../a00315.html#gad3051649b3715d828a4ab92cdae7c3bf',1,'glm']]], - ['float64',['float64',['../a00304.html#ga232fad1b0d6dcc7c16aabde98b2e2a80',1,'glm']]], - ['float64_5ft',['float64_t',['../a00304.html#ga728366fef72cd96f0a5fa6429f05469e',1,'glm']]], - ['floatbitstoint',['floatBitsToInt',['../a00241.html#ga1425c1c3160ec51214b03a0469a3013d',1,'glm::floatBitsToInt(float const &v)'],['../a00241.html#ga99f7d62f78ac5ea3b49bae715c9488ed',1,'glm::floatBitsToInt(vec< L, float, Q > const &v)']]], - ['floatbitstouint',['floatBitsToUint',['../a00241.html#ga70e0271c34af52f3100c7960e18c3f2b',1,'glm::floatBitsToUint(float const &v)'],['../a00241.html#ga49418ba4c8a60fbbb5d57b705f3e26db',1,'glm::floatBitsToUint(vec< L, float, Q > const &v)']]], - ['floor',['floor',['../a00241.html#gaa9d0742639e85b29c7c5de11cfd6840d',1,'glm']]], - ['floor_5flog2',['floor_log2',['../a00330.html#ga7011b4e1c1e1ed492149b028feacc00e',1,'glm']]], - ['floormultiple',['floorMultiple',['../a00302.html#ga2ffa3cd5f2ea746ee1bf57c46da6315e',1,'glm::floorMultiple(genType v, genType Multiple)'],['../a00302.html#gacdd8901448f51f0b192380e422fae3e4',1,'glm::floorMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], - ['floorpoweroftwo',['floorPowerOfTwo',['../a00302.html#gafe273a57935d04c9db677bf67f9a71f4',1,'glm::floorPowerOfTwo(genIUType v)'],['../a00302.html#gaf0d591a8fca8ddb9289cdeb44b989c2d',1,'glm::floorPowerOfTwo(vec< L, T, Q > const &v)']]], - ['fma',['fma',['../a00241.html#gad0f444d4b81cc53c3b6edf5aa25078c2',1,'glm']]], - ['fmat2',['fmat2',['../a00304.html#ga4541dc2feb2a31d6ecb5a303f3dd3280',1,'glm']]], - ['fmat2x2',['fmat2x2',['../a00304.html#ga3350c93c3275298f940a42875388e4b4',1,'glm']]], - ['fmat2x3',['fmat2x3',['../a00304.html#ga55a2d2a8eb09b5633668257eb3cad453',1,'glm']]], - ['fmat2x4',['fmat2x4',['../a00304.html#ga681381f19f11c9e5ee45cda2c56937ff',1,'glm']]], - ['fmat3',['fmat3',['../a00304.html#ga253d453c20e037730023fea0215cb6f6',1,'glm']]], - ['fmat3x2',['fmat3x2',['../a00304.html#ga6af54d70d9beb0a7ef992a879e86b04f',1,'glm']]], - ['fmat3x3',['fmat3x3',['../a00304.html#gaa07c86650253672a19dbfb898f3265b8',1,'glm']]], - ['fmat3x4',['fmat3x4',['../a00304.html#ga44e158af77a670ee1b58c03cda9e1619',1,'glm']]], - ['fmat4',['fmat4',['../a00304.html#ga8cb400c0f4438f2640035d7b9824a0ca',1,'glm']]], - ['fmat4x2',['fmat4x2',['../a00304.html#ga8c8aa45aafcc23238edb1d5aeb801774',1,'glm']]], - ['fmat4x3',['fmat4x3',['../a00304.html#ga4295048a78bdf46b8a7de77ec665b497',1,'glm']]], - ['fmat4x4',['fmat4x4',['../a00304.html#gad01cc6479bde1fd1870f13d3ed9530b3',1,'glm']]], - ['fmax',['fmax',['../a00258.html#ga36920478565cf608e93064283ce06421',1,'glm::fmax(T a, T b)'],['../a00258.html#ga0007bba71ca451ac70e99d28dfbeaab9',1,'glm::fmax(T a, T b, T C)'],['../a00258.html#ga27e260b1ff4d04c3ad4b864d26cbaf08',1,'glm::fmax(T a, T b, T C, T D)'],['../a00267.html#gad66b6441f7200db16c9f341711733c56',1,'glm::fmax(vec< L, T, Q > const &a, T b)'],['../a00267.html#ga8df4be3f48d6717c40ea788fd30deebf',1,'glm::fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b)'],['../a00267.html#ga0f04ba924294dae4234ca93ede23229a',1,'glm::fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)'],['../a00267.html#ga4ed3eb250ccbe17bfe8ded8a6b72d230',1,'glm::fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)'],['../a00321.html#gae5792cb2b51190057e4aea027eb56f81',1,'glm::fmax(genType x, genType y)']]], - ['fmin',['fmin',['../a00258.html#ga7b2b438a765e2a62098c79eb212f28f0',1,'glm::fmin(T a, T b)'],['../a00258.html#ga1a95fe4cf5437e8133f1093fe9726a64',1,'glm::fmin(T a, T b, T c)'],['../a00258.html#ga3d6f9c6c16bfd6f38f2c4f8076e8b661',1,'glm::fmin(T a, T b, T c, T d)'],['../a00267.html#gae989203363cff9eab5093630df4fe071',1,'glm::fmin(vec< L, T, Q > const &x, T y)'],['../a00267.html#ga7c42e93cd778c9181d1cdeea4d3e43bd',1,'glm::fmin(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00267.html#ga7e62739055b49189d9355471f78fe000',1,'glm::fmin(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)'],['../a00267.html#ga4a543dd7d22ad1f3b8b839f808a9d93c',1,'glm::fmin(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)'],['../a00321.html#gaa3200559611ac5b9b9ae7283547916a7',1,'glm::fmin(genType x, genType y)']]], - ['fmod',['fmod',['../a00314.html#gae5e80425df9833164ad469e83b475fb4',1,'glm']]], - ['four_5fover_5fpi',['four_over_pi',['../a00290.html#ga753950e5140e4ea6a88e4a18ba61dc09',1,'glm']]], - ['fract',['fract',['../a00241.html#ga8ba89e40e55ae5cdf228548f9b7639c7',1,'glm::fract(genType x)'],['../a00241.html#ga2df623004f634b440d61e018d62c751b',1,'glm::fract(vec< L, T, Q > const &x)']]], - ['frexp',['frexp',['../a00241.html#gaddf5ef73283c171730e0bcc11833fa81',1,'glm']]], - ['frustum',['frustum',['../a00243.html#ga0bcd4542e0affc63a0b8c08fcb839ea9',1,'glm']]], - ['frustumlh',['frustumLH',['../a00243.html#gae4277c37f61d81da01bc9db14ea90296',1,'glm']]], - ['frustumlh_5fno',['frustumLH_NO',['../a00243.html#ga259520cad03b3f8bca9417920035ed01',1,'glm']]], - ['frustumlh_5fzo',['frustumLH_ZO',['../a00243.html#ga94218b094862d17798370242680b9030',1,'glm']]], - ['frustumno',['frustumNO',['../a00243.html#gae34ec664ad44860bf4b5ba631f0e0e90',1,'glm']]], - ['frustumrh',['frustumRH',['../a00243.html#ga4366ab45880c6c5f8b3e8c371ca4b136',1,'glm']]], - ['frustumrh_5fno',['frustumRH_NO',['../a00243.html#ga9236c8439f21be186b79c97b588836b9',1,'glm']]], - ['frustumrh_5fzo',['frustumRH_ZO',['../a00243.html#ga7654a9227f14d5382786b9fc0eb5692d',1,'glm']]], - ['frustumzo',['frustumZO',['../a00243.html#gaa73322e152edf50cf30a6edac342a757',1,'glm']]], - ['functions_2ehpp',['functions.hpp',['../a00034.html',1,'']]], - ['fvec1',['fvec1',['../a00304.html#ga98b9ed43cf8c5cf1d354b23c7df9119f',1,'glm']]], - ['fvec2',['fvec2',['../a00304.html#ga24273aa02abaecaab7f160bac437a339',1,'glm']]], - ['fvec3',['fvec3',['../a00304.html#ga89930533646b30d021759298aa6bf04a',1,'glm']]], - ['fvec4',['fvec4',['../a00304.html#ga713c796c54875cf4092d42ff9d9096b0',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_6.html b/tests/OpenGL/package/glm/doc/api/search/all_6.html deleted file mode 100644 index 821c374d..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_6.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_6.js b/tests/OpenGL/package/glm/doc/api/search/all_6.js deleted file mode 100644 index b67e426f..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_6.js +++ /dev/null @@ -1,143 +0,0 @@ -var searchData= -[ - ['color_5fspace_2ehpp',['color_space.hpp',['../a00012.html',1,'']]], - ['color_5fspace_2ehpp',['color_space.hpp',['../a00013.html',1,'']]], - ['common_2ehpp',['common.hpp',['../a00016.html',1,'']]], - ['geometric_20functions',['Geometric functions',['../a00279.html',1,'']]], - ['glm_5fext_5fmatrix_5fclip_5fspace',['GLM_EXT_matrix_clip_space',['../a00243.html',1,'']]], - ['glm_5fext_5fmatrix_5fcommon',['GLM_EXT_matrix_common',['../a00244.html',1,'']]], - ['glm_5fext_5fmatrix_5fprojection',['GLM_EXT_matrix_projection',['../a00245.html',1,'']]], - ['glm_5fext_5fmatrix_5frelational',['GLM_EXT_matrix_relational',['../a00246.html',1,'']]], - ['glm_5fext_5fmatrix_5ftransform',['GLM_EXT_matrix_transform',['../a00247.html',1,'']]], - ['glm_5fext_5fquaternion_5fcommon',['GLM_EXT_quaternion_common',['../a00248.html',1,'']]], - ['glm_5fext_5fquaternion_5fdouble',['GLM_EXT_quaternion_double',['../a00249.html',1,'']]], - ['glm_5fext_5fquaternion_5fdouble_5fprecision',['GLM_EXT_quaternion_double_precision',['../a00250.html',1,'']]], - ['glm_5fext_5fquaternion_5fexponential',['GLM_EXT_quaternion_exponential',['../a00251.html',1,'']]], - ['glm_5fext_5fquaternion_5ffloat',['GLM_EXT_quaternion_float',['../a00252.html',1,'']]], - ['glm_5fext_5fquaternion_5ffloat_5fprecision',['GLM_EXT_quaternion_float_precision',['../a00253.html',1,'']]], - ['glm_5fext_5fquaternion_5fgeometric',['GLM_EXT_quaternion_geometric',['../a00254.html',1,'']]], - ['glm_5fext_5fquaternion_5frelational',['GLM_EXT_quaternion_relational',['../a00255.html',1,'']]], - ['glm_5fext_5fquaternion_5ftransform',['GLM_EXT_quaternion_transform',['../a00256.html',1,'']]], - ['glm_5fext_5fquaternion_5ftrigonometric',['GLM_EXT_quaternion_trigonometric',['../a00257.html',1,'']]], - ['glm_5fext_5fscalar_5fcommon',['GLM_EXT_scalar_common',['../a00258.html',1,'']]], - ['glm_5fext_5fscalar_5fconstants',['GLM_EXT_scalar_constants',['../a00259.html',1,'']]], - ['glm_5fext_5fscalar_5fint_5fsized',['GLM_EXT_scalar_int_sized',['../a00260.html',1,'']]], - ['glm_5fext_5fscalar_5finteger',['GLM_EXT_scalar_integer',['../a00261.html',1,'']]], - ['glm_5fext_5fscalar_5frelational',['GLM_EXT_scalar_relational',['../a00262.html',1,'']]], - ['glm_5fext_5fscalar_5fuint_5fsized',['GLM_EXT_scalar_uint_sized',['../a00263.html',1,'']]], - ['glm_5fext_5fscalar_5fulp',['GLM_EXT_scalar_ulp',['../a00264.html',1,'']]], - ['glm_5fext_5fvector_5fbool1',['GLM_EXT_vector_bool1',['../a00265.html',1,'']]], - ['glm_5fext_5fvector_5fbool1_5fprecision',['GLM_EXT_vector_bool1_precision',['../a00266.html',1,'']]], - ['glm_5fext_5fvector_5fcommon',['GLM_EXT_vector_common',['../a00267.html',1,'']]], - ['glm_5fext_5fvector_5fdouble1',['GLM_EXT_vector_double1',['../a00268.html',1,'']]], - ['glm_5fext_5fvector_5fdouble1_5fprecision',['GLM_EXT_vector_double1_precision',['../a00269.html',1,'']]], - ['glm_5fext_5fvector_5ffloat1',['GLM_EXT_vector_float1',['../a00270.html',1,'']]], - ['glm_5fext_5fvector_5ffloat1_5fprecision',['GLM_EXT_vector_float1_precision',['../a00271.html',1,'']]], - ['glm_5fext_5fvector_5fint1',['GLM_EXT_vector_int1',['../a00272.html',1,'']]], - ['glm_5fext_5fvector_5fint1_5fprecision',['GLM_EXT_vector_int1_precision',['../a00273.html',1,'']]], - ['glm_5fext_5fvector_5finteger',['GLM_EXT_vector_integer',['../a00274.html',1,'']]], - ['glm_5fext_5fvector_5frelational',['GLM_EXT_vector_relational',['../a00275.html',1,'']]], - ['glm_5fext_5fvector_5fuint1',['GLM_EXT_vector_uint1',['../a00276.html',1,'']]], - ['glm_5fext_5fvector_5fuint1_5fprecision',['GLM_EXT_vector_uint1_precision',['../a00277.html',1,'']]], - ['glm_5fext_5fvector_5fulp',['GLM_EXT_vector_ulp',['../a00278.html',1,'']]], - ['gauss',['gauss',['../a00326.html#ga0b50b197ff74261a0fad90f4b8d24702',1,'glm::gauss(T x, T ExpectedValue, T StandardDeviation)'],['../a00326.html#gad19ec8754a83c0b9a8dc16b7e60705ab',1,'glm::gauss(vec< 2, T, Q > const &Coord, vec< 2, T, Q > const &ExpectedValue, vec< 2, T, Q > const &StandardDeviation)']]], - ['gaussrand',['gaussRand',['../a00300.html#ga5193a83e49e4fdc5652c084711083574',1,'glm']]], - ['geometric_2ehpp',['geometric.hpp',['../a00036.html',1,'']]], - ['glm_2ehpp',['glm.hpp',['../a00037.html',1,'']]], - ['glm_5faligned_5ftypedef',['GLM_ALIGNED_TYPEDEF',['../a00364.html#gab5cd5c5fad228b25c782084f1cc30114',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int8, aligned_lowp_int8, 1)'],['../a00364.html#ga5bb5dd895ef625c1b113f2cf400186b0',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int16, aligned_lowp_int16, 2)'],['../a00364.html#gac6efa54cf7c6c86f7158922abdb1a430',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int32, aligned_lowp_int32, 4)'],['../a00364.html#ga6612eb77c8607048e7552279a11eeb5f',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int64, aligned_lowp_int64, 8)'],['../a00364.html#ga7ddc1848ff2223026db8968ce0c97497',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int8_t, aligned_lowp_int8_t, 1)'],['../a00364.html#ga22240dd9458b0f8c11fbcc4f48714f68',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int16_t, aligned_lowp_int16_t, 2)'],['../a00364.html#ga8130ea381d76a2cc34a93ccbb6cf487d',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int32_t, aligned_lowp_int32_t, 4)'],['../a00364.html#ga7ccb60f3215d293fd62b33b31ed0e7be',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int64_t, aligned_lowp_int64_t, 8)'],['../a00364.html#gac20d508d2ef5cc95ad3daf083c57ec2a',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i8, aligned_lowp_i8, 1)'],['../a00364.html#ga50257b48069a31d0c8d9c1f644d267de',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i16, aligned_lowp_i16, 2)'],['../a00364.html#gaa07e98e67b7a3435c0746018c7a2a839',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i32, aligned_lowp_i32, 4)'],['../a00364.html#ga62601fc6f8ca298b77285bedf03faffd',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i64, aligned_lowp_i64, 8)'],['../a00364.html#gac8cff825951aeb54dd846037113c72db',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int8, aligned_mediump_int8, 1)'],['../a00364.html#ga78f443d88f438575a62b5df497cdf66b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int16, aligned_mediump_int16, 2)'],['../a00364.html#ga0680cd3b5d4e8006985fb41a4f9b57af',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int32, aligned_mediump_int32, 4)'],['../a00364.html#gad9e5babb1dd3e3531b42c37bf25dd951',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int64, aligned_mediump_int64, 8)'],['../a00364.html#ga353fd9fa8a9ad952fcabd0d53ad9a6dd',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int8_t, aligned_mediump_int8_t, 1)'],['../a00364.html#ga2196442c0e5c5e8c77842de388c42521',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int16_t, aligned_mediump_int16_t, 2)'],['../a00364.html#ga1284488189daf897cf095c5eefad9744',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int32_t, aligned_mediump_int32_t, 4)'],['../a00364.html#ga73fdc86a539808af58808b7c60a1c4d8',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int64_t, aligned_mediump_int64_t, 8)'],['../a00364.html#gafafeea923e1983262c972e2b83922d3b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i8, aligned_mediump_i8, 1)'],['../a00364.html#ga4b35ca5fe8f55c9d2fe54fdb8d8896f4',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i16, aligned_mediump_i16, 2)'],['../a00364.html#ga63b882e29170d428463d99c3d630acc6',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i32, aligned_mediump_i32, 4)'],['../a00364.html#ga8b20507bb048c1edea2d441cc953e6f0',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i64, aligned_mediump_i64, 8)'],['../a00364.html#ga56c5ca60813027b603c7b61425a0479d',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int8, aligned_highp_int8, 1)'],['../a00364.html#ga7a751b3aff24c0259f4a7357c2969089',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int16, aligned_highp_int16, 2)'],['../a00364.html#ga70cd2144351c556469ee6119e59971fc',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int32, aligned_highp_int32, 4)'],['../a00364.html#ga46bbf08dc004d8c433041e0b5018a5d3',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int64, aligned_highp_int64, 8)'],['../a00364.html#gab3e10c77a20d1abad2de1c561c7a5c18',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int8_t, aligned_highp_int8_t, 1)'],['../a00364.html#ga968f30319ebeaca9ebcd3a25a8e139fb',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int16_t, aligned_highp_int16_t, 2)'],['../a00364.html#gaae773c28e6390c6aa76f5b678b7098a3',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int32_t, aligned_highp_int32_t, 4)'],['../a00364.html#ga790cfff1ca39d0ed696ffed980809311',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int64_t, aligned_highp_int64_t, 8)'],['../a00364.html#ga8265b91eb23c120a9b0c3e381bc37b96',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i8, aligned_highp_i8, 1)'],['../a00364.html#gae6d384de17588d8edb894fbe06e0d410',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i16, aligned_highp_i16, 2)'],['../a00364.html#ga9c8172b745ee03fc5b2b91c350c2922f',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i32, aligned_highp_i32, 4)'],['../a00364.html#ga77e0dff12aa4020ddc3f8cabbea7b2e6',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i64, aligned_highp_i64, 8)'],['../a00364.html#gabd82b9faa9d4d618dbbe0fc8a1efee63',1,'glm::GLM_ALIGNED_TYPEDEF(int8, aligned_int8, 1)'],['../a00364.html#ga285649744560be21000cfd81bbb5d507',1,'glm::GLM_ALIGNED_TYPEDEF(int16, aligned_int16, 2)'],['../a00364.html#ga07732da630b2deda428ce95c0ecaf3ff',1,'glm::GLM_ALIGNED_TYPEDEF(int32, aligned_int32, 4)'],['../a00364.html#ga1a8da2a8c51f69c07a2e7f473aa420f4',1,'glm::GLM_ALIGNED_TYPEDEF(int64, aligned_int64, 8)'],['../a00364.html#ga848aedf13e2d9738acf0bb482c590174',1,'glm::GLM_ALIGNED_TYPEDEF(int8_t, aligned_int8_t, 1)'],['../a00364.html#gafd2803d39049dd45a37a63931e25d943',1,'glm::GLM_ALIGNED_TYPEDEF(int16_t, aligned_int16_t, 2)'],['../a00364.html#gae553b33349d6da832cf0724f1e024094',1,'glm::GLM_ALIGNED_TYPEDEF(int32_t, aligned_int32_t, 4)'],['../a00364.html#ga16d223a2b3409e812e1d3bd87f0e9e5c',1,'glm::GLM_ALIGNED_TYPEDEF(int64_t, aligned_int64_t, 8)'],['../a00364.html#ga2de065d2ddfdb366bcd0febca79ae2ad',1,'glm::GLM_ALIGNED_TYPEDEF(i8, aligned_i8, 1)'],['../a00364.html#gabd786bdc20a11c8cb05c92c8212e28d3',1,'glm::GLM_ALIGNED_TYPEDEF(i16, aligned_i16, 2)'],['../a00364.html#gad4aefe56691cdb640c72f0d46d3fb532',1,'glm::GLM_ALIGNED_TYPEDEF(i32, aligned_i32, 4)'],['../a00364.html#ga8fe9745f7de24a8394518152ff9fccdc',1,'glm::GLM_ALIGNED_TYPEDEF(i64, aligned_i64, 8)'],['../a00364.html#gaaad735483450099f7f882d4e3a3569bd',1,'glm::GLM_ALIGNED_TYPEDEF(ivec1, aligned_ivec1, 4)'],['../a00364.html#gac7b6f823802edbd6edbaf70ea25bf068',1,'glm::GLM_ALIGNED_TYPEDEF(ivec2, aligned_ivec2, 8)'],['../a00364.html#ga3e235bcd2b8029613f25b8d40a2d3ef7',1,'glm::GLM_ALIGNED_TYPEDEF(ivec3, aligned_ivec3, 16)'],['../a00364.html#ga50d8a9523968c77f8325b4c9bfbff41e',1,'glm::GLM_ALIGNED_TYPEDEF(ivec4, aligned_ivec4, 16)'],['../a00364.html#ga9ec20fdfb729c702032da9378c79679f',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec1, aligned_i8vec1, 1)'],['../a00364.html#ga25b3fe1d9e8d0a5e86c1949c1acd8131',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec2, aligned_i8vec2, 2)'],['../a00364.html#ga2958f907719d94d8109b562540c910e2',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec3, aligned_i8vec3, 4)'],['../a00364.html#ga1fe6fc032a978f1c845fac9aa0668714',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec4, aligned_i8vec4, 4)'],['../a00364.html#gaa4161e7a496dc96972254143fe873e55',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec1, aligned_i16vec1, 2)'],['../a00364.html#ga9d7cb211ccda69b1c22ddeeb0f3e7aba',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec2, aligned_i16vec2, 4)'],['../a00364.html#gaaee91dd2ab34423bcc11072ef6bd0f02',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec3, aligned_i16vec3, 8)'],['../a00364.html#ga49f047ccaa8b31fad9f26c67bf9b3510',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec4, aligned_i16vec4, 8)'],['../a00364.html#ga904e9c2436bb099397c0823506a0771f',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec1, aligned_i32vec1, 4)'],['../a00364.html#gaf90651cf2f5e7ee2b11cfdc5a6749534',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec2, aligned_i32vec2, 8)'],['../a00364.html#ga7354a4ead8cb17868aec36b9c30d6010',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec3, aligned_i32vec3, 16)'],['../a00364.html#gad2ecbdea18732163e2636e27b37981ee',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec4, aligned_i32vec4, 16)'],['../a00364.html#ga965b1c9aa1800e93d4abc2eb2b5afcbf',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec1, aligned_i64vec1, 8)'],['../a00364.html#ga1f9e9c2ea2768675dff9bae5cde2d829',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec2, aligned_i64vec2, 16)'],['../a00364.html#gad77c317b7d942322cd5be4c8127b3187',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec3, aligned_i64vec3, 32)'],['../a00364.html#ga716f8ea809bdb11b5b542d8b71aeb04f',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec4, aligned_i64vec4, 32)'],['../a00364.html#gad46f8e9082d5878b1bc04f9c1471cdaa',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint8, aligned_lowp_uint8, 1)'],['../a00364.html#ga1246094581af624aca6c7499aaabf801',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint16, aligned_lowp_uint16, 2)'],['../a00364.html#ga7a5009a1d0196bbf21dd7518f61f0249',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint32, aligned_lowp_uint32, 4)'],['../a00364.html#ga45213fd18b3bb1df391671afefe4d1e7',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint64, aligned_lowp_uint64, 8)'],['../a00364.html#ga0ba26b4e3fd9ecbc25358efd68d8a4ca',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint8_t, aligned_lowp_uint8_t, 1)'],['../a00364.html#gaf2b58f5fb6d4ec8ce7b76221d3af43e1',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint16_t, aligned_lowp_uint16_t, 2)'],['../a00364.html#gadc246401847dcba155f0699425e49dcd',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint32_t, aligned_lowp_uint32_t, 4)'],['../a00364.html#gaace64bddf51a9def01498da9a94fb01c',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint64_t, aligned_lowp_uint64_t, 8)'],['../a00364.html#gad7bb97c29d664bd86ffb1bed4abc5534',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u8, aligned_lowp_u8, 1)'],['../a00364.html#ga404bba7785130e0b1384d695a9450b28',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u16, aligned_lowp_u16, 2)'],['../a00364.html#ga31ba41fd896257536958ec6080203d2a',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u32, aligned_lowp_u32, 4)'],['../a00364.html#gacca5f13627f57b3505676e40a6e43e5e',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u64, aligned_lowp_u64, 8)'],['../a00364.html#ga5faf1d3e70bf33174dd7f3d01d5b883b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint8, aligned_mediump_uint8, 1)'],['../a00364.html#ga727e2bf2c433bb3b0182605860a48363',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint16, aligned_mediump_uint16, 2)'],['../a00364.html#ga12566ca66d5962dadb4a5eb4c74e891e',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint32, aligned_mediump_uint32, 4)'],['../a00364.html#ga7b66a97a8acaa35c5a377b947318c6bc',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint64, aligned_mediump_uint64, 8)'],['../a00364.html#gaa9cde002439b74fa66120a16a9f55fcc',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint8_t, aligned_mediump_uint8_t, 1)'],['../a00364.html#ga1ca98c67f7d1e975f7c5202f1da1df1f',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint16_t, aligned_mediump_uint16_t, 2)'],['../a00364.html#ga1dc8bc6199d785f235576948d80a597c',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint32_t, aligned_mediump_uint32_t, 4)'],['../a00364.html#gad14a0f2ec93519682b73d70b8e401d81',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint64_t, aligned_mediump_uint64_t, 8)'],['../a00364.html#gada8b996eb6526dc1ead813bd49539d1b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u8, aligned_mediump_u8, 1)'],['../a00364.html#ga28948f6bfb52b42deb9d73ae1ea8d8b0',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u16, aligned_mediump_u16, 2)'],['../a00364.html#gad6a7c0b5630f89d3f1c5b4ef2919bb4c',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u32, aligned_mediump_u32, 4)'],['../a00364.html#gaa0fc531cbaa972ac3a0b86d21ef4a7fa',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u64, aligned_mediump_u64, 8)'],['../a00364.html#ga0ee829f7b754b262bbfe6317c0d678ac',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint8, aligned_highp_uint8, 1)'],['../a00364.html#ga447848a817a626cae08cedc9778b331c',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint16, aligned_highp_uint16, 2)'],['../a00364.html#ga6027ae13b2734f542a6e7beee11b8820',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint32, aligned_highp_uint32, 4)'],['../a00364.html#ga2aca46c8608c95ef991ee4c332acde5f',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint64, aligned_highp_uint64, 8)'],['../a00364.html#gaff50b10dd1c48be324fdaffd18e2c7ea',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint8_t, aligned_highp_uint8_t, 1)'],['../a00364.html#ga9fc4421dbb833d5461e6d4e59dcfde55',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint16_t, aligned_highp_uint16_t, 2)'],['../a00364.html#ga329f1e2b94b33ba5e3918197030bcf03',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint32_t, aligned_highp_uint32_t, 4)'],['../a00364.html#ga71e646f7e301aa422328194162c9c998',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint64_t, aligned_highp_uint64_t, 8)'],['../a00364.html#ga8942e09f479489441a7a5004c6d8cb66',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u8, aligned_highp_u8, 1)'],['../a00364.html#gaab32497d6e4db16ee439dbedd64c5865',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u16, aligned_highp_u16, 2)'],['../a00364.html#gaaadbb34952eca8e3d7fe122c3e167742',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u32, aligned_highp_u32, 4)'],['../a00364.html#ga92024d27c74a3650afb55ec8e024ed25',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u64, aligned_highp_u64, 8)'],['../a00364.html#gabde1d0b4072df35453db76075ab896a6',1,'glm::GLM_ALIGNED_TYPEDEF(uint8, aligned_uint8, 1)'],['../a00364.html#ga06c296c9e398b294c8c9dd2a7693dcbb',1,'glm::GLM_ALIGNED_TYPEDEF(uint16, aligned_uint16, 2)'],['../a00364.html#gacf1744488c96ebd33c9f36ad33b2010a',1,'glm::GLM_ALIGNED_TYPEDEF(uint32, aligned_uint32, 4)'],['../a00364.html#ga3328061a64c20ba59d5f9da24c2cd059',1,'glm::GLM_ALIGNED_TYPEDEF(uint64, aligned_uint64, 8)'],['../a00364.html#gaf6ced36f13bae57f377bafa6f5fcc299',1,'glm::GLM_ALIGNED_TYPEDEF(uint8_t, aligned_uint8_t, 1)'],['../a00364.html#gafbc7fb7847bfc78a339d1d371c915c73',1,'glm::GLM_ALIGNED_TYPEDEF(uint16_t, aligned_uint16_t, 2)'],['../a00364.html#gaa86bc56a73fd8120b1121b5f5e6245ae',1,'glm::GLM_ALIGNED_TYPEDEF(uint32_t, aligned_uint32_t, 4)'],['../a00364.html#ga68c0b9e669060d0eb5ab8c3ddeb483d8',1,'glm::GLM_ALIGNED_TYPEDEF(uint64_t, aligned_uint64_t, 8)'],['../a00364.html#ga4f3bab577daf3343e99cc005134bce86',1,'glm::GLM_ALIGNED_TYPEDEF(u8, aligned_u8, 1)'],['../a00364.html#ga13a2391339d0790d43b76d00a7611c4f',1,'glm::GLM_ALIGNED_TYPEDEF(u16, aligned_u16, 2)'],['../a00364.html#ga197570e03acbc3d18ab698e342971e8f',1,'glm::GLM_ALIGNED_TYPEDEF(u32, aligned_u32, 4)'],['../a00364.html#ga0f033b21e145a1faa32c62ede5878993',1,'glm::GLM_ALIGNED_TYPEDEF(u64, aligned_u64, 8)'],['../a00364.html#ga509af83527f5cd512e9a7873590663aa',1,'glm::GLM_ALIGNED_TYPEDEF(uvec1, aligned_uvec1, 4)'],['../a00364.html#ga94e86186978c502c6dc0c0d9c4a30679',1,'glm::GLM_ALIGNED_TYPEDEF(uvec2, aligned_uvec2, 8)'],['../a00364.html#ga5cec574686a7f3c8ed24bb195c5e2d0a',1,'glm::GLM_ALIGNED_TYPEDEF(uvec3, aligned_uvec3, 16)'],['../a00364.html#ga47edfdcee9c89b1ebdaf20450323b1d4',1,'glm::GLM_ALIGNED_TYPEDEF(uvec4, aligned_uvec4, 16)'],['../a00364.html#ga5611d6718e3a00096918a64192e73a45',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec1, aligned_u8vec1, 1)'],['../a00364.html#ga19837e6f72b60d994a805ef564c6c326',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec2, aligned_u8vec2, 2)'],['../a00364.html#ga9740cf8e34f068049b42a2753f9601c2',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec3, aligned_u8vec3, 4)'],['../a00364.html#ga8b8588bb221448f5541a858903822a57',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec4, aligned_u8vec4, 4)'],['../a00364.html#ga991abe990c16de26b2129d6bc2f4c051',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec1, aligned_u16vec1, 2)'],['../a00364.html#gac01bb9fc32a1cd76c2b80d030f71df4c',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec2, aligned_u16vec2, 4)'],['../a00364.html#ga09540dbca093793a36a8997e0d4bee77',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec3, aligned_u16vec3, 8)'],['../a00364.html#gaecafb5996f5a44f57e34d29c8670741e',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec4, aligned_u16vec4, 8)'],['../a00364.html#gac6b161a04d2f8408fe1c9d857e8daac0',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec1, aligned_u32vec1, 4)'],['../a00364.html#ga1fa0dfc8feb0fa17dab2acd43e05342b',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec2, aligned_u32vec2, 8)'],['../a00364.html#ga0019500abbfa9c66eff61ca75eaaed94',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec3, aligned_u32vec3, 16)'],['../a00364.html#ga14fd29d01dae7b08a04e9facbcc18824',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec4, aligned_u32vec4, 16)'],['../a00364.html#gab253845f534a67136f9619843cade903',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec1, aligned_u64vec1, 8)'],['../a00364.html#ga929427a7627940cdf3304f9c050b677d',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec2, aligned_u64vec2, 16)'],['../a00364.html#gae373b6c04fdf9879f33d63e6949c037e',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec3, aligned_u64vec3, 32)'],['../a00364.html#ga53a8a03dca2015baec4584f45b8e9cdc',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec4, aligned_u64vec4, 32)'],['../a00364.html#gab3301bae94ef5bf59fbdd9a24e7d2a01',1,'glm::GLM_ALIGNED_TYPEDEF(float32, aligned_float32, 4)'],['../a00364.html#gada9b0bea273d3ae0286f891533b9568f',1,'glm::GLM_ALIGNED_TYPEDEF(float32_t, aligned_float32_t, 4)'],['../a00364.html#gadbce23b9f23d77bb3884e289a574ebd5',1,'glm::GLM_ALIGNED_TYPEDEF(float32, aligned_f32, 4)'],['../a00364.html#ga75930684ff2233171c573e603f216162',1,'glm::GLM_ALIGNED_TYPEDEF(float64, aligned_float64, 8)'],['../a00364.html#ga6e3a2d83b131336219a0f4c7cbba2a48',1,'glm::GLM_ALIGNED_TYPEDEF(float64_t, aligned_float64_t, 8)'],['../a00364.html#gaa4deaa0dea930c393d55e7a4352b0a20',1,'glm::GLM_ALIGNED_TYPEDEF(float64, aligned_f64, 8)'],['../a00364.html#ga81bc497b2bfc6f80bab690c6ee28f0f9',1,'glm::GLM_ALIGNED_TYPEDEF(vec1, aligned_vec1, 4)'],['../a00364.html#gada3e8f783e9d4b90006695a16c39d4d4',1,'glm::GLM_ALIGNED_TYPEDEF(vec2, aligned_vec2, 8)'],['../a00364.html#gab8d081fac3a38d6f55fa552f32168d32',1,'glm::GLM_ALIGNED_TYPEDEF(vec3, aligned_vec3, 16)'],['../a00364.html#ga12fe7b9769c964c5b48dcfd8b7f40198',1,'glm::GLM_ALIGNED_TYPEDEF(vec4, aligned_vec4, 16)'],['../a00364.html#gaefab04611c7f8fe1fd9be3071efea6cc',1,'glm::GLM_ALIGNED_TYPEDEF(fvec1, aligned_fvec1, 4)'],['../a00364.html#ga2543c05ba19b3bd19d45b1227390c5b4',1,'glm::GLM_ALIGNED_TYPEDEF(fvec2, aligned_fvec2, 8)'],['../a00364.html#ga009afd727fd657ef33a18754d6d28f60',1,'glm::GLM_ALIGNED_TYPEDEF(fvec3, aligned_fvec3, 16)'],['../a00364.html#ga2f26177e74bfb301a3d0e02ec3c3ef53',1,'glm::GLM_ALIGNED_TYPEDEF(fvec4, aligned_fvec4, 16)'],['../a00364.html#ga309f495a1d6b75ddf195b674b65cb1e4',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec1, aligned_f32vec1, 4)'],['../a00364.html#ga5e185865a2217d0cd47187644683a8c3',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec2, aligned_f32vec2, 8)'],['../a00364.html#gade4458b27b039b9ca34f8ec049f3115a',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec3, aligned_f32vec3, 16)'],['../a00364.html#ga2e8a12c5e6a9c4ae4ddaeda1d1cffe3b',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec4, aligned_f32vec4, 16)'],['../a00364.html#ga3e0f35fa0c626285a8bad41707e7316c',1,'glm::GLM_ALIGNED_TYPEDEF(dvec1, aligned_dvec1, 8)'],['../a00364.html#ga78bfec2f185d1d365ea0a9ef1e3d45b8',1,'glm::GLM_ALIGNED_TYPEDEF(dvec2, aligned_dvec2, 16)'],['../a00364.html#ga01fe6fee6db5df580b6724a7e681f069',1,'glm::GLM_ALIGNED_TYPEDEF(dvec3, aligned_dvec3, 32)'],['../a00364.html#ga687d5b8f551d5af32425c0b2fba15e99',1,'glm::GLM_ALIGNED_TYPEDEF(dvec4, aligned_dvec4, 32)'],['../a00364.html#ga8e842371d46842ff8f1813419ba49d0f',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec1, aligned_f64vec1, 8)'],['../a00364.html#ga32814aa0f19316b43134fc25f2aad2b9',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec2, aligned_f64vec2, 16)'],['../a00364.html#gaf3d3bbc1e93909b689123b085e177a14',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec3, aligned_f64vec3, 32)'],['../a00364.html#ga804c654cead1139bd250f90f9bb01fad',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec4, aligned_f64vec4, 32)'],['../a00364.html#gacce4ac532880b8c7469d3c31974420a1',1,'glm::GLM_ALIGNED_TYPEDEF(mat2, aligned_mat2, 16)'],['../a00364.html#ga0498e0e249a6faddaf96aa55d7f81c3b',1,'glm::GLM_ALIGNED_TYPEDEF(mat3, aligned_mat3, 16)'],['../a00364.html#ga7435d87de82a0d652b35dc5b9cc718d5',1,'glm::GLM_ALIGNED_TYPEDEF(mat4, aligned_mat4, 16)'],['../a00364.html#ga719da577361541a4c43a2dd1d0e361e1',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2, 16)'],['../a00364.html#ga6e7ee4f541e1d7db66cd1a224caacafb',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3, 16)'],['../a00364.html#gae5d672d359f2a39f63f98c7975057486',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4, 16)'],['../a00364.html#ga6fa2df037dbfc5fe8c8e0b4db8a34953',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2x2, 16)'],['../a00364.html#ga0743b4f4f69a3227b82ff58f6abbad62',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x3, aligned_fmat2x3, 16)'],['../a00364.html#ga1a76b325fdf70f961d835edd182c63dd',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x4, aligned_fmat2x4, 16)'],['../a00364.html#ga4b4e181cd041ba28c3163e7b8074aef0',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x2, aligned_fmat3x2, 16)'],['../a00364.html#ga27b13f465abc8a40705698145e222c3f',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3x3, 16)'],['../a00364.html#ga2608d19cc275830a6f8c0b6405625a4f',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x4, aligned_fmat3x4, 16)'],['../a00364.html#ga93f09768241358a287c4cca538f1f7e7',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x2, aligned_fmat4x2, 16)'],['../a00364.html#ga7c117e3ecca089e10247b1d41d88aff9',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x3, aligned_fmat4x3, 16)'],['../a00364.html#ga07c75cd04ba42dc37fa3e105f89455c5',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4x4, 16)'],['../a00364.html#ga65ff0d690a34a4d7f46f9b2eb51525ee',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2, 16)'],['../a00364.html#gadd8ddbe2bf65ccede865ba2f510176dc',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3, 16)'],['../a00364.html#gaf18dbff14bf13d3ff540c517659ec045',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4, 16)'],['../a00364.html#ga66339f6139bf7ff19e245beb33f61cc8',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2x2, 16)'],['../a00364.html#ga1558a48b3934011b52612809f443e46d',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x3, aligned_f32mat2x3, 16)'],['../a00364.html#gaa52e5732daa62851627021ad551c7680',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x4, aligned_f32mat2x4, 16)'],['../a00364.html#gac09663c42566bcb58d23c6781ac4e85a',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x2, aligned_f32mat3x2, 16)'],['../a00364.html#ga3f510999e59e1b309113e1d561162b29',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3x3, 16)'],['../a00364.html#ga2c9c94f0c89cd71ce56551db6cf4aaec',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x4, aligned_f32mat3x4, 16)'],['../a00364.html#ga99ce8274c750fbfdf0e70c95946a2875',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x2, aligned_f32mat4x2, 16)'],['../a00364.html#ga9476ef66790239df53dbe66f3989c3b5',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x3, aligned_f32mat4x3, 16)'],['../a00364.html#gacc429b3b0b49921e12713b6d31e14e1d',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4x4, 16)'],['../a00364.html#ga88f6c6fa06e6e64479763e69444669cf',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2, 32)'],['../a00364.html#gaae8e4639c991e64754145ab8e4c32083',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3, 32)'],['../a00364.html#ga6e9094f3feb3b5b49d0f83683a101fde',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4, 32)'],['../a00364.html#gadbd2c639c03de1c3e9591b5a39f65559',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2x2, 32)'],['../a00364.html#gab059d7b9fe2094acc563b7223987499f',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x3, aligned_f64mat2x3, 32)'],['../a00364.html#gabbc811d1c52ed2b8cfcaff1378f75c69',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x4, aligned_f64mat2x4, 32)'],['../a00364.html#ga9ddf5212777734d2fd841a84439f3bdf',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x2, aligned_f64mat3x2, 32)'],['../a00364.html#gad1dda32ed09f94bfcf0a7d8edfb6cf13',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3x3, 32)'],['../a00364.html#ga5875e0fa72f07e271e7931811cbbf31a',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x4, aligned_f64mat3x4, 32)'],['../a00364.html#ga41e82cd6ac07f912ba2a2d45799dcf0d',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x2, aligned_f64mat4x2, 32)'],['../a00364.html#ga0892638d6ba773043b3d63d1d092622e',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x3, aligned_f64mat4x3, 32)'],['../a00364.html#ga912a16432608b822f1e13607529934c1',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4x4, 32)'],['../a00364.html#gafd945a8ea86b042aba410e0560df9a3d',1,'glm::GLM_ALIGNED_TYPEDEF(quat, aligned_quat, 16)'],['../a00364.html#ga19c2ba545d1f2f36bcb7b60c9a228622',1,'glm::GLM_ALIGNED_TYPEDEF(quat, aligned_fquat, 16)'],['../a00364.html#gaabc28c84a3288b697605d4688686f9a9',1,'glm::GLM_ALIGNED_TYPEDEF(dquat, aligned_dquat, 32)'],['../a00364.html#ga1ed8aeb5ca67fade269a46105f1bf273',1,'glm::GLM_ALIGNED_TYPEDEF(f32quat, aligned_f32quat, 16)'],['../a00364.html#ga95cc03b8b475993fa50e05e38e203303',1,'glm::GLM_ALIGNED_TYPEDEF(f64quat, aligned_f64quat, 32)']]], - ['golden_5fratio',['golden_ratio',['../a00290.html#ga748cf8642830657c5b7eae04d0a80899',1,'glm']]], - ['gradient_5fpaint_2ehpp',['gradient_paint.hpp',['../a00038.html',1,'']]], - ['greaterthan',['greaterThan',['../a00299.html#ga8f7fa76e06c417b757ddfd438f3f677b',1,'glm::greaterThan(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00374.html#gadfdb8ea82deca869ddc7e63ea5a63ae4',1,'glm::greaterThan(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], - ['greaterthanequal',['greaterThanEqual',['../a00299.html#ga388cbeba987dae7b5937f742efa49a5a',1,'glm::greaterThanEqual(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00374.html#ga859975f538940f8d18fe62f916b9abd7',1,'glm::greaterThanEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], - ['glm_5fgtc_5fbitfield',['GLM_GTC_bitfield',['../a00288.html',1,'']]], - ['glm_5fgtc_5fcolor_5fspace',['GLM_GTC_color_space',['../a00289.html',1,'']]], - ['glm_5fgtc_5fconstants',['GLM_GTC_constants',['../a00290.html',1,'']]], - ['glm_5fgtc_5fepsilon',['GLM_GTC_epsilon',['../a00291.html',1,'']]], - ['glm_5fgtc_5finteger',['GLM_GTC_integer',['../a00292.html',1,'']]], - ['glm_5fgtc_5fmatrix_5faccess',['GLM_GTC_matrix_access',['../a00293.html',1,'']]], - ['glm_5fgtc_5fmatrix_5finteger',['GLM_GTC_matrix_integer',['../a00294.html',1,'']]], - ['glm_5fgtc_5fmatrix_5finverse',['GLM_GTC_matrix_inverse',['../a00295.html',1,'']]], - ['glm_5fgtc_5fmatrix_5ftransform',['GLM_GTC_matrix_transform',['../a00296.html',1,'']]], - ['glm_5fgtc_5fnoise',['GLM_GTC_noise',['../a00297.html',1,'']]], - ['glm_5fgtc_5fpacking',['GLM_GTC_packing',['../a00298.html',1,'']]], - ['glm_5fgtc_5fquaternion',['GLM_GTC_quaternion',['../a00299.html',1,'']]], - ['glm_5fgtc_5frandom',['GLM_GTC_random',['../a00300.html',1,'']]], - ['glm_5fgtc_5freciprocal',['GLM_GTC_reciprocal',['../a00301.html',1,'']]], - ['glm_5fgtc_5fround',['GLM_GTC_round',['../a00302.html',1,'']]], - ['glm_5fgtc_5ftype_5faligned',['GLM_GTC_type_aligned',['../a00303.html',1,'']]], - ['glm_5fgtc_5ftype_5fprecision',['GLM_GTC_type_precision',['../a00304.html',1,'']]], - ['glm_5fgtc_5ftype_5fptr',['GLM_GTC_type_ptr',['../a00305.html',1,'']]], - ['glm_5fgtc_5fulp',['GLM_GTC_ulp',['../a00306.html',1,'']]], - ['glm_5fgtc_5fvec1',['GLM_GTC_vec1',['../a00307.html',1,'']]], - ['glm_5fgtx_5fassociated_5fmin_5fmax',['GLM_GTX_associated_min_max',['../a00308.html',1,'']]], - ['glm_5fgtx_5fbit',['GLM_GTX_bit',['../a00309.html',1,'']]], - ['glm_5fgtx_5fclosest_5fpoint',['GLM_GTX_closest_point',['../a00310.html',1,'']]], - ['glm_5fgtx_5fcolor_5fencoding',['GLM_GTX_color_encoding',['../a00311.html',1,'']]], - ['glm_5fgtx_5fcolor_5fspace',['GLM_GTX_color_space',['../a00312.html',1,'']]], - ['glm_5fgtx_5fcolor_5fspace_5fycocg',['GLM_GTX_color_space_YCoCg',['../a00313.html',1,'']]], - ['glm_5fgtx_5fcommon',['GLM_GTX_common',['../a00314.html',1,'']]], - ['glm_5fgtx_5fcompatibility',['GLM_GTX_compatibility',['../a00315.html',1,'']]], - ['glm_5fgtx_5fcomponent_5fwise',['GLM_GTX_component_wise',['../a00316.html',1,'']]], - ['glm_5fgtx_5fdual_5fquaternion',['GLM_GTX_dual_quaternion',['../a00317.html',1,'']]], - ['glm_5fgtx_5feasing',['GLM_GTX_easing',['../a00318.html',1,'']]], - ['glm_5fgtx_5feuler_5fangles',['GLM_GTX_euler_angles',['../a00319.html',1,'']]], - ['glm_5fgtx_5fextend',['GLM_GTX_extend',['../a00320.html',1,'']]], - ['glm_5fgtx_5fextented_5fmin_5fmax',['GLM_GTX_extented_min_max',['../a00321.html',1,'']]], - ['glm_5fgtx_5fexterior_5fproduct',['GLM_GTX_exterior_product',['../a00322.html',1,'']]], - ['glm_5fgtx_5ffast_5fexponential',['GLM_GTX_fast_exponential',['../a00323.html',1,'']]], - ['glm_5fgtx_5ffast_5fsquare_5froot',['GLM_GTX_fast_square_root',['../a00324.html',1,'']]], - ['glm_5fgtx_5ffast_5ftrigonometry',['GLM_GTX_fast_trigonometry',['../a00325.html',1,'']]], - ['glm_5fgtx_5ffunctions',['GLM_GTX_functions',['../a00326.html',1,'']]], - ['glm_5fgtx_5fgradient_5fpaint',['GLM_GTX_gradient_paint',['../a00327.html',1,'']]], - ['glm_5fgtx_5fhanded_5fcoordinate_5fspace',['GLM_GTX_handed_coordinate_space',['../a00328.html',1,'']]], - ['glm_5fgtx_5fhash',['GLM_GTX_hash',['../a00329.html',1,'']]], - ['glm_5fgtx_5finteger',['GLM_GTX_integer',['../a00330.html',1,'']]], - ['glm_5fgtx_5fintersect',['GLM_GTX_intersect',['../a00331.html',1,'']]], - ['glm_5fgtx_5fio',['GLM_GTX_io',['../a00332.html',1,'']]], - ['glm_5fgtx_5flog_5fbase',['GLM_GTX_log_base',['../a00333.html',1,'']]], - ['glm_5fgtx_5fmatrix_5fcross_5fproduct',['GLM_GTX_matrix_cross_product',['../a00334.html',1,'']]], - ['glm_5fgtx_5fmatrix_5fdecompose',['GLM_GTX_matrix_decompose',['../a00335.html',1,'']]], - ['glm_5fgtx_5fmatrix_5ffactorisation',['GLM_GTX_matrix_factorisation',['../a00336.html',1,'']]], - ['glm_5fgtx_5fmatrix_5finterpolation',['GLM_GTX_matrix_interpolation',['../a00337.html',1,'']]], - ['glm_5fgtx_5fmatrix_5fmajor_5fstorage',['GLM_GTX_matrix_major_storage',['../a00338.html',1,'']]], - ['glm_5fgtx_5fmatrix_5foperation',['GLM_GTX_matrix_operation',['../a00339.html',1,'']]], - ['glm_5fgtx_5fmatrix_5fquery',['GLM_GTX_matrix_query',['../a00340.html',1,'']]], - ['glm_5fgtx_5fmatrix_5ftransform_5f2d',['GLM_GTX_matrix_transform_2d',['../a00341.html',1,'']]], - ['glm_5fgtx_5fmixed_5fproducte',['GLM_GTX_mixed_producte',['../a00342.html',1,'']]], - ['glm_5fgtx_5fnorm',['GLM_GTX_norm',['../a00343.html',1,'']]], - ['glm_5fgtx_5fnormal',['GLM_GTX_normal',['../a00344.html',1,'']]], - ['glm_5fgtx_5fnormalize_5fdot',['GLM_GTX_normalize_dot',['../a00345.html',1,'']]], - ['glm_5fgtx_5fnumber_5fprecision',['GLM_GTX_number_precision',['../a00346.html',1,'']]], - ['glm_5fgtx_5foptimum_5fpow',['GLM_GTX_optimum_pow',['../a00347.html',1,'']]], - ['glm_5fgtx_5forthonormalize',['GLM_GTX_orthonormalize',['../a00348.html',1,'']]], - ['glm_5fgtx_5fperpendicular',['GLM_GTX_perpendicular',['../a00349.html',1,'']]], - ['glm_5fgtx_5fpolar_5fcoordinates',['GLM_GTX_polar_coordinates',['../a00350.html',1,'']]], - ['glm_5fgtx_5fprojection',['GLM_GTX_projection',['../a00351.html',1,'']]], - ['glm_5fgtx_5fquaternion',['GLM_GTX_quaternion',['../a00352.html',1,'']]], - ['glm_5fgtx_5frange',['GLM_GTX_range',['../a00353.html',1,'']]], - ['glm_5fgtx_5fraw_5fdata',['GLM_GTX_raw_data',['../a00354.html',1,'']]], - ['glm_5fgtx_5frotate_5fnormalized_5faxis',['GLM_GTX_rotate_normalized_axis',['../a00355.html',1,'']]], - ['glm_5fgtx_5frotate_5fvector',['GLM_GTX_rotate_vector',['../a00356.html',1,'']]], - ['glm_5fgtx_5fscalar_5frelational',['GLM_GTX_scalar_relational',['../a00357.html',1,'']]], - ['glm_5fgtx_5fspline',['GLM_GTX_spline',['../a00358.html',1,'']]], - ['glm_5fgtx_5fstd_5fbased_5ftype',['GLM_GTX_std_based_type',['../a00359.html',1,'']]], - ['glm_5fgtx_5fstring_5fcast',['GLM_GTX_string_cast',['../a00360.html',1,'']]], - ['glm_5fgtx_5ftexture',['GLM_GTX_texture',['../a00361.html',1,'']]], - ['glm_5fgtx_5ftransform',['GLM_GTX_transform',['../a00362.html',1,'']]], - ['glm_5fgtx_5ftransform2',['GLM_GTX_transform2',['../a00363.html',1,'']]], - ['glm_5fgtx_5ftype_5faligned',['GLM_GTX_type_aligned',['../a00364.html',1,'']]], - ['glm_5fgtx_5ftype_5ftrait',['GLM_GTX_type_trait',['../a00365.html',1,'']]], - ['glm_5fgtx_5fvec_5fswizzle',['GLM_GTX_vec_swizzle',['../a00366.html',1,'']]], - ['glm_5fgtx_5fvector_5fangle',['GLM_GTX_vector_angle',['../a00367.html',1,'']]], - ['glm_5fgtx_5fvector_5fquery',['GLM_GTX_vector_query',['../a00368.html',1,'']]], - ['glm_5fgtx_5fwrap',['GLM_GTX_wrap',['../a00369.html',1,'']]], - ['integer_2ehpp',['integer.hpp',['../a00042.html',1,'']]], - ['integer_2ehpp',['integer.hpp',['../a00041.html',1,'']]], - ['matrix_5ftransform_2ehpp',['matrix_transform.hpp',['../a00109.html',1,'']]], - ['packing_2ehpp',['packing.hpp',['../a00119.html',1,'']]], - ['quaternion_2ehpp',['quaternion.hpp',['../a00126.html',1,'']]], - ['quaternion_2ehpp',['quaternion.hpp',['../a00125.html',1,'']]], - ['scalar_5frelational_2ehpp',['scalar_relational.hpp',['../a00150.html',1,'']]], - ['type_5faligned_2ehpp',['type_aligned.hpp',['../a00161.html',1,'']]], - ['type_5faligned_2ehpp',['type_aligned.hpp',['../a00162.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_7.html b/tests/OpenGL/package/glm/doc/api/search/all_7.html deleted file mode 100644 index 38c6c000..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_7.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_7.js b/tests/OpenGL/package/glm/doc/api/search/all_7.js deleted file mode 100644 index 3ac6a3ee..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_7.js +++ /dev/null @@ -1,194 +0,0 @@ -var searchData= -[ - ['half_5fpi',['half_pi',['../a00290.html#ga0c36b41d462e45641faf7d7938948bac',1,'glm']]], - ['handed_5fcoordinate_5fspace_2ehpp',['handed_coordinate_space.hpp',['../a00039.html',1,'']]], - ['hash_2ehpp',['hash.hpp',['../a00040.html',1,'']]], - ['hermite',['hermite',['../a00358.html#gaa69e143f6374d32f934a8edeaa50bac9',1,'glm']]], - ['highestbitvalue',['highestBitValue',['../a00309.html#ga0dcc8fe7c3d3ad60dea409281efa3d05',1,'glm::highestBitValue(genIUType Value)'],['../a00309.html#ga898ef075ccf809a1e480faab48fe96bf',1,'glm::highestBitValue(vec< L, T, Q > const &value)']]], - ['highp_5fbvec1',['highp_bvec1',['../a00266.html#gae8a1e14abae1387274f57741750c06a2',1,'glm']]], - ['highp_5fbvec2',['highp_bvec2',['../a00282.html#gac6c781a85f012d77a75310a3058702c2',1,'glm']]], - ['highp_5fbvec3',['highp_bvec3',['../a00282.html#gaedb70027d89a0a405046aefda4eabaa6',1,'glm']]], - ['highp_5fbvec4',['highp_bvec4',['../a00282.html#gaee663ff64429443ab07a5327074192f6',1,'glm']]], - ['highp_5fddualquat',['highp_ddualquat',['../a00317.html#ga8f67eafa7197d7a668dad5105a463d2a',1,'glm']]], - ['highp_5fdmat2',['highp_dmat2',['../a00284.html#ga369b447bb1b312449b679ea1f90f3cea',1,'glm']]], - ['highp_5fdmat2x2',['highp_dmat2x2',['../a00284.html#gae27ac20302c2e39b6c78e7fe18e62ef7',1,'glm']]], - ['highp_5fdmat2x3',['highp_dmat2x3',['../a00284.html#gad4689ec33bc2c26e10132b174b49001a',1,'glm']]], - ['highp_5fdmat2x4',['highp_dmat2x4',['../a00284.html#ga5ceeb46670fdc000a0701910cc5061c9',1,'glm']]], - ['highp_5fdmat3',['highp_dmat3',['../a00284.html#ga86d6d4dbad92ffdcc759773340e15a97',1,'glm']]], - ['highp_5fdmat3x2',['highp_dmat3x2',['../a00284.html#ga3647309010a2160e9ec89bc6f7c95c35',1,'glm']]], - ['highp_5fdmat3x3',['highp_dmat3x3',['../a00284.html#gae367ea93c4ad8a7c101dd27b8b2b04ce',1,'glm']]], - ['highp_5fdmat3x4',['highp_dmat3x4',['../a00284.html#ga6543eeeb64f48d79a0b96484308c50f0',1,'glm']]], - ['highp_5fdmat4',['highp_dmat4',['../a00284.html#ga945254f459860741138bceb74da496b9',1,'glm']]], - ['highp_5fdmat4x2',['highp_dmat4x2',['../a00284.html#gaeda1f474c668eaecc443bea85a4a4eca',1,'glm']]], - ['highp_5fdmat4x3',['highp_dmat4x3',['../a00284.html#gacf237c2d8832fe8db2d7e187585d34bd',1,'glm']]], - ['highp_5fdmat4x4',['highp_dmat4x4',['../a00284.html#ga118d24a3d12c034e7cccef7bf2f01b8a',1,'glm']]], - ['highp_5fdquat',['highp_dquat',['../a00250.html#gaf13a25f41afc03480b40fc71bd249cec',1,'glm']]], - ['highp_5fdualquat',['highp_dualquat',['../a00317.html#ga9ef5bf1da52a9d4932335a517086ceaf',1,'glm']]], - ['highp_5fdvec1',['highp_dvec1',['../a00269.html#ga77c22c4426da3a6865c88d3fc907e3fe',1,'glm']]], - ['highp_5fdvec2',['highp_dvec2',['../a00282.html#gab98d77cca255914f5e29697fcbc2d975',1,'glm']]], - ['highp_5fdvec3',['highp_dvec3',['../a00282.html#gab24dc20dcdc5b71282634bdbf6b70105',1,'glm']]], - ['highp_5fdvec4',['highp_dvec4',['../a00282.html#gab654f4ed4a99d64a6cfc65320c2a7590',1,'glm']]], - ['highp_5ff32',['highp_f32',['../a00304.html#ga6906e1ef0b34064b4b675489c5c38725',1,'glm']]], - ['highp_5ff32mat2',['highp_f32mat2',['../a00304.html#ga298f7d4d273678d0282812368da27fda',1,'glm']]], - ['highp_5ff32mat2x2',['highp_f32mat2x2',['../a00304.html#gae5eb02d92b7d4605a4b7f37ae5cb2968',1,'glm']]], - ['highp_5ff32mat2x3',['highp_f32mat2x3',['../a00304.html#ga0aeb5cb001473b08c88175012708a379',1,'glm']]], - ['highp_5ff32mat2x4',['highp_f32mat2x4',['../a00304.html#ga88938ee1e7981fa3402e88da6ad74531',1,'glm']]], - ['highp_5ff32mat3',['highp_f32mat3',['../a00304.html#ga24f9ef3263b1638564713892cc37981f',1,'glm']]], - ['highp_5ff32mat3x2',['highp_f32mat3x2',['../a00304.html#ga36537e701456f12c20e73f469cac4967',1,'glm']]], - ['highp_5ff32mat3x3',['highp_f32mat3x3',['../a00304.html#gaab691ae40c37976d268d8cac0096e0e1',1,'glm']]], - ['highp_5ff32mat3x4',['highp_f32mat3x4',['../a00304.html#gaa5086dbd6efb272d13fc88829330861d',1,'glm']]], - ['highp_5ff32mat4',['highp_f32mat4',['../a00304.html#ga14c90ca49885723f51d06e295587236f',1,'glm']]], - ['highp_5ff32mat4x2',['highp_f32mat4x2',['../a00304.html#ga602e119c6b246b4f6edcf66845f2aa0f',1,'glm']]], - ['highp_5ff32mat4x3',['highp_f32mat4x3',['../a00304.html#ga66bffdd8e5c0d3ef9958bbab9ca1ba59',1,'glm']]], - ['highp_5ff32mat4x4',['highp_f32mat4x4',['../a00304.html#gaf1b712b97b2322685fbbed28febe5f84',1,'glm']]], - ['highp_5ff32quat',['highp_f32quat',['../a00304.html#ga4252cf7f5b0e3cd47c3d3badf0ef43b3',1,'glm']]], - ['highp_5ff32vec1',['highp_f32vec1',['../a00304.html#gab1b1c9e8667902b78b2c330e4d383a61',1,'glm']]], - ['highp_5ff32vec2',['highp_f32vec2',['../a00304.html#ga0b8ebd4262331e139ff257d7cf2a4b77',1,'glm']]], - ['highp_5ff32vec3',['highp_f32vec3',['../a00304.html#ga522775dbcc6d96246a1c5cf02344fd8c',1,'glm']]], - ['highp_5ff32vec4',['highp_f32vec4',['../a00304.html#ga0f038d4e09862a74f03d102c59eda73e',1,'glm']]], - ['highp_5ff64',['highp_f64',['../a00304.html#ga51d5266017d88f62737c1973923a7cf4',1,'glm']]], - ['highp_5ff64mat2',['highp_f64mat2',['../a00304.html#gaf7adb92ce8de0afaff01436b039fd924',1,'glm']]], - ['highp_5ff64mat2x2',['highp_f64mat2x2',['../a00304.html#ga773ea237a051827cfc20de960bc73ff0',1,'glm']]], - ['highp_5ff64mat2x3',['highp_f64mat2x3',['../a00304.html#ga8342c7469384c6d769cacc9e309278d9',1,'glm']]], - ['highp_5ff64mat2x4',['highp_f64mat2x4',['../a00304.html#ga5a67a7440b9c0d1538533540f99036a5',1,'glm']]], - ['highp_5ff64mat3',['highp_f64mat3',['../a00304.html#ga609bf0ace941d6ab1bb2f9522a04e546',1,'glm']]], - ['highp_5ff64mat3x2',['highp_f64mat3x2',['../a00304.html#ga5bdbfb4ce7d05ce1e1b663f50be17e8a',1,'glm']]], - ['highp_5ff64mat3x3',['highp_f64mat3x3',['../a00304.html#ga7c2cadb9b85cc7e0d125db21ca19dea4',1,'glm']]], - ['highp_5ff64mat3x4',['highp_f64mat3x4',['../a00304.html#gad310b1dddeec9ec837a104e7db8de580',1,'glm']]], - ['highp_5ff64mat4',['highp_f64mat4',['../a00304.html#gad308e0ed27d64daa4213fb257fcbd5a5',1,'glm']]], - ['highp_5ff64mat4x2',['highp_f64mat4x2',['../a00304.html#ga58c4631421e323e252fc716b6103e38c',1,'glm']]], - ['highp_5ff64mat4x3',['highp_f64mat4x3',['../a00304.html#gae94823d65648e44d972863c6caa13103',1,'glm']]], - ['highp_5ff64mat4x4',['highp_f64mat4x4',['../a00304.html#ga09a2374b725c4246d263ee36fb66434c',1,'glm']]], - ['highp_5ff64quat',['highp_f64quat',['../a00304.html#gafcfdd74a115163af2ce1093551747352',1,'glm']]], - ['highp_5ff64vec1',['highp_f64vec1',['../a00304.html#ga62c31b133ceee9984fbee05ac4c434a9',1,'glm']]], - ['highp_5ff64vec2',['highp_f64vec2',['../a00304.html#ga670ea1b0a1172bc73b1d7c1e0c26cce2',1,'glm']]], - ['highp_5ff64vec3',['highp_f64vec3',['../a00304.html#gacd1196090ece7a69fb5c3e43a7d4d851',1,'glm']]], - ['highp_5ff64vec4',['highp_f64vec4',['../a00304.html#ga61185c44c8cc0b25d9a0f67d8a267444',1,'glm']]], - ['highp_5ffdualquat',['highp_fdualquat',['../a00317.html#ga4c4e55e9c99dc57b299ed590968da564',1,'glm']]], - ['highp_5ffloat32',['highp_float32',['../a00304.html#gac5a7f21136e0a78d0a1b9f60ef2f8aea',1,'glm']]], - ['highp_5ffloat32_5ft',['highp_float32_t',['../a00304.html#ga5376ef18dca9d248897c3363ef5a06b2',1,'glm']]], - ['highp_5ffloat64',['highp_float64',['../a00304.html#gadbb198a4d7aad82a0f4dc466ef6f6215',1,'glm']]], - ['highp_5ffloat64_5ft',['highp_float64_t',['../a00304.html#gaaeeb0077198cff40e3f48b1108ece139',1,'glm']]], - ['highp_5ffmat2',['highp_fmat2',['../a00304.html#gae98c88d9a7befa9b5877f49176225535',1,'glm']]], - ['highp_5ffmat2x2',['highp_fmat2x2',['../a00304.html#ga28635abcddb2f3e92c33c3f0fcc682ad',1,'glm']]], - ['highp_5ffmat2x3',['highp_fmat2x3',['../a00304.html#gacf111095594996fef29067b2454fccad',1,'glm']]], - ['highp_5ffmat2x4',['highp_fmat2x4',['../a00304.html#ga4920a1536f161f7ded1d6909b7fef0d2',1,'glm']]], - ['highp_5ffmat3',['highp_fmat3',['../a00304.html#gaed2dc69e0d507d4191092dbd44b3eb75',1,'glm']]], - ['highp_5ffmat3x2',['highp_fmat3x2',['../a00304.html#gae54e4d1aeb5a0f0c64822e6f1b299e19',1,'glm']]], - ['highp_5ffmat3x3',['highp_fmat3x3',['../a00304.html#gaa5b44d3ef6efcf33f44876673a7a936e',1,'glm']]], - ['highp_5ffmat3x4',['highp_fmat3x4',['../a00304.html#ga961fac2a885907ffcf4d40daac6615c5',1,'glm']]], - ['highp_5ffmat4',['highp_fmat4',['../a00304.html#gabf28443ce0cc0959077ec39b21f32c39',1,'glm']]], - ['highp_5ffmat4x2',['highp_fmat4x2',['../a00304.html#ga076961cf2d120c7168b957cb2ed107b3',1,'glm']]], - ['highp_5ffmat4x3',['highp_fmat4x3',['../a00304.html#gae406ec670f64170a7437b5e302eeb2cb',1,'glm']]], - ['highp_5ffmat4x4',['highp_fmat4x4',['../a00304.html#gaee80c7cd3caa0f2635058656755f6f69',1,'glm']]], - ['highp_5ffvec1',['highp_fvec1',['../a00304.html#gaa1040342c4efdedc8f90e6267db8d41c',1,'glm']]], - ['highp_5ffvec2',['highp_fvec2',['../a00304.html#ga7c0d196f5fa79f7e892a2f323a0be1ae',1,'glm']]], - ['highp_5ffvec3',['highp_fvec3',['../a00304.html#ga6ef77413883f48d6b53b4169b25edbd0',1,'glm']]], - ['highp_5ffvec4',['highp_fvec4',['../a00304.html#ga8b839abbb44f5102609eed89f6ed61f7',1,'glm']]], - ['highp_5fi16',['highp_i16',['../a00304.html#ga0336abc2604dd2c20c30e036454b64f8',1,'glm']]], - ['highp_5fi16vec1',['highp_i16vec1',['../a00304.html#ga70fdfcc1fd38084bde83c3f06a8b9f19',1,'glm']]], - ['highp_5fi16vec2',['highp_i16vec2',['../a00304.html#gaa7db3ad10947cf70cae6474d05ebd227',1,'glm']]], - ['highp_5fi16vec3',['highp_i16vec3',['../a00304.html#ga5609c8fa2b7eac3dec337d321cb0ca96',1,'glm']]], - ['highp_5fi16vec4',['highp_i16vec4',['../a00304.html#ga7a18659438828f91ccca28f1a1e067b4',1,'glm']]], - ['highp_5fi32',['highp_i32',['../a00304.html#ga727675ac6b5d2fc699520e0059735e25',1,'glm']]], - ['highp_5fi32vec1',['highp_i32vec1',['../a00304.html#ga6a9d71cc62745302f70422b7dc98755c',1,'glm']]], - ['highp_5fi32vec2',['highp_i32vec2',['../a00304.html#gaa9b4579f8e6f3d9b649a965bcb785530',1,'glm']]], - ['highp_5fi32vec3',['highp_i32vec3',['../a00304.html#ga31e070ea3bdee623e6e18a61ba5718b1',1,'glm']]], - ['highp_5fi32vec4',['highp_i32vec4',['../a00304.html#gadf70eaaa230aeed5a4c9f4c9c5c55902',1,'glm']]], - ['highp_5fi64',['highp_i64',['../a00304.html#gac25db6d2b1e2a0f351b77ba3409ac4cd',1,'glm']]], - ['highp_5fi64vec1',['highp_i64vec1',['../a00304.html#gabd2fda3cd208acf5a370ec9b5b3c58d4',1,'glm']]], - ['highp_5fi64vec2',['highp_i64vec2',['../a00304.html#gad9d1903cb20899966e8ebe0670889a5f',1,'glm']]], - ['highp_5fi64vec3',['highp_i64vec3',['../a00304.html#ga62324224b9c6cce9c6b4db96bb704a8a',1,'glm']]], - ['highp_5fi64vec4',['highp_i64vec4',['../a00304.html#gad23b1be9b3bf20352089a6b738f0ebba',1,'glm']]], - ['highp_5fi8',['highp_i8',['../a00304.html#gacb88796f2d08ef253d0345aff20c3aee',1,'glm']]], - ['highp_5fi8vec1',['highp_i8vec1',['../a00304.html#ga1d8c10949691b0fd990253476f47beb3',1,'glm']]], - ['highp_5fi8vec2',['highp_i8vec2',['../a00304.html#ga50542e4cb9b2f9bec213b66e06145d07',1,'glm']]], - ['highp_5fi8vec3',['highp_i8vec3',['../a00304.html#ga8396bfdc081d9113190d0c39c9f67084',1,'glm']]], - ['highp_5fi8vec4',['highp_i8vec4',['../a00304.html#ga4824e3ddf6e608117dfe4809430737b4',1,'glm']]], - ['highp_5fimat2',['highp_imat2',['../a00294.html#ga8499cc3b016003f835314c1c756e9db9',1,'glm']]], - ['highp_5fimat2x2',['highp_imat2x2',['../a00294.html#gaa389e2d1c3b10941cae870bc0aeba5b3',1,'glm']]], - ['highp_5fimat2x3',['highp_imat2x3',['../a00294.html#gaba49d890e06c9444795f5a133fbf1336',1,'glm']]], - ['highp_5fimat2x4',['highp_imat2x4',['../a00294.html#ga05a970fd4366dad6c8a0be676b1eae5b',1,'glm']]], - ['highp_5fimat3',['highp_imat3',['../a00294.html#gaca4506a3efa679eff7c006d9826291fd',1,'glm']]], - ['highp_5fimat3x2',['highp_imat3x2',['../a00294.html#ga91c671c3ff9706c2393e78b22fd84bcb',1,'glm']]], - ['highp_5fimat3x3',['highp_imat3x3',['../a00294.html#ga07d7b7173e2a6f843ff5f1c615a95b41',1,'glm']]], - ['highp_5fimat3x4',['highp_imat3x4',['../a00294.html#ga53008f580be99018a17b357b5a4ffc0d',1,'glm']]], - ['highp_5fimat4',['highp_imat4',['../a00294.html#ga7cfb09b34e0fcf73eaf6512d6483ef56',1,'glm']]], - ['highp_5fimat4x2',['highp_imat4x2',['../a00294.html#ga1858820fb292cae396408b2034407f72',1,'glm']]], - ['highp_5fimat4x3',['highp_imat4x3',['../a00294.html#ga6be0b80ae74bb309bc5b964d93d68fc5',1,'glm']]], - ['highp_5fimat4x4',['highp_imat4x4',['../a00294.html#ga2c783ee6f8f040ab37df2f70392c8b44',1,'glm']]], - ['highp_5fint16',['highp_int16',['../a00304.html#ga5fde0fa4a3852a9dd5d637a92ee74718',1,'glm']]], - ['highp_5fint16_5ft',['highp_int16_t',['../a00304.html#gacaea06d0a79ef3172e887a7a6ba434ff',1,'glm']]], - ['highp_5fint32',['highp_int32',['../a00304.html#ga84ed04b4e0de18c977e932d617e7c223',1,'glm']]], - ['highp_5fint32_5ft',['highp_int32_t',['../a00304.html#ga2c71c8bd9e2fe7d2e93ca250d8b6157f',1,'glm']]], - ['highp_5fint64',['highp_int64',['../a00304.html#ga226a8d52b4e3f77aaa6231135e886aac',1,'glm']]], - ['highp_5fint64_5ft',['highp_int64_t',['../a00304.html#ga73c6abb280a45feeff60f9accaee91f3',1,'glm']]], - ['highp_5fint8',['highp_int8',['../a00304.html#gad0549c902a96a7164e4ac858d5f39dbf',1,'glm']]], - ['highp_5fint8_5ft',['highp_int8_t',['../a00304.html#ga1085c50dd8fbeb5e7e609b1c127492a5',1,'glm']]], - ['highp_5fivec1',['highp_ivec1',['../a00273.html#ga7e02566f2bd2caa68e61be45a477c77e',1,'glm']]], - ['highp_5fivec2',['highp_ivec2',['../a00282.html#gaa18f6b80b41c214f10666948539c1f93',1,'glm']]], - ['highp_5fivec3',['highp_ivec3',['../a00282.html#ga7dd782c3ef5719bc6d5c3ca826b8ad18',1,'glm']]], - ['highp_5fivec4',['highp_ivec4',['../a00282.html#gafb84dccdf5d82443df3ffc8428dcaf3e',1,'glm']]], - ['highp_5fmat2',['highp_mat2',['../a00284.html#ga4d5a0055544a516237dcdace049b143d',1,'glm']]], - ['highp_5fmat2x2',['highp_mat2x2',['../a00284.html#ga2352ae43b284c9f71446674c0208c05d',1,'glm']]], - ['highp_5fmat2x3',['highp_mat2x3',['../a00284.html#ga7a0e3fe41512b0494e598f5c58722f19',1,'glm']]], - ['highp_5fmat2x4',['highp_mat2x4',['../a00284.html#ga61f36a81f2ed1b5f9fc8bc3b26faec8f',1,'glm']]], - ['highp_5fmat3',['highp_mat3',['../a00284.html#ga3fd9849f3da5ed6e3decc3fb10a20b3e',1,'glm']]], - ['highp_5fmat3x2',['highp_mat3x2',['../a00284.html#ga1eda47a00027ec440eac05d63739c71b',1,'glm']]], - ['highp_5fmat3x3',['highp_mat3x3',['../a00284.html#ga2ea82e12f4d7afcfce8f59894d400230',1,'glm']]], - ['highp_5fmat3x4',['highp_mat3x4',['../a00284.html#ga6454b3a26ea30f69de8e44c08a63d1b7',1,'glm']]], - ['highp_5fmat4',['highp_mat4',['../a00284.html#gad72e13d669d039f12ae5afa23148adc1',1,'glm']]], - ['highp_5fmat4x2',['highp_mat4x2',['../a00284.html#gab68b66e6d2c37b804d0baf970fa4f0e5',1,'glm']]], - ['highp_5fmat4x3',['highp_mat4x3',['../a00284.html#ga8d5a4e65fb976e4553b84995b95ecb38',1,'glm']]], - ['highp_5fmat4x4',['highp_mat4x4',['../a00284.html#ga58cc504be0e3b61c48bc91554a767b9f',1,'glm']]], - ['highp_5fquat',['highp_quat',['../a00253.html#gaa2fd8085774376310aeb80588e0eab6e',1,'glm']]], - ['highp_5fu16',['highp_u16',['../a00304.html#ga8e62c883d13f47015f3b70ed88751369',1,'glm']]], - ['highp_5fu16vec1',['highp_u16vec1',['../a00304.html#gad064202b4cf9a2972475c03de657cb39',1,'glm']]], - ['highp_5fu16vec2',['highp_u16vec2',['../a00304.html#ga791b15ceb3f1e09d1a0ec6f3057ca159',1,'glm']]], - ['highp_5fu16vec3',['highp_u16vec3',['../a00304.html#gacfd806749008f0ade6ac4bb9dd91082f',1,'glm']]], - ['highp_5fu16vec4',['highp_u16vec4',['../a00304.html#ga8a85a3d54a8a9e14fe7a1f96196c4f61',1,'glm']]], - ['highp_5fu32',['highp_u32',['../a00304.html#ga7a6f1929464dcc680b16381a4ee5f2cf',1,'glm']]], - ['highp_5fu32vec1',['highp_u32vec1',['../a00304.html#ga0e35a565b9036bfc3989f5e23a0792e3',1,'glm']]], - ['highp_5fu32vec2',['highp_u32vec2',['../a00304.html#ga2f256334f83fba4c2d219e414b51df6c',1,'glm']]], - ['highp_5fu32vec3',['highp_u32vec3',['../a00304.html#gaf14d7a50502464e7cbfa074f24684cb1',1,'glm']]], - ['highp_5fu32vec4',['highp_u32vec4',['../a00304.html#ga22166f0da65038b447f3c5e534fff1c2',1,'glm']]], - ['highp_5fu64',['highp_u64',['../a00304.html#ga0c181fdf06a309691999926b6690c969',1,'glm']]], - ['highp_5fu64vec1',['highp_u64vec1',['../a00304.html#gae4fe774744852c4d7d069be2e05257ab',1,'glm']]], - ['highp_5fu64vec2',['highp_u64vec2',['../a00304.html#ga78f77b8b2d17b431ac5a68c0b5d7050d',1,'glm']]], - ['highp_5fu64vec3',['highp_u64vec3',['../a00304.html#ga41bdabea6e589029659331ba47eb78c1',1,'glm']]], - ['highp_5fu64vec4',['highp_u64vec4',['../a00304.html#ga4f15b41aa24b11cc42ad5798c04a2325',1,'glm']]], - ['highp_5fu8',['highp_u8',['../a00304.html#gacd1259f3a9e8d2a9df5be2d74322ef9c',1,'glm']]], - ['highp_5fu8vec1',['highp_u8vec1',['../a00304.html#ga8408cb76b6550ff01fa0a3024e7b68d2',1,'glm']]], - ['highp_5fu8vec2',['highp_u8vec2',['../a00304.html#ga27585b7c3ab300059f11fcba465f6fd2',1,'glm']]], - ['highp_5fu8vec3',['highp_u8vec3',['../a00304.html#ga45721c13b956eb691cbd6c6c1429167a',1,'glm']]], - ['highp_5fu8vec4',['highp_u8vec4',['../a00304.html#gae0b75ad0fed8c00ddc0b5ce335d31060',1,'glm']]], - ['highp_5fuint16',['highp_uint16',['../a00304.html#ga746dc6da204f5622e395f492997dbf57',1,'glm']]], - ['highp_5fuint16_5ft',['highp_uint16_t',['../a00304.html#gacf54c3330ef60aa3d16cb676c7bcb8c7',1,'glm']]], - ['highp_5fuint32',['highp_uint32',['../a00304.html#ga256b12b650c3f2fb86878fd1c5db8bc3',1,'glm']]], - ['highp_5fuint32_5ft',['highp_uint32_t',['../a00304.html#gae978599c9711ac263ba732d4ac225b0e',1,'glm']]], - ['highp_5fuint64',['highp_uint64',['../a00304.html#gaa38d732f5d4a7bc42a1b43b9d3c141ce',1,'glm']]], - ['highp_5fuint64_5ft',['highp_uint64_t',['../a00304.html#gaa46172d7dc1c7ffe3e78107ff88adf08',1,'glm']]], - ['highp_5fuint8',['highp_uint8',['../a00304.html#ga97432f9979e73e66567361fd01e4cffb',1,'glm']]], - ['highp_5fuint8_5ft',['highp_uint8_t',['../a00304.html#gac4e00a26a2adb5f2c0a7096810df29e5',1,'glm']]], - ['highp_5fumat2',['highp_umat2',['../a00294.html#ga42cbce64c4c1cd121b8437daa6e110de',1,'glm']]], - ['highp_5fumat2x2',['highp_umat2x2',['../a00294.html#ga5337b7bc95f9cbac08a0c00b3f936b28',1,'glm']]], - ['highp_5fumat2x3',['highp_umat2x3',['../a00294.html#ga90718c7128320b24b52f9ea70e643ad4',1,'glm']]], - ['highp_5fumat2x4',['highp_umat2x4',['../a00294.html#gadca0a4724b4a6f56a2355b6f6e19248b',1,'glm']]], - ['highp_5fumat3',['highp_umat3',['../a00294.html#gaa1143120339b7d2d469d327662e8a172',1,'glm']]], - ['highp_5fumat3x2',['highp_umat3x2',['../a00294.html#ga844a5da2e7fc03fc7cccc7f1b70809c4',1,'glm']]], - ['highp_5fumat3x3',['highp_umat3x3',['../a00294.html#ga1f7d41c36b980774a4d2e7c1647fb4b2',1,'glm']]], - ['highp_5fumat3x4',['highp_umat3x4',['../a00294.html#ga25ee15c323924f2d0fe9896d329e5086',1,'glm']]], - ['highp_5fumat4',['highp_umat4',['../a00294.html#gaf665e4e78c2cc32a54ab40325738f9c9',1,'glm']]], - ['highp_5fumat4x2',['highp_umat4x2',['../a00294.html#gae69eb82ec08b0dc9bf2ead2a339ff801',1,'glm']]], - ['highp_5fumat4x3',['highp_umat4x3',['../a00294.html#ga45a8163d02c43216252056b0c120f3a5',1,'glm']]], - ['highp_5fumat4x4',['highp_umat4x4',['../a00294.html#ga6a56cbb769aed334c95241664415f9ba',1,'glm']]], - ['highp_5fuvec1',['highp_uvec1',['../a00277.html#gacda57dd8c2bff4934c7f09ddd87c0f39',1,'glm']]], - ['highp_5fuvec2',['highp_uvec2',['../a00282.html#gad5dd50da9e37387ca6b4e6f9c80fe6f8',1,'glm']]], - ['highp_5fuvec3',['highp_uvec3',['../a00282.html#gaef61508dd40ec523416697982f9ceaae',1,'glm']]], - ['highp_5fuvec4',['highp_uvec4',['../a00282.html#gaeebd7dd9f3e678691f8620241e5f9221',1,'glm']]], - ['highp_5fvec1',['highp_vec1',['../a00271.html#ga9e8ed21862a897c156c0b2abca70b1e9',1,'glm']]], - ['highp_5fvec2',['highp_vec2',['../a00282.html#gaa92c1954d71b1e7914874bd787b43d1c',1,'glm']]], - ['highp_5fvec3',['highp_vec3',['../a00282.html#gaca61dfaccbf2f58f2d8063a4e76b44a9',1,'glm']]], - ['highp_5fvec4',['highp_vec4',['../a00282.html#gad281decae52948b82feb3a9db8f63a7b',1,'glm']]], - ['hsvcolor',['hsvColor',['../a00312.html#ga789802bec2d4fe0f9741c731b4a8a7d8',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_8.html b/tests/OpenGL/package/glm/doc/api/search/all_8.html deleted file mode 100644 index 2a22cd52..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_8.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_8.js b/tests/OpenGL/package/glm/doc/api/search/all_8.js deleted file mode 100644 index 67374723..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_8.js +++ /dev/null @@ -1,93 +0,0 @@ -var searchData= -[ - ['integer_20functions',['Integer functions',['../a00370.html',1,'']]], - ['i16',['i16',['../a00304.html#ga3ab5fe184343d394fb6c2723c3ee3699',1,'glm']]], - ['i16vec1',['i16vec1',['../a00304.html#gafe730798732aa7b0647096a004db1b1c',1,'glm']]], - ['i16vec2',['i16vec2',['../a00304.html#ga2996630ba7b10535af8e065cf326f761',1,'glm']]], - ['i16vec3',['i16vec3',['../a00304.html#gae9c90a867a6026b1f6eab00456f3fb8b',1,'glm']]], - ['i16vec4',['i16vec4',['../a00304.html#ga550831bfc26d1e0101c1cb3d79938c06',1,'glm']]], - ['i32',['i32',['../a00304.html#ga96faea43ac5f875d2d3ffbf8d213e3eb',1,'glm']]], - ['i32vec1',['i32vec1',['../a00304.html#ga54b8a4e0f5a7203a821bf8e9c1265bcf',1,'glm']]], - ['i32vec2',['i32vec2',['../a00304.html#ga8b44026374982dcd1e52d22bac99247e',1,'glm']]], - ['i32vec3',['i32vec3',['../a00304.html#ga7f526b5cccef126a2ebcf9bdd890394e',1,'glm']]], - ['i32vec4',['i32vec4',['../a00304.html#ga866a05905c49912309ed1fa5f5980e61',1,'glm']]], - ['i64',['i64',['../a00304.html#gadb997e409103d4da18abd837e636a496',1,'glm']]], - ['i64vec1',['i64vec1',['../a00304.html#ga2b65767f8b5aed1bd1cf86c541662b50',1,'glm']]], - ['i64vec2',['i64vec2',['../a00304.html#ga48310188e1d0c616bf8d78c92447523b',1,'glm']]], - ['i64vec3',['i64vec3',['../a00304.html#ga667948cfe6fb3d6606c750729ec49f77',1,'glm']]], - ['i64vec4',['i64vec4',['../a00304.html#gaa4e31c3d9de067029efeb161a44b0232',1,'glm']]], - ['i8',['i8',['../a00304.html#ga302ec977b0c0c3ea245b6c9275495355',1,'glm']]], - ['i8vec1',['i8vec1',['../a00304.html#ga7e80d927ff0a3861ced68dfff8a4020b',1,'glm']]], - ['i8vec2',['i8vec2',['../a00304.html#gad06935764d78f43f9d542c784c2212ec',1,'glm']]], - ['i8vec3',['i8vec3',['../a00304.html#ga5a08d36cf7917cd19d081a603d0eae3e',1,'glm']]], - ['i8vec4',['i8vec4',['../a00304.html#ga4177a44206121dabc8c4ff1c0f544574',1,'glm']]], - ['identity',['identity',['../a00247.html#ga81696f2b8d1db02ea1aff8da8f269314',1,'glm']]], - ['imat2',['imat2',['../a00294.html#gaabe04f9948d4a213bb1c20137de03e01',1,'glm']]], - ['imat2x2',['imat2x2',['../a00294.html#gaa4732a240522ad9bc28144fda2fc14ec',1,'glm']]], - ['imat2x3',['imat2x3',['../a00294.html#ga3f42dd3d5d94a0fd5706f7ec8dd0c605',1,'glm']]], - ['imat2x4',['imat2x4',['../a00294.html#ga9d8faafdca42583d67e792dd038fc668',1,'glm']]], - ['imat3',['imat3',['../a00294.html#ga038f68437155ffa3c2583a15264a8195',1,'glm']]], - ['imat3x2',['imat3x2',['../a00294.html#ga7b33bbe4f12c060892bd3cc8d4cd737f',1,'glm']]], - ['imat3x3',['imat3x3',['../a00294.html#ga6aacc960f62e8f7d2fe9d32d5050e7a4',1,'glm']]], - ['imat3x4',['imat3x4',['../a00294.html#ga6e9ce23496d8b08dfc302d4039694b58',1,'glm']]], - ['imat4',['imat4',['../a00294.html#ga96b0d26a33b81bb6a60ca0f39682f7eb',1,'glm']]], - ['imat4x2',['imat4x2',['../a00294.html#ga8ce7ef51d8b2c1901fa5414deccbc3fa',1,'glm']]], - ['imat4x3',['imat4x3',['../a00294.html#ga705ee0bf49d6c3de4404ce2481bf0df5',1,'glm']]], - ['imat4x4',['imat4x4',['../a00294.html#ga43ed5e4f475b6f4cad7cba78f29c405b',1,'glm']]], - ['imulextended',['imulExtended',['../a00370.html#gac0c510a70e852f57594a9141848642e3',1,'glm']]], - ['infiniteperspective',['infinitePerspective',['../a00243.html#ga44fa38a18349450325cae2661bb115ca',1,'glm']]], - ['infiniteperspectivelh',['infinitePerspectiveLH',['../a00243.html#ga3201b30f5b3ea0f933246d87bfb992a9',1,'glm']]], - ['infiniteperspectiverh',['infinitePerspectiveRH',['../a00243.html#ga99672ffe5714ef478dab2437255fe7e1',1,'glm']]], - ['int1',['int1',['../a00315.html#ga0670a2111b5e4a6410bd027fa0232fc3',1,'glm']]], - ['int16',['int16',['../a00260.html#ga259fa4834387bd68627ddf37bb3ebdb9',1,'glm']]], - ['int16_5ft',['int16_t',['../a00304.html#gae8f5e3e964ca2ae240adc2c0d74adede',1,'glm']]], - ['int1x1',['int1x1',['../a00315.html#ga056ffe02d3a45af626f8e62221881c7a',1,'glm']]], - ['int2',['int2',['../a00315.html#gafe3a8fd56354caafe24bfe1b1e3ad22a',1,'glm']]], - ['int2x2',['int2x2',['../a00315.html#ga4e5ce477c15836b21e3c42daac68554d',1,'glm']]], - ['int2x3',['int2x3',['../a00315.html#ga197ded5ad8354f6b6fb91189d7a269b3',1,'glm']]], - ['int2x4',['int2x4',['../a00315.html#ga2749d59a7fddbac44f34ba78e57ef807',1,'glm']]], - ['int3',['int3',['../a00315.html#ga909c38a425f215a50c847145d7da09f0',1,'glm']]], - ['int32',['int32',['../a00260.html#ga43d43196463bde49cb067f5c20ab8481',1,'glm']]], - ['int32_5ft',['int32_t',['../a00304.html#ga042ef09ff2f0cb24a36f541bcb3a3710',1,'glm']]], - ['int3x2',['int3x2',['../a00315.html#gaa4cbe16a92cf3664376c7a2fc5126aa8',1,'glm']]], - ['int3x3',['int3x3',['../a00315.html#ga15c9649286f0bf431bdf9b3509580048',1,'glm']]], - ['int3x4',['int3x4',['../a00315.html#gaacac46ddc7d15d0f9529d05c92946a0f',1,'glm']]], - ['int4',['int4',['../a00315.html#gaecdef18c819c205aeee9f94dc93de56a',1,'glm']]], - ['int4x2',['int4x2',['../a00315.html#ga97a39dd9bc7d572810d80b8467cbffa1',1,'glm']]], - ['int4x3',['int4x3',['../a00315.html#gae4a2c53f14aeec9a17c2b81142b7e82d',1,'glm']]], - ['int4x4',['int4x4',['../a00315.html#ga04dee1552424198b8f58b377c2ee00d8',1,'glm']]], - ['int64',['int64',['../a00260.html#gaff5189f97f9e842d9636a0f240001b2e',1,'glm']]], - ['int64_5ft',['int64_t',['../a00304.html#ga322a7d7d2c2c68994dc872a33de63c61',1,'glm']]], - ['int8',['int8',['../a00260.html#ga1b956fe1df85f3c132b21edb4e116458',1,'glm']]], - ['int8_5ft',['int8_t',['../a00304.html#ga4bf09d8838a86866b39ee6e109341645',1,'glm']]], - ['intbitstofloat',['intBitsToFloat',['../a00241.html#ga4fb7c21c2dce064b26fd9ccdaf9adcd4',1,'glm::intBitsToFloat(int const &v)'],['../a00241.html#ga7a0a8291a1cf3e1c2aee33030a1bd7b0',1,'glm::intBitsToFloat(vec< L, int, Q > const &v)']]], - ['integer_2ehpp',['integer.hpp',['../a00043.html',1,'']]], - ['intermediate',['intermediate',['../a00352.html#gacc5cd5f3e78de61d141c2355417424de',1,'glm']]], - ['interpolate',['interpolate',['../a00337.html#ga4e67863d150724b10c1ac00972dc958c',1,'glm']]], - ['intersect_2ehpp',['intersect.hpp',['../a00044.html',1,'']]], - ['intersectlinesphere',['intersectLineSphere',['../a00331.html#ga9c68139f3d8a4f3d7fe45f9dbc0de5b7',1,'glm']]], - ['intersectlinetriangle',['intersectLineTriangle',['../a00331.html#ga9d29b9b3acb504d43986502f42740df4',1,'glm']]], - ['intersectrayplane',['intersectRayPlane',['../a00331.html#gad3697a9700ea379739a667ea02573488',1,'glm']]], - ['intersectraysphere',['intersectRaySphere',['../a00331.html#gac88f8cd84c4bcb5b947d56acbbcfa56e',1,'glm::intersectRaySphere(genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, typename genType::value_type const sphereRadiusSquered, typename genType::value_type &intersectionDistance)'],['../a00331.html#gad28c00515b823b579c608aafa1100c1d',1,'glm::intersectRaySphere(genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, const typename genType::value_type sphereRadius, genType &intersectionPosition, genType &intersectionNormal)']]], - ['intersectraytriangle',['intersectRayTriangle',['../a00331.html#ga65bf2c594482f04881c36bc761f9e946',1,'glm']]], - ['inverse',['inverse',['../a00248.html#gab41da854ae678e23e114b598cbca4065',1,'glm::inverse(qua< T, Q > const &q)'],['../a00317.html#ga070f521a953f6461af4ab4cf8ccbf27e',1,'glm::inverse(tdualquat< T, Q > const &q)'],['../a00371.html#gaed509fe8129b01e4f20a6d0de5690091',1,'glm::inverse(mat< C, R, T, Q > const &m)']]], - ['inversesqrt',['inversesqrt',['../a00242.html#ga523dd6bd0ad9f75ae2d24c8e4b017b7a',1,'glm']]], - ['inversetranspose',['inverseTranspose',['../a00295.html#gab213cd0e3ead5f316d583f99d6312008',1,'glm']]], - ['io_2ehpp',['io.hpp',['../a00045.html',1,'']]], - ['iround',['iround',['../a00292.html#ga57824268ebe13a922f1d69a5d37f637f',1,'glm']]], - ['iscompnull',['isCompNull',['../a00368.html#gaf6ec1688eab7442fe96fe4941d5d4e76',1,'glm']]], - ['isdenormal',['isdenormal',['../a00314.html#ga74aa7c7462245d83bd5a9edf9c6c2d91',1,'glm']]], - ['isfinite',['isfinite',['../a00315.html#gaf4b04dcd3526996d68c1bfe17bfc8657',1,'glm::isfinite(genType const &x)'],['../a00315.html#gac3b12b8ac3014418fe53c299478b6603',1,'glm::isfinite(const vec< 1, T, Q > &x)'],['../a00315.html#ga8e76dc3e406ce6a4155c2b12a2e4b084',1,'glm::isfinite(const vec< 2, T, Q > &x)'],['../a00315.html#ga929ef27f896d902c1771a2e5e150fc97',1,'glm::isfinite(const vec< 3, T, Q > &x)'],['../a00315.html#ga19925badbe10ce61df1d0de00be0b5ad',1,'glm::isfinite(const vec< 4, T, Q > &x)']]], - ['isidentity',['isIdentity',['../a00340.html#gaee935d145581c82e82b154ccfd78ad91',1,'glm']]], - ['isinf',['isinf',['../a00241.html#ga2885587c23a106301f20443896365b62',1,'glm::isinf(vec< L, T, Q > const &x)'],['../a00248.html#ga45722741ea266b4e861938b365c5f362',1,'glm::isinf(qua< T, Q > const &x)']]], - ['ismultiple',['isMultiple',['../a00261.html#gaec593d33956a8fe43f78fccc63ddde9a',1,'glm::isMultiple(genIUType v, genIUType Multiple)'],['../a00274.html#ga354caf634ef333d9cb4844407416256a',1,'glm::isMultiple(vec< L, T, Q > const &v, T Multiple)'],['../a00274.html#gabb4360e38c0943d8981ba965dead519d',1,'glm::isMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], - ['isnan',['isnan',['../a00241.html#ga29ef934c00306490de837b4746b4e14d',1,'glm::isnan(vec< L, T, Q > const &x)'],['../a00248.html#ga1bb55f8963616502e96dc564384d8a03',1,'glm::isnan(qua< T, Q > const &x)']]], - ['isnormalized',['isNormalized',['../a00340.html#gae785af56f47ce220a1609f7f84aa077a',1,'glm::isNormalized(mat< 2, 2, T, Q > const &m, T const &epsilon)'],['../a00340.html#gaa068311695f28f5f555f5f746a6a66fb',1,'glm::isNormalized(mat< 3, 3, T, Q > const &m, T const &epsilon)'],['../a00340.html#ga4d9bb4d0465df49fedfad79adc6ce4ad',1,'glm::isNormalized(mat< 4, 4, T, Q > const &m, T const &epsilon)'],['../a00368.html#gac3c974f459fd75453134fad7ae89a39e',1,'glm::isNormalized(vec< L, T, Q > const &v, T const &epsilon)']]], - ['isnull',['isNull',['../a00340.html#ga9790ec222ce948c0ff0d8ce927340dba',1,'glm::isNull(mat< 2, 2, T, Q > const &m, T const &epsilon)'],['../a00340.html#gae14501c6b14ccda6014cc5350080103d',1,'glm::isNull(mat< 3, 3, T, Q > const &m, T const &epsilon)'],['../a00340.html#ga2b98bb30a9fefa7cdea5f1dcddba677b',1,'glm::isNull(mat< 4, 4, T, Q > const &m, T const &epsilon)'],['../a00368.html#gab4a3637dbcb4bb42dc55caea7a1e0495',1,'glm::isNull(vec< L, T, Q > const &v, T const &epsilon)']]], - ['isorthogonal',['isOrthogonal',['../a00340.html#ga58f3289f74dcab653387dd78ad93ca40',1,'glm']]], - ['ispoweroftwo',['isPowerOfTwo',['../a00261.html#gadf491730354aa7da67fbe23d4d688763',1,'glm::isPowerOfTwo(genIUType v)'],['../a00274.html#gabf2b61ded7049bcb13e25164f832a290',1,'glm::isPowerOfTwo(vec< L, T, Q > const &v)']]], - ['ivec1',['ivec1',['../a00272.html#gaedd0562c2e77714929d7723a7e2e0dba',1,'glm']]], - ['ivec2',['ivec2',['../a00281.html#ga6f9269106d91b2d2b91bcf27cd5f5560',1,'glm']]], - ['ivec3',['ivec3',['../a00281.html#gad0d784d8eee201aca362484d2daee46c',1,'glm']]], - ['ivec4',['ivec4',['../a00281.html#ga5abb4603dae0ce58c595e66d9123d812',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_9.html b/tests/OpenGL/package/glm/doc/api/search/all_9.html deleted file mode 100644 index bd9b05c3..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_9.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_9.js b/tests/OpenGL/package/glm/doc/api/search/all_9.js deleted file mode 100644 index 5752ecfc..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_9.js +++ /dev/null @@ -1,214 +0,0 @@ -var searchData= -[ - ['l1norm',['l1Norm',['../a00343.html#gae2fc0b2aa967bebfd6a244700bff6997',1,'glm::l1Norm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00343.html#ga1a7491e2037ceeb37f83ce41addfc0be',1,'glm::l1Norm(vec< 3, T, Q > const &v)']]], - ['l2norm',['l2Norm',['../a00343.html#ga41340b2ef40a9307ab0f137181565168',1,'glm::l2Norm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00343.html#gae288bde8f0e41fb4ed62e65137b18cba',1,'glm::l2Norm(vec< 3, T, Q > const &x)']]], - ['ldexp',['ldexp',['../a00241.html#gac3010e0a0c35a1b514540f2fb579c58c',1,'glm']]], - ['lefthanded',['leftHanded',['../a00328.html#ga6f1bad193b9a3b048543d1935cf04dd3',1,'glm']]], - ['length',['length',['../a00254.html#gab703732449be6c7199369b3f9a91ed38',1,'glm::length(qua< T, Q > const &q)'],['../a00279.html#ga0cdabbb000834d994a1d6dc56f8f5263',1,'glm::length(vec< L, T, Q > const &x)']]], - ['length2',['length2',['../a00343.html#ga8d1789651050adb7024917984b41c3de',1,'glm::length2(vec< L, T, Q > const &x)'],['../a00352.html#ga58a609b1b8ab965f5df2702e8ca4e75b',1,'glm::length2(qua< T, Q > const &q)']]], - ['lerp',['lerp',['../a00248.html#ga6033dc0741051fa463a0a147ba29f293',1,'glm::lerp(qua< T, Q > const &x, qua< T, Q > const &y, T a)'],['../a00315.html#ga5494ba3a95ea6594c86fc75236886864',1,'glm::lerp(T x, T y, T a)'],['../a00315.html#gaa551c0a0e16d2d4608e49f7696df897f',1,'glm::lerp(const vec< 2, T, Q > &x, const vec< 2, T, Q > &y, T a)'],['../a00315.html#ga44a8b5fd776320f1713413dec959b32a',1,'glm::lerp(const vec< 3, T, Q > &x, const vec< 3, T, Q > &y, T a)'],['../a00315.html#ga89ac8e000199292ec7875519d27e214b',1,'glm::lerp(const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, T a)'],['../a00315.html#gaf68de5baf72d16135368b8ef4f841604',1,'glm::lerp(const vec< 2, T, Q > &x, const vec< 2, T, Q > &y, const vec< 2, T, Q > &a)'],['../a00315.html#ga4ae1a616c8540a2649eab8e0cd051bb3',1,'glm::lerp(const vec< 3, T, Q > &x, const vec< 3, T, Q > &y, const vec< 3, T, Q > &a)'],['../a00315.html#gab5477ab69c40de4db5d58d3359529724',1,'glm::lerp(const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, const vec< 4, T, Q > &a)'],['../a00317.html#gace8380112d16d33f520839cb35a4d173',1,'glm::lerp(tdualquat< T, Q > const &x, tdualquat< T, Q > const &y, T const &a)']]], - ['lessthan',['lessThan',['../a00299.html#gad091a2d22c8acfebfa92bcfca1dfe9c4',1,'glm::lessThan(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00374.html#gae90ed1592c395f93e3f3dfce6b2f39c6',1,'glm::lessThan(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], - ['lessthanequal',['lessThanEqual',['../a00299.html#gac00012eea281800d2403f4ea8443134d',1,'glm::lessThanEqual(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00374.html#gab0bdafc019d227257ff73fb5bcca1718',1,'glm::lessThanEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], - ['levels',['levels',['../a00361.html#gaa8c377f4e63486db4fa872d77880da73',1,'glm']]], - ['lineargradient',['linearGradient',['../a00327.html#ga849241df1e55129b8ce9476200307419',1,'glm']]], - ['linearinterpolation',['linearInterpolation',['../a00318.html#ga290c3e47cb0a49f2e8abe90b1872b649',1,'glm']]], - ['linearrand',['linearRand',['../a00300.html#ga04e241ab88374a477a2c2ceadd2fa03d',1,'glm::linearRand(genType Min, genType Max)'],['../a00300.html#ga94731130c298a9ff5e5025fdee6d97a0',1,'glm::linearRand(vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)']]], - ['lmaxnorm',['lMaxNorm',['../a00343.html#gad58a8231fc32e38104a9e1c4d3c0cb64',1,'glm::lMaxNorm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00343.html#ga6968a324837a8e899396d44de23d5aae',1,'glm::lMaxNorm(vec< 3, T, Q > const &x)']]], - ['ln_5fln_5ftwo',['ln_ln_two',['../a00290.html#gaca94292c839ed31a405ab7a81ae7e850',1,'glm']]], - ['ln_5ften',['ln_ten',['../a00290.html#gaf97ebc6c059ffd788e6c4946f71ef66c',1,'glm']]], - ['ln_5ftwo',['ln_two',['../a00290.html#ga24f4d27765678116f41a2f336ab7975c',1,'glm']]], - ['log',['log',['../a00242.html#ga918c9f3fd086ce20e6760c903bd30fa9',1,'glm::log(vec< L, T, Q > const &v)'],['../a00256.html#gaa5f7b20e296671b16ce25a2ab7ad5473',1,'glm::log(qua< T, Q > const &q)'],['../a00333.html#ga60a7b0a401da660869946b2b77c710c9',1,'glm::log(genType const &x, genType const &base)']]], - ['log2',['log2',['../a00242.html#ga82831c7d9cca777cebedfe03a19c8d75',1,'glm::log2(vec< L, T, Q > const &v)'],['../a00292.html#ga9bd682e74bfacb005c735305207ec417',1,'glm::log2(genIUType x)']]], - ['log_5fbase_2ehpp',['log_base.hpp',['../a00046.html',1,'']]], - ['lookat',['lookAt',['../a00247.html#gaa64aa951a0e99136bba9008d2b59c78e',1,'glm']]], - ['lookatlh',['lookAtLH',['../a00247.html#gab2c09e25b0a16d3a9d89cc85bbae41b0',1,'glm']]], - ['lookatrh',['lookAtRH',['../a00247.html#gacfa12c8889c754846bc20c65d9b5c701',1,'glm']]], - ['lowestbitvalue',['lowestBitValue',['../a00309.html#ga2ff6568089f3a9b67f5c30918855fc6f',1,'glm']]], - ['lowp_5fbvec1',['lowp_bvec1',['../a00266.html#ga24a3d364e2ddd444f5b9e7975bbef8f9',1,'glm']]], - ['lowp_5fbvec2',['lowp_bvec2',['../a00282.html#ga5a5452140650988b94d5716e4d872465',1,'glm']]], - ['lowp_5fbvec3',['lowp_bvec3',['../a00282.html#ga79e0922a977662a8fd39d7829be3908b',1,'glm']]], - ['lowp_5fbvec4',['lowp_bvec4',['../a00282.html#ga15ac87724048ab7169bb5d3572939dd3',1,'glm']]], - ['lowp_5fddualquat',['lowp_ddualquat',['../a00317.html#gab4c5103338af3dac7e0fbc86895a3f1a',1,'glm']]], - ['lowp_5fdmat2',['lowp_dmat2',['../a00284.html#gad8e2727a6e7aa68280245bb0022118e1',1,'glm']]], - ['lowp_5fdmat2x2',['lowp_dmat2x2',['../a00284.html#gac61b94f5d9775f83f321bac899322fe2',1,'glm']]], - ['lowp_5fdmat2x3',['lowp_dmat2x3',['../a00284.html#gaf6bf2f5bde7ad5b9c289f777b93094af',1,'glm']]], - ['lowp_5fdmat2x4',['lowp_dmat2x4',['../a00284.html#ga97507a31ecee8609887d0f23bbde92c7',1,'glm']]], - ['lowp_5fdmat3',['lowp_dmat3',['../a00284.html#ga0cab80beee64a5f8d2ae4e823983063a',1,'glm']]], - ['lowp_5fdmat3x2',['lowp_dmat3x2',['../a00284.html#ga1e0ea3fba496bc7c6f620d2590acb66b',1,'glm']]], - ['lowp_5fdmat3x3',['lowp_dmat3x3',['../a00284.html#gac017848a9df570f60916a21a297b1e8e',1,'glm']]], - ['lowp_5fdmat3x4',['lowp_dmat3x4',['../a00284.html#ga93add35d2a44c5830978b827e8c295e8',1,'glm']]], - ['lowp_5fdmat4',['lowp_dmat4',['../a00284.html#ga708bc5b91bbfedd21debac8dcf2a64cd',1,'glm']]], - ['lowp_5fdmat4x2',['lowp_dmat4x2',['../a00284.html#ga382dc5295cead78766239a8457abfa98',1,'glm']]], - ['lowp_5fdmat4x3',['lowp_dmat4x3',['../a00284.html#ga3d7ea07da7c6e5c81a3f4c8b3d44056e',1,'glm']]], - ['lowp_5fdmat4x4',['lowp_dmat4x4',['../a00284.html#ga5b0413198b7e9f061f7534a221c9dac9',1,'glm']]], - ['lowp_5fdquat',['lowp_dquat',['../a00250.html#ga9e6e5f42e67dd5877350ba485c191f1c',1,'glm']]], - ['lowp_5fdualquat',['lowp_dualquat',['../a00317.html#gade05d29ebd4deea0f883d0e1bb4169aa',1,'glm']]], - ['lowp_5fdvec1',['lowp_dvec1',['../a00269.html#gaf906eb86b6e96c35138d0e4928e1435a',1,'glm']]], - ['lowp_5fdvec2',['lowp_dvec2',['../a00282.html#ga108086730d086b7f6f7a033955dfb9c3',1,'glm']]], - ['lowp_5fdvec3',['lowp_dvec3',['../a00282.html#ga42c518b2917e19ce6946a84c64a3a4b2',1,'glm']]], - ['lowp_5fdvec4',['lowp_dvec4',['../a00282.html#ga0b4432cb8d910e406576d10d802e190d',1,'glm']]], - ['lowp_5ff32',['lowp_f32',['../a00304.html#gaeea53879fc327293cf3352a409b7867b',1,'glm']]], - ['lowp_5ff32mat2',['lowp_f32mat2',['../a00304.html#ga52409bc6d4a2ce3421526c069220d685',1,'glm']]], - ['lowp_5ff32mat2x2',['lowp_f32mat2x2',['../a00304.html#ga1d091b6abfba1772450e1745a06525bc',1,'glm']]], - ['lowp_5ff32mat2x3',['lowp_f32mat2x3',['../a00304.html#ga961ccb34cd1a5654c772c8709e001dc5',1,'glm']]], - ['lowp_5ff32mat2x4',['lowp_f32mat2x4',['../a00304.html#gacc6bf0209dda0c7c14851a646071c974',1,'glm']]], - ['lowp_5ff32mat3',['lowp_f32mat3',['../a00304.html#ga4187f89f196505b40e63f516139511e5',1,'glm']]], - ['lowp_5ff32mat3x2',['lowp_f32mat3x2',['../a00304.html#gac53f9d7ab04eace67adad026092fb1e8',1,'glm']]], - ['lowp_5ff32mat3x3',['lowp_f32mat3x3',['../a00304.html#ga841211b641cff1fcf861bdb14e5e4abc',1,'glm']]], - ['lowp_5ff32mat3x4',['lowp_f32mat3x4',['../a00304.html#ga21b1b22dec013a72656e3644baf8a1e1',1,'glm']]], - ['lowp_5ff32mat4',['lowp_f32mat4',['../a00304.html#ga766aed2871e6173a81011a877f398f04',1,'glm']]], - ['lowp_5ff32mat4x2',['lowp_f32mat4x2',['../a00304.html#gae6f3fcb702a666de07650c149cfa845a',1,'glm']]], - ['lowp_5ff32mat4x3',['lowp_f32mat4x3',['../a00304.html#gac21eda58a1475449a5709b412ebd776c',1,'glm']]], - ['lowp_5ff32mat4x4',['lowp_f32mat4x4',['../a00304.html#ga4143d129898f91545948c46859adce44',1,'glm']]], - ['lowp_5ff32quat',['lowp_f32quat',['../a00304.html#gaa3ba60ef8f69c6aeb1629594eaa95347',1,'glm']]], - ['lowp_5ff32vec1',['lowp_f32vec1',['../a00304.html#ga43e5b41c834fcaf4db5a831c0e28128e',1,'glm']]], - ['lowp_5ff32vec2',['lowp_f32vec2',['../a00304.html#gaf3b694b2b8ded7e0b9f07b061917e1a0',1,'glm']]], - ['lowp_5ff32vec3',['lowp_f32vec3',['../a00304.html#gaf739a2cd7b81783a43148b53e40d983b',1,'glm']]], - ['lowp_5ff32vec4',['lowp_f32vec4',['../a00304.html#ga4e2e1debe022074ab224c9faf856d374',1,'glm']]], - ['lowp_5ff64',['lowp_f64',['../a00304.html#gabc7a97c07cbfac8e35eb5e63beb4b679',1,'glm']]], - ['lowp_5ff64mat2',['lowp_f64mat2',['../a00304.html#gafc730f6b4242763b0eda0ffa25150292',1,'glm']]], - ['lowp_5ff64mat2x2',['lowp_f64mat2x2',['../a00304.html#ga771fda9109933db34f808d92b9b84d7e',1,'glm']]], - ['lowp_5ff64mat2x3',['lowp_f64mat2x3',['../a00304.html#ga39e90adcffe33264bd608fa9c6bd184b',1,'glm']]], - ['lowp_5ff64mat2x4',['lowp_f64mat2x4',['../a00304.html#ga50265a202fbfe0a25fc70066c31d9336',1,'glm']]], - ['lowp_5ff64mat3',['lowp_f64mat3',['../a00304.html#ga58119a41d143ebaea0df70fe882e8a40',1,'glm']]], - ['lowp_5ff64mat3x2',['lowp_f64mat3x2',['../a00304.html#gab0eb2d65514ee3e49905aa2caad8c0ad',1,'glm']]], - ['lowp_5ff64mat3x3',['lowp_f64mat3x3',['../a00304.html#gac8f8a12ee03105ef8861dc652434e3b7',1,'glm']]], - ['lowp_5ff64mat3x4',['lowp_f64mat3x4',['../a00304.html#gade8d1edfb23996ab6c622e65e3893271',1,'glm']]], - ['lowp_5ff64mat4',['lowp_f64mat4',['../a00304.html#ga7451266e67794bd1125163502bc4a570',1,'glm']]], - ['lowp_5ff64mat4x2',['lowp_f64mat4x2',['../a00304.html#gab0cecb80fd106bc369b9e46a165815ce',1,'glm']]], - ['lowp_5ff64mat4x3',['lowp_f64mat4x3',['../a00304.html#gae731613b25db3a5ef5a05d21e57a57d3',1,'glm']]], - ['lowp_5ff64mat4x4',['lowp_f64mat4x4',['../a00304.html#ga8c9cd734e03cd49674f3e287aa4a6f95',1,'glm']]], - ['lowp_5ff64quat',['lowp_f64quat',['../a00304.html#gaa3ee2bc4af03cc06578b66b3e3f878ae',1,'glm']]], - ['lowp_5ff64vec1',['lowp_f64vec1',['../a00304.html#gaf2d02c5f4d59135b9bc524fe317fd26b',1,'glm']]], - ['lowp_5ff64vec2',['lowp_f64vec2',['../a00304.html#ga4e641a54d70c81eabf56c25c966d04bd',1,'glm']]], - ['lowp_5ff64vec3',['lowp_f64vec3',['../a00304.html#gae7a4711107b7d078fc5f03ce2227b90b',1,'glm']]], - ['lowp_5ff64vec4',['lowp_f64vec4',['../a00304.html#gaa666bb9e6d204d3bea0b3a39a3a335f4',1,'glm']]], - ['lowp_5ffdualquat',['lowp_fdualquat',['../a00317.html#gaa38f671be25a7f3b136a452a8bb42860',1,'glm']]], - ['lowp_5ffloat32',['lowp_float32',['../a00304.html#ga41b0d390bd8cc827323b1b3816ff4bf8',1,'glm']]], - ['lowp_5ffloat32_5ft',['lowp_float32_t',['../a00304.html#gaea881cae4ddc6c0fbf7cc5b08177ca5b',1,'glm']]], - ['lowp_5ffloat64',['lowp_float64',['../a00304.html#ga3714dab2c16a6545a405cb0c3b3aaa6f',1,'glm']]], - ['lowp_5ffloat64_5ft',['lowp_float64_t',['../a00304.html#ga7286a37076a09da140df18bfa75d4e38',1,'glm']]], - ['lowp_5ffmat2',['lowp_fmat2',['../a00304.html#ga5bba0ce31210e274f73efacd3364c03f',1,'glm']]], - ['lowp_5ffmat2x2',['lowp_fmat2x2',['../a00304.html#gab0feb11edd0d3ab3e8ed996d349a5066',1,'glm']]], - ['lowp_5ffmat2x3',['lowp_fmat2x3',['../a00304.html#ga71cdb53801ed4c3aadb3603c04723210',1,'glm']]], - ['lowp_5ffmat2x4',['lowp_fmat2x4',['../a00304.html#gaab217601c74974a84acbca428123ecf7',1,'glm']]], - ['lowp_5ffmat3',['lowp_fmat3',['../a00304.html#ga83079315e230e8f39728f4bf0d2f9a9b',1,'glm']]], - ['lowp_5ffmat3x2',['lowp_fmat3x2',['../a00304.html#ga49b98e7d71804af45d86886a489e633c',1,'glm']]], - ['lowp_5ffmat3x3',['lowp_fmat3x3',['../a00304.html#gaba56275dd04a7a61560b0e8fa5d365b4',1,'glm']]], - ['lowp_5ffmat3x4',['lowp_fmat3x4',['../a00304.html#ga28733aec7288191b314d42154fd0b690',1,'glm']]], - ['lowp_5ffmat4',['lowp_fmat4',['../a00304.html#ga5803cb9ae26399762d8bba9e0b2fc09f',1,'glm']]], - ['lowp_5ffmat4x2',['lowp_fmat4x2',['../a00304.html#ga5868c2dcce41cc3ea5edcaeae239f62c',1,'glm']]], - ['lowp_5ffmat4x3',['lowp_fmat4x3',['../a00304.html#ga5e649bbdb135fbcb4bfe950f4c73a444',1,'glm']]], - ['lowp_5ffmat4x4',['lowp_fmat4x4',['../a00304.html#gac2f5263708ac847b361a9841e74ddf9f',1,'glm']]], - ['lowp_5ffvec1',['lowp_fvec1',['../a00304.html#ga346b2336fff168a7e0df1583aae3e5a5',1,'glm']]], - ['lowp_5ffvec2',['lowp_fvec2',['../a00304.html#ga62a32c31f4e2e8ca859663b6e3289a2d',1,'glm']]], - ['lowp_5ffvec3',['lowp_fvec3',['../a00304.html#ga40b5c557efebb5bb99d6b9aa81095afa',1,'glm']]], - ['lowp_5ffvec4',['lowp_fvec4',['../a00304.html#ga755484ffbe39ae3db2875953ed04e7b7',1,'glm']]], - ['lowp_5fi16',['lowp_i16',['../a00304.html#ga392b673fd10847bfb78fb808c6cf8ff7',1,'glm']]], - ['lowp_5fi16vec1',['lowp_i16vec1',['../a00304.html#ga501a2f313f1c220eef4ab02bdabdc3c6',1,'glm']]], - ['lowp_5fi16vec2',['lowp_i16vec2',['../a00304.html#ga7cac84b520a6b57f2fbd880d3d63c51b',1,'glm']]], - ['lowp_5fi16vec3',['lowp_i16vec3',['../a00304.html#gab69ef9cbc2a9214bf5596c528c801b72',1,'glm']]], - ['lowp_5fi16vec4',['lowp_i16vec4',['../a00304.html#ga1d47d94d17c2406abdd1f087a816e387',1,'glm']]], - ['lowp_5fi32',['lowp_i32',['../a00304.html#ga7ff73a45cea9613ebf1a9fad0b9f82ac',1,'glm']]], - ['lowp_5fi32vec1',['lowp_i32vec1',['../a00304.html#gae31ac3608cf643ceffd6554874bec4a0',1,'glm']]], - ['lowp_5fi32vec2',['lowp_i32vec2',['../a00304.html#ga867a3c2d99ab369a454167d2c0a24dbd',1,'glm']]], - ['lowp_5fi32vec3',['lowp_i32vec3',['../a00304.html#ga5fe17c87ede1b1b4d92454cff4da076d',1,'glm']]], - ['lowp_5fi32vec4',['lowp_i32vec4',['../a00304.html#gac9b2eb4296ffe50a32eacca9ed932c08',1,'glm']]], - ['lowp_5fi64',['lowp_i64',['../a00304.html#ga354736e0c645099cd44c42fb2f87c2b8',1,'glm']]], - ['lowp_5fi64vec1',['lowp_i64vec1',['../a00304.html#gab0f7d875db5f3cc9f3168c5a0ed56437',1,'glm']]], - ['lowp_5fi64vec2',['lowp_i64vec2',['../a00304.html#gab485c48f06a4fdd6b8d58d343bb49f3c',1,'glm']]], - ['lowp_5fi64vec3',['lowp_i64vec3',['../a00304.html#ga5cb1dc9e8d300c2cdb0d7ff2308fa36c',1,'glm']]], - ['lowp_5fi64vec4',['lowp_i64vec4',['../a00304.html#gabb4229a4c1488bf063eed0c45355bb9c',1,'glm']]], - ['lowp_5fi8',['lowp_i8',['../a00304.html#ga552a6bde5e75984efb0f863278da2e54',1,'glm']]], - ['lowp_5fi8vec1',['lowp_i8vec1',['../a00304.html#ga036d6c7ca9fbbdc5f3871bfcb937c85c',1,'glm']]], - ['lowp_5fi8vec2',['lowp_i8vec2',['../a00304.html#gac03e5099d27eeaa74b6016ea435a1df2',1,'glm']]], - ['lowp_5fi8vec3',['lowp_i8vec3',['../a00304.html#gae2f43ace6b5b33ab49516d9e40af1845',1,'glm']]], - ['lowp_5fi8vec4',['lowp_i8vec4',['../a00304.html#ga6d388e9b9aa1b389f0672d9c7dfc61c5',1,'glm']]], - ['lowp_5fimat2',['lowp_imat2',['../a00294.html#gaa0bff0be804142bb16d441aec0a7962e',1,'glm']]], - ['lowp_5fimat2x2',['lowp_imat2x2',['../a00294.html#ga92b95b679975d408645547ab45a8dcd8',1,'glm']]], - ['lowp_5fimat2x3',['lowp_imat2x3',['../a00294.html#ga8c9e7a388f8e7c52f1e6857dee8afb65',1,'glm']]], - ['lowp_5fimat2x4',['lowp_imat2x4',['../a00294.html#ga9cc13bd1f8dd2933e9fa31fe3f70e16e',1,'glm']]], - ['lowp_5fimat3',['lowp_imat3',['../a00294.html#ga69bfe668f4170379fc1f35d82b060c43',1,'glm']]], - ['lowp_5fimat3x2',['lowp_imat3x2',['../a00294.html#ga33db8f27491d30906cd37c0d86b3f432',1,'glm']]], - ['lowp_5fimat3x3',['lowp_imat3x3',['../a00294.html#ga664f061df00020048c3f8530329ace45',1,'glm']]], - ['lowp_5fimat3x4',['lowp_imat3x4',['../a00294.html#ga9273faab33623d944af4080befbb2c80',1,'glm']]], - ['lowp_5fimat4',['lowp_imat4',['../a00294.html#gad1e77f7270cad461ca4fcb4c3ec2e98c',1,'glm']]], - ['lowp_5fimat4x2',['lowp_imat4x2',['../a00294.html#ga26ec1a2ba08a1488f5f05336858a0f09',1,'glm']]], - ['lowp_5fimat4x3',['lowp_imat4x3',['../a00294.html#ga8f40483a3ae634ead8ad22272c543a33',1,'glm']]], - ['lowp_5fimat4x4',['lowp_imat4x4',['../a00294.html#gaf65677e53ac8e31a107399340d5e2451',1,'glm']]], - ['lowp_5fint16',['lowp_int16',['../a00304.html#ga698e36b01167fc0f037889334dce8def',1,'glm']]], - ['lowp_5fint16_5ft',['lowp_int16_t',['../a00304.html#ga8b2cd8d31eb345b2d641d9261c38db1a',1,'glm']]], - ['lowp_5fint32',['lowp_int32',['../a00304.html#ga864aabca5f3296e176e0c3ed9cc16b02',1,'glm']]], - ['lowp_5fint32_5ft',['lowp_int32_t',['../a00304.html#ga0350631d35ff800e6133ac6243b13cbc',1,'glm']]], - ['lowp_5fint64',['lowp_int64',['../a00304.html#gaf645b1a60203b39c0207baff5e3d8c3c',1,'glm']]], - ['lowp_5fint64_5ft',['lowp_int64_t',['../a00304.html#gaebf341fc4a5be233f7dde962c2e33847',1,'glm']]], - ['lowp_5fint8',['lowp_int8',['../a00304.html#ga760bcf26fdb23a2c3ecad3c928a19ae6',1,'glm']]], - ['lowp_5fint8_5ft',['lowp_int8_t',['../a00304.html#ga119c41d73fe9977358174eb3ac1035a3',1,'glm']]], - ['lowp_5fivec1',['lowp_ivec1',['../a00273.html#ga836dbb1dc516c233b7f5fe9763bc15dc',1,'glm']]], - ['lowp_5fivec2',['lowp_ivec2',['../a00282.html#ga8433c6c1fdd80c0a83941d94aff73fa0',1,'glm']]], - ['lowp_5fivec3',['lowp_ivec3',['../a00282.html#gac1a86a75b3c68ebb704d7094043669d6',1,'glm']]], - ['lowp_5fivec4',['lowp_ivec4',['../a00282.html#ga27fc23da61859cd6356326c5f1c796de',1,'glm']]], - ['lowp_5fmat2',['lowp_mat2',['../a00284.html#gae400c4ce1f5f3e1fa12861b2baed331a',1,'glm']]], - ['lowp_5fmat2x2',['lowp_mat2x2',['../a00284.html#ga2df7cdaf9a571ce7a1b09435f502c694',1,'glm']]], - ['lowp_5fmat2x3',['lowp_mat2x3',['../a00284.html#ga3eee3a74d0f1de8635d846dfb29ec4bb',1,'glm']]], - ['lowp_5fmat2x4',['lowp_mat2x4',['../a00284.html#gade27f8324a16626cbce5d3e7da66b070',1,'glm']]], - ['lowp_5fmat3',['lowp_mat3',['../a00284.html#ga6271ebc85ed778ccc15458c3d86fc854',1,'glm']]], - ['lowp_5fmat3x2',['lowp_mat3x2',['../a00284.html#gaabf6cf90fd31efe25c94965507e98390',1,'glm']]], - ['lowp_5fmat3x3',['lowp_mat3x3',['../a00284.html#ga63362cb4a63fc1be7d2e49cd5d574c84',1,'glm']]], - ['lowp_5fmat3x4',['lowp_mat3x4',['../a00284.html#gac5fc6786688eff02904ca5e7d6960092',1,'glm']]], - ['lowp_5fmat4',['lowp_mat4',['../a00284.html#ga2dedee030500865267cd5851c00c139d',1,'glm']]], - ['lowp_5fmat4x2',['lowp_mat4x2',['../a00284.html#gafa3cdb8f24d09d761ec9ae2a4c7e5e21',1,'glm']]], - ['lowp_5fmat4x3',['lowp_mat4x3',['../a00284.html#ga534c3ef5c3b8fdd8656b6afc205b4b77',1,'glm']]], - ['lowp_5fmat4x4',['lowp_mat4x4',['../a00284.html#ga686468a9a815bd4db8cddae42a6d6b87',1,'glm']]], - ['lowp_5fquat',['lowp_quat',['../a00253.html#gade62c5316c1c11a79c34c00c189558eb',1,'glm']]], - ['lowp_5fu16',['lowp_u16',['../a00304.html#ga504ce1631cb2ac02fcf1d44d8c2aa126',1,'glm']]], - ['lowp_5fu16vec1',['lowp_u16vec1',['../a00304.html#gaa6aab4ee7189b86716f5d7015d43021d',1,'glm']]], - ['lowp_5fu16vec2',['lowp_u16vec2',['../a00304.html#ga2a7d997da9ac29cb931e35bd399f58df',1,'glm']]], - ['lowp_5fu16vec3',['lowp_u16vec3',['../a00304.html#gac0253db6c3d3bae1f591676307a9dd8c',1,'glm']]], - ['lowp_5fu16vec4',['lowp_u16vec4',['../a00304.html#gaa7f00459b9a2e5b2757e70afc0c189e1',1,'glm']]], - ['lowp_5fu32',['lowp_u32',['../a00304.html#ga4f072ada9552e1e480bbb3b1acde5250',1,'glm']]], - ['lowp_5fu32vec1',['lowp_u32vec1',['../a00304.html#gabed3be8dfdc4a0df4bf3271dbd7344c4',1,'glm']]], - ['lowp_5fu32vec2',['lowp_u32vec2',['../a00304.html#gaf7e286e81347011e257ee779524e73b9',1,'glm']]], - ['lowp_5fu32vec3',['lowp_u32vec3',['../a00304.html#gad3ad390560a671b1f676fbf03cd3aa15',1,'glm']]], - ['lowp_5fu32vec4',['lowp_u32vec4',['../a00304.html#ga4502885718742aa238c36a312c3f3f20',1,'glm']]], - ['lowp_5fu64',['lowp_u64',['../a00304.html#ga30069d1f02b19599cbfadf98c23ac6ed',1,'glm']]], - ['lowp_5fu64vec1',['lowp_u64vec1',['../a00304.html#ga859be7b9d3a3765c1cafc14dbcf249a6',1,'glm']]], - ['lowp_5fu64vec2',['lowp_u64vec2',['../a00304.html#ga581485db4ba6ddb501505ee711fd8e42',1,'glm']]], - ['lowp_5fu64vec3',['lowp_u64vec3',['../a00304.html#gaa4a8682bec7ec8af666ef87fae38d5d1',1,'glm']]], - ['lowp_5fu64vec4',['lowp_u64vec4',['../a00304.html#ga6fccc89c34045c86339f6fa781ce96de',1,'glm']]], - ['lowp_5fu8',['lowp_u8',['../a00304.html#ga1b09f03da7ac43055c68a349d5445083',1,'glm']]], - ['lowp_5fu8vec1',['lowp_u8vec1',['../a00304.html#ga4b2e0e10d8d154fec9cab50e216588ec',1,'glm']]], - ['lowp_5fu8vec2',['lowp_u8vec2',['../a00304.html#gae6f63fa38635431e51a8f2602f15c566',1,'glm']]], - ['lowp_5fu8vec3',['lowp_u8vec3',['../a00304.html#ga150dc47e31c6b8cf8461803c8d56f7bd',1,'glm']]], - ['lowp_5fu8vec4',['lowp_u8vec4',['../a00304.html#ga9910927f3a4d1addb3da6a82542a8287',1,'glm']]], - ['lowp_5fuint16',['lowp_uint16',['../a00304.html#gad68bfd9f881856fc863a6ebca0b67f78',1,'glm']]], - ['lowp_5fuint16_5ft',['lowp_uint16_t',['../a00304.html#ga91c4815f93177eb423362fd296a87e9f',1,'glm']]], - ['lowp_5fuint32',['lowp_uint32',['../a00304.html#gaa6a5b461bbf5fe20982472aa51896d4b',1,'glm']]], - ['lowp_5fuint32_5ft',['lowp_uint32_t',['../a00304.html#gaf1b735b4b1145174f4e4167d13778f9b',1,'glm']]], - ['lowp_5fuint64',['lowp_uint64',['../a00304.html#gaa212b805736a759998e312cbdd550fae',1,'glm']]], - ['lowp_5fuint64_5ft',['lowp_uint64_t',['../a00304.html#ga8dd3a3281ae5c970ffe0c41d538aa153',1,'glm']]], - ['lowp_5fuint8',['lowp_uint8',['../a00304.html#gaf49470869e9be2c059629b250619804e',1,'glm']]], - ['lowp_5fuint8_5ft',['lowp_uint8_t',['../a00304.html#ga667b2ece2b258be898812dc2177995d1',1,'glm']]], - ['lowp_5fumat2',['lowp_umat2',['../a00294.html#gaf2fba702d990437fc88ff3f3a76846ee',1,'glm']]], - ['lowp_5fumat2x2',['lowp_umat2x2',['../a00294.html#ga7b2e9d89745f7175051284e54c81d81c',1,'glm']]], - ['lowp_5fumat2x3',['lowp_umat2x3',['../a00294.html#ga3072f90fd86f17a862e21589fbb14c0f',1,'glm']]], - ['lowp_5fumat2x4',['lowp_umat2x4',['../a00294.html#ga8bb45fec4bd77bd81b4ae7eb961a270d',1,'glm']]], - ['lowp_5fumat3',['lowp_umat3',['../a00294.html#gaf1145f72bcdd590f5808c4bc170c2924',1,'glm']]], - ['lowp_5fumat3x2',['lowp_umat3x2',['../a00294.html#ga56ea68c6a6cba8d8c21d17bb14e69c6b',1,'glm']]], - ['lowp_5fumat3x3',['lowp_umat3x3',['../a00294.html#ga4f660a39a395cc14f018f985e7dfbeb5',1,'glm']]], - ['lowp_5fumat3x4',['lowp_umat3x4',['../a00294.html#gaec3d624306bd59649f021864709d56b5',1,'glm']]], - ['lowp_5fumat4',['lowp_umat4',['../a00294.html#gac092c6105827bf9ea080db38074b78eb',1,'glm']]], - ['lowp_5fumat4x2',['lowp_umat4x2',['../a00294.html#ga7716c2b210d141846f1ac4e774adef5e',1,'glm']]], - ['lowp_5fumat4x3',['lowp_umat4x3',['../a00294.html#ga09ab33a2636f5f43f7fae29cfbc20fff',1,'glm']]], - ['lowp_5fumat4x4',['lowp_umat4x4',['../a00294.html#ga10aafc66cf1a0ece336b1c5ae13d0cc0',1,'glm']]], - ['lowp_5fuvec1',['lowp_uvec1',['../a00277.html#ga8bf3fc8a7863d140f48b29341c750402',1,'glm']]], - ['lowp_5fuvec2',['lowp_uvec2',['../a00282.html#ga752ee45136011301b64afd8c310c47a4',1,'glm']]], - ['lowp_5fuvec3',['lowp_uvec3',['../a00282.html#ga7b2efbdd6bdc2f8250c57f3e5dc9a292',1,'glm']]], - ['lowp_5fuvec4',['lowp_uvec4',['../a00282.html#ga5e6a632ec1165cf9f54ceeaa5e9b2b1e',1,'glm']]], - ['lowp_5fvec1',['lowp_vec1',['../a00271.html#ga0a57630f03031706b1d26a7d70d9184c',1,'glm']]], - ['lowp_5fvec2',['lowp_vec2',['../a00282.html#ga30e8baef5d56d5c166872a2bc00f36e9',1,'glm']]], - ['lowp_5fvec3',['lowp_vec3',['../a00282.html#ga868e8e4470a3ef97c7ee3032bf90dc79',1,'glm']]], - ['lowp_5fvec4',['lowp_vec4',['../a00282.html#gace3acb313c800552a9411953eb8b2ed7',1,'glm']]], - ['luminosity',['luminosity',['../a00312.html#gad028e0a4f1a9c812b39439b746295b34',1,'glm']]], - ['lxnorm',['lxNorm',['../a00343.html#gacad23d30497eb16f67709f2375d1f66a',1,'glm::lxNorm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, unsigned int Depth)'],['../a00343.html#gac61b6d81d796d6eb4d4183396a19ab91',1,'glm::lxNorm(vec< 3, T, Q > const &x, unsigned int Depth)']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_a.html b/tests/OpenGL/package/glm/doc/api/search/all_a.html deleted file mode 100644 index 4a25af1c..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_a.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_a.js b/tests/OpenGL/package/glm/doc/api/search/all_a.js deleted file mode 100644 index df2ba5cb..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_a.js +++ /dev/null @@ -1,297 +0,0 @@ -var searchData= -[ - ['matrix_20functions',['Matrix functions',['../a00371.html',1,'']]], - ['matrix_20types',['Matrix types',['../a00283.html',1,'']]], - ['matrix_20types_20with_20precision_20qualifiers',['Matrix types with precision qualifiers',['../a00284.html',1,'']]], - ['make_5fmat2',['make_mat2',['../a00305.html#ga04409e74dc3da251d2501acf5b4b546c',1,'glm']]], - ['make_5fmat2x2',['make_mat2x2',['../a00305.html#gae49e1c7bcd5abec74d1c34155031f663',1,'glm']]], - ['make_5fmat2x3',['make_mat2x3',['../a00305.html#ga21982104164789cf8985483aaefc25e8',1,'glm']]], - ['make_5fmat2x4',['make_mat2x4',['../a00305.html#ga078b862c90b0e9a79ed43a58997d8388',1,'glm']]], - ['make_5fmat3',['make_mat3',['../a00305.html#ga611ee7c4d4cadfc83a8fa8e1d10a170f',1,'glm']]], - ['make_5fmat3x2',['make_mat3x2',['../a00305.html#ga27a24e121dc39e6857620e0f85b6e1a8',1,'glm']]], - ['make_5fmat3x3',['make_mat3x3',['../a00305.html#gaf2e8337b15c3362aaeb6e5849e1c0536',1,'glm']]], - ['make_5fmat3x4',['make_mat3x4',['../a00305.html#ga05dd66232aedb993e3b8e7b35eaf932b',1,'glm']]], - ['make_5fmat4',['make_mat4',['../a00305.html#gae7bcedb710d1446c87fd1fc93ed8ee9a',1,'glm']]], - ['make_5fmat4x2',['make_mat4x2',['../a00305.html#ga8b34c9b25bf3310d8ff9c828c7e2d97c',1,'glm']]], - ['make_5fmat4x3',['make_mat4x3',['../a00305.html#ga0330bf6640092d7985fac92927bbd42b',1,'glm']]], - ['make_5fmat4x4',['make_mat4x4',['../a00305.html#ga8f084be30e404844bfbb4a551ac2728c',1,'glm']]], - ['make_5fquat',['make_quat',['../a00305.html#ga58110d7d81cf7d029e2bab7f8cd9b246',1,'glm']]], - ['make_5fvec1',['make_vec1',['../a00305.html#ga4135f03f3049f0a4eb76545c4967957c',1,'glm::make_vec1(vec< 1, T, Q > const &v)'],['../a00305.html#ga13c92b81e55f201b052a6404d57da220',1,'glm::make_vec1(vec< 2, T, Q > const &v)'],['../a00305.html#ga3c23cc74086d361e22bbd5e91a334e03',1,'glm::make_vec1(vec< 3, T, Q > const &v)'],['../a00305.html#ga6af06bb60d64ca8bcd169e3c93bc2419',1,'glm::make_vec1(vec< 4, T, Q > const &v)']]], - ['make_5fvec2',['make_vec2',['../a00305.html#ga8476d0e6f1b9b4a6193cc25f59d8a896',1,'glm::make_vec2(vec< 1, T, Q > const &v)'],['../a00305.html#gae54bd325a08ad26edf63929201adebc7',1,'glm::make_vec2(vec< 2, T, Q > const &v)'],['../a00305.html#ga0084fea4694cf47276e9cccbe7b1015a',1,'glm::make_vec2(vec< 3, T, Q > const &v)'],['../a00305.html#ga2b81f71f3a222fe5bba81e3983751249',1,'glm::make_vec2(vec< 4, T, Q > const &v)'],['../a00305.html#ga81253cf7b0ebfbb1e70540c5774e6824',1,'glm::make_vec2(T const *const ptr)']]], - ['make_5fvec3',['make_vec3',['../a00305.html#ga9147e4b3a5d0f4772edfbfd179d7ea0b',1,'glm::make_vec3(vec< 1, T, Q > const &v)'],['../a00305.html#ga482b60a842a5b154d3eed392417a9511',1,'glm::make_vec3(vec< 2, T, Q > const &v)'],['../a00305.html#gacd57046034df557b8b1c457f58613623',1,'glm::make_vec3(vec< 3, T, Q > const &v)'],['../a00305.html#ga8b589ed7d41a298b516d2a69169248f1',1,'glm::make_vec3(vec< 4, T, Q > const &v)'],['../a00305.html#gad9e0d36ff489cb30c65ad1fa40351651',1,'glm::make_vec3(T const *const ptr)']]], - ['make_5fvec4',['make_vec4',['../a00305.html#ga600cb97f70c5d50d3a4a145e1cafbf37',1,'glm::make_vec4(vec< 1, T, Q > const &v)'],['../a00305.html#gaa9bd116caf28196fd1cf00b278286fa7',1,'glm::make_vec4(vec< 2, T, Q > const &v)'],['../a00305.html#ga4036328ba4702c74cbdfad1fc03d1b8f',1,'glm::make_vec4(vec< 3, T, Q > const &v)'],['../a00305.html#gaa95cb15732f708f613e65a0578895ae5',1,'glm::make_vec4(vec< 4, T, Q > const &v)'],['../a00305.html#ga63f576518993efc22a969f18f80e29bb',1,'glm::make_vec4(T const *const ptr)']]], - ['mask',['mask',['../a00288.html#gad7eba518a0b71662114571ee76939f8a',1,'glm::mask(genIUType Bits)'],['../a00288.html#ga2e64e3b922a296033b825311e7f5fff1',1,'glm::mask(vec< L, T, Q > const &v)']]], - ['mat2',['mat2',['../a00283.html#ga8dd59e7fc6913ac5d61b86553e9148ba',1,'glm']]], - ['mat2x2',['mat2x2',['../a00283.html#gaaa17ef6bfa4e4f2692348b1460c8efcb',1,'glm']]], - ['mat2x2_2ehpp',['mat2x2.hpp',['../a00048.html',1,'']]], - ['mat2x3',['mat2x3',['../a00283.html#ga493ab21243abe564b3f7d381e677d29a',1,'glm']]], - ['mat2x3_2ehpp',['mat2x3.hpp',['../a00049.html',1,'']]], - ['mat2x4',['mat2x4',['../a00283.html#ga8e879b57ddd81e5bf5a88929844e8b40',1,'glm']]], - ['mat2x4_2ehpp',['mat2x4.hpp',['../a00050.html',1,'']]], - ['mat2x4_5fcast',['mat2x4_cast',['../a00317.html#gae99d143b37f9cad4cd9285571aab685a',1,'glm']]], - ['mat3',['mat3',['../a00283.html#gaefb0fc7a4960b782c18708bb6b655262',1,'glm']]], - ['mat3_5fcast',['mat3_cast',['../a00299.html#ga333ab70047fbe4132406100c292dbc89',1,'glm']]], - ['mat3x2',['mat3x2',['../a00280.html#ga2c27aea32de57d58aec8e92d5d2181e2',1,'glm']]], - ['mat3x2_2ehpp',['mat3x2.hpp',['../a00051.html',1,'']]], - ['mat3x3',['mat3x3',['../a00283.html#gab91887d7565059dac640e3a1921c914a',1,'glm']]], - ['mat3x3_2ehpp',['mat3x3.hpp',['../a00052.html',1,'']]], - ['mat3x4',['mat3x4',['../a00283.html#gaf991cad0b34f64e33af186326dbc4d66',1,'glm']]], - ['mat3x4_2ehpp',['mat3x4.hpp',['../a00053.html',1,'']]], - ['mat3x4_5fcast',['mat3x4_cast',['../a00317.html#gaf59f5bb69620d2891c3795c6f2639179',1,'glm']]], - ['mat4',['mat4',['../a00283.html#ga0db98d836c5549d31cf64ecd043b7af7',1,'glm']]], - ['mat4_5fcast',['mat4_cast',['../a00299.html#ga1113212d9bdefc2e31ad40e5bbb506f3',1,'glm']]], - ['mat4x2',['mat4x2',['../a00283.html#gad941c947ad6cdd117a0e8554a4754983',1,'glm']]], - ['mat4x2_2ehpp',['mat4x2.hpp',['../a00054.html',1,'']]], - ['mat4x3',['mat4x3',['../a00283.html#gac7574544bb94777bdbd2eb224eb72fd0',1,'glm']]], - ['mat4x3_2ehpp',['mat4x3.hpp',['../a00055.html',1,'']]], - ['mat4x4',['mat4x4',['../a00283.html#gab2d35cc2655f44d60958d60a1de34e81',1,'glm']]], - ['mat4x4_2ehpp',['mat4x4.hpp',['../a00056.html',1,'']]], - ['matrix_2ehpp',['matrix.hpp',['../a00057.html',1,'']]], - ['matrix_5faccess_2ehpp',['matrix_access.hpp',['../a00058.html',1,'']]], - ['matrix_5fclip_5fspace_2ehpp',['matrix_clip_space.hpp',['../a00059.html',1,'']]], - ['matrix_5fcommon_2ehpp',['matrix_common.hpp',['../a00060.html',1,'']]], - ['matrix_5fcross_5fproduct_2ehpp',['matrix_cross_product.hpp',['../a00061.html',1,'']]], - ['matrix_5fdecompose_2ehpp',['matrix_decompose.hpp',['../a00062.html',1,'']]], - ['matrix_5fdouble2x2_2ehpp',['matrix_double2x2.hpp',['../a00063.html',1,'']]], - ['matrix_5fdouble2x2_5fprecision_2ehpp',['matrix_double2x2_precision.hpp',['../a00064.html',1,'']]], - ['matrix_5fdouble2x3_2ehpp',['matrix_double2x3.hpp',['../a00065.html',1,'']]], - ['matrix_5fdouble2x3_5fprecision_2ehpp',['matrix_double2x3_precision.hpp',['../a00066.html',1,'']]], - ['matrix_5fdouble2x4_2ehpp',['matrix_double2x4.hpp',['../a00067.html',1,'']]], - ['matrix_5fdouble2x4_5fprecision_2ehpp',['matrix_double2x4_precision.hpp',['../a00068.html',1,'']]], - ['matrix_5fdouble3x2_2ehpp',['matrix_double3x2.hpp',['../a00069.html',1,'']]], - ['matrix_5fdouble3x2_5fprecision_2ehpp',['matrix_double3x2_precision.hpp',['../a00070.html',1,'']]], - ['matrix_5fdouble3x3_2ehpp',['matrix_double3x3.hpp',['../a00071.html',1,'']]], - ['matrix_5fdouble3x3_5fprecision_2ehpp',['matrix_double3x3_precision.hpp',['../a00072.html',1,'']]], - ['matrix_5fdouble3x4_2ehpp',['matrix_double3x4.hpp',['../a00073.html',1,'']]], - ['matrix_5fdouble3x4_5fprecision_2ehpp',['matrix_double3x4_precision.hpp',['../a00074.html',1,'']]], - ['matrix_5fdouble4x2_2ehpp',['matrix_double4x2.hpp',['../a00075.html',1,'']]], - ['matrix_5fdouble4x2_5fprecision_2ehpp',['matrix_double4x2_precision.hpp',['../a00076.html',1,'']]], - ['matrix_5fdouble4x3_2ehpp',['matrix_double4x3.hpp',['../a00077.html',1,'']]], - ['matrix_5fdouble4x3_5fprecision_2ehpp',['matrix_double4x3_precision.hpp',['../a00078.html',1,'']]], - ['matrix_5fdouble4x4_2ehpp',['matrix_double4x4.hpp',['../a00079.html',1,'']]], - ['matrix_5fdouble4x4_5fprecision_2ehpp',['matrix_double4x4_precision.hpp',['../a00080.html',1,'']]], - ['matrix_5ffactorisation_2ehpp',['matrix_factorisation.hpp',['../a00081.html',1,'']]], - ['matrix_5ffloat2x2_2ehpp',['matrix_float2x2.hpp',['../a00082.html',1,'']]], - ['matrix_5ffloat2x2_5fprecision_2ehpp',['matrix_float2x2_precision.hpp',['../a00083.html',1,'']]], - ['matrix_5ffloat2x3_2ehpp',['matrix_float2x3.hpp',['../a00084.html',1,'']]], - ['matrix_5ffloat2x3_5fprecision_2ehpp',['matrix_float2x3_precision.hpp',['../a00085.html',1,'']]], - ['matrix_5ffloat2x4_2ehpp',['matrix_float2x4.hpp',['../a00086.html',1,'']]], - ['matrix_5ffloat2x4_5fprecision_2ehpp',['matrix_float2x4_precision.hpp',['../a00087.html',1,'']]], - ['matrix_5ffloat3x2_2ehpp',['matrix_float3x2.hpp',['../a00088.html',1,'']]], - ['matrix_5ffloat3x2_5fprecision_2ehpp',['matrix_float3x2_precision.hpp',['../a00089.html',1,'']]], - ['matrix_5ffloat3x3_2ehpp',['matrix_float3x3.hpp',['../a00090.html',1,'']]], - ['matrix_5ffloat3x3_5fprecision_2ehpp',['matrix_float3x3_precision.hpp',['../a00091.html',1,'']]], - ['matrix_5ffloat3x4_2ehpp',['matrix_float3x4.hpp',['../a00092.html',1,'']]], - ['matrix_5ffloat3x4_5fprecision_2ehpp',['matrix_float3x4_precision.hpp',['../a00093.html',1,'']]], - ['matrix_5ffloat4x2_2ehpp',['matrix_float4x2.hpp',['../a00094.html',1,'']]], - ['matrix_5ffloat4x3_2ehpp',['matrix_float4x3.hpp',['../a00096.html',1,'']]], - ['matrix_5ffloat4x3_5fprecision_2ehpp',['matrix_float4x3_precision.hpp',['../a00097.html',1,'']]], - ['matrix_5ffloat4x4_2ehpp',['matrix_float4x4.hpp',['../a00098.html',1,'']]], - ['matrix_5ffloat4x4_5fprecision_2ehpp',['matrix_float4x4_precision.hpp',['../a00099.html',1,'']]], - ['matrix_5finteger_2ehpp',['matrix_integer.hpp',['../a00100.html',1,'']]], - ['matrix_5finterpolation_2ehpp',['matrix_interpolation.hpp',['../a00101.html',1,'']]], - ['matrix_5finverse_2ehpp',['matrix_inverse.hpp',['../a00102.html',1,'']]], - ['matrix_5fmajor_5fstorage_2ehpp',['matrix_major_storage.hpp',['../a00103.html',1,'']]], - ['matrix_5foperation_2ehpp',['matrix_operation.hpp',['../a00104.html',1,'']]], - ['matrix_5fprojection_2ehpp',['matrix_projection.hpp',['../a00105.html',1,'']]], - ['matrix_5fquery_2ehpp',['matrix_query.hpp',['../a00106.html',1,'']]], - ['matrix_5frelational_2ehpp',['matrix_relational.hpp',['../a00107.html',1,'']]], - ['matrix_5ftransform_5f2d_2ehpp',['matrix_transform_2d.hpp',['../a00110.html',1,'']]], - ['matrixcompmult',['matrixCompMult',['../a00371.html#gaf14569404c779fedca98d0b9b8e58c1f',1,'glm']]], - ['matrixcross3',['matrixCross3',['../a00334.html#ga5802386bb4c37b3332a3b6fd8b6960ff',1,'glm']]], - ['matrixcross4',['matrixCross4',['../a00334.html#ga20057fff91ddafa102934adb25458cde',1,'glm']]], - ['max',['max',['../a00241.html#gae02d42887fc5570451f880e3c624b9ac',1,'glm::max(genType x, genType y)'],['../a00241.html#ga03e45d6e60d1c36edb00c52edeea0f31',1,'glm::max(vec< L, T, Q > const &x, T y)'],['../a00241.html#gac1fec0c3303b572a6d4697a637213870',1,'glm::max(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00258.html#gaa20839d9ab14514f8966f69877ea0de8',1,'glm::max(T a, T b, T c)'],['../a00258.html#ga2274b5e75ed84b0b1e50d8d22f1f2f67',1,'glm::max(T a, T b, T c, T d)'],['../a00267.html#gaa45d34f6a2906f8bf58ab2ba5429234d',1,'glm::max(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z)'],['../a00267.html#ga94d42b8da2b4ded5ddf7504fbdc6bf10',1,'glm::max(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z, vec< L, T, Q > const &w)'],['../a00321.html#ga04991ccb9865c4c4e58488cfb209ce69',1,'glm::max(T const &x, T const &y, T const &z)'],['../a00321.html#gae1b7bbe5c91de4924835ea3e14530744',1,'glm::max(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)'],['../a00321.html#gaf832e9d4ab4826b2dda2fda25935a3a4',1,'glm::max(C< T > const &x, C< T > const &y, C< T > const &z)'],['../a00321.html#ga78e04a0cef1c4863fcae1a2130500d87',1,'glm::max(T const &x, T const &y, T const &z, T const &w)'],['../a00321.html#ga7cca8b53cfda402040494cdf40fbdf4a',1,'glm::max(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)'],['../a00321.html#gaacffbc466c2d08c140b181e7fd8a4858',1,'glm::max(C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)']]], - ['mediump_5fbvec1',['mediump_bvec1',['../a00266.html#ga7b4ccb989ba179fa44f7b0879c782621',1,'glm']]], - ['mediump_5fbvec2',['mediump_bvec2',['../a00282.html#ga1e743764869efa9223c2bcefccedaddc',1,'glm']]], - ['mediump_5fbvec3',['mediump_bvec3',['../a00282.html#ga50c783c25082882ef00fe2e5cddba4aa',1,'glm']]], - ['mediump_5fbvec4',['mediump_bvec4',['../a00282.html#ga0be2c682258604a35004f088782a9645',1,'glm']]], - ['mediump_5fddualquat',['mediump_ddualquat',['../a00317.html#ga0fb11e48e2d16348ccb06a25213641b4',1,'glm']]], - ['mediump_5fdmat2',['mediump_dmat2',['../a00284.html#ga6205fd19be355600334edef6af0b27cb',1,'glm']]], - ['mediump_5fdmat2x2',['mediump_dmat2x2',['../a00284.html#ga51dc36a7719cb458fa5114831c20d64f',1,'glm']]], - ['mediump_5fdmat2x3',['mediump_dmat2x3',['../a00284.html#ga741e05adf1f12d5d913f67088db1009a',1,'glm']]], - ['mediump_5fdmat2x4',['mediump_dmat2x4',['../a00284.html#ga685bda24922d112786af385deb4deb43',1,'glm']]], - ['mediump_5fdmat3',['mediump_dmat3',['../a00284.html#ga939fbf9c53008a8e84c7dd7cf8de29e2',1,'glm']]], - ['mediump_5fdmat3x2',['mediump_dmat3x2',['../a00284.html#ga2076157df85e49b8c021e03e46a376c1',1,'glm']]], - ['mediump_5fdmat3x3',['mediump_dmat3x3',['../a00284.html#ga47bd2aae4701ee2fc865674a9df3d7a6',1,'glm']]], - ['mediump_5fdmat3x4',['mediump_dmat3x4',['../a00284.html#ga3a132bd05675c2e46556f67cf738600b',1,'glm']]], - ['mediump_5fdmat4',['mediump_dmat4',['../a00284.html#gaf650bc667bf2a0e496b5a9182bc8d378',1,'glm']]], - ['mediump_5fdmat4x2',['mediump_dmat4x2',['../a00284.html#gae220fa4c5a7b13ef2ab0420340de645c',1,'glm']]], - ['mediump_5fdmat4x3',['mediump_dmat4x3',['../a00284.html#ga43ef60e4d996db15c9c8f069a96ff763',1,'glm']]], - ['mediump_5fdmat4x4',['mediump_dmat4x4',['../a00284.html#ga5389b3ab32dc0d72bea00057ab6d1dd3',1,'glm']]], - ['mediump_5fdquat',['mediump_dquat',['../a00250.html#gacdf73b1f7fd8f5a0c79a3934e99c1a14',1,'glm']]], - ['mediump_5fdualquat',['mediump_dualquat',['../a00317.html#gaa7aeb54c167712b38f2178a1be2360ad',1,'glm']]], - ['mediump_5fdvec1',['mediump_dvec1',['../a00269.html#ga79a789ebb176b37a45848f7ccdd3b3dd',1,'glm']]], - ['mediump_5fdvec2',['mediump_dvec2',['../a00282.html#ga2f4f6e9a69a0281d06940fd0990cafc3',1,'glm']]], - ['mediump_5fdvec3',['mediump_dvec3',['../a00282.html#ga61c3b1dff4ec7c878af80503141b9f37',1,'glm']]], - ['mediump_5fdvec4',['mediump_dvec4',['../a00282.html#ga23a8bca00914a51542bfea13a4778186',1,'glm']]], - ['mediump_5ff32',['mediump_f32',['../a00304.html#ga3b27fcd9eaa2757f0aaf6b0ce0d85c80',1,'glm']]], - ['mediump_5ff32mat2',['mediump_f32mat2',['../a00304.html#gaf9020c6176a75bc84828ab01ea7dac25',1,'glm']]], - ['mediump_5ff32mat2x2',['mediump_f32mat2x2',['../a00304.html#gaa3ca74a44102035b3ffb5c9c52dfdd3f',1,'glm']]], - ['mediump_5ff32mat2x3',['mediump_f32mat2x3',['../a00304.html#gad4cc829ab1ad3e05ac0a24828a3c95cf',1,'glm']]], - ['mediump_5ff32mat2x4',['mediump_f32mat2x4',['../a00304.html#gae71445ac6cd0b9fba3e5c905cd030fb1',1,'glm']]], - ['mediump_5ff32mat3',['mediump_f32mat3',['../a00304.html#gaaaf878d0d7bfc0aac054fe269a886ca8',1,'glm']]], - ['mediump_5ff32mat3x2',['mediump_f32mat3x2',['../a00304.html#gaaab39454f56cf9fc6d940358ce5e6a0f',1,'glm']]], - ['mediump_5ff32mat3x3',['mediump_f32mat3x3',['../a00304.html#gacd80ad7640e9e32f2edcb8330b1ffe4f',1,'glm']]], - ['mediump_5ff32mat3x4',['mediump_f32mat3x4',['../a00304.html#ga8df705d775b776f5ae6b39e2ab892899',1,'glm']]], - ['mediump_5ff32mat4',['mediump_f32mat4',['../a00304.html#ga4491baaebbc46a20f1cb5da985576bf4',1,'glm']]], - ['mediump_5ff32mat4x2',['mediump_f32mat4x2',['../a00304.html#gab005efe0fa4de1a928e8ddec4bc2c43f',1,'glm']]], - ['mediump_5ff32mat4x3',['mediump_f32mat4x3',['../a00304.html#gade108f16633cf95fa500b5b8c36c8b00',1,'glm']]], - ['mediump_5ff32mat4x4',['mediump_f32mat4x4',['../a00304.html#ga936e95b881ecd2d109459ca41913fa99',1,'glm']]], - ['mediump_5ff32quat',['mediump_f32quat',['../a00304.html#gaa40c03d52dbfbfaf03e75773b9606ff3',1,'glm']]], - ['mediump_5ff32vec1',['mediump_f32vec1',['../a00304.html#gabb33cab7d7c74cc14aa95455d0690865',1,'glm']]], - ['mediump_5ff32vec2',['mediump_f32vec2',['../a00304.html#gad6eb11412a3161ca8dc1d63b2a307c4b',1,'glm']]], - ['mediump_5ff32vec3',['mediump_f32vec3',['../a00304.html#ga062ffef2973bd8241df993c3b30b327c',1,'glm']]], - ['mediump_5ff32vec4',['mediump_f32vec4',['../a00304.html#gad80c84bcd5f585840faa6179f6fd446c',1,'glm']]], - ['mediump_5ff64',['mediump_f64',['../a00304.html#ga6d40381d78472553f878f66e443feeef',1,'glm']]], - ['mediump_5ff64mat2',['mediump_f64mat2',['../a00304.html#gac1281da5ded55047e8892b0e1f1ae965',1,'glm']]], - ['mediump_5ff64mat2x2',['mediump_f64mat2x2',['../a00304.html#ga4fd527644cccbca4cb205320eab026f3',1,'glm']]], - ['mediump_5ff64mat2x3',['mediump_f64mat2x3',['../a00304.html#gafd9a6ebc0c7b95f5c581d00d16a17c54',1,'glm']]], - ['mediump_5ff64mat2x4',['mediump_f64mat2x4',['../a00304.html#gaf306dd69e53633636aee38cea79d4cb7',1,'glm']]], - ['mediump_5ff64mat3',['mediump_f64mat3',['../a00304.html#gad35fb67eb1d03c5a514f0bd7aed1c776',1,'glm']]], - ['mediump_5ff64mat3x2',['mediump_f64mat3x2',['../a00304.html#gacd926d36a72433f6cac51dd60fa13107',1,'glm']]], - ['mediump_5ff64mat3x3',['mediump_f64mat3x3',['../a00304.html#ga84d88a6e3a54ccd2b67e195af4a4c23e',1,'glm']]], - ['mediump_5ff64mat3x4',['mediump_f64mat3x4',['../a00304.html#gad38c544d332b8c4bd0b70b1bd9feccc2',1,'glm']]], - ['mediump_5ff64mat4',['mediump_f64mat4',['../a00304.html#gaa805ef691c711dc41e2776cfb67f5cf5',1,'glm']]], - ['mediump_5ff64mat4x2',['mediump_f64mat4x2',['../a00304.html#ga17d36f0ea22314117e1cec9594b33945',1,'glm']]], - ['mediump_5ff64mat4x3',['mediump_f64mat4x3',['../a00304.html#ga54697a78f9a4643af6a57fc2e626ec0d',1,'glm']]], - ['mediump_5ff64mat4x4',['mediump_f64mat4x4',['../a00304.html#ga66edb8de17b9235029472f043ae107e9',1,'glm']]], - ['mediump_5ff64quat',['mediump_f64quat',['../a00304.html#ga5e52f485059ce6e3010c590b882602c9',1,'glm']]], - ['mediump_5ff64vec1',['mediump_f64vec1',['../a00304.html#gac30fdf8afa489400053275b6a3350127',1,'glm']]], - ['mediump_5ff64vec2',['mediump_f64vec2',['../a00304.html#ga8ebc04ecf6440c4ee24718a16600ce6b',1,'glm']]], - ['mediump_5ff64vec3',['mediump_f64vec3',['../a00304.html#ga461c4c7d0757404dd0dba931760b25cf',1,'glm']]], - ['mediump_5ff64vec4',['mediump_f64vec4',['../a00304.html#gacfea053bd6bb3eddb996a4f94de22a3e',1,'glm']]], - ['mediump_5ffdualquat',['mediump_fdualquat',['../a00317.html#ga4a6b594ff7e81150d8143001367a9431',1,'glm']]], - ['mediump_5ffloat32',['mediump_float32',['../a00304.html#ga7812bf00676fb1a86dcd62cca354d2c7',1,'glm']]], - ['mediump_5ffloat32_5ft',['mediump_float32_t',['../a00304.html#gae4dee61f8fe1caccec309fbed02faf12',1,'glm']]], - ['mediump_5ffloat64',['mediump_float64',['../a00304.html#gab83d8aae6e4f115e97a785e8574a115f',1,'glm']]], - ['mediump_5ffloat64_5ft',['mediump_float64_t',['../a00304.html#gac61843e4fa96c1f4e9d8316454f32a8e',1,'glm']]], - ['mediump_5ffmat2',['mediump_fmat2',['../a00304.html#ga74e9133378fd0b4da8ac0bc0876702ff',1,'glm']]], - ['mediump_5ffmat2x2',['mediump_fmat2x2',['../a00304.html#ga98a687c17b174ea316b5f397b64f44bc',1,'glm']]], - ['mediump_5ffmat2x3',['mediump_fmat2x3',['../a00304.html#gaa03f939d90d5ef157df957d93f0b9a64',1,'glm']]], - ['mediump_5ffmat2x4',['mediump_fmat2x4',['../a00304.html#ga35223623e9ccebd8a281873b71b7d213',1,'glm']]], - ['mediump_5ffmat3',['mediump_fmat3',['../a00304.html#ga80823dfad5dba98512c76af498343847',1,'glm']]], - ['mediump_5ffmat3x2',['mediump_fmat3x2',['../a00304.html#ga42569e5b92f8635cedeadb1457ee1467',1,'glm']]], - ['mediump_5ffmat3x3',['mediump_fmat3x3',['../a00304.html#gaa6f526388c74a66b3d52315a14d434ae',1,'glm']]], - ['mediump_5ffmat3x4',['mediump_fmat3x4',['../a00304.html#gaefe8ef520c6cb78590ebbefe648da4d4',1,'glm']]], - ['mediump_5ffmat4',['mediump_fmat4',['../a00304.html#gac1c38778c0b5a1263f07753c05a4f7b9',1,'glm']]], - ['mediump_5ffmat4x2',['mediump_fmat4x2',['../a00304.html#gacea38a85893e17e6834b6cb09a9ad0cf',1,'glm']]], - ['mediump_5ffmat4x3',['mediump_fmat4x3',['../a00304.html#ga41ad497f7eae211556aefd783cb02b90',1,'glm']]], - ['mediump_5ffmat4x4',['mediump_fmat4x4',['../a00304.html#ga22e27beead07bff4d5ce9d6065a57279',1,'glm']]], - ['mediump_5ffvec1',['mediump_fvec1',['../a00304.html#ga367964fc2133d3f1b5b3755ff9cf6c9b',1,'glm']]], - ['mediump_5ffvec2',['mediump_fvec2',['../a00304.html#ga44bfa55cda5dbf53f24a1fb7610393d6',1,'glm']]], - ['mediump_5ffvec3',['mediump_fvec3',['../a00304.html#ga999dc6703ad16e3d3c26b74ea8083f07',1,'glm']]], - ['mediump_5ffvec4',['mediump_fvec4',['../a00304.html#ga1bed890513c0f50b7e7ba4f7f359dbfb',1,'glm']]], - ['mediump_5fi16',['mediump_i16',['../a00304.html#ga62a17cddeb4dffb4e18fe3aea23f051a',1,'glm']]], - ['mediump_5fi16vec1',['mediump_i16vec1',['../a00304.html#gacc44265ed440bf5e6e566782570de842',1,'glm']]], - ['mediump_5fi16vec2',['mediump_i16vec2',['../a00304.html#ga4b5e2c9aaa5d7717bf71179aefa12e88',1,'glm']]], - ['mediump_5fi16vec3',['mediump_i16vec3',['../a00304.html#ga3be6c7fc5fe08fa2274bdb001d5f2633',1,'glm']]], - ['mediump_5fi16vec4',['mediump_i16vec4',['../a00304.html#gaf52982bb23e3a3772649b2c5bb84b107',1,'glm']]], - ['mediump_5fi32',['mediump_i32',['../a00304.html#gaf5e94bf2a20af7601787c154751dc2e1',1,'glm']]], - ['mediump_5fi32vec1',['mediump_i32vec1',['../a00304.html#ga46a57f71e430637559097a732b550a7e',1,'glm']]], - ['mediump_5fi32vec2',['mediump_i32vec2',['../a00304.html#ga20bf224bd4f8a24ecc4ed2004a40c219',1,'glm']]], - ['mediump_5fi32vec3',['mediump_i32vec3',['../a00304.html#ga13a221b910aa9eb1b04ca1c86e81015a',1,'glm']]], - ['mediump_5fi32vec4',['mediump_i32vec4',['../a00304.html#ga6addd4dfee87fc09ab9525e3d07db4c8',1,'glm']]], - ['mediump_5fi64',['mediump_i64',['../a00304.html#ga3ebcb1f6d8d8387253de8bccb058d77f',1,'glm']]], - ['mediump_5fi64vec1',['mediump_i64vec1',['../a00304.html#ga8343e9d244fb17a5bbf0d94d36b3695e',1,'glm']]], - ['mediump_5fi64vec2',['mediump_i64vec2',['../a00304.html#ga2c94aeae3457325944ca1059b0b68330',1,'glm']]], - ['mediump_5fi64vec3',['mediump_i64vec3',['../a00304.html#ga8089722ffdf868cdfe721dea1fb6a90e',1,'glm']]], - ['mediump_5fi64vec4',['mediump_i64vec4',['../a00304.html#gabf1f16c5ab8cb0484bd1e846ae4368f1',1,'glm']]], - ['mediump_5fi8',['mediump_i8',['../a00304.html#gacf1ded173e1e2d049c511d095b259e21',1,'glm']]], - ['mediump_5fi8vec1',['mediump_i8vec1',['../a00304.html#ga85e8893f4ae3630065690a9000c0c483',1,'glm']]], - ['mediump_5fi8vec2',['mediump_i8vec2',['../a00304.html#ga2a8bdc32184ea0a522ef7bd90640cf67',1,'glm']]], - ['mediump_5fi8vec3',['mediump_i8vec3',['../a00304.html#ga6dd1c1618378c6f94d522a61c28773c9',1,'glm']]], - ['mediump_5fi8vec4',['mediump_i8vec4',['../a00304.html#gac7bb04fb857ef7b520e49f6c381432be',1,'glm']]], - ['mediump_5fimat2',['mediump_imat2',['../a00294.html#ga20f4cc7ab23e2aa1f4db9fdb5496d378',1,'glm']]], - ['mediump_5fimat2x2',['mediump_imat2x2',['../a00294.html#ga4b2aeb11a329940721dda9583e71f856',1,'glm']]], - ['mediump_5fimat2x3',['mediump_imat2x3',['../a00294.html#ga74362470ba99843ac70aee5ac38cc674',1,'glm']]], - ['mediump_5fimat2x4',['mediump_imat2x4',['../a00294.html#ga8da25cd380ba30fc5b68a4687deb3e09',1,'glm']]], - ['mediump_5fimat3',['mediump_imat3',['../a00294.html#ga6c63bdc736efd3466e0730de0251cb71',1,'glm']]], - ['mediump_5fimat3x2',['mediump_imat3x2',['../a00294.html#gac0b4e42d648fb3eaf4bb88da82ecc809',1,'glm']]], - ['mediump_5fimat3x3',['mediump_imat3x3',['../a00294.html#gad99cc2aad8fc57f068cfa7719dbbea12',1,'glm']]], - ['mediump_5fimat3x4',['mediump_imat3x4',['../a00294.html#ga67689a518b181a26540bc44a163525cd',1,'glm']]], - ['mediump_5fimat4',['mediump_imat4',['../a00294.html#gaf348552978553630d2a00b78eb887ced',1,'glm']]], - ['mediump_5fimat4x2',['mediump_imat4x2',['../a00294.html#ga8b2d35816f7103f0f4c82dd2f27571fc',1,'glm']]], - ['mediump_5fimat4x3',['mediump_imat4x3',['../a00294.html#ga5b10acc696759e03f6ab918f4467e94c',1,'glm']]], - ['mediump_5fimat4x4',['mediump_imat4x4',['../a00294.html#ga2596869d154dec1180beadbb9df80501',1,'glm']]], - ['mediump_5fint16',['mediump_int16',['../a00304.html#gadff3608baa4b5bd3ed28f95c1c2c345d',1,'glm']]], - ['mediump_5fint16_5ft',['mediump_int16_t',['../a00304.html#ga80e72fe94c88498537e8158ba7591c54',1,'glm']]], - ['mediump_5fint32',['mediump_int32',['../a00304.html#ga5244cef85d6e870e240c76428a262ae8',1,'glm']]], - ['mediump_5fint32_5ft',['mediump_int32_t',['../a00304.html#ga26fc7ced1ad7ca5024f1c973c8dc9180',1,'glm']]], - ['mediump_5fint64',['mediump_int64',['../a00304.html#ga7b968f2b86a0442a89c7359171e1d866',1,'glm']]], - ['mediump_5fint64_5ft',['mediump_int64_t',['../a00304.html#gac3bc41bcac61d1ba8f02a6f68ce23f64',1,'glm']]], - ['mediump_5fint8',['mediump_int8',['../a00304.html#ga6fbd69cbdaa44345bff923a2cf63de7e',1,'glm']]], - ['mediump_5fint8_5ft',['mediump_int8_t',['../a00304.html#ga6d7b3789ecb932c26430009478cac7ae',1,'glm']]], - ['mediump_5fivec1',['mediump_ivec1',['../a00273.html#gad628c608970b3d0aa6cfb63ce6e53e56',1,'glm']]], - ['mediump_5fivec2',['mediump_ivec2',['../a00282.html#gac57496299d276ed97044074097bd5e2c',1,'glm']]], - ['mediump_5fivec3',['mediump_ivec3',['../a00282.html#ga27cfb51e0dbe15bba27a14a8590e8466',1,'glm']]], - ['mediump_5fivec4',['mediump_ivec4',['../a00282.html#ga92a204c37e66ac6c1dc7ae91142f2ea5',1,'glm']]], - ['mediump_5fmat2',['mediump_mat2',['../a00284.html#ga745452bd9c89f5ad948203e4fb4b4ea3',1,'glm']]], - ['mediump_5fmat2x2',['mediump_mat2x2',['../a00284.html#ga0cdf57d29f9448864237b2fb3e39aa1d',1,'glm']]], - ['mediump_5fmat2x3',['mediump_mat2x3',['../a00284.html#ga497d513d552d927537d61fa11e3701ab',1,'glm']]], - ['mediump_5fmat2x4',['mediump_mat2x4',['../a00284.html#gae7b75ea2e09fa686a79bbe9b6ca68ee5',1,'glm']]], - ['mediump_5fmat3',['mediump_mat3',['../a00284.html#ga5aae49834d02732942f44e61d7bce136',1,'glm']]], - ['mediump_5fmat3x2',['mediump_mat3x2',['../a00284.html#ga9e1c9ee65fef547bde793e69723e24eb',1,'glm']]], - ['mediump_5fmat3x3',['mediump_mat3x3',['../a00284.html#gabc0f2f4ad21c90b341881cf056f8650e',1,'glm']]], - ['mediump_5fmat3x4',['mediump_mat3x4',['../a00284.html#gaa669c6675c3405f76c0b14020d1c0d61',1,'glm']]], - ['mediump_5fmat4',['mediump_mat4',['../a00284.html#gab8531bc3f269aa45835cd6e1972b7fc7',1,'glm']]], - ['mediump_5fmat4x2',['mediump_mat4x2',['../a00284.html#gad75706b70545412ba9ac27d5ee210f66',1,'glm']]], - ['mediump_5fmat4x3',['mediump_mat4x3',['../a00284.html#ga4a1440b5ea3cf84d5b06c79b534bd770',1,'glm']]], - ['mediump_5fmat4x4',['mediump_mat4x4',['../a00284.html#ga15bca2b70917d9752231160d9da74b01',1,'glm']]], - ['mediump_5fquat',['mediump_quat',['../a00253.html#gad2a59409de1bb12ccb6eb692ee7e9d8d',1,'glm']]], - ['mediump_5fu16',['mediump_u16',['../a00304.html#ga9df98857be695d5a30cb30f5bfa38a80',1,'glm']]], - ['mediump_5fu16vec1',['mediump_u16vec1',['../a00304.html#ga400ce8cc566de093a9b28e59e220d6e4',1,'glm']]], - ['mediump_5fu16vec2',['mediump_u16vec2',['../a00304.html#ga429c201b3e92c90b4ef4356f2be52ee1',1,'glm']]], - ['mediump_5fu16vec3',['mediump_u16vec3',['../a00304.html#gac9ba20234b0c3751d45ce575fc71e551',1,'glm']]], - ['mediump_5fu16vec4',['mediump_u16vec4',['../a00304.html#ga5793393686ce5bd2d5968ff9144762b8',1,'glm']]], - ['mediump_5fu32',['mediump_u32',['../a00304.html#ga1bd0e914158bf03135f8a317de6debe9',1,'glm']]], - ['mediump_5fu32vec1',['mediump_u32vec1',['../a00304.html#ga8a11ccd2e38f674bbf3c2d1afc232aee',1,'glm']]], - ['mediump_5fu32vec2',['mediump_u32vec2',['../a00304.html#ga94f74851fce338549c705b5f0d601c4f',1,'glm']]], - ['mediump_5fu32vec3',['mediump_u32vec3',['../a00304.html#ga012c24c8fc69707b90260474c70275a2',1,'glm']]], - ['mediump_5fu32vec4',['mediump_u32vec4',['../a00304.html#ga5d43ee8b5dbaa06c327b03b83682598a',1,'glm']]], - ['mediump_5fu64',['mediump_u64',['../a00304.html#ga2af9490085ae3bdf36a544e9dd073610',1,'glm']]], - ['mediump_5fu64vec1',['mediump_u64vec1',['../a00304.html#ga659f372ccb8307d5db5beca942cde5e8',1,'glm']]], - ['mediump_5fu64vec2',['mediump_u64vec2',['../a00304.html#ga73a08ef5a74798f3a1a99250b5f86a7d',1,'glm']]], - ['mediump_5fu64vec3',['mediump_u64vec3',['../a00304.html#ga1900c6ab74acd392809425953359ef52',1,'glm']]], - ['mediump_5fu64vec4',['mediump_u64vec4',['../a00304.html#gaec7ee455cb379ec2993e81482123e1cc',1,'glm']]], - ['mediump_5fu8',['mediump_u8',['../a00304.html#gad1213a22bbb9e4107f07eaa4956f8281',1,'glm']]], - ['mediump_5fu8vec1',['mediump_u8vec1',['../a00304.html#ga4a43050843b141bdc7e85437faef6f55',1,'glm']]], - ['mediump_5fu8vec2',['mediump_u8vec2',['../a00304.html#ga907f85d4a0eac3d8aaf571e5c2647194',1,'glm']]], - ['mediump_5fu8vec3',['mediump_u8vec3',['../a00304.html#gaddc6f7748b699254942c5216b68f8f7f',1,'glm']]], - ['mediump_5fu8vec4',['mediump_u8vec4',['../a00304.html#gaaf4ee3b76d43d98da02ec399b99bda4b',1,'glm']]], - ['mediump_5fuint16',['mediump_uint16',['../a00304.html#ga2885a6c89916911e418c06bb76b9bdbb',1,'glm']]], - ['mediump_5fuint16_5ft',['mediump_uint16_t',['../a00304.html#ga3963b1050fc65a383ee28e3f827b6e3e',1,'glm']]], - ['mediump_5fuint32',['mediump_uint32',['../a00304.html#ga34dd5ec1988c443bae80f1b20a8ade5f',1,'glm']]], - ['mediump_5fuint32_5ft',['mediump_uint32_t',['../a00304.html#gaf4dae276fd29623950de14a6ca2586b5',1,'glm']]], - ['mediump_5fuint64',['mediump_uint64',['../a00304.html#ga30652709815ad9404272a31957daa59e',1,'glm']]], - ['mediump_5fuint64_5ft',['mediump_uint64_t',['../a00304.html#ga9b170dd4a8f38448a2dc93987c7875e9',1,'glm']]], - ['mediump_5fuint8',['mediump_uint8',['../a00304.html#ga1fa92a233b9110861cdbc8c2ccf0b5a3',1,'glm']]], - ['mediump_5fuint8_5ft',['mediump_uint8_t',['../a00304.html#gadfe65c78231039e90507770db50c98c7',1,'glm']]], - ['mediump_5fumat2',['mediump_umat2',['../a00294.html#ga43041378b3410ea951b7de0dfd2bc7ee',1,'glm']]], - ['mediump_5fumat2x2',['mediump_umat2x2',['../a00294.html#ga3b209b1b751f041422137e3c065dfa98',1,'glm']]], - ['mediump_5fumat2x3',['mediump_umat2x3',['../a00294.html#gaee2c1f13b41f4c92ea5b3efe367a1306',1,'glm']]], - ['mediump_5fumat2x4',['mediump_umat2x4',['../a00294.html#gae1317ddca16d01e119a40b7f0ee85f95',1,'glm']]], - ['mediump_5fumat3',['mediump_umat3',['../a00294.html#ga1730dbe3c67801f53520b06d1aa0a34a',1,'glm']]], - ['mediump_5fumat3x2',['mediump_umat3x2',['../a00294.html#gaadc28bfdc8ebca81ae85121b11994970',1,'glm']]], - ['mediump_5fumat3x3',['mediump_umat3x3',['../a00294.html#ga48f2fc38d3f7fab3cfbc961278ced53d',1,'glm']]], - ['mediump_5fumat3x4',['mediump_umat3x4',['../a00294.html#ga78009a1e4ca64217e46b418535e52546',1,'glm']]], - ['mediump_5fumat4',['mediump_umat4',['../a00294.html#ga5087c2beb26a11d9af87432e554cf9d1',1,'glm']]], - ['mediump_5fumat4x2',['mediump_umat4x2',['../a00294.html#gaf35aefd81cc13718f6b059623f7425fa',1,'glm']]], - ['mediump_5fumat4x3',['mediump_umat4x3',['../a00294.html#ga4e1bed14fbc7f4b376aaed064f89f0fb',1,'glm']]], - ['mediump_5fumat4x4',['mediump_umat4x4',['../a00294.html#gaa9428fc8430dc552aad920653f822ef3',1,'glm']]], - ['mediump_5fuvec1',['mediump_uvec1',['../a00277.html#ga38fde73aaf1420175ece8d4882558a3f',1,'glm']]], - ['mediump_5fuvec2',['mediump_uvec2',['../a00282.html#gaa3b4f7806dad03d83bb3da0baa1e3b9b',1,'glm']]], - ['mediump_5fuvec3',['mediump_uvec3',['../a00282.html#ga83b7df38feefbb357f3673d950fafef7',1,'glm']]], - ['mediump_5fuvec4',['mediump_uvec4',['../a00282.html#ga64ed0deb6573375b7016daf82ffd53a7',1,'glm']]], - ['mediump_5fvec1',['mediump_vec1',['../a00271.html#ga645f53e6b8056609023a894b4e2beef4',1,'glm']]], - ['mediump_5fvec2',['mediump_vec2',['../a00282.html#gabc61976261c406520c7a8e4d946dc3f0',1,'glm']]], - ['mediump_5fvec3',['mediump_vec3',['../a00282.html#ga2384e263df19f1404b733016eff78fca',1,'glm']]], - ['mediump_5fvec4',['mediump_vec4',['../a00282.html#ga5c6978d3ffba06738416a33083853fc0',1,'glm']]], - ['min',['min',['../a00241.html#ga6cf8098827054a270ee36b18e30d471d',1,'glm::min(genType x, genType y)'],['../a00241.html#gaa7d015eba1f9f48519251f4abe69b14d',1,'glm::min(vec< L, T, Q > const &x, T y)'],['../a00241.html#ga31f49ef9e7d1beb003160c5e009b0c48',1,'glm::min(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00258.html#ga420b37cbd98c395b93dab0278305cd46',1,'glm::min(T a, T b, T c)'],['../a00258.html#ga0d24a9acb8178df77e4aff90cbb2010d',1,'glm::min(T a, T b, T c, T d)'],['../a00267.html#ga3cd83d80fd4f433d8e333593ec56dddf',1,'glm::min(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)'],['../a00267.html#gab66920ed064ab518d6859c5a889c4be4',1,'glm::min(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)'],['../a00321.html#ga713d3f9b3e76312c0d314e0c8611a6a6',1,'glm::min(T const &x, T const &y, T const &z)'],['../a00321.html#ga74d1a96e7cdbac40f6d35142d3bcbbd4',1,'glm::min(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)'],['../a00321.html#ga42b5c3fc027fd3d9a50d2ccc9126d9f0',1,'glm::min(C< T > const &x, C< T > const &y, C< T > const &z)'],['../a00321.html#ga95466987024d03039607f09e69813d69',1,'glm::min(T const &x, T const &y, T const &z, T const &w)'],['../a00321.html#ga4fe35dd31dd0c45693c9b60b830b8d47',1,'glm::min(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)'],['../a00321.html#ga7471ea4159eed8dd9ea4ac5d46c2fead',1,'glm::min(C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)']]], - ['mirrorclamp',['mirrorClamp',['../a00369.html#gaa6856a0a048d2749252848da35e10c8b',1,'glm']]], - ['mirrorrepeat',['mirrorRepeat',['../a00369.html#ga16a89b0661b60d5bea85137bbae74d73',1,'glm']]], - ['mix',['mix',['../a00241.html#ga8e93f374aae27d1a88b921860351f8d4',1,'glm::mix(genTypeT x, genTypeT y, genTypeU a)'],['../a00248.html#gafbfe587b8da11fb89a30c3d67dd5ccc2',1,'glm::mix(qua< T, Q > const &x, qua< T, Q > const &y, T a)']]], - ['mixed_5fproduct_2ehpp',['mixed_product.hpp',['../a00111.html',1,'']]], - ['mixedproduct',['mixedProduct',['../a00342.html#gab3c6048fbb67f7243b088a4fee48d020',1,'glm']]], - ['mod',['mod',['../a00241.html#ga9b197a452cd52db3c5c18bac72bd7798',1,'glm::mod(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00330.html#gaabfbb41531ab7ad8d06fc176edfba785',1,'glm::mod(int x, int y)'],['../a00330.html#ga63fc8d63e7da1706439233b386ba8b6f',1,'glm::mod(uint x, uint y)']]], - ['modf',['modf',['../a00241.html#ga85e33f139b8db1b39b590a5713b9e679',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_b.html b/tests/OpenGL/package/glm/doc/api/search/all_b.html deleted file mode 100644 index a92de485..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_b.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_b.js b/tests/OpenGL/package/glm/doc/api/search/all_b.js deleted file mode 100644 index 59d726bc..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_b.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['nextmultiple',['nextMultiple',['../a00261.html#gab770a3835c44c8a6fd225be4f4e6b317',1,'glm::nextMultiple(genIUType v, genIUType Multiple)'],['../a00274.html#gace38d00601cbf49cd4dc03f003ab42b7',1,'glm::nextMultiple(vec< L, T, Q > const &v, T Multiple)'],['../a00274.html#gacda365edad320c7aff19cc283a3b8ca2',1,'glm::nextMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], - ['nextpoweroftwo',['nextPowerOfTwo',['../a00261.html#ga3a37c2f2fd347886c9af6a3ca3db04dc',1,'glm::nextPowerOfTwo(genIUType v)'],['../a00274.html#gabba67f8aac9915e10fca727277274502',1,'glm::nextPowerOfTwo(vec< L, T, Q > const &v)']]], - ['nlz',['nlz',['../a00330.html#ga78dff8bdb361bf0061194c93e003d189',1,'glm']]], - ['noise_2ehpp',['noise.hpp',['../a00112.html',1,'']]], - ['norm_2ehpp',['norm.hpp',['../a00113.html',1,'']]], - ['normal_2ehpp',['normal.hpp',['../a00114.html',1,'']]], - ['normalize',['normalize',['../a00254.html#gabf30e3263fffe8dcc6659aea76ae8927',1,'glm::normalize(qua< T, Q > const &q)'],['../a00279.html#ga3b8d3dcae77870781392ed2902cce597',1,'glm::normalize(vec< L, T, Q > const &x)'],['../a00317.html#ga299b8641509606b1958ffa104a162cfe',1,'glm::normalize(tdualquat< T, Q > const &q)']]], - ['normalize_5fdot_2ehpp',['normalize_dot.hpp',['../a00115.html',1,'']]], - ['normalizedot',['normalizeDot',['../a00345.html#gacb140a2b903115d318c8b0a2fb5a5daa',1,'glm']]], - ['not_5f',['not_',['../a00374.html#ga610fcd175791fd246e328ffee10dbf1e',1,'glm']]], - ['notequal',['notEqual',['../a00246.html#ga8504f18a7e2bf315393032c2137dad83',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)'],['../a00246.html#ga29071147d118569344d10944b7d5c378',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, T epsilon)'],['../a00246.html#gad7959e14fbc35b4ed2617daf4d67f6cd',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, T, Q > const &epsilon)'],['../a00246.html#gaa1cd7fc228ef6e26c73583fd0d9c6552',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, int ULPs)'],['../a00246.html#gaa5517341754149ffba742d230afd1f32',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, int, Q > const &ULPs)'],['../a00255.html#gab441cee0de5867a868f3a586ee68cfe1',1,'glm::notEqual(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00255.html#ga5117a44c1bf21af857cd23e44a96d313',1,'glm::notEqual(qua< T, Q > const &x, qua< T, Q > const &y, T epsilon)'],['../a00275.html#ga4a99cc41341567567a608719449c1fac',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T epsilon)'],['../a00275.html#ga417cf51304359db18e819dda9bce5767',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &epsilon)'],['../a00275.html#ga8b5c2c3f83422ae5b71fa960d03b0339',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, int ULPs)'],['../a00275.html#ga0b15ffe32987a6029b14398eb0def01a',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)'],['../a00374.html#ga17c19dc1b76cd5aef63e9e7ff3aa3c27',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], - ['number_5fprecision_2ehpp',['number_precision.hpp',['../a00116.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_c.html b/tests/OpenGL/package/glm/doc/api/search/all_c.html deleted file mode 100644 index 20cdfbcf..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_c.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_c.js b/tests/OpenGL/package/glm/doc/api/search/all_c.js deleted file mode 100644 index bac22348..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_c.js +++ /dev/null @@ -1,27 +0,0 @@ -var searchData= -[ - ['opengl_20mathematics_20_28glm_29',['OpenGL Mathematics (GLM)',['../index.html',1,'']]], - ['one',['one',['../a00290.html#ga39c2fb227631ca25894326529bdd1ee5',1,'glm']]], - ['one_5fover_5fpi',['one_over_pi',['../a00290.html#ga555150da2b06d23c8738981d5013e0eb',1,'glm']]], - ['one_5fover_5froot_5ftwo',['one_over_root_two',['../a00290.html#ga788fa23a0939bac4d1d0205fb4f35818',1,'glm']]], - ['one_5fover_5ftwo_5fpi',['one_over_two_pi',['../a00290.html#ga7c922b427986cbb2e4c6ac69874eefbc',1,'glm']]], - ['openbounded',['openBounded',['../a00314.html#gafd303042ba2ba695bf53b2315f53f93f',1,'glm']]], - ['optimum_5fpow_2ehpp',['optimum_pow.hpp',['../a00117.html',1,'']]], - ['orientate2',['orientate2',['../a00319.html#gae16738a9f1887cf4e4db6a124637608d',1,'glm']]], - ['orientate3',['orientate3',['../a00319.html#ga7ca98668a5786f19c7b38299ebbc9b4c',1,'glm::orientate3(T const &angle)'],['../a00319.html#ga7238c8e15c7720e3ca6a45ab151eeabb',1,'glm::orientate3(vec< 3, T, Q > const &angles)']]], - ['orientate4',['orientate4',['../a00319.html#ga4a044653f71a4ecec68e0b623382b48a',1,'glm']]], - ['orientation',['orientation',['../a00356.html#ga1a32fceb71962e6160e8af295c91930a',1,'glm']]], - ['orientedangle',['orientedAngle',['../a00367.html#ga9556a803dce87fe0f42fdabe4ebba1d5',1,'glm::orientedAngle(vec< 2, T, Q > const &x, vec< 2, T, Q > const &y)'],['../a00367.html#ga706fce3d111f485839756a64f5a48553',1,'glm::orientedAngle(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, vec< 3, T, Q > const &ref)']]], - ['ortho',['ortho',['../a00243.html#gae5b6b40ed882cd56cd7cb97701909c06',1,'glm::ortho(T left, T right, T bottom, T top)'],['../a00243.html#ga6615d8a9d39432e279c4575313ecb456',1,'glm::ortho(T left, T right, T bottom, T top, T zNear, T zFar)']]], - ['ortholh',['orthoLH',['../a00243.html#gad122a79aadaa5529cec4ac197203db7f',1,'glm']]], - ['ortholh_5fno',['orthoLH_NO',['../a00243.html#ga526416735ea7c5c5cd255bf99d051bd8',1,'glm']]], - ['ortholh_5fzo',['orthoLH_ZO',['../a00243.html#gab37ac3eec8d61f22fceda7775e836afa',1,'glm']]], - ['orthono',['orthoNO',['../a00243.html#gab219d28a8f178d4517448fcd6395a073',1,'glm']]], - ['orthonormalize',['orthonormalize',['../a00348.html#ga4cab5d698e6e2eccea30c8e81c74371f',1,'glm::orthonormalize(mat< 3, 3, T, Q > const &m)'],['../a00348.html#gac3bc7ef498815026bc3d361ae0b7138e',1,'glm::orthonormalize(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)']]], - ['orthonormalize_2ehpp',['orthonormalize.hpp',['../a00118.html',1,'']]], - ['orthorh',['orthoRH',['../a00243.html#ga16264c9b838edeb9dd1de7a1010a13a4',1,'glm']]], - ['orthorh_5fno',['orthoRH_NO',['../a00243.html#gaa2f7a1373170bf0a4a2ddef9b0706780',1,'glm']]], - ['orthorh_5fzo',['orthoRH_ZO',['../a00243.html#ga9aea2e515b08fd7dce47b7b6ec34d588',1,'glm']]], - ['orthozo',['orthoZO',['../a00243.html#gaea11a70817af2c0801c869dea0b7a5bc',1,'glm']]], - ['outerproduct',['outerProduct',['../a00371.html#gac29fb7bae75a8e4c1b74cbbf85520e50',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_d.html b/tests/OpenGL/package/glm/doc/api/search/all_d.html deleted file mode 100644 index 00b28ed8..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_d.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_d.js b/tests/OpenGL/package/glm/doc/api/search/all_d.js deleted file mode 100644 index 988ea8f9..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_d.js +++ /dev/null @@ -1,263 +0,0 @@ -var searchData= -[ - ['packdouble2x32',['packDouble2x32',['../a00372.html#gaa916ca426b2bb0343ba17e3753e245c2',1,'glm']]], - ['packed_5fbvec1',['packed_bvec1',['../a00303.html#ga88632cea9008ac0ac1388e94e804a53c',1,'glm']]], - ['packed_5fbvec2',['packed_bvec2',['../a00303.html#gab85245913eaa40ab82adabcae37086cb',1,'glm']]], - ['packed_5fbvec3',['packed_bvec3',['../a00303.html#ga0c48f9417f649e27f3fb0c9f733a18bd',1,'glm']]], - ['packed_5fbvec4',['packed_bvec4',['../a00303.html#ga3180d7db84a74c402157df3bbc0ae3ed',1,'glm']]], - ['packed_5fdmat2',['packed_dmat2',['../a00303.html#gad87408a8350918711f845f071bbe43fb',1,'glm']]], - ['packed_5fdmat2x2',['packed_dmat2x2',['../a00303.html#gaaa33d8e06657a777efb0c72c44ce87a9',1,'glm']]], - ['packed_5fdmat2x3',['packed_dmat2x3',['../a00303.html#gac3a5315f588ba04ad255188071ec4e22',1,'glm']]], - ['packed_5fdmat2x4',['packed_dmat2x4',['../a00303.html#gae398fc3156f51d3684b08f62c1a5a6d4',1,'glm']]], - ['packed_5fdmat3',['packed_dmat3',['../a00303.html#ga03dfc90d539cc87ea3a15a9caa5d2245',1,'glm']]], - ['packed_5fdmat3x2',['packed_dmat3x2',['../a00303.html#gae36de20a4c0e0b1444b7903ae811d94e',1,'glm']]], - ['packed_5fdmat3x3',['packed_dmat3x3',['../a00303.html#gab9b909f1392d86854334350efcae85f5',1,'glm']]], - ['packed_5fdmat3x4',['packed_dmat3x4',['../a00303.html#ga199131fd279c92c2ac12df6d978f1dd6',1,'glm']]], - ['packed_5fdmat4',['packed_dmat4',['../a00303.html#gada980a3485640aa8151f368f17ad3086',1,'glm']]], - ['packed_5fdmat4x2',['packed_dmat4x2',['../a00303.html#ga6dc65249730698d3cc9ac5d7e1bc4d72',1,'glm']]], - ['packed_5fdmat4x3',['packed_dmat4x3',['../a00303.html#gadf202aaa9ed71c09f9bbe347e43f8764',1,'glm']]], - ['packed_5fdmat4x4',['packed_dmat4x4',['../a00303.html#gae20617435a6d042d7c38da2badd64a09',1,'glm']]], - ['packed_5fdvec1',['packed_dvec1',['../a00303.html#ga532f0c940649b1ee303acd572fc35531',1,'glm']]], - ['packed_5fdvec2',['packed_dvec2',['../a00303.html#ga5c194b11fbda636f2ab20c3bd0079196',1,'glm']]], - ['packed_5fdvec3',['packed_dvec3',['../a00303.html#ga0581ea552d86b2b5de7a2804bed80e72',1,'glm']]], - ['packed_5fdvec4',['packed_dvec4',['../a00303.html#gae8a9b181f9dc813ad6e125a52b14b935',1,'glm']]], - ['packed_5fhighp_5fbvec1',['packed_highp_bvec1',['../a00303.html#ga439e97795314b81cd15abd4e5c2e6e7a',1,'glm']]], - ['packed_5fhighp_5fbvec2',['packed_highp_bvec2',['../a00303.html#gad791d671f4fcf1ed1ea41f752916b70a',1,'glm']]], - ['packed_5fhighp_5fbvec3',['packed_highp_bvec3',['../a00303.html#ga6a5a3250b57dfadc66735bc72911437f',1,'glm']]], - ['packed_5fhighp_5fbvec4',['packed_highp_bvec4',['../a00303.html#ga09f517d88b996ef1b2f42fd54222b82d',1,'glm']]], - ['packed_5fhighp_5fdmat2',['packed_highp_dmat2',['../a00303.html#gae29686632fd05efac0675d9a6370d77b',1,'glm']]], - ['packed_5fhighp_5fdmat2x2',['packed_highp_dmat2x2',['../a00303.html#ga22bd6382b16052e301edbfc031b9f37a',1,'glm']]], - ['packed_5fhighp_5fdmat2x3',['packed_highp_dmat2x3',['../a00303.html#ga999d82719696d4c59f4d236dd08f273d',1,'glm']]], - ['packed_5fhighp_5fdmat2x4',['packed_highp_dmat2x4',['../a00303.html#ga6998ac2a8d7fe456b651a6336ed26bb0',1,'glm']]], - ['packed_5fhighp_5fdmat3',['packed_highp_dmat3',['../a00303.html#gadac7c040c4810dd52b36fcd09d097400',1,'glm']]], - ['packed_5fhighp_5fdmat3x2',['packed_highp_dmat3x2',['../a00303.html#gab462744977beb85fb5c782bc2eea7b15',1,'glm']]], - ['packed_5fhighp_5fdmat3x3',['packed_highp_dmat3x3',['../a00303.html#ga49e5a709d098523823b2f824e48672a6',1,'glm']]], - ['packed_5fhighp_5fdmat3x4',['packed_highp_dmat3x4',['../a00303.html#ga2c67b3b0adab71c8680c3d819f1fa9b7',1,'glm']]], - ['packed_5fhighp_5fdmat4',['packed_highp_dmat4',['../a00303.html#ga6718822cd7af005a9b5bd6ee282f6ba6',1,'glm']]], - ['packed_5fhighp_5fdmat4x2',['packed_highp_dmat4x2',['../a00303.html#ga12e39e797fb724a5b51fcbea2513a7da',1,'glm']]], - ['packed_5fhighp_5fdmat4x3',['packed_highp_dmat4x3',['../a00303.html#ga79c2e9f82e67963c1ecad0ad6d0ec72e',1,'glm']]], - ['packed_5fhighp_5fdmat4x4',['packed_highp_dmat4x4',['../a00303.html#ga2df58e03e5afded28707b4f7d077afb4',1,'glm']]], - ['packed_5fhighp_5fdvec1',['packed_highp_dvec1',['../a00303.html#gab472b2d917b5e6efd76e8c7dbfbbf9f1',1,'glm']]], - ['packed_5fhighp_5fdvec2',['packed_highp_dvec2',['../a00303.html#ga5b2dc48fa19b684d207d69c6b145eb63',1,'glm']]], - ['packed_5fhighp_5fdvec3',['packed_highp_dvec3',['../a00303.html#gaaac6b356ef00154da41aaae7d1549193',1,'glm']]], - ['packed_5fhighp_5fdvec4',['packed_highp_dvec4',['../a00303.html#ga81b5368fe485e2630aa9b44832d592e7',1,'glm']]], - ['packed_5fhighp_5fivec1',['packed_highp_ivec1',['../a00303.html#ga7245acc887a5438f46fd85fdf076bb3b',1,'glm']]], - ['packed_5fhighp_5fivec2',['packed_highp_ivec2',['../a00303.html#ga54f368ec6b514a5aa4f28d40e6f93ef7',1,'glm']]], - ['packed_5fhighp_5fivec3',['packed_highp_ivec3',['../a00303.html#ga865a9c7bb22434b1b8c5ac31e164b628',1,'glm']]], - ['packed_5fhighp_5fivec4',['packed_highp_ivec4',['../a00303.html#gad6f1b4e3a51c2c051814b60d5d1b8895',1,'glm']]], - ['packed_5fhighp_5fmat2',['packed_highp_mat2',['../a00303.html#ga2f2d913d8cca2f935b2522964408c0b2',1,'glm']]], - ['packed_5fhighp_5fmat2x2',['packed_highp_mat2x2',['../a00303.html#ga245c12d2daf67feecaa2d3277c8f6661',1,'glm']]], - ['packed_5fhighp_5fmat2x3',['packed_highp_mat2x3',['../a00303.html#ga069cc8892aadae144c00f35297617d44',1,'glm']]], - ['packed_5fhighp_5fmat2x4',['packed_highp_mat2x4',['../a00303.html#ga6904d09b62141d09712b76983892f95b',1,'glm']]], - ['packed_5fhighp_5fmat3',['packed_highp_mat3',['../a00303.html#gabdd5fbffe8b8b8a7b33523f25b120dbe',1,'glm']]], - ['packed_5fhighp_5fmat3x2',['packed_highp_mat3x2',['../a00303.html#ga2624719cb251d8de8cad1beaefc3a3f9',1,'glm']]], - ['packed_5fhighp_5fmat3x3',['packed_highp_mat3x3',['../a00303.html#gaf2e07527d678440bf0c20adbeb9177c5',1,'glm']]], - ['packed_5fhighp_5fmat3x4',['packed_highp_mat3x4',['../a00303.html#ga72102fa6ac2445aa3bb203128ad52449',1,'glm']]], - ['packed_5fhighp_5fmat4',['packed_highp_mat4',['../a00303.html#ga253e8379b08d2dc6fe2800b2fb913203',1,'glm']]], - ['packed_5fhighp_5fmat4x2',['packed_highp_mat4x2',['../a00303.html#gae389c2071cf3cdb33e7812c6fd156710',1,'glm']]], - ['packed_5fhighp_5fmat4x3',['packed_highp_mat4x3',['../a00303.html#ga4584f64394bd7123b7a8534741e4916c',1,'glm']]], - ['packed_5fhighp_5fmat4x4',['packed_highp_mat4x4',['../a00303.html#ga0149fe15668925147e07c94fd2c2d6ae',1,'glm']]], - ['packed_5fhighp_5fuvec1',['packed_highp_uvec1',['../a00303.html#ga8c32b53f628a3616aa5061e58d66fe74',1,'glm']]], - ['packed_5fhighp_5fuvec2',['packed_highp_uvec2',['../a00303.html#gab704d4fb15f6f96d70e363d5db7060cd',1,'glm']]], - ['packed_5fhighp_5fuvec3',['packed_highp_uvec3',['../a00303.html#ga0b570da473fec4619db5aa0dce5133b0',1,'glm']]], - ['packed_5fhighp_5fuvec4',['packed_highp_uvec4',['../a00303.html#gaa582f38c82aef61dea7aaedf15bb06a6',1,'glm']]], - ['packed_5fhighp_5fvec1',['packed_highp_vec1',['../a00303.html#ga56473759d2702ee19ab7f91d0017fa70',1,'glm']]], - ['packed_5fhighp_5fvec2',['packed_highp_vec2',['../a00303.html#ga6b8b9475e7c3b16aed13edbc460bbc4d',1,'glm']]], - ['packed_5fhighp_5fvec3',['packed_highp_vec3',['../a00303.html#ga3815661df0e2de79beff8168c09adf1e',1,'glm']]], - ['packed_5fhighp_5fvec4',['packed_highp_vec4',['../a00303.html#ga4015f36bf5a5adb6ac5d45beed959867',1,'glm']]], - ['packed_5fivec1',['packed_ivec1',['../a00303.html#ga11581a06fc7bf941fa4d4b6aca29812c',1,'glm']]], - ['packed_5fivec2',['packed_ivec2',['../a00303.html#ga1fe4c5f56b8087d773aa90dc88a257a7',1,'glm']]], - ['packed_5fivec3',['packed_ivec3',['../a00303.html#gae157682a7847161787951ba1db4cf325',1,'glm']]], - ['packed_5fivec4',['packed_ivec4',['../a00303.html#gac228b70372abd561340d5f926a7c1778',1,'glm']]], - ['packed_5flowp_5fbvec1',['packed_lowp_bvec1',['../a00303.html#gae3c8750f53259ece334d3aa3b3649a40',1,'glm']]], - ['packed_5flowp_5fbvec2',['packed_lowp_bvec2',['../a00303.html#gac969befedbda69eb78d4e23f751fdbee',1,'glm']]], - ['packed_5flowp_5fbvec3',['packed_lowp_bvec3',['../a00303.html#ga7c20adbe1409e3fe4544677a7f6fe954',1,'glm']]], - ['packed_5flowp_5fbvec4',['packed_lowp_bvec4',['../a00303.html#gae473587cff3092edc0877fc691c26a0b',1,'glm']]], - ['packed_5flowp_5fdmat2',['packed_lowp_dmat2',['../a00303.html#gac93f9b1a35b9de4f456b9f2dfeaf1097',1,'glm']]], - ['packed_5flowp_5fdmat2x2',['packed_lowp_dmat2x2',['../a00303.html#gaeeaff6c132ec91ebd21da3a2399548ea',1,'glm']]], - ['packed_5flowp_5fdmat2x3',['packed_lowp_dmat2x3',['../a00303.html#ga2ccdcd4846775cbe4f9d12e71d55b5d2',1,'glm']]], - ['packed_5flowp_5fdmat2x4',['packed_lowp_dmat2x4',['../a00303.html#gac870c47d2d9d48503f6c9ee3baec8ce1',1,'glm']]], - ['packed_5flowp_5fdmat3',['packed_lowp_dmat3',['../a00303.html#ga3894a059eeaacec8791c25de398d9955',1,'glm']]], - ['packed_5flowp_5fdmat3x2',['packed_lowp_dmat3x2',['../a00303.html#ga23ec236950f5859f59197663266b535d',1,'glm']]], - ['packed_5flowp_5fdmat3x3',['packed_lowp_dmat3x3',['../a00303.html#ga4a7c7d8c3a663d0ec2a858cbfa14e54c',1,'glm']]], - ['packed_5flowp_5fdmat3x4',['packed_lowp_dmat3x4',['../a00303.html#ga8fc0e66da83599071b7ec17510686cd9',1,'glm']]], - ['packed_5flowp_5fdmat4',['packed_lowp_dmat4',['../a00303.html#ga03e1edf5666c40affe39aee35c87956f',1,'glm']]], - ['packed_5flowp_5fdmat4x2',['packed_lowp_dmat4x2',['../a00303.html#ga39658fb13369db869d363684bd8399c0',1,'glm']]], - ['packed_5flowp_5fdmat4x3',['packed_lowp_dmat4x3',['../a00303.html#ga30b0351eebc18c6056101359bdd3a359',1,'glm']]], - ['packed_5flowp_5fdmat4x4',['packed_lowp_dmat4x4',['../a00303.html#ga0294d4c45151425c86a11deee7693c0e',1,'glm']]], - ['packed_5flowp_5fdvec1',['packed_lowp_dvec1',['../a00303.html#ga054050e9d4e78d81db0e6d1573b1c624',1,'glm']]], - ['packed_5flowp_5fdvec2',['packed_lowp_dvec2',['../a00303.html#gadc19938ddb204bfcb4d9ef35b1e2bf93',1,'glm']]], - ['packed_5flowp_5fdvec3',['packed_lowp_dvec3',['../a00303.html#ga9189210cabd6651a5e14a4c46fb20598',1,'glm']]], - ['packed_5flowp_5fdvec4',['packed_lowp_dvec4',['../a00303.html#ga262dafd0c001c3a38d1cc91d024ca738',1,'glm']]], - ['packed_5flowp_5fivec1',['packed_lowp_ivec1',['../a00303.html#gaf22b77f1cf3e73b8b1dddfe7f959357c',1,'glm']]], - ['packed_5flowp_5fivec2',['packed_lowp_ivec2',['../a00303.html#ga52635859f5ef660ab999d22c11b7867f',1,'glm']]], - ['packed_5flowp_5fivec3',['packed_lowp_ivec3',['../a00303.html#ga98c9d122a959e9f3ce10a5623c310f5d',1,'glm']]], - ['packed_5flowp_5fivec4',['packed_lowp_ivec4',['../a00303.html#ga931731b8ae3b54c7ecc221509dae96bc',1,'glm']]], - ['packed_5flowp_5fmat2',['packed_lowp_mat2',['../a00303.html#ga70dcb9ef0b24e832772a7405efa9669a',1,'glm']]], - ['packed_5flowp_5fmat2x2',['packed_lowp_mat2x2',['../a00303.html#gac70667c7642ec8d50245e6e6936a3927',1,'glm']]], - ['packed_5flowp_5fmat2x3',['packed_lowp_mat2x3',['../a00303.html#ga3e7df5a11e1be27bc29a4c0d3956f234',1,'glm']]], - ['packed_5flowp_5fmat2x4',['packed_lowp_mat2x4',['../a00303.html#gaea9c555e669dc56c45d95dcc75d59bf3',1,'glm']]], - ['packed_5flowp_5fmat3',['packed_lowp_mat3',['../a00303.html#ga0d22400969dd223465b2900fecfb4f53',1,'glm']]], - ['packed_5flowp_5fmat3x2',['packed_lowp_mat3x2',['../a00303.html#ga128cd52649621861635fab746df91735',1,'glm']]], - ['packed_5flowp_5fmat3x3',['packed_lowp_mat3x3',['../a00303.html#ga5adf1802c5375a9dfb1729691bedd94e',1,'glm']]], - ['packed_5flowp_5fmat3x4',['packed_lowp_mat3x4',['../a00303.html#ga92247ca09fa03c4013ba364f3a0fca7f',1,'glm']]], - ['packed_5flowp_5fmat4',['packed_lowp_mat4',['../a00303.html#ga2a1dd2387725a335413d4c4fee8609c4',1,'glm']]], - ['packed_5flowp_5fmat4x2',['packed_lowp_mat4x2',['../a00303.html#ga8f22607dcd090cd280071ccc689f4079',1,'glm']]], - ['packed_5flowp_5fmat4x3',['packed_lowp_mat4x3',['../a00303.html#ga7661d759d6ad218e132e3d051e7b2c6c',1,'glm']]], - ['packed_5flowp_5fmat4x4',['packed_lowp_mat4x4',['../a00303.html#ga776f18d1a6e7d399f05d386167dc60f5',1,'glm']]], - ['packed_5flowp_5fuvec1',['packed_lowp_uvec1',['../a00303.html#gaf111fed760ecce16cb1988807569bee5',1,'glm']]], - ['packed_5flowp_5fuvec2',['packed_lowp_uvec2',['../a00303.html#ga958210fe245a75b058325d367c951132',1,'glm']]], - ['packed_5flowp_5fuvec3',['packed_lowp_uvec3',['../a00303.html#ga576a3f8372197a56a79dee1c8280f485',1,'glm']]], - ['packed_5flowp_5fuvec4',['packed_lowp_uvec4',['../a00303.html#gafdd97922b4a2a42cd0c99a13877ff4da',1,'glm']]], - ['packed_5flowp_5fvec1',['packed_lowp_vec1',['../a00303.html#ga0a6198fe64166a6a61084d43c71518a9',1,'glm']]], - ['packed_5flowp_5fvec2',['packed_lowp_vec2',['../a00303.html#gafbf1c2cce307c5594b165819ed83bf5d',1,'glm']]], - ['packed_5flowp_5fvec3',['packed_lowp_vec3',['../a00303.html#ga3a30c137c1f8cce478c28eab0427a570',1,'glm']]], - ['packed_5flowp_5fvec4',['packed_lowp_vec4',['../a00303.html#ga3cc94fb8de80bbd8a4aa7a5b206d304a',1,'glm']]], - ['packed_5fmat2',['packed_mat2',['../a00303.html#gadd019b43fcf42e1590d45dddaa504a1a',1,'glm']]], - ['packed_5fmat2x2',['packed_mat2x2',['../a00303.html#ga51eaadcdc292c8750f746a5dc3e6c517',1,'glm']]], - ['packed_5fmat2x3',['packed_mat2x3',['../a00303.html#ga301b76a89b8a9625501ca58815017f20',1,'glm']]], - ['packed_5fmat2x4',['packed_mat2x4',['../a00303.html#gac401da1dd9177ad81d7618a2a5541e23',1,'glm']]], - ['packed_5fmat3',['packed_mat3',['../a00303.html#ga9bc12b0ab7be8448836711b77cc7b83a',1,'glm']]], - ['packed_5fmat3x2',['packed_mat3x2',['../a00303.html#ga134f0d99fbd2459c13cd9ebd056509fa',1,'glm']]], - ['packed_5fmat3x3',['packed_mat3x3',['../a00303.html#ga6c1dbe8cde9fbb231284b01f8aeaaa99',1,'glm']]], - ['packed_5fmat3x4',['packed_mat3x4',['../a00303.html#gad63515526cccfe88ffa8fe5ed64f95f8',1,'glm']]], - ['packed_5fmat4',['packed_mat4',['../a00303.html#ga2c139854e5b04cf08a957dee3b510441',1,'glm']]], - ['packed_5fmat4x2',['packed_mat4x2',['../a00303.html#ga379c1153f1339bdeaefd592bebf538e8',1,'glm']]], - ['packed_5fmat4x3',['packed_mat4x3',['../a00303.html#gab286466e19f7399c8d25089da9400d43',1,'glm']]], - ['packed_5fmat4x4',['packed_mat4x4',['../a00303.html#ga67e7102557d6067bb6ac00d4ad0e1374',1,'glm']]], - ['packed_5fmediump_5fbvec1',['packed_mediump_bvec1',['../a00303.html#ga5546d828d63010a8f9cf81161ad0275a',1,'glm']]], - ['packed_5fmediump_5fbvec2',['packed_mediump_bvec2',['../a00303.html#gab4c6414a59539e66a242ad4cf4b476b4',1,'glm']]], - ['packed_5fmediump_5fbvec3',['packed_mediump_bvec3',['../a00303.html#ga70147763edff3fe96b03a0b98d6339a2',1,'glm']]], - ['packed_5fmediump_5fbvec4',['packed_mediump_bvec4',['../a00303.html#ga7b1620f259595b9da47a6374fc44588a',1,'glm']]], - ['packed_5fmediump_5fdmat2',['packed_mediump_dmat2',['../a00303.html#ga9d60e32d3fcb51f817046cd881fdbf57',1,'glm']]], - ['packed_5fmediump_5fdmat2x2',['packed_mediump_dmat2x2',['../a00303.html#ga39e8bb9b70e5694964e8266a21ba534e',1,'glm']]], - ['packed_5fmediump_5fdmat2x3',['packed_mediump_dmat2x3',['../a00303.html#ga8897c6d9adb4140b1c3b0a07b8f0a430',1,'glm']]], - ['packed_5fmediump_5fdmat2x4',['packed_mediump_dmat2x4',['../a00303.html#gaaa4126969c765e7faa2ebf6951c22ffb',1,'glm']]], - ['packed_5fmediump_5fdmat3',['packed_mediump_dmat3',['../a00303.html#gaf969eb879c76a5f4576e4a1e10095cf6',1,'glm']]], - ['packed_5fmediump_5fdmat3x2',['packed_mediump_dmat3x2',['../a00303.html#ga86efe91cdaa2864c828a5d6d46356c6a',1,'glm']]], - ['packed_5fmediump_5fdmat3x3',['packed_mediump_dmat3x3',['../a00303.html#gaf85877d38d8cfbc21d59d939afd72375',1,'glm']]], - ['packed_5fmediump_5fdmat3x4',['packed_mediump_dmat3x4',['../a00303.html#gad5dcaf93df267bc3029174e430e0907f',1,'glm']]], - ['packed_5fmediump_5fdmat4',['packed_mediump_dmat4',['../a00303.html#ga4b0ee7996651ddd04eaa0c4cdbb66332',1,'glm']]], - ['packed_5fmediump_5fdmat4x2',['packed_mediump_dmat4x2',['../a00303.html#ga9a15514a0631f700de6312b9d5db3a73',1,'glm']]], - ['packed_5fmediump_5fdmat4x3',['packed_mediump_dmat4x3',['../a00303.html#gab5b36cc9caee1bb1c5178fe191bf5713',1,'glm']]], - ['packed_5fmediump_5fdmat4x4',['packed_mediump_dmat4x4',['../a00303.html#ga21e86cf2f6c126bacf31b8985db06bd4',1,'glm']]], - ['packed_5fmediump_5fdvec1',['packed_mediump_dvec1',['../a00303.html#ga8920e90ea9c01d9c97e604a938ce2cbd',1,'glm']]], - ['packed_5fmediump_5fdvec2',['packed_mediump_dvec2',['../a00303.html#ga0c754a783b6fcf80374c013371c4dae9',1,'glm']]], - ['packed_5fmediump_5fdvec3',['packed_mediump_dvec3',['../a00303.html#ga1f18ada6f7cdd8c46db33ba987280fc4',1,'glm']]], - ['packed_5fmediump_5fdvec4',['packed_mediump_dvec4',['../a00303.html#ga568b850f1116b667043533cf77826968',1,'glm']]], - ['packed_5fmediump_5fivec1',['packed_mediump_ivec1',['../a00303.html#ga09507ef020a49517a7bcd50438f05056',1,'glm']]], - ['packed_5fmediump_5fivec2',['packed_mediump_ivec2',['../a00303.html#gaaa891048dddef4627df33809ec726219',1,'glm']]], - ['packed_5fmediump_5fivec3',['packed_mediump_ivec3',['../a00303.html#ga06f26d54dca30994eb1fdadb8e69f4a2',1,'glm']]], - ['packed_5fmediump_5fivec4',['packed_mediump_ivec4',['../a00303.html#ga70130dc8ed9c966ec2a221ce586d45d8',1,'glm']]], - ['packed_5fmediump_5fmat2',['packed_mediump_mat2',['../a00303.html#ga43cd36d430c5187bfdca34a23cb41581',1,'glm']]], - ['packed_5fmediump_5fmat2x2',['packed_mediump_mat2x2',['../a00303.html#ga2d2a73e662759e301c22b8931ff6a526',1,'glm']]], - ['packed_5fmediump_5fmat2x3',['packed_mediump_mat2x3',['../a00303.html#ga99049db01faf1e95ed9fb875a47dffe2',1,'glm']]], - ['packed_5fmediump_5fmat2x4',['packed_mediump_mat2x4',['../a00303.html#gad43a240533f388ce0504b495d9df3d52',1,'glm']]], - ['packed_5fmediump_5fmat3',['packed_mediump_mat3',['../a00303.html#ga13a75c6cbd0a411f694bc82486cd1e55',1,'glm']]], - ['packed_5fmediump_5fmat3x2',['packed_mediump_mat3x2',['../a00303.html#ga04cfaf1421284df3c24ea0985dab24e7',1,'glm']]], - ['packed_5fmediump_5fmat3x3',['packed_mediump_mat3x3',['../a00303.html#gaaa9cea174d342dd9650e3436823cab23',1,'glm']]], - ['packed_5fmediump_5fmat3x4',['packed_mediump_mat3x4',['../a00303.html#gabc93a9560593bd32e099c908531305f5',1,'glm']]], - ['packed_5fmediump_5fmat4',['packed_mediump_mat4',['../a00303.html#gae89d72ffc149147f61df701bbc8755bf',1,'glm']]], - ['packed_5fmediump_5fmat4x2',['packed_mediump_mat4x2',['../a00303.html#gaa458f9d9e0934bae3097e2a373b24707',1,'glm']]], - ['packed_5fmediump_5fmat4x3',['packed_mediump_mat4x3',['../a00303.html#ga02ca6255394aa778abaeb0f733c4d2b6',1,'glm']]], - ['packed_5fmediump_5fmat4x4',['packed_mediump_mat4x4',['../a00303.html#gaf304f64c06743c1571401504d3f50259',1,'glm']]], - ['packed_5fmediump_5fuvec1',['packed_mediump_uvec1',['../a00303.html#ga2c29fb42bab9a4f9b66bc60b2e514a34',1,'glm']]], - ['packed_5fmediump_5fuvec2',['packed_mediump_uvec2',['../a00303.html#gaa1f95690a78dc12e39da32943243aeef',1,'glm']]], - ['packed_5fmediump_5fuvec3',['packed_mediump_uvec3',['../a00303.html#ga1ea2bbdbcb0a69242f6d884663c1b0ab',1,'glm']]], - ['packed_5fmediump_5fuvec4',['packed_mediump_uvec4',['../a00303.html#ga63a73be86a4f07ea7a7499ab0bfebe45',1,'glm']]], - ['packed_5fmediump_5fvec1',['packed_mediump_vec1',['../a00303.html#ga71d63cead1e113fca0bcdaaa33aad050',1,'glm']]], - ['packed_5fmediump_5fvec2',['packed_mediump_vec2',['../a00303.html#ga6844c6f4691d1bf67673240850430948',1,'glm']]], - ['packed_5fmediump_5fvec3',['packed_mediump_vec3',['../a00303.html#gab0eb771b708c5b2205d9b14dd1434fd8',1,'glm']]], - ['packed_5fmediump_5fvec4',['packed_mediump_vec4',['../a00303.html#ga68c9bb24f387b312bae6a0a68e74d95e',1,'glm']]], - ['packed_5fuvec1',['packed_uvec1',['../a00303.html#ga5621493caac01bdd22ab6be4416b0314',1,'glm']]], - ['packed_5fuvec2',['packed_uvec2',['../a00303.html#gabcc33efb4d5e83b8fe4706360e75b932',1,'glm']]], - ['packed_5fuvec3',['packed_uvec3',['../a00303.html#gab96804e99e3a72a35740fec690c79617',1,'glm']]], - ['packed_5fuvec4',['packed_uvec4',['../a00303.html#ga8e5d92e84ebdbe2480cf96bc17d6e2f2',1,'glm']]], - ['packed_5fvec1',['packed_vec1',['../a00303.html#ga14741e3d9da9ae83765389927f837331',1,'glm']]], - ['packed_5fvec2',['packed_vec2',['../a00303.html#ga3254defa5a8f0ae4b02b45fedba84a66',1,'glm']]], - ['packed_5fvec3',['packed_vec3',['../a00303.html#gaccccd090e185450caa28b5b63ad4e8f0',1,'glm']]], - ['packed_5fvec4',['packed_vec4',['../a00303.html#ga37a0e0bf653169b581c5eea3d547fa5d',1,'glm']]], - ['packf2x11_5f1x10',['packF2x11_1x10',['../a00298.html#ga4944ad465ff950e926d49621f916c78d',1,'glm']]], - ['packf3x9_5fe1x5',['packF3x9_E1x5',['../a00298.html#ga3f648fc205467792dc6d8c59c748f8a6',1,'glm']]], - ['packhalf',['packHalf',['../a00298.html#ga2d8bbce673ebc04831c1fb05c47f5251',1,'glm']]], - ['packhalf1x16',['packHalf1x16',['../a00298.html#ga43f2093b6ff192a79058ff7834fc3528',1,'glm']]], - ['packhalf2x16',['packHalf2x16',['../a00372.html#ga20f134b07db3a3d3a38efb2617388c92',1,'glm']]], - ['packhalf4x16',['packHalf4x16',['../a00298.html#gafe2f7b39caf8f5ec555e1c059ec530e6',1,'glm']]], - ['packi3x10_5f1x2',['packI3x10_1x2',['../a00298.html#ga06ecb6afb902dba45419008171db9023',1,'glm']]], - ['packing_2ehpp',['packing.hpp',['../a00120.html',1,'']]], - ['packint2x16',['packInt2x16',['../a00298.html#ga3644163cf3a47bf1d4af1f4b03013a7e',1,'glm']]], - ['packint2x32',['packInt2x32',['../a00298.html#gad1e4c8a9e67d86b61a6eec86703a827a',1,'glm']]], - ['packint2x8',['packInt2x8',['../a00298.html#ga8884b1f2292414f36d59ef3be5d62914',1,'glm']]], - ['packint4x16',['packInt4x16',['../a00298.html#ga1989f093a27ae69cf9207145be48b3d7',1,'glm']]], - ['packint4x8',['packInt4x8',['../a00298.html#gaf2238401d5ce2aaade1a44ba19709072',1,'glm']]], - ['packrgbm',['packRGBM',['../a00298.html#ga0466daf4c90f76cc64b3f105ce727295',1,'glm']]], - ['packsnorm',['packSnorm',['../a00298.html#gaa54b5855a750d6aeb12c1c902f5939b8',1,'glm']]], - ['packsnorm1x16',['packSnorm1x16',['../a00298.html#gab22f8bcfdb5fc65af4701b25f143c1af',1,'glm']]], - ['packsnorm1x8',['packSnorm1x8',['../a00298.html#gae3592e0795e62aaa1865b3a10496a7a1',1,'glm']]], - ['packsnorm2x16',['packSnorm2x16',['../a00372.html#ga977ab172da5494e5ac63e952afacfbe2',1,'glm']]], - ['packsnorm2x8',['packSnorm2x8',['../a00298.html#ga6be3cfb2cce3702f03e91bbeb5286d7e',1,'glm']]], - ['packsnorm3x10_5f1x2',['packSnorm3x10_1x2',['../a00298.html#gab997545661877d2c7362a5084d3897d3',1,'glm']]], - ['packsnorm4x16',['packSnorm4x16',['../a00298.html#ga358943934d21da947d5bcc88c2ab7832',1,'glm']]], - ['packsnorm4x8',['packSnorm4x8',['../a00372.html#ga85e8f17627516445026ab7a9c2e3531a',1,'glm']]], - ['packu3x10_5f1x2',['packU3x10_1x2',['../a00298.html#gada3d88d59f0f458f9c51a9fd359a4bc0',1,'glm']]], - ['packuint2x16',['packUint2x16',['../a00298.html#ga5eecc9e8cbaf51ac6cf57501e670ee19',1,'glm']]], - ['packuint2x32',['packUint2x32',['../a00298.html#gaa864081097b86e83d8e4a4d79c382b22',1,'glm']]], - ['packuint2x8',['packUint2x8',['../a00298.html#ga3c3c9fb53ae7823b10fa083909357590',1,'glm']]], - ['packuint4x16',['packUint4x16',['../a00298.html#ga2ceb62cca347d8ace42ee90317a3f1f9',1,'glm']]], - ['packuint4x8',['packUint4x8',['../a00298.html#gaa0fe2f09aeb403cd66c1a062f58861ab',1,'glm']]], - ['packunorm',['packUnorm',['../a00298.html#gaccd3f27e6ba5163eb7aa9bc8ff96251a',1,'glm']]], - ['packunorm1x16',['packUnorm1x16',['../a00298.html#ga9f82737bf2a44bedff1d286b76837886',1,'glm']]], - ['packunorm1x5_5f1x6_5f1x5',['packUnorm1x5_1x6_1x5',['../a00298.html#ga768e0337dd6246773f14aa0a421fe9a8',1,'glm']]], - ['packunorm1x8',['packUnorm1x8',['../a00298.html#ga4b2fa60df3460403817d28b082ee0736',1,'glm']]], - ['packunorm2x16',['packUnorm2x16',['../a00372.html#ga0e2d107039fe608a209497af867b85fb',1,'glm']]], - ['packunorm2x3_5f1x2',['packUnorm2x3_1x2',['../a00298.html#ga7f9abdb50f9be1aa1c14912504a0d98d',1,'glm']]], - ['packunorm2x4',['packUnorm2x4',['../a00298.html#gab6bbd5be3b8e6db538ecb33a7844481c',1,'glm']]], - ['packunorm2x8',['packUnorm2x8',['../a00298.html#ga9a666b1c688ab54100061ed06526de6e',1,'glm']]], - ['packunorm3x10_5f1x2',['packUnorm3x10_1x2',['../a00298.html#ga8a1ee625d2707c60530fb3fca2980b19',1,'glm']]], - ['packunorm3x5_5f1x1',['packUnorm3x5_1x1',['../a00298.html#gaec4112086d7fb133bea104a7c237de52',1,'glm']]], - ['packunorm4x16',['packUnorm4x16',['../a00298.html#ga1f63c264e7ab63264e2b2a99fd393897',1,'glm']]], - ['packunorm4x4',['packUnorm4x4',['../a00298.html#gad3e7e3ce521513584a53aedc5f9765c1',1,'glm']]], - ['packunorm4x8',['packUnorm4x8',['../a00372.html#gaf7d2f7341a9eeb4a436929d6f9ad08f2',1,'glm']]], - ['perlin',['perlin',['../a00297.html#ga1e043ce3b51510e9bc4469227cefc38a',1,'glm::perlin(vec< L, T, Q > const &p)'],['../a00297.html#gac270edc54c5fc52f5985a45f940bb103',1,'glm::perlin(vec< L, T, Q > const &p, vec< L, T, Q > const &rep)']]], - ['perp',['perp',['../a00349.html#ga264cfc4e180cf9b852e943b35089003c',1,'glm']]], - ['perpendicular_2ehpp',['perpendicular.hpp',['../a00121.html',1,'']]], - ['perspective',['perspective',['../a00243.html#ga747c8cf99458663dd7ad1bb3a2f07787',1,'glm']]], - ['perspectivefov',['perspectiveFov',['../a00243.html#gaebd02240fd36e85ad754f02ddd9a560d',1,'glm']]], - ['perspectivefovlh',['perspectiveFovLH',['../a00243.html#ga6aebe16c164bd8e52554cbe0304ef4aa',1,'glm']]], - ['perspectivefovlh_5fno',['perspectiveFovLH_NO',['../a00243.html#gad18a4495b77530317327e8d466488c1a',1,'glm']]], - ['perspectivefovlh_5fzo',['perspectiveFovLH_ZO',['../a00243.html#gabdd37014f529e25b2fa1b3ba06c10d5c',1,'glm']]], - ['perspectivefovno',['perspectiveFovNO',['../a00243.html#gaf30e7bd3b1387a6776433dd5383e6633',1,'glm']]], - ['perspectivefovrh',['perspectiveFovRH',['../a00243.html#gaf32bf563f28379c68554a44ee60c6a85',1,'glm']]], - ['perspectivefovrh_5fno',['perspectiveFovRH_NO',['../a00243.html#ga257b733ff883c9a065801023cf243eb2',1,'glm']]], - ['perspectivefovrh_5fzo',['perspectiveFovRH_ZO',['../a00243.html#ga7dcbb25331676f5b0795aced1a905c44',1,'glm']]], - ['perspectivefovzo',['perspectiveFovZO',['../a00243.html#ga4bc69fa1d1f95128430aa3d2a712390b',1,'glm']]], - ['perspectivelh',['perspectiveLH',['../a00243.html#ga9bd34951dc7022ac256fcb51d7f6fc2f',1,'glm']]], - ['perspectivelh_5fno',['perspectiveLH_NO',['../a00243.html#gaead4d049d1feab463b700b5641aa590e',1,'glm']]], - ['perspectivelh_5fzo',['perspectiveLH_ZO',['../a00243.html#gaca32af88c2719005c02817ad1142986c',1,'glm']]], - ['perspectiveno',['perspectiveNO',['../a00243.html#gaf497e6bca61e7c87088370b126a93758',1,'glm']]], - ['perspectiverh',['perspectiveRH',['../a00243.html#ga26b88757fbd90601b80768a7e1ad3aa1',1,'glm']]], - ['perspectiverh_5fno',['perspectiveRH_NO',['../a00243.html#gad1526cb2cbe796095284e8f34b01c582',1,'glm']]], - ['perspectiverh_5fzo',['perspectiveRH_ZO',['../a00243.html#ga4da358d6e1b8e5b9ae35d1f3f2dc3b9a',1,'glm']]], - ['perspectivezo',['perspectiveZO',['../a00243.html#gaa9dfba5c2322da54f72b1eb7c7c11b47',1,'glm']]], - ['pi',['pi',['../a00259.html#ga94bafeb2a0f23ab6450fed1f98ee4e45',1,'glm']]], - ['pickmatrix',['pickMatrix',['../a00245.html#gaf6b21eadb7ac2ecbbe258a9a233b4c82',1,'glm']]], - ['pitch',['pitch',['../a00299.html#ga7603e81477b46ddb448896909bc04928',1,'glm']]], - ['polar',['polar',['../a00350.html#gab83ac2c0e55b684b06b6c46c28b1590d',1,'glm']]], - ['polar_5fcoordinates_2ehpp',['polar_coordinates.hpp',['../a00122.html',1,'']]], - ['pow',['pow',['../a00242.html#ga2254981952d4f333b900a6bf5167a6c4',1,'glm::pow(vec< L, T, Q > const &base, vec< L, T, Q > const &exponent)'],['../a00256.html#ga4975ffcacd312a8c0bbd046a76c5607e',1,'glm::pow(qua< T, Q > const &q, T y)'],['../a00330.html#ga465016030a81d513fa2fac881ebdaa83',1,'glm::pow(int x, uint y)'],['../a00330.html#ga998e5ee915d3769255519e2fbaa2bbf0',1,'glm::pow(uint x, uint y)']]], - ['pow2',['pow2',['../a00347.html#ga19aaff3213bf23bdec3ef124ace237e9',1,'glm::gtx']]], - ['pow3',['pow3',['../a00347.html#ga35689d03cd434d6ea819f1942d3bf82e',1,'glm::gtx']]], - ['pow4',['pow4',['../a00347.html#gacef0968763026e180e53e735007dbf5a',1,'glm::gtx']]], - ['poweroftwoabove',['powerOfTwoAbove',['../a00309.html#ga8cda2459871f574a0aecbe702ac93291',1,'glm::powerOfTwoAbove(genIUType Value)'],['../a00309.html#ga2bbded187c5febfefc1e524ba31b3fab',1,'glm::powerOfTwoAbove(vec< L, T, Q > const &value)']]], - ['poweroftwobelow',['powerOfTwoBelow',['../a00309.html#ga3de7df63c589325101a2817a56f8e29d',1,'glm::powerOfTwoBelow(genIUType Value)'],['../a00309.html#gaf78ddcc4152c051b2a21e68fecb10980',1,'glm::powerOfTwoBelow(vec< L, T, Q > const &value)']]], - ['poweroftwonearest',['powerOfTwoNearest',['../a00309.html#ga5f65973a5d2ea38c719e6a663149ead9',1,'glm::powerOfTwoNearest(genIUType Value)'],['../a00309.html#gac87e65d11e16c3d6b91c3bcfaef7da0b',1,'glm::powerOfTwoNearest(vec< L, T, Q > const &value)']]], - ['prevmultiple',['prevMultiple',['../a00261.html#gada3bdd871ffe31f2d484aa668362f636',1,'glm::prevMultiple(genIUType v, genIUType Multiple)'],['../a00274.html#ga7b3915a7cd3d50ff4976ab7a75a6880a',1,'glm::prevMultiple(vec< L, T, Q > const &v, T Multiple)'],['../a00274.html#ga51e04379e8aebbf83e2e5ab094578ee9',1,'glm::prevMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], - ['prevpoweroftwo',['prevPowerOfTwo',['../a00261.html#gab21902a0e7e5a8451a7ad80333618727',1,'glm::prevPowerOfTwo(genIUType v)'],['../a00274.html#ga759db73f14d79f63612bd2398b577e7a',1,'glm::prevPowerOfTwo(vec< L, T, Q > const &v)']]], - ['proj',['proj',['../a00351.html#ga58384b7170801dd513de46f87c7fb00e',1,'glm']]], - ['proj2d',['proj2D',['../a00363.html#ga5b992a0cdc8298054edb68e228f0d93e',1,'glm']]], - ['proj3d',['proj3D',['../a00363.html#gaa2b7f4f15b98f697caede11bef50509e',1,'glm']]], - ['project',['project',['../a00245.html#gaf36e96033f456659e6705472a06b6e11',1,'glm']]], - ['projection_2ehpp',['projection.hpp',['../a00123.html',1,'']]], - ['projectno',['projectNO',['../a00245.html#ga05249751f48d14cb282e4979802b8111',1,'glm']]], - ['projectzo',['projectZO',['../a00245.html#ga77d157525063dec83a557186873ee080',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_e.html b/tests/OpenGL/package/glm/doc/api/search/all_e.html deleted file mode 100644 index 07d52599..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_e.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_e.js b/tests/OpenGL/package/glm/doc/api/search/all_e.js deleted file mode 100644 index 5c191852..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_e.js +++ /dev/null @@ -1,31 +0,0 @@ -var searchData= -[ - ['qr_5fdecompose',['qr_decompose',['../a00336.html#gac62d7bfc8dc661e616620d70552cd566',1,'glm']]], - ['quadraticeasein',['quadraticEaseIn',['../a00318.html#gaf42089d35855695132d217cd902304a0',1,'glm']]], - ['quadraticeaseinout',['quadraticEaseInOut',['../a00318.html#ga03e8fc2d7945a4e63ee33b2159c14cea',1,'glm']]], - ['quadraticeaseout',['quadraticEaseOut',['../a00318.html#ga283717bc2d937547ad34ec0472234ee3',1,'glm']]], - ['quarter_5fpi',['quarter_pi',['../a00290.html#ga3c9df42bd73c519a995c43f0f99e77e0',1,'glm']]], - ['quarticeasein',['quarticEaseIn',['../a00318.html#ga808b41f14514f47dad5dcc69eb924afd',1,'glm']]], - ['quarticeaseinout',['quarticEaseInOut',['../a00318.html#ga6d000f852de12b197e154f234b20c505',1,'glm']]], - ['quarticeaseout',['quarticEaseOut',['../a00318.html#ga4dfb33fa7664aa888eb647999d329b98',1,'glm']]], - ['quat',['quat',['../a00252.html#gab0b441adb4509bc58d2946c2239a8942',1,'glm']]], - ['quat_5fcast',['quat_cast',['../a00299.html#ga1108a4ab88ca87bac321454eea7702f8',1,'glm::quat_cast(mat< 3, 3, T, Q > const &x)'],['../a00299.html#ga4524810f07f72e8c7bdc7764fa11cb58',1,'glm::quat_cast(mat< 4, 4, T, Q > const &x)']]], - ['quat_5fidentity',['quat_identity',['../a00352.html#ga5ee8332600b2aca3a77622a28d857b55',1,'glm']]], - ['quaternion_5fcommon_2ehpp',['quaternion_common.hpp',['../a00127.html',1,'']]], - ['quaternion_5fdouble_2ehpp',['quaternion_double.hpp',['../a00128.html',1,'']]], - ['quaternion_5fdouble_5fprecision_2ehpp',['quaternion_double_precision.hpp',['../a00129.html',1,'']]], - ['quaternion_5fexponential_2ehpp',['quaternion_exponential.hpp',['../a00130.html',1,'']]], - ['quaternion_5ffloat_2ehpp',['quaternion_float.hpp',['../a00131.html',1,'']]], - ['quaternion_5ffloat_5fprecision_2ehpp',['quaternion_float_precision.hpp',['../a00132.html',1,'']]], - ['quaternion_5fgeometric_2ehpp',['quaternion_geometric.hpp',['../a00133.html',1,'']]], - ['quaternion_5frelational_2ehpp',['quaternion_relational.hpp',['../a00134.html',1,'']]], - ['quaternion_5ftransform_2ehpp',['quaternion_transform.hpp',['../a00135.html',1,'']]], - ['quaternion_5ftrigonometric_2ehpp',['quaternion_trigonometric.hpp',['../a00136.html',1,'']]], - ['quatlookat',['quatLookAt',['../a00299.html#gabe7fc5ec5feb41ab234d5d2b6254697f',1,'glm']]], - ['quatlookatlh',['quatLookAtLH',['../a00299.html#ga2da350c73411be3bb19441b226b81a74',1,'glm']]], - ['quatlookatrh',['quatLookAtRH',['../a00299.html#gaf6529ac8c04a57fcc35865b5c9437cc8',1,'glm']]], - ['quinticeasein',['quinticEaseIn',['../a00318.html#ga097579d8e087dcf48037588140a21640',1,'glm']]], - ['quinticeaseinout',['quinticEaseInOut',['../a00318.html#ga2a82d5c46df7e2d21cc0108eb7b83934',1,'glm']]], - ['quinticeaseout',['quinticEaseOut',['../a00318.html#ga7dbd4d5c8da3f5353121f615e7b591d7',1,'glm']]], - ['qword',['qword',['../a00354.html#ga4021754ffb8e5ef14c75802b15657714',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/all_f.html b/tests/OpenGL/package/glm/doc/api/search/all_f.html deleted file mode 100644 index 2213eb20..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_f.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/all_f.js b/tests/OpenGL/package/glm/doc/api/search/all_f.js deleted file mode 100644 index 5c57a49a..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/all_f.js +++ /dev/null @@ -1,43 +0,0 @@ -var searchData= -[ - ['recommended_20extensions',['Recommended extensions',['../a00286.html',1,'']]], - ['radialgradient',['radialGradient',['../a00327.html#gaaecb1e93de4cbe0758b882812d4da294',1,'glm']]], - ['radians',['radians',['../a00373.html#ga6e1db4862c5e25afd553930e2fdd6a68',1,'glm']]], - ['random_2ehpp',['random.hpp',['../a00137.html',1,'']]], - ['range_2ehpp',['range.hpp',['../a00138.html',1,'']]], - ['raw_5fdata_2ehpp',['raw_data.hpp',['../a00139.html',1,'']]], - ['reciprocal_2ehpp',['reciprocal.hpp',['../a00140.html',1,'']]], - ['reflect',['reflect',['../a00279.html#ga5631dd1d5618de5450b1ea3cf3e94905',1,'glm']]], - ['refract',['refract',['../a00279.html#ga01da3dff9e2ef6b9d4915c3047e22b74',1,'glm']]], - ['repeat',['repeat',['../a00369.html#ga809650c6310ea7c42666e918c117fb6f',1,'glm']]], - ['rgb2ycocg',['rgb2YCoCg',['../a00313.html#ga0606353ec2a9b9eaa84f1b02ec391bc5',1,'glm']]], - ['rgb2ycocgr',['rgb2YCoCgR',['../a00313.html#ga0389772e44ca0fd2ba4a79bdd8efe898',1,'glm']]], - ['rgbcolor',['rgbColor',['../a00312.html#ga5f9193be46f45f0655c05a0cdca006db',1,'glm']]], - ['righthanded',['rightHanded',['../a00328.html#ga99386a5ab5491871b947076e21699cc8',1,'glm']]], - ['roll',['roll',['../a00299.html#ga0cc5ad970d0b00829b139fe0fe5a1e13',1,'glm']]], - ['root_5ffive',['root_five',['../a00290.html#gae9ebbded75b53d4faeb1e4ef8b3347a2',1,'glm']]], - ['root_5fhalf_5fpi',['root_half_pi',['../a00290.html#ga4e276cb823cc5e612d4f89ed99c75039',1,'glm']]], - ['root_5fln_5ffour',['root_ln_four',['../a00290.html#ga4129412e96b33707a77c1a07652e23e2',1,'glm']]], - ['root_5fpi',['root_pi',['../a00290.html#ga261380796b2cd496f68d2cf1d08b8eb9',1,'glm']]], - ['root_5fthree',['root_three',['../a00290.html#ga4f286be4abe88be1eed7d2a9f6cb193e',1,'glm']]], - ['root_5ftwo',['root_two',['../a00290.html#ga74e607d29020f100c0d0dc46ce2ca950',1,'glm']]], - ['root_5ftwo_5fpi',['root_two_pi',['../a00290.html#ga2bcedc575039fe0cd765742f8bbb0bd3',1,'glm']]], - ['rotate',['rotate',['../a00247.html#gaee9e865eaa9776370996da2940873fd4',1,'glm::rotate(mat< 4, 4, T, Q > const &m, T angle, vec< 3, T, Q > const &axis)'],['../a00256.html#gabfc57de6d4d2e11970f54119c5ccf0f5',1,'glm::rotate(qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)'],['../a00341.html#gad5c84a4932a758f385a87098ce1b1660',1,'glm::rotate(mat< 3, 3, T, Q > const &m, T angle)'],['../a00352.html#ga07da6ef58646442efe93b0c273d73776',1,'glm::rotate(qua< T, Q > const &q, vec< 3, T, Q > const &v)'],['../a00352.html#gafcb78dfff45fbf19a7fcb2bd03fbf196',1,'glm::rotate(qua< T, Q > const &q, vec< 4, T, Q > const &v)'],['../a00356.html#gab64a67b52ff4f86c3ba16595a5a25af6',1,'glm::rotate(vec< 2, T, Q > const &v, T const &angle)'],['../a00356.html#ga1ba501ef83d1a009a17ac774cc560f21',1,'glm::rotate(vec< 3, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)'],['../a00356.html#ga1005f1267ed9c57faa3f24cf6873b961',1,'glm::rotate(vec< 4, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)'],['../a00362.html#gaf599be4c0e9d99be1f9cddba79b6018b',1,'glm::rotate(T angle, vec< 3, T, Q > const &v)']]], - ['rotate_5fnormalized_5faxis_2ehpp',['rotate_normalized_axis.hpp',['../a00141.html',1,'']]], - ['rotate_5fvector_2ehpp',['rotate_vector.hpp',['../a00142.html',1,'']]], - ['rotatenormalizedaxis',['rotateNormalizedAxis',['../a00355.html#ga50efd7ebca0f7a603bb3cc11e34c708d',1,'glm::rotateNormalizedAxis(mat< 4, 4, T, Q > const &m, T const &angle, vec< 3, T, Q > const &axis)'],['../a00355.html#ga08f9c5411437d528019a25bfc01473d1',1,'glm::rotateNormalizedAxis(qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)']]], - ['rotatex',['rotateX',['../a00356.html#ga059fdbdba4cca35cdff172a9d0d0afc9',1,'glm::rotateX(vec< 3, T, Q > const &v, T const &angle)'],['../a00356.html#ga4333b1ea8ebf1bd52bc3801a7617398a',1,'glm::rotateX(vec< 4, T, Q > const &v, T const &angle)']]], - ['rotatey',['rotateY',['../a00356.html#gaebdc8b054ace27d9f62e054531c6f44d',1,'glm::rotateY(vec< 3, T, Q > const &v, T const &angle)'],['../a00356.html#ga3ce3db0867b7f8efd878ee34f95a623b',1,'glm::rotateY(vec< 4, T, Q > const &v, T const &angle)']]], - ['rotatez',['rotateZ',['../a00356.html#ga5a048838a03f6249acbacb4dbacf79c4',1,'glm::rotateZ(vec< 3, T, Q > const &v, T const &angle)'],['../a00356.html#ga923b75c6448161053768822d880702e6',1,'glm::rotateZ(vec< 4, T, Q > const &v, T const &angle)']]], - ['rotation',['rotation',['../a00352.html#ga03e61282831cc3f52cc76f72f52ad2c5',1,'glm']]], - ['round',['round',['../a00241.html#gafa03aca8c4713e1cc892aa92ca135a7e',1,'glm']]], - ['round_2ehpp',['round.hpp',['../a00143.html',1,'']]], - ['roundeven',['roundEven',['../a00241.html#ga76b81785045a057989a84d99aeeb1578',1,'glm']]], - ['roundmultiple',['roundMultiple',['../a00302.html#gab892defcc9c0b0618df7251253dc0fbb',1,'glm::roundMultiple(genType v, genType Multiple)'],['../a00302.html#ga2f1a68332d761804c054460a612e3a4b',1,'glm::roundMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], - ['roundpoweroftwo',['roundPowerOfTwo',['../a00302.html#gae4e1bf5d1cd179f59261a7342bdcafca',1,'glm::roundPowerOfTwo(genIUType v)'],['../a00302.html#ga258802a7d55c03c918f28cf4d241c4d0',1,'glm::roundPowerOfTwo(vec< L, T, Q > const &v)']]], - ['row',['row',['../a00293.html#ga259e5ebd0f31ec3f83440f8cae7f5dba',1,'glm::row(genType const &m, length_t index)'],['../a00293.html#gaadcc64829aadf4103477679e48c7594f',1,'glm::row(genType const &m, length_t index, typename genType::row_type const &x)']]], - ['rowmajor2',['rowMajor2',['../a00338.html#gaf5b1aee9e3eb1acf9d6c3c8be1e73bb8',1,'glm::rowMajor2(vec< 2, T, Q > const &v1, vec< 2, T, Q > const &v2)'],['../a00338.html#gaf66c75ed69ca9e87462550708c2c6726',1,'glm::rowMajor2(mat< 2, 2, T, Q > const &m)']]], - ['rowmajor3',['rowMajor3',['../a00338.html#ga2ae46497493339f745754e40f438442e',1,'glm::rowMajor3(vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)'],['../a00338.html#gad8a3a50ab47bbe8d36cdb81d90dfcf77',1,'glm::rowMajor3(mat< 3, 3, T, Q > const &m)']]], - ['rowmajor4',['rowMajor4',['../a00338.html#ga9636cd6bbe2c32a8d0c03ffb8b1ef284',1,'glm::rowMajor4(vec< 4, T, Q > const &v1, vec< 4, T, Q > const &v2, vec< 4, T, Q > const &v3, vec< 4, T, Q > const &v4)'],['../a00338.html#gac92ad1c2acdf18d3eb7be45a32f9566b',1,'glm::rowMajor4(mat< 4, 4, T, Q > const &m)']]], - ['rq_5fdecompose',['rq_decompose',['../a00336.html#ga82874e2ebe891ba35ac21d9993873758',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/close.png b/tests/OpenGL/package/glm/doc/api/search/close.png deleted file mode 100644 index 9342d3df..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/search/close.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/search/files_0.html b/tests/OpenGL/package/glm/doc/api/search/files_0.html deleted file mode 100644 index a2ec540b..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_0.js b/tests/OpenGL/package/glm/doc/api/search/files_0.js deleted file mode 100644 index 982f2481..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['associated_5fmin_5fmax_2ehpp',['associated_min_max.hpp',['../a00007.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_1.html b/tests/OpenGL/package/glm/doc/api/search/files_1.html deleted file mode 100644 index 9e974daa..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_1.js b/tests/OpenGL/package/glm/doc/api/search/files_1.js deleted file mode 100644 index dbaf5217..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['bit_2ehpp',['bit.hpp',['../a00008.html',1,'']]], - ['bitfield_2ehpp',['bitfield.hpp',['../a00009.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_10.html b/tests/OpenGL/package/glm/doc/api/search/files_10.html deleted file mode 100644 index 940ba517..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_10.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_10.js b/tests/OpenGL/package/glm/doc/api/search/files_10.js deleted file mode 100644 index 483e4e9c..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_10.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['scalar_5fcommon_2ehpp',['scalar_common.hpp',['../a00144.html',1,'']]], - ['scalar_5fconstants_2ehpp',['scalar_constants.hpp',['../a00145.html',1,'']]], - ['scalar_5fint_5fsized_2ehpp',['scalar_int_sized.hpp',['../a00146.html',1,'']]], - ['scalar_5finteger_2ehpp',['scalar_integer.hpp',['../a00147.html',1,'']]], - ['scalar_5fmultiplication_2ehpp',['scalar_multiplication.hpp',['../a00148.html',1,'']]], - ['scalar_5fuint_5fsized_2ehpp',['scalar_uint_sized.hpp',['../a00151.html',1,'']]], - ['scalar_5fulp_2ehpp',['scalar_ulp.hpp',['../a00152.html',1,'']]], - ['spline_2ehpp',['spline.hpp',['../a00154.html',1,'']]], - ['std_5fbased_5ftype_2ehpp',['std_based_type.hpp',['../a00155.html',1,'']]], - ['string_5fcast_2ehpp',['string_cast.hpp',['../a00156.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_11.html b/tests/OpenGL/package/glm/doc/api/search/files_11.html deleted file mode 100644 index f00dc5e1..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_11.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_11.js b/tests/OpenGL/package/glm/doc/api/search/files_11.js deleted file mode 100644 index ca073366..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_11.js +++ /dev/null @@ -1,24 +0,0 @@ -var searchData= -[ - ['texture_2ehpp',['texture.hpp',['../a00157.html',1,'']]], - ['transform_2ehpp',['transform.hpp',['../a00158.html',1,'']]], - ['transform2_2ehpp',['transform2.hpp',['../a00159.html',1,'']]], - ['trigonometric_2ehpp',['trigonometric.hpp',['../a00160.html',1,'']]], - ['type_5fmat2x2_2ehpp',['type_mat2x2.hpp',['../a00165.html',1,'']]], - ['type_5fmat2x3_2ehpp',['type_mat2x3.hpp',['../a00166.html',1,'']]], - ['type_5fmat2x4_2ehpp',['type_mat2x4.hpp',['../a00167.html',1,'']]], - ['type_5fmat3x2_2ehpp',['type_mat3x2.hpp',['../a00168.html',1,'']]], - ['type_5fmat3x3_2ehpp',['type_mat3x3.hpp',['../a00169.html',1,'']]], - ['type_5fmat3x4_2ehpp',['type_mat3x4.hpp',['../a00170.html',1,'']]], - ['type_5fmat4x2_2ehpp',['type_mat4x2.hpp',['../a00171.html',1,'']]], - ['type_5fmat4x3_2ehpp',['type_mat4x3.hpp',['../a00172.html',1,'']]], - ['type_5fmat4x4_2ehpp',['type_mat4x4.hpp',['../a00173.html',1,'']]], - ['type_5fprecision_2ehpp',['type_precision.hpp',['../a00174.html',1,'']]], - ['type_5fptr_2ehpp',['type_ptr.hpp',['../a00175.html',1,'']]], - ['type_5fquat_2ehpp',['type_quat.hpp',['../a00176.html',1,'']]], - ['type_5ftrait_2ehpp',['type_trait.hpp',['../a00177.html',1,'']]], - ['type_5fvec1_2ehpp',['type_vec1.hpp',['../a00178.html',1,'']]], - ['type_5fvec2_2ehpp',['type_vec2.hpp',['../a00179.html',1,'']]], - ['type_5fvec3_2ehpp',['type_vec3.hpp',['../a00180.html',1,'']]], - ['type_5fvec4_2ehpp',['type_vec4.hpp',['../a00181.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_12.html b/tests/OpenGL/package/glm/doc/api/search/files_12.html deleted file mode 100644 index 7f023c91..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_12.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_12.js b/tests/OpenGL/package/glm/doc/api/search/files_12.js deleted file mode 100644 index b5cd4a3b..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_12.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['ulp_2ehpp',['ulp.hpp',['../a00182.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_13.html b/tests/OpenGL/package/glm/doc/api/search/files_13.html deleted file mode 100644 index dc6bd8a9..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_13.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_13.js b/tests/OpenGL/package/glm/doc/api/search/files_13.js deleted file mode 100644 index ffefcf3c..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_13.js +++ /dev/null @@ -1,54 +0,0 @@ -var searchData= -[ - ['vec1_2ehpp',['vec1.hpp',['../a00183.html',1,'']]], - ['vec2_2ehpp',['vec2.hpp',['../a00184.html',1,'']]], - ['vec3_2ehpp',['vec3.hpp',['../a00185.html',1,'']]], - ['vec4_2ehpp',['vec4.hpp',['../a00186.html',1,'']]], - ['vec_5fswizzle_2ehpp',['vec_swizzle.hpp',['../a00187.html',1,'']]], - ['vector_5fangle_2ehpp',['vector_angle.hpp',['../a00188.html',1,'']]], - ['vector_5fbool1_2ehpp',['vector_bool1.hpp',['../a00189.html',1,'']]], - ['vector_5fbool1_5fprecision_2ehpp',['vector_bool1_precision.hpp',['../a00190.html',1,'']]], - ['vector_5fbool2_2ehpp',['vector_bool2.hpp',['../a00191.html',1,'']]], - ['vector_5fbool2_5fprecision_2ehpp',['vector_bool2_precision.hpp',['../a00192.html',1,'']]], - ['vector_5fbool3_2ehpp',['vector_bool3.hpp',['../a00193.html',1,'']]], - ['vector_5fbool3_5fprecision_2ehpp',['vector_bool3_precision.hpp',['../a00194.html',1,'']]], - ['vector_5fbool4_2ehpp',['vector_bool4.hpp',['../a00195.html',1,'']]], - ['vector_5fbool4_5fprecision_2ehpp',['vector_bool4_precision.hpp',['../a00196.html',1,'']]], - ['vector_5fcommon_2ehpp',['vector_common.hpp',['../a00197.html',1,'']]], - ['vector_5fdouble1_2ehpp',['vector_double1.hpp',['../a00198.html',1,'']]], - ['vector_5fdouble1_5fprecision_2ehpp',['vector_double1_precision.hpp',['../a00199.html',1,'']]], - ['vector_5fdouble2_2ehpp',['vector_double2.hpp',['../a00200.html',1,'']]], - ['vector_5fdouble2_5fprecision_2ehpp',['vector_double2_precision.hpp',['../a00201.html',1,'']]], - ['vector_5fdouble3_2ehpp',['vector_double3.hpp',['../a00202.html',1,'']]], - ['vector_5fdouble3_5fprecision_2ehpp',['vector_double3_precision.hpp',['../a00203.html',1,'']]], - ['vector_5fdouble4_2ehpp',['vector_double4.hpp',['../a00204.html',1,'']]], - ['vector_5fdouble4_5fprecision_2ehpp',['vector_double4_precision.hpp',['../a00205.html',1,'']]], - ['vector_5ffloat1_2ehpp',['vector_float1.hpp',['../a00206.html',1,'']]], - ['vector_5ffloat1_5fprecision_2ehpp',['vector_float1_precision.hpp',['../a00207.html',1,'']]], - ['vector_5ffloat2_2ehpp',['vector_float2.hpp',['../a00208.html',1,'']]], - ['vector_5ffloat2_5fprecision_2ehpp',['vector_float2_precision.hpp',['../a00209.html',1,'']]], - ['vector_5ffloat3_2ehpp',['vector_float3.hpp',['../a00210.html',1,'']]], - ['vector_5ffloat3_5fprecision_2ehpp',['vector_float3_precision.hpp',['../a00211.html',1,'']]], - ['vector_5ffloat4_2ehpp',['vector_float4.hpp',['../a00212.html',1,'']]], - ['vector_5ffloat4_5fprecision_2ehpp',['vector_float4_precision.hpp',['../a00213.html',1,'']]], - ['vector_5fint1_2ehpp',['vector_int1.hpp',['../a00214.html',1,'']]], - ['vector_5fint1_5fprecision_2ehpp',['vector_int1_precision.hpp',['../a00215.html',1,'']]], - ['vector_5fint2_2ehpp',['vector_int2.hpp',['../a00216.html',1,'']]], - ['vector_5fint2_5fprecision_2ehpp',['vector_int2_precision.hpp',['../a00217.html',1,'']]], - ['vector_5fint3_2ehpp',['vector_int3.hpp',['../a00218.html',1,'']]], - ['vector_5fint3_5fprecision_2ehpp',['vector_int3_precision.hpp',['../a00219.html',1,'']]], - ['vector_5fint4_2ehpp',['vector_int4.hpp',['../a00220.html',1,'']]], - ['vector_5fint4_5fprecision_2ehpp',['vector_int4_precision.hpp',['../a00221.html',1,'']]], - ['vector_5finteger_2ehpp',['vector_integer.hpp',['../a00222.html',1,'']]], - ['vector_5fquery_2ehpp',['vector_query.hpp',['../a00223.html',1,'']]], - ['vector_5frelational_2ehpp',['vector_relational.hpp',['../a00225.html',1,'']]], - ['vector_5fuint1_2ehpp',['vector_uint1.hpp',['../a00226.html',1,'']]], - ['vector_5fuint1_5fprecision_2ehpp',['vector_uint1_precision.hpp',['../a00227.html',1,'']]], - ['vector_5fuint2_2ehpp',['vector_uint2.hpp',['../a00228.html',1,'']]], - ['vector_5fuint2_5fprecision_2ehpp',['vector_uint2_precision.hpp',['../a00229.html',1,'']]], - ['vector_5fuint3_2ehpp',['vector_uint3.hpp',['../a00230.html',1,'']]], - ['vector_5fuint3_5fprecision_2ehpp',['vector_uint3_precision.hpp',['../a00231.html',1,'']]], - ['vector_5fuint4_2ehpp',['vector_uint4.hpp',['../a00232.html',1,'']]], - ['vector_5fuint4_5fprecision_2ehpp',['vector_uint4_precision.hpp',['../a00233.html',1,'']]], - ['vector_5fulp_2ehpp',['vector_ulp.hpp',['../a00234.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_14.html b/tests/OpenGL/package/glm/doc/api/search/files_14.html deleted file mode 100644 index 6f6f1a2e..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_14.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_14.js b/tests/OpenGL/package/glm/doc/api/search/files_14.js deleted file mode 100644 index 459eecd8..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_14.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['wrap_2ehpp',['wrap.hpp',['../a00235.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_2.html b/tests/OpenGL/package/glm/doc/api/search/files_2.html deleted file mode 100644 index 04348f90..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_2.js b/tests/OpenGL/package/glm/doc/api/search/files_2.js deleted file mode 100644 index 67e6bfee..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_2.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['closest_5fpoint_2ehpp',['closest_point.hpp',['../a00010.html',1,'']]], - ['color_5fencoding_2ehpp',['color_encoding.hpp',['../a00011.html',1,'']]], - ['color_5fspace_5fycocg_2ehpp',['color_space_YCoCg.hpp',['../a00014.html',1,'']]], - ['common_2ehpp',['common.hpp',['../a00015.html',1,'']]], - ['compatibility_2ehpp',['compatibility.hpp',['../a00017.html',1,'']]], - ['component_5fwise_2ehpp',['component_wise.hpp',['../a00018.html',1,'']]], - ['constants_2ehpp',['constants.hpp',['../a00021.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_3.html b/tests/OpenGL/package/glm/doc/api/search/files_3.html deleted file mode 100644 index 77942003..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_3.js b/tests/OpenGL/package/glm/doc/api/search/files_3.js deleted file mode 100644 index 86a16b80..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['dual_5fquaternion_2ehpp',['dual_quaternion.hpp',['../a00022.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_4.html b/tests/OpenGL/package/glm/doc/api/search/files_4.html deleted file mode 100644 index e6bc2852..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_4.js b/tests/OpenGL/package/glm/doc/api/search/files_4.js deleted file mode 100644 index ac40ef7d..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_4.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['easing_2ehpp',['easing.hpp',['../a00023.html',1,'']]], - ['epsilon_2ehpp',['epsilon.hpp',['../a00024.html',1,'']]], - ['euler_5fangles_2ehpp',['euler_angles.hpp',['../a00025.html',1,'']]], - ['exponential_2ehpp',['exponential.hpp',['../a00026.html',1,'']]], - ['ext_2ehpp',['ext.hpp',['../a00027.html',1,'']]], - ['extend_2ehpp',['extend.hpp',['../a00028.html',1,'']]], - ['extended_5fmin_5fmax_2ehpp',['extended_min_max.hpp',['../a00029.html',1,'']]], - ['exterior_5fproduct_2ehpp',['exterior_product.hpp',['../a00030.html',1,'']]], - ['matrix_5ftransform_2ehpp',['matrix_transform.hpp',['../a00108.html',1,'']]], - ['scalar_5frelational_2ehpp',['scalar_relational.hpp',['../a00149.html',1,'']]], - ['vector_5frelational_2ehpp',['vector_relational.hpp',['../a00224.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_5.html b/tests/OpenGL/package/glm/doc/api/search/files_5.html deleted file mode 100644 index 5ab2ed6a..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_5.js b/tests/OpenGL/package/glm/doc/api/search/files_5.js deleted file mode 100644 index 828375ff..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_5.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['fast_5fexponential_2ehpp',['fast_exponential.hpp',['../a00031.html',1,'']]], - ['fast_5fsquare_5froot_2ehpp',['fast_square_root.hpp',['../a00032.html',1,'']]], - ['fast_5ftrigonometry_2ehpp',['fast_trigonometry.hpp',['../a00033.html',1,'']]], - ['functions_2ehpp',['functions.hpp',['../a00034.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_6.html b/tests/OpenGL/package/glm/doc/api/search/files_6.html deleted file mode 100644 index 9453495a..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_6.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_6.js b/tests/OpenGL/package/glm/doc/api/search/files_6.js deleted file mode 100644 index 4221be56..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_6.js +++ /dev/null @@ -1,18 +0,0 @@ -var searchData= -[ - ['color_5fspace_2ehpp',['color_space.hpp',['../a00012.html',1,'']]], - ['color_5fspace_2ehpp',['color_space.hpp',['../a00013.html',1,'']]], - ['common_2ehpp',['common.hpp',['../a00016.html',1,'']]], - ['geometric_2ehpp',['geometric.hpp',['../a00036.html',1,'']]], - ['glm_2ehpp',['glm.hpp',['../a00037.html',1,'']]], - ['gradient_5fpaint_2ehpp',['gradient_paint.hpp',['../a00038.html',1,'']]], - ['integer_2ehpp',['integer.hpp',['../a00042.html',1,'']]], - ['integer_2ehpp',['integer.hpp',['../a00041.html',1,'']]], - ['matrix_5ftransform_2ehpp',['matrix_transform.hpp',['../a00109.html',1,'']]], - ['packing_2ehpp',['packing.hpp',['../a00119.html',1,'']]], - ['quaternion_2ehpp',['quaternion.hpp',['../a00125.html',1,'']]], - ['quaternion_2ehpp',['quaternion.hpp',['../a00126.html',1,'']]], - ['scalar_5frelational_2ehpp',['scalar_relational.hpp',['../a00150.html',1,'']]], - ['type_5faligned_2ehpp',['type_aligned.hpp',['../a00162.html',1,'']]], - ['type_5faligned_2ehpp',['type_aligned.hpp',['../a00161.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_7.html b/tests/OpenGL/package/glm/doc/api/search/files_7.html deleted file mode 100644 index d3f65339..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_7.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_7.js b/tests/OpenGL/package/glm/doc/api/search/files_7.js deleted file mode 100644 index 4f23c6e5..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['handed_5fcoordinate_5fspace_2ehpp',['handed_coordinate_space.hpp',['../a00039.html',1,'']]], - ['hash_2ehpp',['hash.hpp',['../a00040.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_8.html b/tests/OpenGL/package/glm/doc/api/search/files_8.html deleted file mode 100644 index ec56765f..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_8.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_8.js b/tests/OpenGL/package/glm/doc/api/search/files_8.js deleted file mode 100644 index f3efa1d6..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_8.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['integer_2ehpp',['integer.hpp',['../a00043.html',1,'']]], - ['intersect_2ehpp',['intersect.hpp',['../a00044.html',1,'']]], - ['io_2ehpp',['io.hpp',['../a00045.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_9.html b/tests/OpenGL/package/glm/doc/api/search/files_9.html deleted file mode 100644 index 62a6c97a..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_9.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_9.js b/tests/OpenGL/package/glm/doc/api/search/files_9.js deleted file mode 100644 index 70f58791..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['log_5fbase_2ehpp',['log_base.hpp',['../a00046.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_a.html b/tests/OpenGL/package/glm/doc/api/search/files_a.html deleted file mode 100644 index d0b6fa89..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_a.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_a.js b/tests/OpenGL/package/glm/doc/api/search/files_a.js deleted file mode 100644 index e7ae0a31..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_a.js +++ /dev/null @@ -1,64 +0,0 @@ -var searchData= -[ - ['mat2x2_2ehpp',['mat2x2.hpp',['../a00048.html',1,'']]], - ['mat2x3_2ehpp',['mat2x3.hpp',['../a00049.html',1,'']]], - ['mat2x4_2ehpp',['mat2x4.hpp',['../a00050.html',1,'']]], - ['mat3x2_2ehpp',['mat3x2.hpp',['../a00051.html',1,'']]], - ['mat3x3_2ehpp',['mat3x3.hpp',['../a00052.html',1,'']]], - ['mat3x4_2ehpp',['mat3x4.hpp',['../a00053.html',1,'']]], - ['mat4x2_2ehpp',['mat4x2.hpp',['../a00054.html',1,'']]], - ['mat4x3_2ehpp',['mat4x3.hpp',['../a00055.html',1,'']]], - ['mat4x4_2ehpp',['mat4x4.hpp',['../a00056.html',1,'']]], - ['matrix_2ehpp',['matrix.hpp',['../a00057.html',1,'']]], - ['matrix_5faccess_2ehpp',['matrix_access.hpp',['../a00058.html',1,'']]], - ['matrix_5fclip_5fspace_2ehpp',['matrix_clip_space.hpp',['../a00059.html',1,'']]], - ['matrix_5fcommon_2ehpp',['matrix_common.hpp',['../a00060.html',1,'']]], - ['matrix_5fcross_5fproduct_2ehpp',['matrix_cross_product.hpp',['../a00061.html',1,'']]], - ['matrix_5fdecompose_2ehpp',['matrix_decompose.hpp',['../a00062.html',1,'']]], - ['matrix_5fdouble2x2_2ehpp',['matrix_double2x2.hpp',['../a00063.html',1,'']]], - ['matrix_5fdouble2x2_5fprecision_2ehpp',['matrix_double2x2_precision.hpp',['../a00064.html',1,'']]], - ['matrix_5fdouble2x3_2ehpp',['matrix_double2x3.hpp',['../a00065.html',1,'']]], - ['matrix_5fdouble2x3_5fprecision_2ehpp',['matrix_double2x3_precision.hpp',['../a00066.html',1,'']]], - ['matrix_5fdouble2x4_2ehpp',['matrix_double2x4.hpp',['../a00067.html',1,'']]], - ['matrix_5fdouble2x4_5fprecision_2ehpp',['matrix_double2x4_precision.hpp',['../a00068.html',1,'']]], - ['matrix_5fdouble3x2_2ehpp',['matrix_double3x2.hpp',['../a00069.html',1,'']]], - ['matrix_5fdouble3x2_5fprecision_2ehpp',['matrix_double3x2_precision.hpp',['../a00070.html',1,'']]], - ['matrix_5fdouble3x3_2ehpp',['matrix_double3x3.hpp',['../a00071.html',1,'']]], - ['matrix_5fdouble3x3_5fprecision_2ehpp',['matrix_double3x3_precision.hpp',['../a00072.html',1,'']]], - ['matrix_5fdouble3x4_2ehpp',['matrix_double3x4.hpp',['../a00073.html',1,'']]], - ['matrix_5fdouble3x4_5fprecision_2ehpp',['matrix_double3x4_precision.hpp',['../a00074.html',1,'']]], - ['matrix_5fdouble4x2_2ehpp',['matrix_double4x2.hpp',['../a00075.html',1,'']]], - ['matrix_5fdouble4x2_5fprecision_2ehpp',['matrix_double4x2_precision.hpp',['../a00076.html',1,'']]], - ['matrix_5fdouble4x3_2ehpp',['matrix_double4x3.hpp',['../a00077.html',1,'']]], - ['matrix_5fdouble4x3_5fprecision_2ehpp',['matrix_double4x3_precision.hpp',['../a00078.html',1,'']]], - ['matrix_5fdouble4x4_2ehpp',['matrix_double4x4.hpp',['../a00079.html',1,'']]], - ['matrix_5fdouble4x4_5fprecision_2ehpp',['matrix_double4x4_precision.hpp',['../a00080.html',1,'']]], - ['matrix_5ffactorisation_2ehpp',['matrix_factorisation.hpp',['../a00081.html',1,'']]], - ['matrix_5ffloat2x2_2ehpp',['matrix_float2x2.hpp',['../a00082.html',1,'']]], - ['matrix_5ffloat2x2_5fprecision_2ehpp',['matrix_float2x2_precision.hpp',['../a00083.html',1,'']]], - ['matrix_5ffloat2x3_2ehpp',['matrix_float2x3.hpp',['../a00084.html',1,'']]], - ['matrix_5ffloat2x3_5fprecision_2ehpp',['matrix_float2x3_precision.hpp',['../a00085.html',1,'']]], - ['matrix_5ffloat2x4_2ehpp',['matrix_float2x4.hpp',['../a00086.html',1,'']]], - ['matrix_5ffloat2x4_5fprecision_2ehpp',['matrix_float2x4_precision.hpp',['../a00087.html',1,'']]], - ['matrix_5ffloat3x2_2ehpp',['matrix_float3x2.hpp',['../a00088.html',1,'']]], - ['matrix_5ffloat3x2_5fprecision_2ehpp',['matrix_float3x2_precision.hpp',['../a00089.html',1,'']]], - ['matrix_5ffloat3x3_2ehpp',['matrix_float3x3.hpp',['../a00090.html',1,'']]], - ['matrix_5ffloat3x3_5fprecision_2ehpp',['matrix_float3x3_precision.hpp',['../a00091.html',1,'']]], - ['matrix_5ffloat3x4_2ehpp',['matrix_float3x4.hpp',['../a00092.html',1,'']]], - ['matrix_5ffloat3x4_5fprecision_2ehpp',['matrix_float3x4_precision.hpp',['../a00093.html',1,'']]], - ['matrix_5ffloat4x2_2ehpp',['matrix_float4x2.hpp',['../a00094.html',1,'']]], - ['matrix_5ffloat4x3_2ehpp',['matrix_float4x3.hpp',['../a00096.html',1,'']]], - ['matrix_5ffloat4x3_5fprecision_2ehpp',['matrix_float4x3_precision.hpp',['../a00097.html',1,'']]], - ['matrix_5ffloat4x4_2ehpp',['matrix_float4x4.hpp',['../a00098.html',1,'']]], - ['matrix_5ffloat4x4_5fprecision_2ehpp',['matrix_float4x4_precision.hpp',['../a00099.html',1,'']]], - ['matrix_5finteger_2ehpp',['matrix_integer.hpp',['../a00100.html',1,'']]], - ['matrix_5finterpolation_2ehpp',['matrix_interpolation.hpp',['../a00101.html',1,'']]], - ['matrix_5finverse_2ehpp',['matrix_inverse.hpp',['../a00102.html',1,'']]], - ['matrix_5fmajor_5fstorage_2ehpp',['matrix_major_storage.hpp',['../a00103.html',1,'']]], - ['matrix_5foperation_2ehpp',['matrix_operation.hpp',['../a00104.html',1,'']]], - ['matrix_5fprojection_2ehpp',['matrix_projection.hpp',['../a00105.html',1,'']]], - ['matrix_5fquery_2ehpp',['matrix_query.hpp',['../a00106.html',1,'']]], - ['matrix_5frelational_2ehpp',['matrix_relational.hpp',['../a00107.html',1,'']]], - ['matrix_5ftransform_5f2d_2ehpp',['matrix_transform_2d.hpp',['../a00110.html',1,'']]], - ['mixed_5fproduct_2ehpp',['mixed_product.hpp',['../a00111.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_b.html b/tests/OpenGL/package/glm/doc/api/search/files_b.html deleted file mode 100644 index 5d4f0231..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_b.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_b.js b/tests/OpenGL/package/glm/doc/api/search/files_b.js deleted file mode 100644 index 0ac9ed3f..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_b.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['noise_2ehpp',['noise.hpp',['../a00112.html',1,'']]], - ['norm_2ehpp',['norm.hpp',['../a00113.html',1,'']]], - ['normal_2ehpp',['normal.hpp',['../a00114.html',1,'']]], - ['normalize_5fdot_2ehpp',['normalize_dot.hpp',['../a00115.html',1,'']]], - ['number_5fprecision_2ehpp',['number_precision.hpp',['../a00116.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_c.html b/tests/OpenGL/package/glm/doc/api/search/files_c.html deleted file mode 100644 index 888d5dfd..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_c.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_c.js b/tests/OpenGL/package/glm/doc/api/search/files_c.js deleted file mode 100644 index 9f04be85..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_c.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['optimum_5fpow_2ehpp',['optimum_pow.hpp',['../a00117.html',1,'']]], - ['orthonormalize_2ehpp',['orthonormalize.hpp',['../a00118.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_d.html b/tests/OpenGL/package/glm/doc/api/search/files_d.html deleted file mode 100644 index b4496e5a..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_d.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_d.js b/tests/OpenGL/package/glm/doc/api/search/files_d.js deleted file mode 100644 index 128bcb4b..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_d.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['packing_2ehpp',['packing.hpp',['../a00120.html',1,'']]], - ['perpendicular_2ehpp',['perpendicular.hpp',['../a00121.html',1,'']]], - ['polar_5fcoordinates_2ehpp',['polar_coordinates.hpp',['../a00122.html',1,'']]], - ['projection_2ehpp',['projection.hpp',['../a00123.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_e.html b/tests/OpenGL/package/glm/doc/api/search/files_e.html deleted file mode 100644 index 52be6aaa..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_e.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_e.js b/tests/OpenGL/package/glm/doc/api/search/files_e.js deleted file mode 100644 index 197e97a5..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_e.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['quaternion_5fcommon_2ehpp',['quaternion_common.hpp',['../a00127.html',1,'']]], - ['quaternion_5fdouble_2ehpp',['quaternion_double.hpp',['../a00128.html',1,'']]], - ['quaternion_5fdouble_5fprecision_2ehpp',['quaternion_double_precision.hpp',['../a00129.html',1,'']]], - ['quaternion_5fexponential_2ehpp',['quaternion_exponential.hpp',['../a00130.html',1,'']]], - ['quaternion_5ffloat_2ehpp',['quaternion_float.hpp',['../a00131.html',1,'']]], - ['quaternion_5ffloat_5fprecision_2ehpp',['quaternion_float_precision.hpp',['../a00132.html',1,'']]], - ['quaternion_5fgeometric_2ehpp',['quaternion_geometric.hpp',['../a00133.html',1,'']]], - ['quaternion_5frelational_2ehpp',['quaternion_relational.hpp',['../a00134.html',1,'']]], - ['quaternion_5ftransform_2ehpp',['quaternion_transform.hpp',['../a00135.html',1,'']]], - ['quaternion_5ftrigonometric_2ehpp',['quaternion_trigonometric.hpp',['../a00136.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/files_f.html b/tests/OpenGL/package/glm/doc/api/search/files_f.html deleted file mode 100644 index 3249d425..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_f.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/files_f.js b/tests/OpenGL/package/glm/doc/api/search/files_f.js deleted file mode 100644 index d8f7ae1d..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/files_f.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['random_2ehpp',['random.hpp',['../a00137.html',1,'']]], - ['range_2ehpp',['range.hpp',['../a00138.html',1,'']]], - ['raw_5fdata_2ehpp',['raw_data.hpp',['../a00139.html',1,'']]], - ['reciprocal_2ehpp',['reciprocal.hpp',['../a00140.html',1,'']]], - ['rotate_5fnormalized_5faxis_2ehpp',['rotate_normalized_axis.hpp',['../a00141.html',1,'']]], - ['rotate_5fvector_2ehpp',['rotate_vector.hpp',['../a00142.html',1,'']]], - ['round_2ehpp',['round.hpp',['../a00143.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_0.html b/tests/OpenGL/package/glm/doc/api/search/functions_0.html deleted file mode 100644 index 246d1672..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_0.js b/tests/OpenGL/package/glm/doc/api/search/functions_0.js deleted file mode 100644 index f23832ad..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_0.js +++ /dev/null @@ -1,31 +0,0 @@ -var searchData= -[ - ['abs',['abs',['../a00241.html#ga439e60a72eadecfeda2df5449c613a64',1,'glm::abs(genType x)'],['../a00241.html#ga81d3abddd0ef0c8de579bc541ecadab6',1,'glm::abs(vec< L, T, Q > const &x)']]], - ['acos',['acos',['../a00373.html#gacc9b092df8257c68f19c9053703e2563',1,'glm']]], - ['acosh',['acosh',['../a00373.html#ga858f35dc66fd2688f20c52b5f25be76a',1,'glm']]], - ['acot',['acot',['../a00301.html#gaeadfb9c9d71093f7865b2ba2ca8d104d',1,'glm']]], - ['acoth',['acoth',['../a00301.html#gafaca98a7100170db8841f446282debfa',1,'glm']]], - ['acsc',['acsc',['../a00301.html#ga1b4bed91476b9b915e76b4a30236d330',1,'glm']]], - ['acsch',['acsch',['../a00301.html#ga4b50aa5e5afc7e19ec113ab91596c576',1,'glm']]], - ['adjugate',['adjugate',['../a00339.html#ga40a38402a30860af6e508fe76211e659',1,'glm::adjugate(mat< 2, 2, T, Q > const &m)'],['../a00339.html#gaddb09f7abc1a9c56a243d32ff3538be6',1,'glm::adjugate(mat< 3, 3, T, Q > const &m)'],['../a00339.html#ga9aaa7d1f40391b0b5cacccb60e104ba8',1,'glm::adjugate(mat< 4, 4, T, Q > const &m)']]], - ['affineinverse',['affineInverse',['../a00295.html#gae0fcc5fc8783291f9702272de428fa0e',1,'glm']]], - ['all',['all',['../a00374.html#ga87e53f50b679f5f95c5cb4780311b3dd',1,'glm']]], - ['angle',['angle',['../a00257.html#ga8aa248b31d5ade470c87304df5eb7bd8',1,'glm::angle(qua< T, Q > const &x)'],['../a00367.html#ga2e2917b4cb75ca3d043ac15ff88f14e1',1,'glm::angle(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], - ['angleaxis',['angleAxis',['../a00257.html#ga5c0095cfcb218c75a4b79d7687950036',1,'glm']]], - ['any',['any',['../a00374.html#ga911b3f8e41459dd551ccb6d385d91061',1,'glm']]], - ['arecollinear',['areCollinear',['../a00368.html#ga13da4a787a2ff70e95d561fb19ff91b4',1,'glm']]], - ['areorthogonal',['areOrthogonal',['../a00368.html#gac7b95b3f798e3c293262b2bdaad47c57',1,'glm']]], - ['areorthonormal',['areOrthonormal',['../a00368.html#ga1b091c3d7f9ee3b0708311c001c293e3',1,'glm']]], - ['asec',['asec',['../a00301.html#ga2c5b7f962c2c9ff684e6d2de48db1f10',1,'glm']]], - ['asech',['asech',['../a00301.html#gaec7586dccfe431f850d006f3824b8ca6',1,'glm']]], - ['asin',['asin',['../a00373.html#ga0552d2df4865fa8c3d7cfc3ec2caac73',1,'glm']]], - ['asinh',['asinh',['../a00373.html#ga3ef16b501ee859fddde88e22192a5950',1,'glm']]], - ['associatedmax',['associatedMax',['../a00308.html#ga7d9c8785230c8db60f72ec8975f1ba45',1,'glm::associatedMax(T x, U a, T y, U b)'],['../a00308.html#ga5c6758bc50aa7fbe700f87123a045aad',1,'glm::associatedMax(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)'],['../a00308.html#ga0d169d6ce26b03248df175f39005d77f',1,'glm::associatedMax(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b)'],['../a00308.html#ga4086269afabcb81dd7ded33cb3448653',1,'glm::associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)'],['../a00308.html#gaec891e363d91abbf3a4443cf2f652209',1,'glm::associatedMax(T x, U a, T y, U b, T z, U c)'],['../a00308.html#gab84fdc35016a31e8cd0cbb8296bddf7c',1,'glm::associatedMax(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)'],['../a00308.html#gadd2a2002f4f2144bbc39eb2336dd2fba',1,'glm::associatedMax(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c)'],['../a00308.html#ga19f59d1141a51a3b2108a9807af78f7f',1,'glm::associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c)'],['../a00308.html#ga3038ffcb43eaa6af75897a99a5047ccc',1,'glm::associatedMax(T x, U a, T y, U b, T z, U c, T w, U d)'],['../a00308.html#gaf5ab0c428f8d1cd9e3b45fcfbf6423a6',1,'glm::associatedMax(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)'],['../a00308.html#ga11477c2c4b5b0bfd1b72b29df3725a9d',1,'glm::associatedMax(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)'],['../a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb',1,'glm::associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)']]], - ['associatedmin',['associatedMin',['../a00308.html#gacc01bd272359572fc28437ae214a02df',1,'glm::associatedMin(T x, U a, T y, U b)'],['../a00308.html#gac2f0dff90948f2e44386a5eafd941d1c',1,'glm::associatedMin(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)'],['../a00308.html#gacfec519c820331d023ef53a511749319',1,'glm::associatedMin(T x, const vec< L, U, Q > &a, T y, const vec< L, U, Q > &b)'],['../a00308.html#ga4757c7cab2d809124a8525d0a9deeb37',1,'glm::associatedMin(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)'],['../a00308.html#gad0aa8f86259a26d839d34a3577a923fc',1,'glm::associatedMin(T x, U a, T y, U b, T z, U c)'],['../a00308.html#ga723e5411cebc7ffbd5c81ffeec61127d',1,'glm::associatedMin(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)'],['../a00308.html#ga432224ebe2085eaa2b63a077ecbbbff6',1,'glm::associatedMin(T x, U a, T y, U b, T z, U c, T w, U d)'],['../a00308.html#ga66b08118bc88f0494bcacb7cdb940556',1,'glm::associatedMin(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)'],['../a00308.html#ga78c28fde1a7080fb7420bd88e68c6c68',1,'glm::associatedMin(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)'],['../a00308.html#ga2db7e351994baee78540a562d4bb6d3b',1,'glm::associatedMin(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)']]], - ['atan',['atan',['../a00373.html#gac61629f3a4aa14057e7a8cae002291db',1,'glm::atan(vec< L, T, Q > const &y, vec< L, T, Q > const &x)'],['../a00373.html#ga5229f087eaccbc466f1c609ce3107b95',1,'glm::atan(vec< L, T, Q > const &y_over_x)']]], - ['atan2',['atan2',['../a00315.html#gac63011205bf6d0be82589dc56dd26708',1,'glm::atan2(T x, T y)'],['../a00315.html#ga83bc41bd6f89113ee8006576b12bfc50',1,'glm::atan2(const vec< 2, T, Q > &x, const vec< 2, T, Q > &y)'],['../a00315.html#gac39314f5087e7e51e592897cabbc1927',1,'glm::atan2(const vec< 3, T, Q > &x, const vec< 3, T, Q > &y)'],['../a00315.html#gaba86c28da7bf5bdac64fecf7d56e8ff3',1,'glm::atan2(const vec< 4, T, Q > &x, const vec< 4, T, Q > &y)']]], - ['atanh',['atanh',['../a00373.html#gabc925650e618357d07da255531658b87',1,'glm']]], - ['axis',['axis',['../a00257.html#ga764254f10248b505e936e5309a88c23d',1,'glm']]], - ['axisangle',['axisAngle',['../a00337.html#gafefe32ce5a90a135287ba34fac3623bc',1,'glm']]], - ['axisanglematrix',['axisAngleMatrix',['../a00337.html#ga3a788e2f5223397df5c426413ecc2f6b',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_1.html b/tests/OpenGL/package/glm/doc/api/search/functions_1.html deleted file mode 100644 index 5f14d674..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_1.js b/tests/OpenGL/package/glm/doc/api/search/functions_1.js deleted file mode 100644 index bf498fce..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_1.js +++ /dev/null @@ -1,20 +0,0 @@ -var searchData= -[ - ['backeasein',['backEaseIn',['../a00318.html#ga93cddcdb6347a44d5927cc2bf2570816',1,'glm::backEaseIn(genType const &a)'],['../a00318.html#ga33777c9dd98f61d9472f96aafdf2bd36',1,'glm::backEaseIn(genType const &a, genType const &o)']]], - ['backeaseinout',['backEaseInOut',['../a00318.html#gace6d24722a2f6722b56398206eb810bb',1,'glm::backEaseInOut(genType const &a)'],['../a00318.html#ga68a7b760f2afdfab298d5cd6d7611fb1',1,'glm::backEaseInOut(genType const &a, genType const &o)']]], - ['backeaseout',['backEaseOut',['../a00318.html#gabf25069fa906413c858fd46903d520b9',1,'glm::backEaseOut(genType const &a)'],['../a00318.html#ga640c1ac6fe9d277a197da69daf60ee4f',1,'glm::backEaseOut(genType const &a, genType const &o)']]], - ['ballrand',['ballRand',['../a00300.html#ga7c53b7797f3147af68a11c767679fa3f',1,'glm']]], - ['bitcount',['bitCount',['../a00370.html#ga44abfe3379e11cbd29425a843420d0d6',1,'glm::bitCount(genType v)'],['../a00370.html#gaac7b15e40bdea8d9aa4c4cb34049f7b5',1,'glm::bitCount(vec< L, T, Q > const &v)']]], - ['bitfielddeinterleave',['bitfieldDeinterleave',['../a00288.html#ga091d934233a2e121df91b8c7230357c8',1,'glm::bitfieldDeinterleave(glm::uint16 x)'],['../a00288.html#ga7d1cc24dfbcdd932c3a2abbb76235f98',1,'glm::bitfieldDeinterleave(glm::uint32 x)'],['../a00288.html#ga8dbb8c87092f33bd815dd8a840be5d60',1,'glm::bitfieldDeinterleave(glm::uint64 x)']]], - ['bitfieldextract',['bitfieldExtract',['../a00370.html#ga346b25ab11e793e91a4a69c8aa6819f2',1,'glm']]], - ['bitfieldfillone',['bitfieldFillOne',['../a00288.html#ga46f9295abe3b5c7658f5b13c7f819f0a',1,'glm::bitfieldFillOne(genIUType Value, int FirstBit, int BitCount)'],['../a00288.html#ga3e96dd1f0a4bc892f063251ed118c0c1',1,'glm::bitfieldFillOne(vec< L, T, Q > const &Value, int FirstBit, int BitCount)']]], - ['bitfieldfillzero',['bitfieldFillZero',['../a00288.html#ga697b86998b7d74ee0a69d8e9f8819fee',1,'glm::bitfieldFillZero(genIUType Value, int FirstBit, int BitCount)'],['../a00288.html#ga0d16c9acef4be79ea9b47c082a0cf7c2',1,'glm::bitfieldFillZero(vec< L, T, Q > const &Value, int FirstBit, int BitCount)']]], - ['bitfieldinsert',['bitfieldInsert',['../a00370.html#ga2e82992340d421fadb61a473df699b20',1,'glm']]], - ['bitfieldinterleave',['bitfieldInterleave',['../a00288.html#ga24cad0069f9a0450abd80b3e89501adf',1,'glm::bitfieldInterleave(int8 x, int8 y)'],['../a00288.html#ga9a4976a529aec2cee56525e1165da484',1,'glm::bitfieldInterleave(uint8 x, uint8 y)'],['../a00288.html#ga4a76bbca39c40153f3203d0a1926e142',1,'glm::bitfieldInterleave(u8vec2 const &v)'],['../a00288.html#gac51c33a394593f0631fa3aa5bb778809',1,'glm::bitfieldInterleave(int16 x, int16 y)'],['../a00288.html#ga94f3646a5667f4be56f8dcf3310e963f',1,'glm::bitfieldInterleave(uint16 x, uint16 y)'],['../a00288.html#ga406c4ee56af4ca37a73f449f154eca3e',1,'glm::bitfieldInterleave(u16vec2 const &v)'],['../a00288.html#gaebb756a24a0784e3d6fba8bd011ab77a',1,'glm::bitfieldInterleave(int32 x, int32 y)'],['../a00288.html#ga2f1e2b3fe699e7d897ae38b2115ddcbd',1,'glm::bitfieldInterleave(uint32 x, uint32 y)'],['../a00288.html#ga8cb17574d60abd6ade84bc57c10e8f78',1,'glm::bitfieldInterleave(u32vec2 const &v)'],['../a00288.html#ga8fdb724dccd4a07d57efc01147102137',1,'glm::bitfieldInterleave(int8 x, int8 y, int8 z)'],['../a00288.html#ga9fc2a0dd5dcf8b00e113f272a5feca93',1,'glm::bitfieldInterleave(uint8 x, uint8 y, uint8 z)'],['../a00288.html#gaa901c36a842fa5d126ea650549f17b24',1,'glm::bitfieldInterleave(int16 x, int16 y, int16 z)'],['../a00288.html#ga3afd6d38881fe3948c53d4214d2197fd',1,'glm::bitfieldInterleave(uint16 x, uint16 y, uint16 z)'],['../a00288.html#gad2075d96a6640121edaa98ea534102ca',1,'glm::bitfieldInterleave(int32 x, int32 y, int32 z)'],['../a00288.html#gab19fbc739fc0cf7247978602c36f7da8',1,'glm::bitfieldInterleave(uint32 x, uint32 y, uint32 z)'],['../a00288.html#ga8a44ae22f5c953b296c42d067dccbe6d',1,'glm::bitfieldInterleave(int8 x, int8 y, int8 z, int8 w)'],['../a00288.html#ga14bb274d54a3c26f4919dd7ed0dd0c36',1,'glm::bitfieldInterleave(uint8 x, uint8 y, uint8 z, uint8 w)'],['../a00288.html#ga180a63161e1319fbd5a53c84d0429c7a',1,'glm::bitfieldInterleave(int16 x, int16 y, int16 z, int16 w)'],['../a00288.html#gafca8768671a14c8016facccb66a89f26',1,'glm::bitfieldInterleave(uint16 x, uint16 y, uint16 z, uint16 w)']]], - ['bitfieldreverse',['bitfieldReverse',['../a00370.html#ga750a1d92464489b7711dee67aa3441b6',1,'glm']]], - ['bitfieldrotateleft',['bitfieldRotateLeft',['../a00288.html#ga2eb49678a344ce1495bdb5586d9896b9',1,'glm::bitfieldRotateLeft(genIUType In, int Shift)'],['../a00288.html#gae186317091b1a39214ebf79008d44a1e',1,'glm::bitfieldRotateLeft(vec< L, T, Q > const &In, int Shift)']]], - ['bitfieldrotateright',['bitfieldRotateRight',['../a00288.html#ga1c33d075c5fb8bd8dbfd5092bfc851ca',1,'glm::bitfieldRotateRight(genIUType In, int Shift)'],['../a00288.html#ga590488e1fc00a6cfe5d3bcaf93fbfe88',1,'glm::bitfieldRotateRight(vec< L, T, Q > const &In, int Shift)']]], - ['bounceeasein',['bounceEaseIn',['../a00318.html#gaac30767f2e430b0c3fc859a4d59c7b5b',1,'glm']]], - ['bounceeaseinout',['bounceEaseInOut',['../a00318.html#gadf9f38eff1e5f4c2fa5b629a25ae413e',1,'glm']]], - ['bounceeaseout',['bounceEaseOut',['../a00318.html#ga94007005ff0dcfa0749ebfa2aec540b2',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_10.html b/tests/OpenGL/package/glm/doc/api/search/functions_10.html deleted file mode 100644 index c322f408..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_10.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_10.js b/tests/OpenGL/package/glm/doc/api/search/functions_10.js deleted file mode 100644 index cf1f1d0a..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_10.js +++ /dev/null @@ -1,30 +0,0 @@ -var searchData= -[ - ['saturate',['saturate',['../a00315.html#ga0fd09e616d122bc2ed9726682ffd44b7',1,'glm::saturate(T x)'],['../a00315.html#gaee97b8001c794a78a44f5d59f62a8aba',1,'glm::saturate(const vec< 2, T, Q > &x)'],['../a00315.html#ga39bfe3a421286ee31680d45c31ccc161',1,'glm::saturate(const vec< 3, T, Q > &x)'],['../a00315.html#ga356f8c3a7e7d6376d3d4b0a026407183',1,'glm::saturate(const vec< 4, T, Q > &x)']]], - ['saturation',['saturation',['../a00312.html#ga01a97152b44e1550edcac60bd849e884',1,'glm::saturation(T const s)'],['../a00312.html#ga2156cea600e90148ece5bc96fd6db43a',1,'glm::saturation(T const s, vec< 3, T, Q > const &color)'],['../a00312.html#gaba0eacee0736dae860e9371cc1ae4785',1,'glm::saturation(T const s, vec< 4, T, Q > const &color)']]], - ['scale',['scale',['../a00247.html#ga05051adbee603fb3c5095d8cf5cc229b',1,'glm::scale(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)'],['../a00341.html#gadb47d2ad2bd984b213e8ff7d9cd8154e',1,'glm::scale(mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)'],['../a00362.html#gafbeefee8fec884d566e4ada0049174d7',1,'glm::scale(vec< 3, T, Q > const &v)']]], - ['scalebias',['scaleBias',['../a00363.html#gabf249498b236e62c983d90d30d63c99c',1,'glm::scaleBias(T scale, T bias)'],['../a00363.html#gae2bdd91a76759fecfbaef97e3020aa8e',1,'glm::scaleBias(mat< 4, 4, T, Q > const &m, T scale, T bias)']]], - ['sec',['sec',['../a00301.html#gae4bcbebee670c5ea155f0777b3acbd84',1,'glm']]], - ['sech',['sech',['../a00301.html#ga9a5cfd1e7170104a7b33863b1b75e5ae',1,'glm']]], - ['shearx',['shearX',['../a00341.html#ga2a118ece5db1e2022112b954846012af',1,'glm']]], - ['shearx2d',['shearX2D',['../a00363.html#gabf714b8a358181572b32a45555f71948',1,'glm']]], - ['shearx3d',['shearX3D',['../a00363.html#ga73e867c6cd4d700fe2054437e56106c4',1,'glm']]], - ['sheary',['shearY',['../a00341.html#ga717f1833369c1ac4a40e4ac015af885e',1,'glm']]], - ['sheary2d',['shearY2D',['../a00363.html#gac7998d0763d9181550c77e8af09a182c',1,'glm']]], - ['sheary3d',['shearY3D',['../a00363.html#gade5bb65ffcb513973db1a1314fb5cfac',1,'glm']]], - ['shearz3d',['shearZ3D',['../a00363.html#ga6591e0a3a9d2c9c0b6577bb4dace0255',1,'glm']]], - ['shortmix',['shortMix',['../a00352.html#gadc576cc957adc2a568cdcbc3799175bc',1,'glm']]], - ['sign',['sign',['../a00241.html#ga1e2e5cfff800056540e32f6c9b604b28',1,'glm::sign(vec< L, T, Q > const &x)'],['../a00333.html#ga04ef803a24f3d4f8c67dbccb33b0fce0',1,'glm::sign(vec< L, T, Q > const &x, vec< L, T, Q > const &base)']]], - ['simplex',['simplex',['../a00297.html#ga8122468c69015ff397349a7dcc638b27',1,'glm']]], - ['sin',['sin',['../a00373.html#ga29747fd108cb7292ae5a284f69691a69',1,'glm']]], - ['sineeasein',['sineEaseIn',['../a00318.html#gafb338ac6f6b2bcafee50e3dca5201dbf',1,'glm']]], - ['sineeaseinout',['sineEaseInOut',['../a00318.html#gaa46e3d5fbf7a15caa28eff9ef192d7c7',1,'glm']]], - ['sineeaseout',['sineEaseOut',['../a00318.html#gab3e454f883afc1606ef91363881bf5a3',1,'glm']]], - ['sinh',['sinh',['../a00373.html#gac7c39ff21809e281552b4dbe46f4a39d',1,'glm']]], - ['slerp',['slerp',['../a00248.html#gae7fc3c945be366b9942b842f55da428a',1,'glm::slerp(qua< T, Q > const &x, qua< T, Q > const &y, T a)'],['../a00356.html#ga8b11b18ce824174ea1a5a69ea14e2cee',1,'glm::slerp(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, T const &a)']]], - ['smoothstep',['smoothstep',['../a00241.html#ga562edf7eca082cc5b7a0aaf180436daf',1,'glm']]], - ['sphericalrand',['sphericalRand',['../a00300.html#ga22f90fcaccdf001c516ca90f6428e138',1,'glm']]], - ['sqrt',['sqrt',['../a00242.html#gaa83e5f1648b7ccdf33b87c07c76cb77c',1,'glm::sqrt(vec< L, T, Q > const &v)'],['../a00256.html#ga64b7b255ed7bcba616fe6b44470b022e',1,'glm::sqrt(qua< T, Q > const &q)'],['../a00330.html#ga7ce36693a75879ccd9bb10167cfa722d',1,'glm::sqrt(int x)'],['../a00330.html#ga1975d318978d6dacf78b6444fa5ed7bc',1,'glm::sqrt(uint x)']]], - ['squad',['squad',['../a00352.html#ga0b9bf3459e132ad8a18fe970669e3e35',1,'glm']]], - ['step',['step',['../a00241.html#ga015a1261ff23e12650211aa872863cce',1,'glm::step(genType edge, genType x)'],['../a00241.html#ga8f9a911a48ef244b51654eaefc81c551',1,'glm::step(T edge, vec< L, T, Q > const &x)'],['../a00241.html#gaf4a5fc81619c7d3e8b22f53d4a098c7f',1,'glm::step(vec< L, T, Q > const &edge, vec< L, T, Q > const &x)']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_11.html b/tests/OpenGL/package/glm/doc/api/search/functions_11.html deleted file mode 100644 index c49fcd4c..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_11.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_11.js b/tests/OpenGL/package/glm/doc/api/search/functions_11.js deleted file mode 100644 index 6c1dff5a..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_11.js +++ /dev/null @@ -1,20 +0,0 @@ -var searchData= -[ - ['tan',['tan',['../a00373.html#ga293a34cfb9f0115cc606b4a97c84f11f',1,'glm']]], - ['tanh',['tanh',['../a00373.html#gaa1bccbfdcbe40ed2ffcddc2aa8bfd0f1',1,'glm']]], - ['third',['third',['../a00290.html#ga3077c6311010a214b69ddc8214ec13b5',1,'glm']]], - ['three_5fover_5ftwo_5fpi',['three_over_two_pi',['../a00290.html#gae94950df74b0ce382b1fc1d978ef7394',1,'glm']]], - ['to_5fstring',['to_string',['../a00360.html#ga8f0dced1fd45e67e2d77e80ab93c7af5',1,'glm']]], - ['tomat3',['toMat3',['../a00352.html#gaab0afabb894b28a983fb8ec610409d56',1,'glm']]], - ['tomat4',['toMat4',['../a00352.html#gadfa2c77094e8cc9adad321d938855ffb',1,'glm']]], - ['toquat',['toQuat',['../a00352.html#ga798de5d186499c9a9231cd92c8afaef1',1,'glm::toQuat(mat< 3, 3, T, Q > const &x)'],['../a00352.html#ga5eb36f51e1638e710451eba194dbc011',1,'glm::toQuat(mat< 4, 4, T, Q > const &x)']]], - ['translate',['translate',['../a00247.html#ga1a4ecc4ad82652b8fb14dcb087879284',1,'glm::translate(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)'],['../a00341.html#gaf4573ae47c80938aa9053ef6a33755ab',1,'glm::translate(mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)'],['../a00362.html#ga309a30e652e58c396e2c3d4db3ee7658',1,'glm::translate(vec< 3, T, Q > const &v)']]], - ['transpose',['transpose',['../a00371.html#gae679d841da8ce9dbcc6c2d454f15bc35',1,'glm']]], - ['trianglenormal',['triangleNormal',['../a00344.html#gaff1cb5496925dfa7962df457772a7f35',1,'glm']]], - ['trunc',['trunc',['../a00241.html#gaf9375e3e06173271d49e6ffa3a334259',1,'glm']]], - ['tweakedinfiniteperspective',['tweakedInfinitePerspective',['../a00243.html#gaaeacc04a2a6f4b18c5899d37e7bb3ef9',1,'glm::tweakedInfinitePerspective(T fovy, T aspect, T near)'],['../a00243.html#gaf5b3c85ff6737030a1d2214474ffa7a8',1,'glm::tweakedInfinitePerspective(T fovy, T aspect, T near, T ep)']]], - ['two_5fover_5fpi',['two_over_pi',['../a00290.html#ga74eadc8a211253079683219a3ea0462a',1,'glm']]], - ['two_5fover_5froot_5fpi',['two_over_root_pi',['../a00290.html#ga5827301817640843cf02026a8d493894',1,'glm']]], - ['two_5fpi',['two_pi',['../a00290.html#gaa5276a4617566abcfe49286f40e3a256',1,'glm']]], - ['two_5fthirds',['two_thirds',['../a00290.html#ga9b4d2f4322edcf63a6737b92a29dd1f5',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_12.html b/tests/OpenGL/package/glm/doc/api/search/functions_12.html deleted file mode 100644 index 6a027720..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_12.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_12.js b/tests/OpenGL/package/glm/doc/api/search/functions_12.js deleted file mode 100644 index 221b3286..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_12.js +++ /dev/null @@ -1,52 +0,0 @@ -var searchData= -[ - ['uaddcarry',['uaddCarry',['../a00370.html#gaedcec48743632dff6786bcc492074b1b',1,'glm']]], - ['uintbitstofloat',['uintBitsToFloat',['../a00241.html#gab2bae0d15dcdca6093f88f76b3975d97',1,'glm::uintBitsToFloat(uint const &v)'],['../a00241.html#ga97f46b5f7b42fe44482e13356eb394ae',1,'glm::uintBitsToFloat(vec< L, uint, Q > const &v)']]], - ['umulextended',['umulExtended',['../a00370.html#ga732e2fb56db57ea541c7e5c92b7121be',1,'glm']]], - ['unpackdouble2x32',['unpackDouble2x32',['../a00372.html#ga5f4296dc5f12f0aa67ac05b8bb322483',1,'glm']]], - ['unpackf2x11_5f1x10',['unpackF2x11_1x10',['../a00298.html#ga2b1fd1e854705b1345e98409e0a25e50',1,'glm']]], - ['unpackf3x9_5fe1x5',['unpackF3x9_E1x5',['../a00298.html#gab9e60ebe3ad3eeced6a9ec6eb876d74e',1,'glm']]], - ['unpackhalf',['unpackHalf',['../a00298.html#ga30d6b2f1806315bcd6047131f547d33b',1,'glm']]], - ['unpackhalf1x16',['unpackHalf1x16',['../a00298.html#gac37dedaba24b00adb4ec6e8f92c19dbf',1,'glm']]], - ['unpackhalf2x16',['unpackHalf2x16',['../a00372.html#gaf59b52e6b28da9335322c4ae19b5d745',1,'glm']]], - ['unpackhalf4x16',['unpackHalf4x16',['../a00298.html#ga57dfc41b2eb20b0ac00efae7d9c49dcd',1,'glm']]], - ['unpacki3x10_5f1x2',['unpackI3x10_1x2',['../a00298.html#ga9a05330e5490be0908d3b117d82aff56',1,'glm']]], - ['unpackint2x16',['unpackInt2x16',['../a00298.html#gaccde055882918a3175de82f4ca8b7d8e',1,'glm']]], - ['unpackint2x32',['unpackInt2x32',['../a00298.html#gab297c0bfd38433524791eb0584d8f08d',1,'glm']]], - ['unpackint2x8',['unpackInt2x8',['../a00298.html#gab0c59f1e259fca9e68adb2207a6b665e',1,'glm']]], - ['unpackint4x16',['unpackInt4x16',['../a00298.html#ga52c154a9b232b62c22517a700cc0c78c',1,'glm']]], - ['unpackint4x8',['unpackInt4x8',['../a00298.html#ga1cd8d2038cdd33a860801aa155a26221',1,'glm']]], - ['unpackrgbm',['unpackRGBM',['../a00298.html#ga5c1ec97894b05ea21a05aea4f0204a02',1,'glm']]], - ['unpacksnorm',['unpackSnorm',['../a00298.html#ga6d49b31e5c3f9df8e1f99ab62b999482',1,'glm']]], - ['unpacksnorm1x16',['unpackSnorm1x16',['../a00298.html#ga96dd15002370627a443c835ab03a766c',1,'glm']]], - ['unpacksnorm1x8',['unpackSnorm1x8',['../a00298.html#ga4851ff86678aa1c7ace9d67846894285',1,'glm']]], - ['unpacksnorm2x16',['unpackSnorm2x16',['../a00372.html#gacd8f8971a3fe28418be0d0fa1f786b38',1,'glm']]], - ['unpacksnorm2x8',['unpackSnorm2x8',['../a00298.html#ga8b128e89be449fc71336968a66bf6e1a',1,'glm']]], - ['unpacksnorm3x10_5f1x2',['unpackSnorm3x10_1x2',['../a00298.html#ga7a4fbf79be9740e3c57737bc2af05e5b',1,'glm']]], - ['unpacksnorm4x16',['unpackSnorm4x16',['../a00298.html#gaaddf9c353528fe896106f7181219c7f4',1,'glm']]], - ['unpacksnorm4x8',['unpackSnorm4x8',['../a00372.html#ga2db488646d48b7c43d3218954523fe82',1,'glm']]], - ['unpacku3x10_5f1x2',['unpackU3x10_1x2',['../a00298.html#ga48df3042a7d079767f5891a1bfd8a60a',1,'glm']]], - ['unpackuint2x16',['unpackUint2x16',['../a00298.html#ga035bbbeab7ec2b28c0529757395b645b',1,'glm']]], - ['unpackuint2x32',['unpackUint2x32',['../a00298.html#gaf942ff11b65e83eb5f77e68329ebc6ab',1,'glm']]], - ['unpackuint2x8',['unpackUint2x8',['../a00298.html#gaa7600a6c71784b637a410869d2a5adcd',1,'glm']]], - ['unpackuint4x16',['unpackUint4x16',['../a00298.html#gab173834ef14cfc23a96a959f3ff4b8dc',1,'glm']]], - ['unpackuint4x8',['unpackUint4x8',['../a00298.html#gaf6dc0e4341810a641c7ed08f10e335d1',1,'glm']]], - ['unpackunorm',['unpackUnorm',['../a00298.html#ga3e6ac9178b59f0b1b2f7599f2183eb7f',1,'glm']]], - ['unpackunorm1x16',['unpackUnorm1x16',['../a00298.html#ga83d34160a5cb7bcb5339823210fc7501',1,'glm']]], - ['unpackunorm1x5_5f1x6_5f1x5',['unpackUnorm1x5_1x6_1x5',['../a00298.html#gab3bc08ecfc0f3339be93fb2b3b56d88a',1,'glm']]], - ['unpackunorm1x8',['unpackUnorm1x8',['../a00298.html#ga1319207e30874fb4931a9ee913983ee1',1,'glm']]], - ['unpackunorm2x16',['unpackUnorm2x16',['../a00372.html#ga1f66188e5d65afeb9ffba1ad971e4007',1,'glm']]], - ['unpackunorm2x3_5f1x2',['unpackUnorm2x3_1x2',['../a00298.html#ga6abd5a9014df3b5ce4059008d2491260',1,'glm']]], - ['unpackunorm2x4',['unpackUnorm2x4',['../a00298.html#ga2e50476132fe5f27f08e273d9c70d85b',1,'glm']]], - ['unpackunorm2x8',['unpackUnorm2x8',['../a00298.html#ga637cbe3913dd95c6e7b4c99c61bd611f',1,'glm']]], - ['unpackunorm3x10_5f1x2',['unpackUnorm3x10_1x2',['../a00298.html#ga5156d3060355fe332865da2c7f78815f',1,'glm']]], - ['unpackunorm3x5_5f1x1',['unpackUnorm3x5_1x1',['../a00298.html#ga5ff95ff5bc16f396432ab67243dbae4d',1,'glm']]], - ['unpackunorm4x16',['unpackUnorm4x16',['../a00298.html#ga2ae149c5d2473ac1e5f347bb654a242d',1,'glm']]], - ['unpackunorm4x4',['unpackUnorm4x4',['../a00298.html#gac58ee89d0e224bb6df5e8bbb18843a2d',1,'glm']]], - ['unpackunorm4x8',['unpackUnorm4x8',['../a00372.html#ga7f903259150b67e9466f5f8edffcd197',1,'glm']]], - ['unproject',['unProject',['../a00245.html#ga36641e5d60f994e01c3d8f56b10263d2',1,'glm']]], - ['unprojectno',['unProjectNO',['../a00245.html#gae089ba9fc150ff69c252a20e508857b5',1,'glm']]], - ['unprojectzo',['unProjectZO',['../a00245.html#gade5136413ce530f8e606124d570fba32',1,'glm']]], - ['uround',['uround',['../a00292.html#ga6715b9d573972a0f7763d30d45bcaec4',1,'glm']]], - ['usubborrow',['usubBorrow',['../a00370.html#gae3316ba1229ad9b9f09480833321b053',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_13.html b/tests/OpenGL/package/glm/doc/api/search/functions_13.html deleted file mode 100644 index 23ac5dac..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_13.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_13.js b/tests/OpenGL/package/glm/doc/api/search/functions_13.js deleted file mode 100644 index 1aa7ad58..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_13.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['value_5fptr',['value_ptr',['../a00305.html#ga1c64669e1ba1160ad9386e43dc57569a',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_14.html b/tests/OpenGL/package/glm/doc/api/search/functions_14.html deleted file mode 100644 index 16e2625a..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_14.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_14.js b/tests/OpenGL/package/glm/doc/api/search/functions_14.js deleted file mode 100644 index 58cc50ac..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_14.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['wrapangle',['wrapAngle',['../a00325.html#ga069527c6dbd64f53435b8ebc4878b473',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_15.html b/tests/OpenGL/package/glm/doc/api/search/functions_15.html deleted file mode 100644 index 9c2374c9..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_15.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_15.js b/tests/OpenGL/package/glm/doc/api/search/functions_15.js deleted file mode 100644 index 4153a6e0..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_15.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['yaw',['yaw',['../a00299.html#ga8da38cdfdc452dafa660c2f46506bad5',1,'glm']]], - ['yawpitchroll',['yawPitchRoll',['../a00319.html#gae6aa26ccb020d281b449619e419a609e',1,'glm']]], - ['ycocg2rgb',['YCoCg2rgb',['../a00313.html#ga163596b804c7241810b2534a99eb1343',1,'glm']]], - ['ycocgr2rgb',['YCoCgR2rgb',['../a00313.html#gaf8d30574c8576838097d8e20c295384a',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_16.html b/tests/OpenGL/package/glm/doc/api/search/functions_16.html deleted file mode 100644 index 39a0e644..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_16.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_16.js b/tests/OpenGL/package/glm/doc/api/search/functions_16.js deleted file mode 100644 index 66a52170..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_16.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['zero',['zero',['../a00290.html#ga788f5a421fc0f40a1296ebc094cbaa8a',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_2.html b/tests/OpenGL/package/glm/doc/api/search/functions_2.html deleted file mode 100644 index 3995cf8c..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_2.js b/tests/OpenGL/package/glm/doc/api/search/functions_2.js deleted file mode 100644 index 1e9c9843..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_2.js +++ /dev/null @@ -1,42 +0,0 @@ -var searchData= -[ - ['catmullrom',['catmullRom',['../a00358.html#ga8119c04f8210fd0d292757565cd6918d',1,'glm']]], - ['ceil',['ceil',['../a00241.html#gafb9d2a645a23aca12d4d6de0104b7657',1,'glm']]], - ['ceilmultiple',['ceilMultiple',['../a00302.html#ga1d89ac88582aaf4d5dfa5feb4a376fd4',1,'glm::ceilMultiple(genType v, genType Multiple)'],['../a00302.html#gab77fdcc13f8e92d2e0b1b7d7aeab8e9d',1,'glm::ceilMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], - ['ceilpoweroftwo',['ceilPowerOfTwo',['../a00302.html#ga5c3ef36ae32aa4271f1544f92bd578b6',1,'glm::ceilPowerOfTwo(genIUType v)'],['../a00302.html#gab53d4a97c0d3e297be5f693cdfdfe5d2',1,'glm::ceilPowerOfTwo(vec< L, T, Q > const &v)']]], - ['circulareasein',['circularEaseIn',['../a00318.html#ga34508d4b204a321ec26d6086aa047997',1,'glm']]], - ['circulareaseinout',['circularEaseInOut',['../a00318.html#ga0c1027637a5b02d4bb3612aa12599d69',1,'glm']]], - ['circulareaseout',['circularEaseOut',['../a00318.html#ga26fefde9ced9b72745fe21f1a3fe8da7',1,'glm']]], - ['circularrand',['circularRand',['../a00300.html#ga9dd05c36025088fae25b97c869e88517',1,'glm']]], - ['clamp',['clamp',['../a00241.html#ga7cd77683da6361e297c56443fc70806d',1,'glm::clamp(genType x, genType minVal, genType maxVal)'],['../a00241.html#gafba2e0674deb5953878d89483cd6323d',1,'glm::clamp(vec< L, T, Q > const &x, T minVal, T maxVal)'],['../a00241.html#gaa0f2f12e9108b09e22a3f0b2008a0b5d',1,'glm::clamp(vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)'],['../a00369.html#ga6c0cc6bd1d67ea1008d2592e998bad33',1,'glm::clamp(genType const &Texcoord)']]], - ['closebounded',['closeBounded',['../a00314.html#gab7d89c14c48ad01f720fb5daf8813161',1,'glm']]], - ['closestpointonline',['closestPointOnLine',['../a00310.html#ga36529c278ef716986151d58d151d697d',1,'glm::closestPointOnLine(vec< 3, T, Q > const &point, vec< 3, T, Q > const &a, vec< 3, T, Q > const &b)'],['../a00310.html#ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0',1,'glm::closestPointOnLine(vec< 2, T, Q > const &point, vec< 2, T, Q > const &a, vec< 2, T, Q > const &b)']]], - ['colmajor2',['colMajor2',['../a00338.html#gaaff72f11286e59a4a88ed21a347f284c',1,'glm::colMajor2(vec< 2, T, Q > const &v1, vec< 2, T, Q > const &v2)'],['../a00338.html#gafc25fd44196c92b1397b127aec1281ab',1,'glm::colMajor2(mat< 2, 2, T, Q > const &m)']]], - ['colmajor3',['colMajor3',['../a00338.html#ga1e25b72b085087740c92f5c70f3b051f',1,'glm::colMajor3(vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)'],['../a00338.html#ga86bd0656e787bb7f217607572590af27',1,'glm::colMajor3(mat< 3, 3, T, Q > const &m)']]], - ['colmajor4',['colMajor4',['../a00338.html#gaf4aa6c7e17bfce41a6c13bf6469fab05',1,'glm::colMajor4(vec< 4, T, Q > const &v1, vec< 4, T, Q > const &v2, vec< 4, T, Q > const &v3, vec< 4, T, Q > const &v4)'],['../a00338.html#gaf3f9511c366c20ba2e4a64c9e4cec2b3',1,'glm::colMajor4(mat< 4, 4, T, Q > const &m)']]], - ['column',['column',['../a00293.html#ga96022eb0d3fae39d89fc7a954e59b374',1,'glm::column(genType const &m, length_t index)'],['../a00293.html#ga9e757377523890e8b80c5843dbe4dd15',1,'glm::column(genType const &m, length_t index, typename genType::col_type const &x)']]], - ['compadd',['compAdd',['../a00316.html#gaf71833350e15e74d31cbf8a3e7f27051',1,'glm']]], - ['compmax',['compMax',['../a00316.html#gabfa4bb19298c8c73d4217ba759c496b6',1,'glm']]], - ['compmin',['compMin',['../a00316.html#gab5d0832b5c7bb01b8d7395973bfb1425',1,'glm']]], - ['compmul',['compMul',['../a00316.html#gae8ab88024197202c9479d33bdc5a8a5d',1,'glm']]], - ['compnormalize',['compNormalize',['../a00316.html#ga8f2b81ada8515875e58cb1667b6b9908',1,'glm']]], - ['compscale',['compScale',['../a00316.html#ga80abc2980d65d675f435d178c36880eb',1,'glm']]], - ['conjugate',['conjugate',['../a00248.html#ga10d7bda73201788ac2ab28cd8d0d409b',1,'glm']]], - ['convertd65xyztod50xyz',['convertD65XYZToD50XYZ',['../a00311.html#gad12f4f65022b2c80e33fcba2ced0dc48',1,'glm']]], - ['convertd65xyztolinearsrgb',['convertD65XYZToLinearSRGB',['../a00311.html#ga5265386fc3ac29e4c580d37ed470859c',1,'glm']]], - ['convertlinearsrgbtod50xyz',['convertLinearSRGBToD50XYZ',['../a00311.html#ga1522ba180e3d83d554a734056da031f9',1,'glm']]], - ['convertlinearsrgbtod65xyz',['convertLinearSRGBToD65XYZ',['../a00311.html#gaf9e130d9d4ccf51cc99317de7449f369',1,'glm']]], - ['convertlineartosrgb',['convertLinearToSRGB',['../a00289.html#ga42239e7b3da900f7ef37cec7e2476579',1,'glm::convertLinearToSRGB(vec< L, T, Q > const &ColorLinear)'],['../a00289.html#gaace0a21167d13d26116c283009af57f6',1,'glm::convertLinearToSRGB(vec< L, T, Q > const &ColorLinear, T Gamma)']]], - ['convertsrgbtolinear',['convertSRGBToLinear',['../a00289.html#ga16c798b7a226b2c3079dedc55083d187',1,'glm::convertSRGBToLinear(vec< L, T, Q > const &ColorSRGB)'],['../a00289.html#gad1b91f27a9726c9cb403f9fee6e2e200',1,'glm::convertSRGBToLinear(vec< L, T, Q > const &ColorSRGB, T Gamma)']]], - ['cos',['cos',['../a00373.html#ga6a41efc740e3b3c937447d3a6284130e',1,'glm']]], - ['cosh',['cosh',['../a00373.html#ga4e260e372742c5f517aca196cf1e62b3',1,'glm']]], - ['cot',['cot',['../a00301.html#ga3a7b517a95bbd3ad74da3aea87a66314',1,'glm']]], - ['coth',['coth',['../a00301.html#ga6b8b770eb7198e4dea59d52e6db81442',1,'glm']]], - ['cross',['cross',['../a00254.html#ga755beaa929c75751dee646cccba37e4c',1,'glm::cross(qua< T, Q > const &q1, qua< T, Q > const &q2)'],['../a00279.html#gaeeec0794212fe84fc9d261de067c9587',1,'glm::cross(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00322.html#gac36e72b934ea6a9dd313772d7e78fa93',1,'glm::cross(vec< 2, T, Q > const &v, vec< 2, T, Q > const &u)'],['../a00352.html#ga2f32f970411c44cdd38bb98960198385',1,'glm::cross(qua< T, Q > const &q, vec< 3, T, Q > const &v)'],['../a00352.html#ga9f5f77255756e5668dfee7f0d07ed021',1,'glm::cross(vec< 3, T, Q > const &v, qua< T, Q > const &q)']]], - ['csc',['csc',['../a00301.html#ga59dd0005b6474eea48af743b4f14ebbb',1,'glm']]], - ['csch',['csch',['../a00301.html#ga6d95843ff3ca6472ab399ba171d290a0',1,'glm']]], - ['cubic',['cubic',['../a00358.html#ga6b867eb52e2fc933d2e0bf26aabc9a70',1,'glm']]], - ['cubiceasein',['cubicEaseIn',['../a00318.html#gaff52f746102b94864d105563ba8895ae',1,'glm']]], - ['cubiceaseinout',['cubicEaseInOut',['../a00318.html#ga55134072b42d75452189321d4a2ad91c',1,'glm']]], - ['cubiceaseout',['cubicEaseOut',['../a00318.html#ga40d746385d8bcc5973f5bc6a2340ca91',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_3.html b/tests/OpenGL/package/glm/doc/api/search/functions_3.html deleted file mode 100644 index 4e302d69..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_3.js b/tests/OpenGL/package/glm/doc/api/search/functions_3.js deleted file mode 100644 index 5ae63635..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_3.js +++ /dev/null @@ -1,24 +0,0 @@ -var searchData= -[ - ['decompose',['decompose',['../a00335.html#gac0e342656ba09a9bc97c57182ba73124',1,'glm']]], - ['degrees',['degrees',['../a00373.html#ga8faec9e303538065911ba8b3caf7326b',1,'glm']]], - ['derivedeuleranglex',['derivedEulerAngleX',['../a00319.html#ga994b8186b3b80d91cf90bc403164692f',1,'glm']]], - ['derivedeulerangley',['derivedEulerAngleY',['../a00319.html#ga0a4c56ecce7abcb69508ebe6313e9d10',1,'glm']]], - ['derivedeuleranglez',['derivedEulerAngleZ',['../a00319.html#gae8b397348201c42667be983ba3f344df',1,'glm']]], - ['determinant',['determinant',['../a00371.html#gad7928795124768e058f99dce270f5c8d',1,'glm']]], - ['diagonal2x2',['diagonal2x2',['../a00339.html#ga58a32a2beeb2478dae2a721368cdd4ac',1,'glm']]], - ['diagonal2x3',['diagonal2x3',['../a00339.html#gab69f900206a430e2875a5a073851e175',1,'glm']]], - ['diagonal2x4',['diagonal2x4',['../a00339.html#ga30b4dbfed60a919d66acc8a63bcdc549',1,'glm']]], - ['diagonal3x2',['diagonal3x2',['../a00339.html#ga832c805d5130d28ad76236958d15b47d',1,'glm']]], - ['diagonal3x3',['diagonal3x3',['../a00339.html#ga5487ff9cdbc8e04d594adef1bcb16ee0',1,'glm']]], - ['diagonal3x4',['diagonal3x4',['../a00339.html#gad7551139cff0c4208d27f0ad3437833e',1,'glm']]], - ['diagonal4x2',['diagonal4x2',['../a00339.html#gacb8969e6543ba775c6638161a37ac330',1,'glm']]], - ['diagonal4x3',['diagonal4x3',['../a00339.html#gae235def5049d6740f0028433f5e13f90',1,'glm']]], - ['diagonal4x4',['diagonal4x4',['../a00339.html#ga0b4cd8dea436791b072356231ee8578f',1,'glm']]], - ['diskrand',['diskRand',['../a00300.html#gaa0b18071f3f97dbf8bcf6f53c6fe5f73',1,'glm']]], - ['distance',['distance',['../a00279.html#gaa68de6c53e20dfb2dac2d20197562e3f',1,'glm']]], - ['distance2',['distance2',['../a00343.html#ga85660f1b79f66c09c7b5a6f80e68c89f',1,'glm']]], - ['dot',['dot',['../a00254.html#ga84865a56acb8fbd7bc4f5c0b928e3cfc',1,'glm::dot(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00279.html#gaad6c5d9d39bdc0bf43baf1b22e147a0a',1,'glm::dot(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], - ['dual_5fquat_5fidentity',['dual_quat_identity',['../a00317.html#ga0b35c0e30df8a875dbaa751e0bd800e0',1,'glm']]], - ['dualquat_5fcast',['dualquat_cast',['../a00317.html#gac4064ff813759740201765350eac4236',1,'glm::dualquat_cast(mat< 2, 4, T, Q > const &x)'],['../a00317.html#ga91025ebdca0f4ea54da08497b00e8c84',1,'glm::dualquat_cast(mat< 3, 4, T, Q > const &x)']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_4.html b/tests/OpenGL/package/glm/doc/api/search/functions_4.html deleted file mode 100644 index 58ca83a6..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_4.js b/tests/OpenGL/package/glm/doc/api/search/functions_4.js deleted file mode 100644 index 5937b38a..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_4.js +++ /dev/null @@ -1,55 +0,0 @@ -var searchData= -[ - ['e',['e',['../a00290.html#ga4b7956eb6e2fbedfc7cf2e46e85c5139',1,'glm']]], - ['elasticeasein',['elasticEaseIn',['../a00318.html#ga230918eccee4e113d10ec5b8cdc58695',1,'glm']]], - ['elasticeaseinout',['elasticEaseInOut',['../a00318.html#ga2db4ac8959559b11b4029e54812908d6',1,'glm']]], - ['elasticeaseout',['elasticEaseOut',['../a00318.html#gace9c9d1bdf88bf2ab1e7cdefa54c7365',1,'glm']]], - ['epsilon',['epsilon',['../a00259.html#ga2a1e57fc5592b69cfae84174cbfc9429',1,'glm']]], - ['epsilonequal',['epsilonEqual',['../a00291.html#ga91b417866cafadd076004778217a1844',1,'glm::epsilonEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T const &epsilon)'],['../a00291.html#gaa7f227999ca09e7ca994e8b35aba47bb',1,'glm::epsilonEqual(genType const &x, genType const &y, genType const &epsilon)']]], - ['epsilonnotequal',['epsilonNotEqual',['../a00291.html#gaf840d33b9a5261ec78dcd5125743b025',1,'glm::epsilonNotEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T const &epsilon)'],['../a00291.html#ga50a92103fb0cbd796908e1bf20c79aaf',1,'glm::epsilonNotEqual(genType const &x, genType const &y, genType const &epsilon)']]], - ['equal',['equal',['../a00246.html#ga27e90dcb7941c9b70e295dc3f6f6369f',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)'],['../a00246.html#gaf5d687d70d11708b68c36c6db5777040',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, T epsilon)'],['../a00246.html#gafa6a053e81179fa4292b35651c83c3fb',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, T, Q > const &epsilon)'],['../a00246.html#gab3a93f19e72e9141f50527c9de21d0c0',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, int ULPs)'],['../a00246.html#ga5305af376173f1902719fa309bbae671',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, int, Q > const &ULPs)'],['../a00255.html#gad7827af0549504ff1cd6a359786acc7a',1,'glm::equal(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00255.html#gaa001eecb91106463169a8e5ef1577b39',1,'glm::equal(qua< T, Q > const &x, qua< T, Q > const &y, T epsilon)'],['../a00275.html#ga2ac7651a2fa7354f2da610dbd50d28e2',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T epsilon)'],['../a00275.html#ga37d261a65f69babc82cec2ae1af7145f',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &epsilon)'],['../a00275.html#ga2b46cb50911e97b32f4cd743c2c69771',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, int ULPs)'],['../a00275.html#ga7da2b8605be7f245b39cb6fbf6d9d581',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)'],['../a00374.html#gab4c5cfdaa70834421397a85aa83ad946',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], - ['euclidean',['euclidean',['../a00350.html#ga1821d5b3324201e60a9e2823d0b5d0c8',1,'glm']]], - ['euler',['euler',['../a00290.html#gad8fe2e6f90bce9d829e9723b649fbd42',1,'glm']]], - ['eulerangles',['eulerAngles',['../a00299.html#gaf4dd967dead22dd932fc7460ceecb03f',1,'glm']]], - ['euleranglex',['eulerAngleX',['../a00319.html#gafba6282e4ed3ff8b5c75331abfba3489',1,'glm']]], - ['euleranglexy',['eulerAngleXY',['../a00319.html#ga64036577ee17a2d24be0dbc05881d4e2',1,'glm']]], - ['euleranglexyx',['eulerAngleXYX',['../a00319.html#ga29bd0787a28a6648159c0d6e69706066',1,'glm']]], - ['euleranglexyz',['eulerAngleXYZ',['../a00319.html#ga1975e0f0e9bed7f716dc9946da2ab645',1,'glm']]], - ['euleranglexz',['eulerAngleXZ',['../a00319.html#gaa39bd323c65c2fc0a1508be33a237ce9',1,'glm']]], - ['euleranglexzx',['eulerAngleXZX',['../a00319.html#ga60171c79a17aec85d7891ae1d1533ec9',1,'glm']]], - ['euleranglexzy',['eulerAngleXZY',['../a00319.html#ga996dce12a60d8a674ba6737a535fa910',1,'glm']]], - ['eulerangley',['eulerAngleY',['../a00319.html#gab84bf4746805fd69b8ecbb230e3974c5',1,'glm']]], - ['eulerangleyx',['eulerAngleYX',['../a00319.html#ga4f57e6dd25c3cffbbd4daa6ef3f4486d',1,'glm']]], - ['eulerangleyxy',['eulerAngleYXY',['../a00319.html#ga750fba9894117f87bcc529d7349d11de',1,'glm']]], - ['eulerangleyxz',['eulerAngleYXZ',['../a00319.html#gab8ba99a9814f6d9edf417b6c6d5b0c10',1,'glm']]], - ['eulerangleyz',['eulerAngleYZ',['../a00319.html#ga220379e10ac8cca55e275f0c9018fed9',1,'glm']]], - ['eulerangleyzx',['eulerAngleYZX',['../a00319.html#ga08bef16357b8f9b3051b3dcaec4b7848',1,'glm']]], - ['eulerangleyzy',['eulerAngleYZY',['../a00319.html#ga5e5e40abc27630749b42b3327c76d6e4',1,'glm']]], - ['euleranglez',['eulerAngleZ',['../a00319.html#ga5b3935248bb6c3ec6b0d9297d406e251',1,'glm']]], - ['euleranglezx',['eulerAngleZX',['../a00319.html#ga483903115cd4059228961046a28d69b5',1,'glm']]], - ['euleranglezxy',['eulerAngleZXY',['../a00319.html#gab4505c54d2dd654df4569fd1f04c43aa',1,'glm']]], - ['euleranglezxz',['eulerAngleZXZ',['../a00319.html#ga178f966c52b01e4d65e31ebd007e3247',1,'glm']]], - ['euleranglezy',['eulerAngleZY',['../a00319.html#ga400b2bd5984999efab663f3a68e1d020',1,'glm']]], - ['euleranglezyx',['eulerAngleZYX',['../a00319.html#ga2e61f1e39069c47530acab9167852dd6',1,'glm']]], - ['euleranglezyz',['eulerAngleZYZ',['../a00319.html#gacd795f1dbecaf74974f9c76bbcca6830',1,'glm']]], - ['exp',['exp',['../a00242.html#ga071566cadc7505455e611f2a0353f4d4',1,'glm::exp(vec< L, T, Q > const &v)'],['../a00256.html#gaab2d37ef7265819f1d2939b9dc2c52ac',1,'glm::exp(qua< T, Q > const &q)']]], - ['exp2',['exp2',['../a00242.html#gaff17ace6b579a03bf223ed4d1ed2cd16',1,'glm']]], - ['exponentialeasein',['exponentialEaseIn',['../a00318.html#ga7f24ee9219ab4c84dc8de24be84c1e3c',1,'glm']]], - ['exponentialeaseinout',['exponentialEaseInOut',['../a00318.html#ga232fb6dc093c5ce94bee105ff2947501',1,'glm']]], - ['exponentialeaseout',['exponentialEaseOut',['../a00318.html#ga517f2bcfd15bc2c25c466ae50808efc3',1,'glm']]], - ['extend',['extend',['../a00320.html#ga8140caae613b0f847ab0d7175dc03a37',1,'glm']]], - ['extracteuleranglexyx',['extractEulerAngleXYX',['../a00319.html#gaf1077a72171d0f3b08f022ab5ff88af7',1,'glm']]], - ['extracteuleranglexyz',['extractEulerAngleXYZ',['../a00319.html#gacea701562f778c1da4d3a0a1cf091000',1,'glm']]], - ['extracteuleranglexzx',['extractEulerAngleXZX',['../a00319.html#gacf0bc6c031f25fa3ee0055b62c8260d0',1,'glm']]], - ['extracteuleranglexzy',['extractEulerAngleXZY',['../a00319.html#gabe5a65d8eb1cd873c8de121cce1a15ed',1,'glm']]], - ['extracteulerangleyxy',['extractEulerAngleYXY',['../a00319.html#gaab8868556361a190db94374e9983ed39',1,'glm']]], - ['extracteulerangleyxz',['extractEulerAngleYXZ',['../a00319.html#gaf0937518e63037335a0e8358b6f053c5',1,'glm']]], - ['extracteulerangleyzx',['extractEulerAngleYZX',['../a00319.html#ga9049b78466796c0de2971756e25b93d3',1,'glm']]], - ['extracteulerangleyzy',['extractEulerAngleYZY',['../a00319.html#ga11dad972c109e4bf8694c915017c44a6',1,'glm']]], - ['extracteuleranglezxy',['extractEulerAngleZXY',['../a00319.html#ga81fbbca2ba0c778b9662d5355b4e2363',1,'glm']]], - ['extracteuleranglezxz',['extractEulerAngleZXZ',['../a00319.html#ga59359fef9bad92afaca55e193f91e702',1,'glm']]], - ['extracteuleranglezyx',['extractEulerAngleZYX',['../a00319.html#ga2d6c11a4abfa60c565483cee2d3f7665',1,'glm']]], - ['extracteuleranglezyz',['extractEulerAngleZYZ',['../a00319.html#gafdfa880a64b565223550c2d3938b1aeb',1,'glm']]], - ['extractmatrixrotation',['extractMatrixRotation',['../a00337.html#gabbc1c7385a145f04b5c54228965df145',1,'glm']]], - ['extractrealcomponent',['extractRealComponent',['../a00352.html#ga321953c1b2e7befe6f5dcfddbfc6b76b',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_5.html b/tests/OpenGL/package/glm/doc/api/search/functions_5.html deleted file mode 100644 index 5f9f05ae..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_5.js b/tests/OpenGL/package/glm/doc/api/search/functions_5.js deleted file mode 100644 index 7eab90b7..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_5.js +++ /dev/null @@ -1,51 +0,0 @@ -var searchData= -[ - ['faceforward',['faceforward',['../a00279.html#ga7aed0a36c738169402404a3a5d54e43b',1,'glm']]], - ['factorial',['factorial',['../a00330.html#ga8cbd3120905f398ec321b5d1836e08fb',1,'glm']]], - ['fastacos',['fastAcos',['../a00325.html#ga9721d63356e5d94fdc4b393a426ab26b',1,'glm']]], - ['fastasin',['fastAsin',['../a00325.html#ga562cb62c51fbfe7fac7db0bce706b81f',1,'glm']]], - ['fastatan',['fastAtan',['../a00325.html#ga8d197c6ef564f5e5d59af3b3f8adcc2c',1,'glm::fastAtan(T y, T x)'],['../a00325.html#gae25de86a968490ff56856fa425ec9d30',1,'glm::fastAtan(T angle)']]], - ['fastcos',['fastCos',['../a00325.html#gab34c8b45c23c0165a64dcecfcc3b302a',1,'glm']]], - ['fastdistance',['fastDistance',['../a00324.html#gaac333418d0c4e0cc6d3d219ed606c238',1,'glm::fastDistance(genType x, genType y)'],['../a00324.html#ga42d3e771fa7cb3c60d828e315829df19',1,'glm::fastDistance(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], - ['fastexp',['fastExp',['../a00323.html#gaa3180ac8f96ab37ab96e0cacaf608e10',1,'glm::fastExp(T x)'],['../a00323.html#ga3ba6153aec6bd74628f8b00530aa8d58',1,'glm::fastExp(vec< L, T, Q > const &x)']]], - ['fastexp2',['fastExp2',['../a00323.html#ga0af50585955eb14c60bb286297fabab2',1,'glm::fastExp2(T x)'],['../a00323.html#gacaaed8b67d20d244b7de217e7816c1b6',1,'glm::fastExp2(vec< L, T, Q > const &x)']]], - ['fastinversesqrt',['fastInverseSqrt',['../a00324.html#ga7f081b14d9c7035c8714eba5f7f75a8f',1,'glm::fastInverseSqrt(genType x)'],['../a00324.html#gadcd7be12b1e5ee182141359d4c45dd24',1,'glm::fastInverseSqrt(vec< L, T, Q > const &x)']]], - ['fastlength',['fastLength',['../a00324.html#gafe697d6287719538346bbdf8b1367c59',1,'glm::fastLength(genType x)'],['../a00324.html#ga90f66be92ef61e705c005e7b3209edb8',1,'glm::fastLength(vec< L, T, Q > const &x)']]], - ['fastlog',['fastLog',['../a00323.html#gae1bdc97b7f96a600e29c753f1cd4388a',1,'glm::fastLog(T x)'],['../a00323.html#ga937256993a7219e73f186bb348fe6be8',1,'glm::fastLog(vec< L, T, Q > const &x)']]], - ['fastlog2',['fastLog2',['../a00323.html#ga6e98118685f6dc9e05fbb13dd5e5234e',1,'glm::fastLog2(T x)'],['../a00323.html#ga7562043539194ccc24649f8475bc5584',1,'glm::fastLog2(vec< L, T, Q > const &x)']]], - ['fastmix',['fastMix',['../a00352.html#ga264e10708d58dd0ff53b7902a2bd2561',1,'glm']]], - ['fastnormalize',['fastNormalize',['../a00324.html#ga3b02c1d6e0c754144e2f1e110bf9f16c',1,'glm']]], - ['fastnormalizedot',['fastNormalizeDot',['../a00345.html#ga2746fb9b5bd22b06b2f7c8babba5de9e',1,'glm']]], - ['fastpow',['fastPow',['../a00323.html#ga5340e98a11fcbbd936ba6e983a154d50',1,'glm::fastPow(genType x, genType y)'],['../a00323.html#ga15325a8ed2d1c4ed2412c4b3b3927aa2',1,'glm::fastPow(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00323.html#ga7f2562db9c3e02ae76169c36b086c3f6',1,'glm::fastPow(genTypeT x, genTypeU y)'],['../a00323.html#ga1abe488c0829da5b9de70ac64aeaa7e5',1,'glm::fastPow(vec< L, T, Q > const &x)']]], - ['fastsin',['fastSin',['../a00325.html#ga0aab3257bb3b628d10a1e0483e2c6915',1,'glm']]], - ['fastsqrt',['fastSqrt',['../a00324.html#ga6c460e9414a50b2fc455c8f64c86cdc9',1,'glm::fastSqrt(genType x)'],['../a00324.html#gae83f0c03614f73eae5478c5b6274ee6d',1,'glm::fastSqrt(vec< L, T, Q > const &x)']]], - ['fasttan',['fastTan',['../a00325.html#gaf29b9c1101a10007b4f79ee89df27ba2',1,'glm']]], - ['fclamp',['fclamp',['../a00321.html#ga1e28539d3a46965ed9ef92ec7cb3b18a',1,'glm::fclamp(genType x, genType minVal, genType maxVal)'],['../a00321.html#ga60796d08903489ee185373593bc16b9d',1,'glm::fclamp(vec< L, T, Q > const &x, T minVal, T maxVal)'],['../a00321.html#ga5c15fa4709763c269c86c0b8b3aa2297',1,'glm::fclamp(vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)']]], - ['findlsb',['findLSB',['../a00370.html#gaf74c4d969fa34ab8acb9d390f5ca5274',1,'glm::findLSB(genIUType x)'],['../a00370.html#ga4454c0331d6369888c28ab677f4810c7',1,'glm::findLSB(vec< L, T, Q > const &v)']]], - ['findmsb',['findMSB',['../a00370.html#ga7e4a794d766861c70bc961630f8ef621',1,'glm::findMSB(genIUType x)'],['../a00370.html#ga39ac4d52028bb6ab08db5ad6562c2872',1,'glm::findMSB(vec< L, T, Q > const &v)']]], - ['findnsb',['findNSB',['../a00261.html#ga2777901e41ad6e1e9d0ad6cc855d1075',1,'glm::findNSB(genIUType x, int significantBitCount)'],['../a00274.html#gaff61eca266da315002a3db92ff0dd604',1,'glm::findNSB(vec< L, T, Q > const &Source, vec< L, int, Q > SignificantBitCount)']]], - ['fliplr',['fliplr',['../a00336.html#gaf39f4e5f78eb29c1a90277d45b9b3feb',1,'glm']]], - ['flipud',['flipud',['../a00336.html#ga85003371f0ba97380dd25e8905de1870',1,'glm']]], - ['floatbitstoint',['floatBitsToInt',['../a00241.html#ga1425c1c3160ec51214b03a0469a3013d',1,'glm::floatBitsToInt(float const &v)'],['../a00241.html#ga99f7d62f78ac5ea3b49bae715c9488ed',1,'glm::floatBitsToInt(vec< L, float, Q > const &v)']]], - ['floatbitstouint',['floatBitsToUint',['../a00241.html#ga70e0271c34af52f3100c7960e18c3f2b',1,'glm::floatBitsToUint(float const &v)'],['../a00241.html#ga49418ba4c8a60fbbb5d57b705f3e26db',1,'glm::floatBitsToUint(vec< L, float, Q > const &v)']]], - ['floor',['floor',['../a00241.html#gaa9d0742639e85b29c7c5de11cfd6840d',1,'glm']]], - ['floor_5flog2',['floor_log2',['../a00330.html#ga7011b4e1c1e1ed492149b028feacc00e',1,'glm']]], - ['floormultiple',['floorMultiple',['../a00302.html#ga2ffa3cd5f2ea746ee1bf57c46da6315e',1,'glm::floorMultiple(genType v, genType Multiple)'],['../a00302.html#gacdd8901448f51f0b192380e422fae3e4',1,'glm::floorMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], - ['floorpoweroftwo',['floorPowerOfTwo',['../a00302.html#gafe273a57935d04c9db677bf67f9a71f4',1,'glm::floorPowerOfTwo(genIUType v)'],['../a00302.html#gaf0d591a8fca8ddb9289cdeb44b989c2d',1,'glm::floorPowerOfTwo(vec< L, T, Q > const &v)']]], - ['fma',['fma',['../a00241.html#gad0f444d4b81cc53c3b6edf5aa25078c2',1,'glm']]], - ['fmax',['fmax',['../a00258.html#ga36920478565cf608e93064283ce06421',1,'glm::fmax(T a, T b)'],['../a00258.html#ga0007bba71ca451ac70e99d28dfbeaab9',1,'glm::fmax(T a, T b, T C)'],['../a00258.html#ga27e260b1ff4d04c3ad4b864d26cbaf08',1,'glm::fmax(T a, T b, T C, T D)'],['../a00267.html#gad66b6441f7200db16c9f341711733c56',1,'glm::fmax(vec< L, T, Q > const &a, T b)'],['../a00267.html#ga8df4be3f48d6717c40ea788fd30deebf',1,'glm::fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b)'],['../a00267.html#ga0f04ba924294dae4234ca93ede23229a',1,'glm::fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)'],['../a00267.html#ga4ed3eb250ccbe17bfe8ded8a6b72d230',1,'glm::fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)'],['../a00321.html#gae5792cb2b51190057e4aea027eb56f81',1,'glm::fmax(genType x, genType y)']]], - ['fmin',['fmin',['../a00258.html#ga7b2b438a765e2a62098c79eb212f28f0',1,'glm::fmin(T a, T b)'],['../a00258.html#ga1a95fe4cf5437e8133f1093fe9726a64',1,'glm::fmin(T a, T b, T c)'],['../a00258.html#ga3d6f9c6c16bfd6f38f2c4f8076e8b661',1,'glm::fmin(T a, T b, T c, T d)'],['../a00267.html#gae989203363cff9eab5093630df4fe071',1,'glm::fmin(vec< L, T, Q > const &x, T y)'],['../a00267.html#ga7c42e93cd778c9181d1cdeea4d3e43bd',1,'glm::fmin(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00267.html#ga7e62739055b49189d9355471f78fe000',1,'glm::fmin(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)'],['../a00267.html#ga4a543dd7d22ad1f3b8b839f808a9d93c',1,'glm::fmin(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)'],['../a00321.html#gaa3200559611ac5b9b9ae7283547916a7',1,'glm::fmin(genType x, genType y)']]], - ['fmod',['fmod',['../a00314.html#gae5e80425df9833164ad469e83b475fb4',1,'glm']]], - ['four_5fover_5fpi',['four_over_pi',['../a00290.html#ga753950e5140e4ea6a88e4a18ba61dc09',1,'glm']]], - ['fract',['fract',['../a00241.html#ga8ba89e40e55ae5cdf228548f9b7639c7',1,'glm::fract(genType x)'],['../a00241.html#ga2df623004f634b440d61e018d62c751b',1,'glm::fract(vec< L, T, Q > const &x)']]], - ['frexp',['frexp',['../a00241.html#gaddf5ef73283c171730e0bcc11833fa81',1,'glm']]], - ['frustum',['frustum',['../a00243.html#ga0bcd4542e0affc63a0b8c08fcb839ea9',1,'glm']]], - ['frustumlh',['frustumLH',['../a00243.html#gae4277c37f61d81da01bc9db14ea90296',1,'glm']]], - ['frustumlh_5fno',['frustumLH_NO',['../a00243.html#ga259520cad03b3f8bca9417920035ed01',1,'glm']]], - ['frustumlh_5fzo',['frustumLH_ZO',['../a00243.html#ga94218b094862d17798370242680b9030',1,'glm']]], - ['frustumno',['frustumNO',['../a00243.html#gae34ec664ad44860bf4b5ba631f0e0e90',1,'glm']]], - ['frustumrh',['frustumRH',['../a00243.html#ga4366ab45880c6c5f8b3e8c371ca4b136',1,'glm']]], - ['frustumrh_5fno',['frustumRH_NO',['../a00243.html#ga9236c8439f21be186b79c97b588836b9',1,'glm']]], - ['frustumrh_5fzo',['frustumRH_ZO',['../a00243.html#ga7654a9227f14d5382786b9fc0eb5692d',1,'glm']]], - ['frustumzo',['frustumZO',['../a00243.html#gaa73322e152edf50cf30a6edac342a757',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_6.html b/tests/OpenGL/package/glm/doc/api/search/functions_6.html deleted file mode 100644 index c980da25..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_6.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_6.js b/tests/OpenGL/package/glm/doc/api/search/functions_6.js deleted file mode 100644 index d99a7ae6..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_6.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['gauss',['gauss',['../a00326.html#ga0b50b197ff74261a0fad90f4b8d24702',1,'glm::gauss(T x, T ExpectedValue, T StandardDeviation)'],['../a00326.html#gad19ec8754a83c0b9a8dc16b7e60705ab',1,'glm::gauss(vec< 2, T, Q > const &Coord, vec< 2, T, Q > const &ExpectedValue, vec< 2, T, Q > const &StandardDeviation)']]], - ['gaussrand',['gaussRand',['../a00300.html#ga5193a83e49e4fdc5652c084711083574',1,'glm']]], - ['glm_5faligned_5ftypedef',['GLM_ALIGNED_TYPEDEF',['../a00364.html#gab5cd5c5fad228b25c782084f1cc30114',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int8, aligned_lowp_int8, 1)'],['../a00364.html#ga5bb5dd895ef625c1b113f2cf400186b0',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int16, aligned_lowp_int16, 2)'],['../a00364.html#gac6efa54cf7c6c86f7158922abdb1a430',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int32, aligned_lowp_int32, 4)'],['../a00364.html#ga6612eb77c8607048e7552279a11eeb5f',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int64, aligned_lowp_int64, 8)'],['../a00364.html#ga7ddc1848ff2223026db8968ce0c97497',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int8_t, aligned_lowp_int8_t, 1)'],['../a00364.html#ga22240dd9458b0f8c11fbcc4f48714f68',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int16_t, aligned_lowp_int16_t, 2)'],['../a00364.html#ga8130ea381d76a2cc34a93ccbb6cf487d',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int32_t, aligned_lowp_int32_t, 4)'],['../a00364.html#ga7ccb60f3215d293fd62b33b31ed0e7be',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int64_t, aligned_lowp_int64_t, 8)'],['../a00364.html#gac20d508d2ef5cc95ad3daf083c57ec2a',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i8, aligned_lowp_i8, 1)'],['../a00364.html#ga50257b48069a31d0c8d9c1f644d267de',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i16, aligned_lowp_i16, 2)'],['../a00364.html#gaa07e98e67b7a3435c0746018c7a2a839',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i32, aligned_lowp_i32, 4)'],['../a00364.html#ga62601fc6f8ca298b77285bedf03faffd',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i64, aligned_lowp_i64, 8)'],['../a00364.html#gac8cff825951aeb54dd846037113c72db',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int8, aligned_mediump_int8, 1)'],['../a00364.html#ga78f443d88f438575a62b5df497cdf66b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int16, aligned_mediump_int16, 2)'],['../a00364.html#ga0680cd3b5d4e8006985fb41a4f9b57af',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int32, aligned_mediump_int32, 4)'],['../a00364.html#gad9e5babb1dd3e3531b42c37bf25dd951',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int64, aligned_mediump_int64, 8)'],['../a00364.html#ga353fd9fa8a9ad952fcabd0d53ad9a6dd',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int8_t, aligned_mediump_int8_t, 1)'],['../a00364.html#ga2196442c0e5c5e8c77842de388c42521',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int16_t, aligned_mediump_int16_t, 2)'],['../a00364.html#ga1284488189daf897cf095c5eefad9744',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int32_t, aligned_mediump_int32_t, 4)'],['../a00364.html#ga73fdc86a539808af58808b7c60a1c4d8',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int64_t, aligned_mediump_int64_t, 8)'],['../a00364.html#gafafeea923e1983262c972e2b83922d3b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i8, aligned_mediump_i8, 1)'],['../a00364.html#ga4b35ca5fe8f55c9d2fe54fdb8d8896f4',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i16, aligned_mediump_i16, 2)'],['../a00364.html#ga63b882e29170d428463d99c3d630acc6',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i32, aligned_mediump_i32, 4)'],['../a00364.html#ga8b20507bb048c1edea2d441cc953e6f0',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i64, aligned_mediump_i64, 8)'],['../a00364.html#ga56c5ca60813027b603c7b61425a0479d',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int8, aligned_highp_int8, 1)'],['../a00364.html#ga7a751b3aff24c0259f4a7357c2969089',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int16, aligned_highp_int16, 2)'],['../a00364.html#ga70cd2144351c556469ee6119e59971fc',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int32, aligned_highp_int32, 4)'],['../a00364.html#ga46bbf08dc004d8c433041e0b5018a5d3',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int64, aligned_highp_int64, 8)'],['../a00364.html#gab3e10c77a20d1abad2de1c561c7a5c18',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int8_t, aligned_highp_int8_t, 1)'],['../a00364.html#ga968f30319ebeaca9ebcd3a25a8e139fb',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int16_t, aligned_highp_int16_t, 2)'],['../a00364.html#gaae773c28e6390c6aa76f5b678b7098a3',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int32_t, aligned_highp_int32_t, 4)'],['../a00364.html#ga790cfff1ca39d0ed696ffed980809311',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int64_t, aligned_highp_int64_t, 8)'],['../a00364.html#ga8265b91eb23c120a9b0c3e381bc37b96',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i8, aligned_highp_i8, 1)'],['../a00364.html#gae6d384de17588d8edb894fbe06e0d410',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i16, aligned_highp_i16, 2)'],['../a00364.html#ga9c8172b745ee03fc5b2b91c350c2922f',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i32, aligned_highp_i32, 4)'],['../a00364.html#ga77e0dff12aa4020ddc3f8cabbea7b2e6',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i64, aligned_highp_i64, 8)'],['../a00364.html#gabd82b9faa9d4d618dbbe0fc8a1efee63',1,'glm::GLM_ALIGNED_TYPEDEF(int8, aligned_int8, 1)'],['../a00364.html#ga285649744560be21000cfd81bbb5d507',1,'glm::GLM_ALIGNED_TYPEDEF(int16, aligned_int16, 2)'],['../a00364.html#ga07732da630b2deda428ce95c0ecaf3ff',1,'glm::GLM_ALIGNED_TYPEDEF(int32, aligned_int32, 4)'],['../a00364.html#ga1a8da2a8c51f69c07a2e7f473aa420f4',1,'glm::GLM_ALIGNED_TYPEDEF(int64, aligned_int64, 8)'],['../a00364.html#ga848aedf13e2d9738acf0bb482c590174',1,'glm::GLM_ALIGNED_TYPEDEF(int8_t, aligned_int8_t, 1)'],['../a00364.html#gafd2803d39049dd45a37a63931e25d943',1,'glm::GLM_ALIGNED_TYPEDEF(int16_t, aligned_int16_t, 2)'],['../a00364.html#gae553b33349d6da832cf0724f1e024094',1,'glm::GLM_ALIGNED_TYPEDEF(int32_t, aligned_int32_t, 4)'],['../a00364.html#ga16d223a2b3409e812e1d3bd87f0e9e5c',1,'glm::GLM_ALIGNED_TYPEDEF(int64_t, aligned_int64_t, 8)'],['../a00364.html#ga2de065d2ddfdb366bcd0febca79ae2ad',1,'glm::GLM_ALIGNED_TYPEDEF(i8, aligned_i8, 1)'],['../a00364.html#gabd786bdc20a11c8cb05c92c8212e28d3',1,'glm::GLM_ALIGNED_TYPEDEF(i16, aligned_i16, 2)'],['../a00364.html#gad4aefe56691cdb640c72f0d46d3fb532',1,'glm::GLM_ALIGNED_TYPEDEF(i32, aligned_i32, 4)'],['../a00364.html#ga8fe9745f7de24a8394518152ff9fccdc',1,'glm::GLM_ALIGNED_TYPEDEF(i64, aligned_i64, 8)'],['../a00364.html#gaaad735483450099f7f882d4e3a3569bd',1,'glm::GLM_ALIGNED_TYPEDEF(ivec1, aligned_ivec1, 4)'],['../a00364.html#gac7b6f823802edbd6edbaf70ea25bf068',1,'glm::GLM_ALIGNED_TYPEDEF(ivec2, aligned_ivec2, 8)'],['../a00364.html#ga3e235bcd2b8029613f25b8d40a2d3ef7',1,'glm::GLM_ALIGNED_TYPEDEF(ivec3, aligned_ivec3, 16)'],['../a00364.html#ga50d8a9523968c77f8325b4c9bfbff41e',1,'glm::GLM_ALIGNED_TYPEDEF(ivec4, aligned_ivec4, 16)'],['../a00364.html#ga9ec20fdfb729c702032da9378c79679f',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec1, aligned_i8vec1, 1)'],['../a00364.html#ga25b3fe1d9e8d0a5e86c1949c1acd8131',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec2, aligned_i8vec2, 2)'],['../a00364.html#ga2958f907719d94d8109b562540c910e2',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec3, aligned_i8vec3, 4)'],['../a00364.html#ga1fe6fc032a978f1c845fac9aa0668714',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec4, aligned_i8vec4, 4)'],['../a00364.html#gaa4161e7a496dc96972254143fe873e55',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec1, aligned_i16vec1, 2)'],['../a00364.html#ga9d7cb211ccda69b1c22ddeeb0f3e7aba',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec2, aligned_i16vec2, 4)'],['../a00364.html#gaaee91dd2ab34423bcc11072ef6bd0f02',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec3, aligned_i16vec3, 8)'],['../a00364.html#ga49f047ccaa8b31fad9f26c67bf9b3510',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec4, aligned_i16vec4, 8)'],['../a00364.html#ga904e9c2436bb099397c0823506a0771f',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec1, aligned_i32vec1, 4)'],['../a00364.html#gaf90651cf2f5e7ee2b11cfdc5a6749534',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec2, aligned_i32vec2, 8)'],['../a00364.html#ga7354a4ead8cb17868aec36b9c30d6010',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec3, aligned_i32vec3, 16)'],['../a00364.html#gad2ecbdea18732163e2636e27b37981ee',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec4, aligned_i32vec4, 16)'],['../a00364.html#ga965b1c9aa1800e93d4abc2eb2b5afcbf',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec1, aligned_i64vec1, 8)'],['../a00364.html#ga1f9e9c2ea2768675dff9bae5cde2d829',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec2, aligned_i64vec2, 16)'],['../a00364.html#gad77c317b7d942322cd5be4c8127b3187',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec3, aligned_i64vec3, 32)'],['../a00364.html#ga716f8ea809bdb11b5b542d8b71aeb04f',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec4, aligned_i64vec4, 32)'],['../a00364.html#gad46f8e9082d5878b1bc04f9c1471cdaa',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint8, aligned_lowp_uint8, 1)'],['../a00364.html#ga1246094581af624aca6c7499aaabf801',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint16, aligned_lowp_uint16, 2)'],['../a00364.html#ga7a5009a1d0196bbf21dd7518f61f0249',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint32, aligned_lowp_uint32, 4)'],['../a00364.html#ga45213fd18b3bb1df391671afefe4d1e7',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint64, aligned_lowp_uint64, 8)'],['../a00364.html#ga0ba26b4e3fd9ecbc25358efd68d8a4ca',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint8_t, aligned_lowp_uint8_t, 1)'],['../a00364.html#gaf2b58f5fb6d4ec8ce7b76221d3af43e1',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint16_t, aligned_lowp_uint16_t, 2)'],['../a00364.html#gadc246401847dcba155f0699425e49dcd',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint32_t, aligned_lowp_uint32_t, 4)'],['../a00364.html#gaace64bddf51a9def01498da9a94fb01c',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint64_t, aligned_lowp_uint64_t, 8)'],['../a00364.html#gad7bb97c29d664bd86ffb1bed4abc5534',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u8, aligned_lowp_u8, 1)'],['../a00364.html#ga404bba7785130e0b1384d695a9450b28',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u16, aligned_lowp_u16, 2)'],['../a00364.html#ga31ba41fd896257536958ec6080203d2a',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u32, aligned_lowp_u32, 4)'],['../a00364.html#gacca5f13627f57b3505676e40a6e43e5e',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u64, aligned_lowp_u64, 8)'],['../a00364.html#ga5faf1d3e70bf33174dd7f3d01d5b883b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint8, aligned_mediump_uint8, 1)'],['../a00364.html#ga727e2bf2c433bb3b0182605860a48363',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint16, aligned_mediump_uint16, 2)'],['../a00364.html#ga12566ca66d5962dadb4a5eb4c74e891e',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint32, aligned_mediump_uint32, 4)'],['../a00364.html#ga7b66a97a8acaa35c5a377b947318c6bc',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint64, aligned_mediump_uint64, 8)'],['../a00364.html#gaa9cde002439b74fa66120a16a9f55fcc',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint8_t, aligned_mediump_uint8_t, 1)'],['../a00364.html#ga1ca98c67f7d1e975f7c5202f1da1df1f',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint16_t, aligned_mediump_uint16_t, 2)'],['../a00364.html#ga1dc8bc6199d785f235576948d80a597c',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint32_t, aligned_mediump_uint32_t, 4)'],['../a00364.html#gad14a0f2ec93519682b73d70b8e401d81',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint64_t, aligned_mediump_uint64_t, 8)'],['../a00364.html#gada8b996eb6526dc1ead813bd49539d1b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u8, aligned_mediump_u8, 1)'],['../a00364.html#ga28948f6bfb52b42deb9d73ae1ea8d8b0',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u16, aligned_mediump_u16, 2)'],['../a00364.html#gad6a7c0b5630f89d3f1c5b4ef2919bb4c',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u32, aligned_mediump_u32, 4)'],['../a00364.html#gaa0fc531cbaa972ac3a0b86d21ef4a7fa',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u64, aligned_mediump_u64, 8)'],['../a00364.html#ga0ee829f7b754b262bbfe6317c0d678ac',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint8, aligned_highp_uint8, 1)'],['../a00364.html#ga447848a817a626cae08cedc9778b331c',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint16, aligned_highp_uint16, 2)'],['../a00364.html#ga6027ae13b2734f542a6e7beee11b8820',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint32, aligned_highp_uint32, 4)'],['../a00364.html#ga2aca46c8608c95ef991ee4c332acde5f',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint64, aligned_highp_uint64, 8)'],['../a00364.html#gaff50b10dd1c48be324fdaffd18e2c7ea',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint8_t, aligned_highp_uint8_t, 1)'],['../a00364.html#ga9fc4421dbb833d5461e6d4e59dcfde55',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint16_t, aligned_highp_uint16_t, 2)'],['../a00364.html#ga329f1e2b94b33ba5e3918197030bcf03',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint32_t, aligned_highp_uint32_t, 4)'],['../a00364.html#ga71e646f7e301aa422328194162c9c998',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint64_t, aligned_highp_uint64_t, 8)'],['../a00364.html#ga8942e09f479489441a7a5004c6d8cb66',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u8, aligned_highp_u8, 1)'],['../a00364.html#gaab32497d6e4db16ee439dbedd64c5865',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u16, aligned_highp_u16, 2)'],['../a00364.html#gaaadbb34952eca8e3d7fe122c3e167742',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u32, aligned_highp_u32, 4)'],['../a00364.html#ga92024d27c74a3650afb55ec8e024ed25',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u64, aligned_highp_u64, 8)'],['../a00364.html#gabde1d0b4072df35453db76075ab896a6',1,'glm::GLM_ALIGNED_TYPEDEF(uint8, aligned_uint8, 1)'],['../a00364.html#ga06c296c9e398b294c8c9dd2a7693dcbb',1,'glm::GLM_ALIGNED_TYPEDEF(uint16, aligned_uint16, 2)'],['../a00364.html#gacf1744488c96ebd33c9f36ad33b2010a',1,'glm::GLM_ALIGNED_TYPEDEF(uint32, aligned_uint32, 4)'],['../a00364.html#ga3328061a64c20ba59d5f9da24c2cd059',1,'glm::GLM_ALIGNED_TYPEDEF(uint64, aligned_uint64, 8)'],['../a00364.html#gaf6ced36f13bae57f377bafa6f5fcc299',1,'glm::GLM_ALIGNED_TYPEDEF(uint8_t, aligned_uint8_t, 1)'],['../a00364.html#gafbc7fb7847bfc78a339d1d371c915c73',1,'glm::GLM_ALIGNED_TYPEDEF(uint16_t, aligned_uint16_t, 2)'],['../a00364.html#gaa86bc56a73fd8120b1121b5f5e6245ae',1,'glm::GLM_ALIGNED_TYPEDEF(uint32_t, aligned_uint32_t, 4)'],['../a00364.html#ga68c0b9e669060d0eb5ab8c3ddeb483d8',1,'glm::GLM_ALIGNED_TYPEDEF(uint64_t, aligned_uint64_t, 8)'],['../a00364.html#ga4f3bab577daf3343e99cc005134bce86',1,'glm::GLM_ALIGNED_TYPEDEF(u8, aligned_u8, 1)'],['../a00364.html#ga13a2391339d0790d43b76d00a7611c4f',1,'glm::GLM_ALIGNED_TYPEDEF(u16, aligned_u16, 2)'],['../a00364.html#ga197570e03acbc3d18ab698e342971e8f',1,'glm::GLM_ALIGNED_TYPEDEF(u32, aligned_u32, 4)'],['../a00364.html#ga0f033b21e145a1faa32c62ede5878993',1,'glm::GLM_ALIGNED_TYPEDEF(u64, aligned_u64, 8)'],['../a00364.html#ga509af83527f5cd512e9a7873590663aa',1,'glm::GLM_ALIGNED_TYPEDEF(uvec1, aligned_uvec1, 4)'],['../a00364.html#ga94e86186978c502c6dc0c0d9c4a30679',1,'glm::GLM_ALIGNED_TYPEDEF(uvec2, aligned_uvec2, 8)'],['../a00364.html#ga5cec574686a7f3c8ed24bb195c5e2d0a',1,'glm::GLM_ALIGNED_TYPEDEF(uvec3, aligned_uvec3, 16)'],['../a00364.html#ga47edfdcee9c89b1ebdaf20450323b1d4',1,'glm::GLM_ALIGNED_TYPEDEF(uvec4, aligned_uvec4, 16)'],['../a00364.html#ga5611d6718e3a00096918a64192e73a45',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec1, aligned_u8vec1, 1)'],['../a00364.html#ga19837e6f72b60d994a805ef564c6c326',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec2, aligned_u8vec2, 2)'],['../a00364.html#ga9740cf8e34f068049b42a2753f9601c2',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec3, aligned_u8vec3, 4)'],['../a00364.html#ga8b8588bb221448f5541a858903822a57',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec4, aligned_u8vec4, 4)'],['../a00364.html#ga991abe990c16de26b2129d6bc2f4c051',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec1, aligned_u16vec1, 2)'],['../a00364.html#gac01bb9fc32a1cd76c2b80d030f71df4c',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec2, aligned_u16vec2, 4)'],['../a00364.html#ga09540dbca093793a36a8997e0d4bee77',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec3, aligned_u16vec3, 8)'],['../a00364.html#gaecafb5996f5a44f57e34d29c8670741e',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec4, aligned_u16vec4, 8)'],['../a00364.html#gac6b161a04d2f8408fe1c9d857e8daac0',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec1, aligned_u32vec1, 4)'],['../a00364.html#ga1fa0dfc8feb0fa17dab2acd43e05342b',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec2, aligned_u32vec2, 8)'],['../a00364.html#ga0019500abbfa9c66eff61ca75eaaed94',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec3, aligned_u32vec3, 16)'],['../a00364.html#ga14fd29d01dae7b08a04e9facbcc18824',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec4, aligned_u32vec4, 16)'],['../a00364.html#gab253845f534a67136f9619843cade903',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec1, aligned_u64vec1, 8)'],['../a00364.html#ga929427a7627940cdf3304f9c050b677d',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec2, aligned_u64vec2, 16)'],['../a00364.html#gae373b6c04fdf9879f33d63e6949c037e',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec3, aligned_u64vec3, 32)'],['../a00364.html#ga53a8a03dca2015baec4584f45b8e9cdc',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec4, aligned_u64vec4, 32)'],['../a00364.html#gab3301bae94ef5bf59fbdd9a24e7d2a01',1,'glm::GLM_ALIGNED_TYPEDEF(float32, aligned_float32, 4)'],['../a00364.html#gada9b0bea273d3ae0286f891533b9568f',1,'glm::GLM_ALIGNED_TYPEDEF(float32_t, aligned_float32_t, 4)'],['../a00364.html#gadbce23b9f23d77bb3884e289a574ebd5',1,'glm::GLM_ALIGNED_TYPEDEF(float32, aligned_f32, 4)'],['../a00364.html#ga75930684ff2233171c573e603f216162',1,'glm::GLM_ALIGNED_TYPEDEF(float64, aligned_float64, 8)'],['../a00364.html#ga6e3a2d83b131336219a0f4c7cbba2a48',1,'glm::GLM_ALIGNED_TYPEDEF(float64_t, aligned_float64_t, 8)'],['../a00364.html#gaa4deaa0dea930c393d55e7a4352b0a20',1,'glm::GLM_ALIGNED_TYPEDEF(float64, aligned_f64, 8)'],['../a00364.html#ga81bc497b2bfc6f80bab690c6ee28f0f9',1,'glm::GLM_ALIGNED_TYPEDEF(vec1, aligned_vec1, 4)'],['../a00364.html#gada3e8f783e9d4b90006695a16c39d4d4',1,'glm::GLM_ALIGNED_TYPEDEF(vec2, aligned_vec2, 8)'],['../a00364.html#gab8d081fac3a38d6f55fa552f32168d32',1,'glm::GLM_ALIGNED_TYPEDEF(vec3, aligned_vec3, 16)'],['../a00364.html#ga12fe7b9769c964c5b48dcfd8b7f40198',1,'glm::GLM_ALIGNED_TYPEDEF(vec4, aligned_vec4, 16)'],['../a00364.html#gaefab04611c7f8fe1fd9be3071efea6cc',1,'glm::GLM_ALIGNED_TYPEDEF(fvec1, aligned_fvec1, 4)'],['../a00364.html#ga2543c05ba19b3bd19d45b1227390c5b4',1,'glm::GLM_ALIGNED_TYPEDEF(fvec2, aligned_fvec2, 8)'],['../a00364.html#ga009afd727fd657ef33a18754d6d28f60',1,'glm::GLM_ALIGNED_TYPEDEF(fvec3, aligned_fvec3, 16)'],['../a00364.html#ga2f26177e74bfb301a3d0e02ec3c3ef53',1,'glm::GLM_ALIGNED_TYPEDEF(fvec4, aligned_fvec4, 16)'],['../a00364.html#ga309f495a1d6b75ddf195b674b65cb1e4',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec1, aligned_f32vec1, 4)'],['../a00364.html#ga5e185865a2217d0cd47187644683a8c3',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec2, aligned_f32vec2, 8)'],['../a00364.html#gade4458b27b039b9ca34f8ec049f3115a',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec3, aligned_f32vec3, 16)'],['../a00364.html#ga2e8a12c5e6a9c4ae4ddaeda1d1cffe3b',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec4, aligned_f32vec4, 16)'],['../a00364.html#ga3e0f35fa0c626285a8bad41707e7316c',1,'glm::GLM_ALIGNED_TYPEDEF(dvec1, aligned_dvec1, 8)'],['../a00364.html#ga78bfec2f185d1d365ea0a9ef1e3d45b8',1,'glm::GLM_ALIGNED_TYPEDEF(dvec2, aligned_dvec2, 16)'],['../a00364.html#ga01fe6fee6db5df580b6724a7e681f069',1,'glm::GLM_ALIGNED_TYPEDEF(dvec3, aligned_dvec3, 32)'],['../a00364.html#ga687d5b8f551d5af32425c0b2fba15e99',1,'glm::GLM_ALIGNED_TYPEDEF(dvec4, aligned_dvec4, 32)'],['../a00364.html#ga8e842371d46842ff8f1813419ba49d0f',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec1, aligned_f64vec1, 8)'],['../a00364.html#ga32814aa0f19316b43134fc25f2aad2b9',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec2, aligned_f64vec2, 16)'],['../a00364.html#gaf3d3bbc1e93909b689123b085e177a14',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec3, aligned_f64vec3, 32)'],['../a00364.html#ga804c654cead1139bd250f90f9bb01fad',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec4, aligned_f64vec4, 32)'],['../a00364.html#gacce4ac532880b8c7469d3c31974420a1',1,'glm::GLM_ALIGNED_TYPEDEF(mat2, aligned_mat2, 16)'],['../a00364.html#ga0498e0e249a6faddaf96aa55d7f81c3b',1,'glm::GLM_ALIGNED_TYPEDEF(mat3, aligned_mat3, 16)'],['../a00364.html#ga7435d87de82a0d652b35dc5b9cc718d5',1,'glm::GLM_ALIGNED_TYPEDEF(mat4, aligned_mat4, 16)'],['../a00364.html#ga719da577361541a4c43a2dd1d0e361e1',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2, 16)'],['../a00364.html#ga6e7ee4f541e1d7db66cd1a224caacafb',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3, 16)'],['../a00364.html#gae5d672d359f2a39f63f98c7975057486',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4, 16)'],['../a00364.html#ga6fa2df037dbfc5fe8c8e0b4db8a34953',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2x2, 16)'],['../a00364.html#ga0743b4f4f69a3227b82ff58f6abbad62',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x3, aligned_fmat2x3, 16)'],['../a00364.html#ga1a76b325fdf70f961d835edd182c63dd',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x4, aligned_fmat2x4, 16)'],['../a00364.html#ga4b4e181cd041ba28c3163e7b8074aef0',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x2, aligned_fmat3x2, 16)'],['../a00364.html#ga27b13f465abc8a40705698145e222c3f',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3x3, 16)'],['../a00364.html#ga2608d19cc275830a6f8c0b6405625a4f',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x4, aligned_fmat3x4, 16)'],['../a00364.html#ga93f09768241358a287c4cca538f1f7e7',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x2, aligned_fmat4x2, 16)'],['../a00364.html#ga7c117e3ecca089e10247b1d41d88aff9',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x3, aligned_fmat4x3, 16)'],['../a00364.html#ga07c75cd04ba42dc37fa3e105f89455c5',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4x4, 16)'],['../a00364.html#ga65ff0d690a34a4d7f46f9b2eb51525ee',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2, 16)'],['../a00364.html#gadd8ddbe2bf65ccede865ba2f510176dc',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3, 16)'],['../a00364.html#gaf18dbff14bf13d3ff540c517659ec045',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4, 16)'],['../a00364.html#ga66339f6139bf7ff19e245beb33f61cc8',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2x2, 16)'],['../a00364.html#ga1558a48b3934011b52612809f443e46d',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x3, aligned_f32mat2x3, 16)'],['../a00364.html#gaa52e5732daa62851627021ad551c7680',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x4, aligned_f32mat2x4, 16)'],['../a00364.html#gac09663c42566bcb58d23c6781ac4e85a',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x2, aligned_f32mat3x2, 16)'],['../a00364.html#ga3f510999e59e1b309113e1d561162b29',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3x3, 16)'],['../a00364.html#ga2c9c94f0c89cd71ce56551db6cf4aaec',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x4, aligned_f32mat3x4, 16)'],['../a00364.html#ga99ce8274c750fbfdf0e70c95946a2875',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x2, aligned_f32mat4x2, 16)'],['../a00364.html#ga9476ef66790239df53dbe66f3989c3b5',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x3, aligned_f32mat4x3, 16)'],['../a00364.html#gacc429b3b0b49921e12713b6d31e14e1d',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4x4, 16)'],['../a00364.html#ga88f6c6fa06e6e64479763e69444669cf',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2, 32)'],['../a00364.html#gaae8e4639c991e64754145ab8e4c32083',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3, 32)'],['../a00364.html#ga6e9094f3feb3b5b49d0f83683a101fde',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4, 32)'],['../a00364.html#gadbd2c639c03de1c3e9591b5a39f65559',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2x2, 32)'],['../a00364.html#gab059d7b9fe2094acc563b7223987499f',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x3, aligned_f64mat2x3, 32)'],['../a00364.html#gabbc811d1c52ed2b8cfcaff1378f75c69',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x4, aligned_f64mat2x4, 32)'],['../a00364.html#ga9ddf5212777734d2fd841a84439f3bdf',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x2, aligned_f64mat3x2, 32)'],['../a00364.html#gad1dda32ed09f94bfcf0a7d8edfb6cf13',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3x3, 32)'],['../a00364.html#ga5875e0fa72f07e271e7931811cbbf31a',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x4, aligned_f64mat3x4, 32)'],['../a00364.html#ga41e82cd6ac07f912ba2a2d45799dcf0d',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x2, aligned_f64mat4x2, 32)'],['../a00364.html#ga0892638d6ba773043b3d63d1d092622e',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x3, aligned_f64mat4x3, 32)'],['../a00364.html#ga912a16432608b822f1e13607529934c1',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4x4, 32)'],['../a00364.html#gafd945a8ea86b042aba410e0560df9a3d',1,'glm::GLM_ALIGNED_TYPEDEF(quat, aligned_quat, 16)'],['../a00364.html#ga19c2ba545d1f2f36bcb7b60c9a228622',1,'glm::GLM_ALIGNED_TYPEDEF(quat, aligned_fquat, 16)'],['../a00364.html#gaabc28c84a3288b697605d4688686f9a9',1,'glm::GLM_ALIGNED_TYPEDEF(dquat, aligned_dquat, 32)'],['../a00364.html#ga1ed8aeb5ca67fade269a46105f1bf273',1,'glm::GLM_ALIGNED_TYPEDEF(f32quat, aligned_f32quat, 16)'],['../a00364.html#ga95cc03b8b475993fa50e05e38e203303',1,'glm::GLM_ALIGNED_TYPEDEF(f64quat, aligned_f64quat, 32)']]], - ['golden_5fratio',['golden_ratio',['../a00290.html#ga748cf8642830657c5b7eae04d0a80899',1,'glm']]], - ['greaterthan',['greaterThan',['../a00299.html#ga8f7fa76e06c417b757ddfd438f3f677b',1,'glm::greaterThan(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00374.html#gadfdb8ea82deca869ddc7e63ea5a63ae4',1,'glm::greaterThan(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], - ['greaterthanequal',['greaterThanEqual',['../a00299.html#ga388cbeba987dae7b5937f742efa49a5a',1,'glm::greaterThanEqual(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00374.html#ga859975f538940f8d18fe62f916b9abd7',1,'glm::greaterThanEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_7.html b/tests/OpenGL/package/glm/doc/api/search/functions_7.html deleted file mode 100644 index 38573293..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_7.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_7.js b/tests/OpenGL/package/glm/doc/api/search/functions_7.js deleted file mode 100644 index 85d4bbea..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_7.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['half_5fpi',['half_pi',['../a00290.html#ga0c36b41d462e45641faf7d7938948bac',1,'glm']]], - ['hermite',['hermite',['../a00358.html#gaa69e143f6374d32f934a8edeaa50bac9',1,'glm']]], - ['highestbitvalue',['highestBitValue',['../a00309.html#ga0dcc8fe7c3d3ad60dea409281efa3d05',1,'glm::highestBitValue(genIUType Value)'],['../a00309.html#ga898ef075ccf809a1e480faab48fe96bf',1,'glm::highestBitValue(vec< L, T, Q > const &value)']]], - ['hsvcolor',['hsvColor',['../a00312.html#ga789802bec2d4fe0f9741c731b4a8a7d8',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_8.html b/tests/OpenGL/package/glm/doc/api/search/functions_8.html deleted file mode 100644 index 088e437f..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_8.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_8.js b/tests/OpenGL/package/glm/doc/api/search/functions_8.js deleted file mode 100644 index fcf43b87..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_8.js +++ /dev/null @@ -1,31 +0,0 @@ -var searchData= -[ - ['identity',['identity',['../a00247.html#ga81696f2b8d1db02ea1aff8da8f269314',1,'glm']]], - ['imulextended',['imulExtended',['../a00370.html#gac0c510a70e852f57594a9141848642e3',1,'glm']]], - ['infiniteperspective',['infinitePerspective',['../a00243.html#ga44fa38a18349450325cae2661bb115ca',1,'glm']]], - ['infiniteperspectivelh',['infinitePerspectiveLH',['../a00243.html#ga3201b30f5b3ea0f933246d87bfb992a9',1,'glm']]], - ['infiniteperspectiverh',['infinitePerspectiveRH',['../a00243.html#ga99672ffe5714ef478dab2437255fe7e1',1,'glm']]], - ['intbitstofloat',['intBitsToFloat',['../a00241.html#ga4fb7c21c2dce064b26fd9ccdaf9adcd4',1,'glm::intBitsToFloat(int const &v)'],['../a00241.html#ga7a0a8291a1cf3e1c2aee33030a1bd7b0',1,'glm::intBitsToFloat(vec< L, int, Q > const &v)']]], - ['intermediate',['intermediate',['../a00352.html#gacc5cd5f3e78de61d141c2355417424de',1,'glm']]], - ['interpolate',['interpolate',['../a00337.html#ga4e67863d150724b10c1ac00972dc958c',1,'glm']]], - ['intersectlinesphere',['intersectLineSphere',['../a00331.html#ga9c68139f3d8a4f3d7fe45f9dbc0de5b7',1,'glm']]], - ['intersectlinetriangle',['intersectLineTriangle',['../a00331.html#ga9d29b9b3acb504d43986502f42740df4',1,'glm']]], - ['intersectrayplane',['intersectRayPlane',['../a00331.html#gad3697a9700ea379739a667ea02573488',1,'glm']]], - ['intersectraysphere',['intersectRaySphere',['../a00331.html#gac88f8cd84c4bcb5b947d56acbbcfa56e',1,'glm::intersectRaySphere(genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, typename genType::value_type const sphereRadiusSquered, typename genType::value_type &intersectionDistance)'],['../a00331.html#gad28c00515b823b579c608aafa1100c1d',1,'glm::intersectRaySphere(genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, const typename genType::value_type sphereRadius, genType &intersectionPosition, genType &intersectionNormal)']]], - ['intersectraytriangle',['intersectRayTriangle',['../a00331.html#ga65bf2c594482f04881c36bc761f9e946',1,'glm']]], - ['inverse',['inverse',['../a00248.html#gab41da854ae678e23e114b598cbca4065',1,'glm::inverse(qua< T, Q > const &q)'],['../a00317.html#ga070f521a953f6461af4ab4cf8ccbf27e',1,'glm::inverse(tdualquat< T, Q > const &q)'],['../a00371.html#gaed509fe8129b01e4f20a6d0de5690091',1,'glm::inverse(mat< C, R, T, Q > const &m)']]], - ['inversesqrt',['inversesqrt',['../a00242.html#ga523dd6bd0ad9f75ae2d24c8e4b017b7a',1,'glm']]], - ['inversetranspose',['inverseTranspose',['../a00295.html#gab213cd0e3ead5f316d583f99d6312008',1,'glm']]], - ['iround',['iround',['../a00292.html#ga57824268ebe13a922f1d69a5d37f637f',1,'glm']]], - ['iscompnull',['isCompNull',['../a00368.html#gaf6ec1688eab7442fe96fe4941d5d4e76',1,'glm']]], - ['isdenormal',['isdenormal',['../a00314.html#ga74aa7c7462245d83bd5a9edf9c6c2d91',1,'glm']]], - ['isfinite',['isfinite',['../a00315.html#gaf4b04dcd3526996d68c1bfe17bfc8657',1,'glm::isfinite(genType const &x)'],['../a00315.html#gac3b12b8ac3014418fe53c299478b6603',1,'glm::isfinite(const vec< 1, T, Q > &x)'],['../a00315.html#ga8e76dc3e406ce6a4155c2b12a2e4b084',1,'glm::isfinite(const vec< 2, T, Q > &x)'],['../a00315.html#ga929ef27f896d902c1771a2e5e150fc97',1,'glm::isfinite(const vec< 3, T, Q > &x)'],['../a00315.html#ga19925badbe10ce61df1d0de00be0b5ad',1,'glm::isfinite(const vec< 4, T, Q > &x)']]], - ['isidentity',['isIdentity',['../a00340.html#gaee935d145581c82e82b154ccfd78ad91',1,'glm']]], - ['isinf',['isinf',['../a00241.html#ga2885587c23a106301f20443896365b62',1,'glm::isinf(vec< L, T, Q > const &x)'],['../a00248.html#ga45722741ea266b4e861938b365c5f362',1,'glm::isinf(qua< T, Q > const &x)']]], - ['ismultiple',['isMultiple',['../a00261.html#gaec593d33956a8fe43f78fccc63ddde9a',1,'glm::isMultiple(genIUType v, genIUType Multiple)'],['../a00274.html#ga354caf634ef333d9cb4844407416256a',1,'glm::isMultiple(vec< L, T, Q > const &v, T Multiple)'],['../a00274.html#gabb4360e38c0943d8981ba965dead519d',1,'glm::isMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], - ['isnan',['isnan',['../a00241.html#ga29ef934c00306490de837b4746b4e14d',1,'glm::isnan(vec< L, T, Q > const &x)'],['../a00248.html#ga1bb55f8963616502e96dc564384d8a03',1,'glm::isnan(qua< T, Q > const &x)']]], - ['isnormalized',['isNormalized',['../a00340.html#gae785af56f47ce220a1609f7f84aa077a',1,'glm::isNormalized(mat< 2, 2, T, Q > const &m, T const &epsilon)'],['../a00340.html#gaa068311695f28f5f555f5f746a6a66fb',1,'glm::isNormalized(mat< 3, 3, T, Q > const &m, T const &epsilon)'],['../a00340.html#ga4d9bb4d0465df49fedfad79adc6ce4ad',1,'glm::isNormalized(mat< 4, 4, T, Q > const &m, T const &epsilon)'],['../a00368.html#gac3c974f459fd75453134fad7ae89a39e',1,'glm::isNormalized(vec< L, T, Q > const &v, T const &epsilon)']]], - ['isnull',['isNull',['../a00340.html#ga9790ec222ce948c0ff0d8ce927340dba',1,'glm::isNull(mat< 2, 2, T, Q > const &m, T const &epsilon)'],['../a00340.html#gae14501c6b14ccda6014cc5350080103d',1,'glm::isNull(mat< 3, 3, T, Q > const &m, T const &epsilon)'],['../a00340.html#ga2b98bb30a9fefa7cdea5f1dcddba677b',1,'glm::isNull(mat< 4, 4, T, Q > const &m, T const &epsilon)'],['../a00368.html#gab4a3637dbcb4bb42dc55caea7a1e0495',1,'glm::isNull(vec< L, T, Q > const &v, T const &epsilon)']]], - ['isorthogonal',['isOrthogonal',['../a00340.html#ga58f3289f74dcab653387dd78ad93ca40',1,'glm']]], - ['ispoweroftwo',['isPowerOfTwo',['../a00261.html#gadf491730354aa7da67fbe23d4d688763',1,'glm::isPowerOfTwo(genIUType v)'],['../a00274.html#gabf2b61ded7049bcb13e25164f832a290',1,'glm::isPowerOfTwo(vec< L, T, Q > const &v)']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_9.html b/tests/OpenGL/package/glm/doc/api/search/functions_9.html deleted file mode 100644 index 61de44ad..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_9.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_9.js b/tests/OpenGL/package/glm/doc/api/search/functions_9.js deleted file mode 100644 index a62d9c3f..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_9.js +++ /dev/null @@ -1,28 +0,0 @@ -var searchData= -[ - ['l1norm',['l1Norm',['../a00343.html#gae2fc0b2aa967bebfd6a244700bff6997',1,'glm::l1Norm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00343.html#ga1a7491e2037ceeb37f83ce41addfc0be',1,'glm::l1Norm(vec< 3, T, Q > const &v)']]], - ['l2norm',['l2Norm',['../a00343.html#ga41340b2ef40a9307ab0f137181565168',1,'glm::l2Norm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00343.html#gae288bde8f0e41fb4ed62e65137b18cba',1,'glm::l2Norm(vec< 3, T, Q > const &x)']]], - ['ldexp',['ldexp',['../a00241.html#gac3010e0a0c35a1b514540f2fb579c58c',1,'glm']]], - ['lefthanded',['leftHanded',['../a00328.html#ga6f1bad193b9a3b048543d1935cf04dd3',1,'glm']]], - ['length',['length',['../a00254.html#gab703732449be6c7199369b3f9a91ed38',1,'glm::length(qua< T, Q > const &q)'],['../a00279.html#ga0cdabbb000834d994a1d6dc56f8f5263',1,'glm::length(vec< L, T, Q > const &x)']]], - ['length2',['length2',['../a00343.html#ga8d1789651050adb7024917984b41c3de',1,'glm::length2(vec< L, T, Q > const &x)'],['../a00352.html#ga58a609b1b8ab965f5df2702e8ca4e75b',1,'glm::length2(qua< T, Q > const &q)']]], - ['lerp',['lerp',['../a00248.html#ga6033dc0741051fa463a0a147ba29f293',1,'glm::lerp(qua< T, Q > const &x, qua< T, Q > const &y, T a)'],['../a00315.html#ga5494ba3a95ea6594c86fc75236886864',1,'glm::lerp(T x, T y, T a)'],['../a00315.html#gaa551c0a0e16d2d4608e49f7696df897f',1,'glm::lerp(const vec< 2, T, Q > &x, const vec< 2, T, Q > &y, T a)'],['../a00315.html#ga44a8b5fd776320f1713413dec959b32a',1,'glm::lerp(const vec< 3, T, Q > &x, const vec< 3, T, Q > &y, T a)'],['../a00315.html#ga89ac8e000199292ec7875519d27e214b',1,'glm::lerp(const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, T a)'],['../a00315.html#gaf68de5baf72d16135368b8ef4f841604',1,'glm::lerp(const vec< 2, T, Q > &x, const vec< 2, T, Q > &y, const vec< 2, T, Q > &a)'],['../a00315.html#ga4ae1a616c8540a2649eab8e0cd051bb3',1,'glm::lerp(const vec< 3, T, Q > &x, const vec< 3, T, Q > &y, const vec< 3, T, Q > &a)'],['../a00315.html#gab5477ab69c40de4db5d58d3359529724',1,'glm::lerp(const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, const vec< 4, T, Q > &a)'],['../a00317.html#gace8380112d16d33f520839cb35a4d173',1,'glm::lerp(tdualquat< T, Q > const &x, tdualquat< T, Q > const &y, T const &a)']]], - ['lessthan',['lessThan',['../a00299.html#gad091a2d22c8acfebfa92bcfca1dfe9c4',1,'glm::lessThan(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00374.html#gae90ed1592c395f93e3f3dfce6b2f39c6',1,'glm::lessThan(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], - ['lessthanequal',['lessThanEqual',['../a00299.html#gac00012eea281800d2403f4ea8443134d',1,'glm::lessThanEqual(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00374.html#gab0bdafc019d227257ff73fb5bcca1718',1,'glm::lessThanEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], - ['levels',['levels',['../a00361.html#gaa8c377f4e63486db4fa872d77880da73',1,'glm']]], - ['lineargradient',['linearGradient',['../a00327.html#ga849241df1e55129b8ce9476200307419',1,'glm']]], - ['linearinterpolation',['linearInterpolation',['../a00318.html#ga290c3e47cb0a49f2e8abe90b1872b649',1,'glm']]], - ['linearrand',['linearRand',['../a00300.html#ga04e241ab88374a477a2c2ceadd2fa03d',1,'glm::linearRand(genType Min, genType Max)'],['../a00300.html#ga94731130c298a9ff5e5025fdee6d97a0',1,'glm::linearRand(vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)']]], - ['lmaxnorm',['lMaxNorm',['../a00343.html#gad58a8231fc32e38104a9e1c4d3c0cb64',1,'glm::lMaxNorm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00343.html#ga6968a324837a8e899396d44de23d5aae',1,'glm::lMaxNorm(vec< 3, T, Q > const &x)']]], - ['ln_5fln_5ftwo',['ln_ln_two',['../a00290.html#gaca94292c839ed31a405ab7a81ae7e850',1,'glm']]], - ['ln_5ften',['ln_ten',['../a00290.html#gaf97ebc6c059ffd788e6c4946f71ef66c',1,'glm']]], - ['ln_5ftwo',['ln_two',['../a00290.html#ga24f4d27765678116f41a2f336ab7975c',1,'glm']]], - ['log',['log',['../a00242.html#ga918c9f3fd086ce20e6760c903bd30fa9',1,'glm::log(vec< L, T, Q > const &v)'],['../a00256.html#gaa5f7b20e296671b16ce25a2ab7ad5473',1,'glm::log(qua< T, Q > const &q)'],['../a00333.html#ga60a7b0a401da660869946b2b77c710c9',1,'glm::log(genType const &x, genType const &base)']]], - ['log2',['log2',['../a00242.html#ga82831c7d9cca777cebedfe03a19c8d75',1,'glm::log2(vec< L, T, Q > const &v)'],['../a00292.html#ga9bd682e74bfacb005c735305207ec417',1,'glm::log2(genIUType x)']]], - ['lookat',['lookAt',['../a00247.html#gaa64aa951a0e99136bba9008d2b59c78e',1,'glm']]], - ['lookatlh',['lookAtLH',['../a00247.html#gab2c09e25b0a16d3a9d89cc85bbae41b0',1,'glm']]], - ['lookatrh',['lookAtRH',['../a00247.html#gacfa12c8889c754846bc20c65d9b5c701',1,'glm']]], - ['lowestbitvalue',['lowestBitValue',['../a00309.html#ga2ff6568089f3a9b67f5c30918855fc6f',1,'glm']]], - ['luminosity',['luminosity',['../a00312.html#gad028e0a4f1a9c812b39439b746295b34',1,'glm']]], - ['lxnorm',['lxNorm',['../a00343.html#gacad23d30497eb16f67709f2375d1f66a',1,'glm::lxNorm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, unsigned int Depth)'],['../a00343.html#gac61b6d81d796d6eb4d4183396a19ab91',1,'glm::lxNorm(vec< 3, T, Q > const &x, unsigned int Depth)']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_a.html b/tests/OpenGL/package/glm/doc/api/search/functions_a.html deleted file mode 100644 index a46b662e..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_a.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_a.js b/tests/OpenGL/package/glm/doc/api/search/functions_a.js deleted file mode 100644 index 6cd74286..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_a.js +++ /dev/null @@ -1,36 +0,0 @@ -var searchData= -[ - ['make_5fmat2',['make_mat2',['../a00305.html#ga04409e74dc3da251d2501acf5b4b546c',1,'glm']]], - ['make_5fmat2x2',['make_mat2x2',['../a00305.html#gae49e1c7bcd5abec74d1c34155031f663',1,'glm']]], - ['make_5fmat2x3',['make_mat2x3',['../a00305.html#ga21982104164789cf8985483aaefc25e8',1,'glm']]], - ['make_5fmat2x4',['make_mat2x4',['../a00305.html#ga078b862c90b0e9a79ed43a58997d8388',1,'glm']]], - ['make_5fmat3',['make_mat3',['../a00305.html#ga611ee7c4d4cadfc83a8fa8e1d10a170f',1,'glm']]], - ['make_5fmat3x2',['make_mat3x2',['../a00305.html#ga27a24e121dc39e6857620e0f85b6e1a8',1,'glm']]], - ['make_5fmat3x3',['make_mat3x3',['../a00305.html#gaf2e8337b15c3362aaeb6e5849e1c0536',1,'glm']]], - ['make_5fmat3x4',['make_mat3x4',['../a00305.html#ga05dd66232aedb993e3b8e7b35eaf932b',1,'glm']]], - ['make_5fmat4',['make_mat4',['../a00305.html#gae7bcedb710d1446c87fd1fc93ed8ee9a',1,'glm']]], - ['make_5fmat4x2',['make_mat4x2',['../a00305.html#ga8b34c9b25bf3310d8ff9c828c7e2d97c',1,'glm']]], - ['make_5fmat4x3',['make_mat4x3',['../a00305.html#ga0330bf6640092d7985fac92927bbd42b',1,'glm']]], - ['make_5fmat4x4',['make_mat4x4',['../a00305.html#ga8f084be30e404844bfbb4a551ac2728c',1,'glm']]], - ['make_5fquat',['make_quat',['../a00305.html#ga58110d7d81cf7d029e2bab7f8cd9b246',1,'glm']]], - ['make_5fvec1',['make_vec1',['../a00305.html#ga4135f03f3049f0a4eb76545c4967957c',1,'glm::make_vec1(vec< 1, T, Q > const &v)'],['../a00305.html#ga13c92b81e55f201b052a6404d57da220',1,'glm::make_vec1(vec< 2, T, Q > const &v)'],['../a00305.html#ga3c23cc74086d361e22bbd5e91a334e03',1,'glm::make_vec1(vec< 3, T, Q > const &v)'],['../a00305.html#ga6af06bb60d64ca8bcd169e3c93bc2419',1,'glm::make_vec1(vec< 4, T, Q > const &v)']]], - ['make_5fvec2',['make_vec2',['../a00305.html#ga8476d0e6f1b9b4a6193cc25f59d8a896',1,'glm::make_vec2(vec< 1, T, Q > const &v)'],['../a00305.html#gae54bd325a08ad26edf63929201adebc7',1,'glm::make_vec2(vec< 2, T, Q > const &v)'],['../a00305.html#ga0084fea4694cf47276e9cccbe7b1015a',1,'glm::make_vec2(vec< 3, T, Q > const &v)'],['../a00305.html#ga2b81f71f3a222fe5bba81e3983751249',1,'glm::make_vec2(vec< 4, T, Q > const &v)'],['../a00305.html#ga81253cf7b0ebfbb1e70540c5774e6824',1,'glm::make_vec2(T const *const ptr)']]], - ['make_5fvec3',['make_vec3',['../a00305.html#ga9147e4b3a5d0f4772edfbfd179d7ea0b',1,'glm::make_vec3(vec< 1, T, Q > const &v)'],['../a00305.html#ga482b60a842a5b154d3eed392417a9511',1,'glm::make_vec3(vec< 2, T, Q > const &v)'],['../a00305.html#gacd57046034df557b8b1c457f58613623',1,'glm::make_vec3(vec< 3, T, Q > const &v)'],['../a00305.html#ga8b589ed7d41a298b516d2a69169248f1',1,'glm::make_vec3(vec< 4, T, Q > const &v)'],['../a00305.html#gad9e0d36ff489cb30c65ad1fa40351651',1,'glm::make_vec3(T const *const ptr)']]], - ['make_5fvec4',['make_vec4',['../a00305.html#ga600cb97f70c5d50d3a4a145e1cafbf37',1,'glm::make_vec4(vec< 1, T, Q > const &v)'],['../a00305.html#gaa9bd116caf28196fd1cf00b278286fa7',1,'glm::make_vec4(vec< 2, T, Q > const &v)'],['../a00305.html#ga4036328ba4702c74cbdfad1fc03d1b8f',1,'glm::make_vec4(vec< 3, T, Q > const &v)'],['../a00305.html#gaa95cb15732f708f613e65a0578895ae5',1,'glm::make_vec4(vec< 4, T, Q > const &v)'],['../a00305.html#ga63f576518993efc22a969f18f80e29bb',1,'glm::make_vec4(T const *const ptr)']]], - ['mask',['mask',['../a00288.html#gad7eba518a0b71662114571ee76939f8a',1,'glm::mask(genIUType Bits)'],['../a00288.html#ga2e64e3b922a296033b825311e7f5fff1',1,'glm::mask(vec< L, T, Q > const &v)']]], - ['mat2x4_5fcast',['mat2x4_cast',['../a00317.html#gae99d143b37f9cad4cd9285571aab685a',1,'glm']]], - ['mat3_5fcast',['mat3_cast',['../a00299.html#ga333ab70047fbe4132406100c292dbc89',1,'glm']]], - ['mat3x4_5fcast',['mat3x4_cast',['../a00317.html#gaf59f5bb69620d2891c3795c6f2639179',1,'glm']]], - ['mat4_5fcast',['mat4_cast',['../a00299.html#ga1113212d9bdefc2e31ad40e5bbb506f3',1,'glm']]], - ['matrixcompmult',['matrixCompMult',['../a00371.html#gaf14569404c779fedca98d0b9b8e58c1f',1,'glm']]], - ['matrixcross3',['matrixCross3',['../a00334.html#ga5802386bb4c37b3332a3b6fd8b6960ff',1,'glm']]], - ['matrixcross4',['matrixCross4',['../a00334.html#ga20057fff91ddafa102934adb25458cde',1,'glm']]], - ['max',['max',['../a00241.html#gae02d42887fc5570451f880e3c624b9ac',1,'glm::max(genType x, genType y)'],['../a00241.html#ga03e45d6e60d1c36edb00c52edeea0f31',1,'glm::max(vec< L, T, Q > const &x, T y)'],['../a00241.html#gac1fec0c3303b572a6d4697a637213870',1,'glm::max(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00258.html#gaa20839d9ab14514f8966f69877ea0de8',1,'glm::max(T a, T b, T c)'],['../a00258.html#ga2274b5e75ed84b0b1e50d8d22f1f2f67',1,'glm::max(T a, T b, T c, T d)'],['../a00267.html#gaa45d34f6a2906f8bf58ab2ba5429234d',1,'glm::max(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z)'],['../a00267.html#ga94d42b8da2b4ded5ddf7504fbdc6bf10',1,'glm::max(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z, vec< L, T, Q > const &w)'],['../a00321.html#ga04991ccb9865c4c4e58488cfb209ce69',1,'glm::max(T const &x, T const &y, T const &z)'],['../a00321.html#gae1b7bbe5c91de4924835ea3e14530744',1,'glm::max(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)'],['../a00321.html#gaf832e9d4ab4826b2dda2fda25935a3a4',1,'glm::max(C< T > const &x, C< T > const &y, C< T > const &z)'],['../a00321.html#ga78e04a0cef1c4863fcae1a2130500d87',1,'glm::max(T const &x, T const &y, T const &z, T const &w)'],['../a00321.html#ga7cca8b53cfda402040494cdf40fbdf4a',1,'glm::max(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)'],['../a00321.html#gaacffbc466c2d08c140b181e7fd8a4858',1,'glm::max(C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)']]], - ['min',['min',['../a00241.html#ga6cf8098827054a270ee36b18e30d471d',1,'glm::min(genType x, genType y)'],['../a00241.html#gaa7d015eba1f9f48519251f4abe69b14d',1,'glm::min(vec< L, T, Q > const &x, T y)'],['../a00241.html#ga31f49ef9e7d1beb003160c5e009b0c48',1,'glm::min(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00258.html#ga420b37cbd98c395b93dab0278305cd46',1,'glm::min(T a, T b, T c)'],['../a00258.html#ga0d24a9acb8178df77e4aff90cbb2010d',1,'glm::min(T a, T b, T c, T d)'],['../a00267.html#ga3cd83d80fd4f433d8e333593ec56dddf',1,'glm::min(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)'],['../a00267.html#gab66920ed064ab518d6859c5a889c4be4',1,'glm::min(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)'],['../a00321.html#ga713d3f9b3e76312c0d314e0c8611a6a6',1,'glm::min(T const &x, T const &y, T const &z)'],['../a00321.html#ga74d1a96e7cdbac40f6d35142d3bcbbd4',1,'glm::min(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)'],['../a00321.html#ga42b5c3fc027fd3d9a50d2ccc9126d9f0',1,'glm::min(C< T > const &x, C< T > const &y, C< T > const &z)'],['../a00321.html#ga95466987024d03039607f09e69813d69',1,'glm::min(T const &x, T const &y, T const &z, T const &w)'],['../a00321.html#ga4fe35dd31dd0c45693c9b60b830b8d47',1,'glm::min(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)'],['../a00321.html#ga7471ea4159eed8dd9ea4ac5d46c2fead',1,'glm::min(C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)']]], - ['mirrorclamp',['mirrorClamp',['../a00369.html#gaa6856a0a048d2749252848da35e10c8b',1,'glm']]], - ['mirrorrepeat',['mirrorRepeat',['../a00369.html#ga16a89b0661b60d5bea85137bbae74d73',1,'glm']]], - ['mix',['mix',['../a00241.html#ga8e93f374aae27d1a88b921860351f8d4',1,'glm::mix(genTypeT x, genTypeT y, genTypeU a)'],['../a00248.html#gafbfe587b8da11fb89a30c3d67dd5ccc2',1,'glm::mix(qua< T, Q > const &x, qua< T, Q > const &y, T a)']]], - ['mixedproduct',['mixedProduct',['../a00342.html#gab3c6048fbb67f7243b088a4fee48d020',1,'glm']]], - ['mod',['mod',['../a00241.html#ga9b197a452cd52db3c5c18bac72bd7798',1,'glm::mod(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00330.html#gaabfbb41531ab7ad8d06fc176edfba785',1,'glm::mod(int x, int y)'],['../a00330.html#ga63fc8d63e7da1706439233b386ba8b6f',1,'glm::mod(uint x, uint y)']]], - ['modf',['modf',['../a00241.html#ga85e33f139b8db1b39b590a5713b9e679',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_b.html b/tests/OpenGL/package/glm/doc/api/search/functions_b.html deleted file mode 100644 index 3b49416d..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_b.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_b.js b/tests/OpenGL/package/glm/doc/api/search/functions_b.js deleted file mode 100644 index 827bbd43..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_b.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['nextmultiple',['nextMultiple',['../a00261.html#gab770a3835c44c8a6fd225be4f4e6b317',1,'glm::nextMultiple(genIUType v, genIUType Multiple)'],['../a00274.html#gace38d00601cbf49cd4dc03f003ab42b7',1,'glm::nextMultiple(vec< L, T, Q > const &v, T Multiple)'],['../a00274.html#gacda365edad320c7aff19cc283a3b8ca2',1,'glm::nextMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], - ['nextpoweroftwo',['nextPowerOfTwo',['../a00261.html#ga3a37c2f2fd347886c9af6a3ca3db04dc',1,'glm::nextPowerOfTwo(genIUType v)'],['../a00274.html#gabba67f8aac9915e10fca727277274502',1,'glm::nextPowerOfTwo(vec< L, T, Q > const &v)']]], - ['nlz',['nlz',['../a00330.html#ga78dff8bdb361bf0061194c93e003d189',1,'glm']]], - ['normalize',['normalize',['../a00254.html#gabf30e3263fffe8dcc6659aea76ae8927',1,'glm::normalize(qua< T, Q > const &q)'],['../a00279.html#ga3b8d3dcae77870781392ed2902cce597',1,'glm::normalize(vec< L, T, Q > const &x)'],['../a00317.html#ga299b8641509606b1958ffa104a162cfe',1,'glm::normalize(tdualquat< T, Q > const &q)']]], - ['normalizedot',['normalizeDot',['../a00345.html#gacb140a2b903115d318c8b0a2fb5a5daa',1,'glm']]], - ['not_5f',['not_',['../a00374.html#ga610fcd175791fd246e328ffee10dbf1e',1,'glm']]], - ['notequal',['notEqual',['../a00246.html#ga8504f18a7e2bf315393032c2137dad83',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)'],['../a00246.html#ga29071147d118569344d10944b7d5c378',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, T epsilon)'],['../a00246.html#gad7959e14fbc35b4ed2617daf4d67f6cd',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, T, Q > const &epsilon)'],['../a00246.html#gaa1cd7fc228ef6e26c73583fd0d9c6552',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, int ULPs)'],['../a00246.html#gaa5517341754149ffba742d230afd1f32',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, int, Q > const &ULPs)'],['../a00255.html#gab441cee0de5867a868f3a586ee68cfe1',1,'glm::notEqual(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00255.html#ga5117a44c1bf21af857cd23e44a96d313',1,'glm::notEqual(qua< T, Q > const &x, qua< T, Q > const &y, T epsilon)'],['../a00275.html#ga4a99cc41341567567a608719449c1fac',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T epsilon)'],['../a00275.html#ga417cf51304359db18e819dda9bce5767',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &epsilon)'],['../a00275.html#ga8b5c2c3f83422ae5b71fa960d03b0339',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, int ULPs)'],['../a00275.html#ga0b15ffe32987a6029b14398eb0def01a',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)'],['../a00374.html#ga17c19dc1b76cd5aef63e9e7ff3aa3c27',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_c.html b/tests/OpenGL/package/glm/doc/api/search/functions_c.html deleted file mode 100644 index 57c64555..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_c.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_c.js b/tests/OpenGL/package/glm/doc/api/search/functions_c.js deleted file mode 100644 index 0b832b7b..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_c.js +++ /dev/null @@ -1,24 +0,0 @@ -var searchData= -[ - ['one',['one',['../a00290.html#ga39c2fb227631ca25894326529bdd1ee5',1,'glm']]], - ['one_5fover_5fpi',['one_over_pi',['../a00290.html#ga555150da2b06d23c8738981d5013e0eb',1,'glm']]], - ['one_5fover_5froot_5ftwo',['one_over_root_two',['../a00290.html#ga788fa23a0939bac4d1d0205fb4f35818',1,'glm']]], - ['one_5fover_5ftwo_5fpi',['one_over_two_pi',['../a00290.html#ga7c922b427986cbb2e4c6ac69874eefbc',1,'glm']]], - ['openbounded',['openBounded',['../a00314.html#gafd303042ba2ba695bf53b2315f53f93f',1,'glm']]], - ['orientate2',['orientate2',['../a00319.html#gae16738a9f1887cf4e4db6a124637608d',1,'glm']]], - ['orientate3',['orientate3',['../a00319.html#ga7ca98668a5786f19c7b38299ebbc9b4c',1,'glm::orientate3(T const &angle)'],['../a00319.html#ga7238c8e15c7720e3ca6a45ab151eeabb',1,'glm::orientate3(vec< 3, T, Q > const &angles)']]], - ['orientate4',['orientate4',['../a00319.html#ga4a044653f71a4ecec68e0b623382b48a',1,'glm']]], - ['orientation',['orientation',['../a00356.html#ga1a32fceb71962e6160e8af295c91930a',1,'glm']]], - ['orientedangle',['orientedAngle',['../a00367.html#ga9556a803dce87fe0f42fdabe4ebba1d5',1,'glm::orientedAngle(vec< 2, T, Q > const &x, vec< 2, T, Q > const &y)'],['../a00367.html#ga706fce3d111f485839756a64f5a48553',1,'glm::orientedAngle(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, vec< 3, T, Q > const &ref)']]], - ['ortho',['ortho',['../a00243.html#gae5b6b40ed882cd56cd7cb97701909c06',1,'glm::ortho(T left, T right, T bottom, T top)'],['../a00243.html#ga6615d8a9d39432e279c4575313ecb456',1,'glm::ortho(T left, T right, T bottom, T top, T zNear, T zFar)']]], - ['ortholh',['orthoLH',['../a00243.html#gad122a79aadaa5529cec4ac197203db7f',1,'glm']]], - ['ortholh_5fno',['orthoLH_NO',['../a00243.html#ga526416735ea7c5c5cd255bf99d051bd8',1,'glm']]], - ['ortholh_5fzo',['orthoLH_ZO',['../a00243.html#gab37ac3eec8d61f22fceda7775e836afa',1,'glm']]], - ['orthono',['orthoNO',['../a00243.html#gab219d28a8f178d4517448fcd6395a073',1,'glm']]], - ['orthonormalize',['orthonormalize',['../a00348.html#ga4cab5d698e6e2eccea30c8e81c74371f',1,'glm::orthonormalize(mat< 3, 3, T, Q > const &m)'],['../a00348.html#gac3bc7ef498815026bc3d361ae0b7138e',1,'glm::orthonormalize(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)']]], - ['orthorh',['orthoRH',['../a00243.html#ga16264c9b838edeb9dd1de7a1010a13a4',1,'glm']]], - ['orthorh_5fno',['orthoRH_NO',['../a00243.html#gaa2f7a1373170bf0a4a2ddef9b0706780',1,'glm']]], - ['orthorh_5fzo',['orthoRH_ZO',['../a00243.html#ga9aea2e515b08fd7dce47b7b6ec34d588',1,'glm']]], - ['orthozo',['orthoZO',['../a00243.html#gaea11a70817af2c0801c869dea0b7a5bc',1,'glm']]], - ['outerproduct',['outerProduct',['../a00371.html#gac29fb7bae75a8e4c1b74cbbf85520e50',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_d.html b/tests/OpenGL/package/glm/doc/api/search/functions_d.html deleted file mode 100644 index 58b3d31f..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_d.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_d.js b/tests/OpenGL/package/glm/doc/api/search/functions_d.js deleted file mode 100644 index 06f07e20..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_d.js +++ /dev/null @@ -1,83 +0,0 @@ -var searchData= -[ - ['packdouble2x32',['packDouble2x32',['../a00372.html#gaa916ca426b2bb0343ba17e3753e245c2',1,'glm']]], - ['packf2x11_5f1x10',['packF2x11_1x10',['../a00298.html#ga4944ad465ff950e926d49621f916c78d',1,'glm']]], - ['packf3x9_5fe1x5',['packF3x9_E1x5',['../a00298.html#ga3f648fc205467792dc6d8c59c748f8a6',1,'glm']]], - ['packhalf',['packHalf',['../a00298.html#ga2d8bbce673ebc04831c1fb05c47f5251',1,'glm']]], - ['packhalf1x16',['packHalf1x16',['../a00298.html#ga43f2093b6ff192a79058ff7834fc3528',1,'glm']]], - ['packhalf2x16',['packHalf2x16',['../a00372.html#ga20f134b07db3a3d3a38efb2617388c92',1,'glm']]], - ['packhalf4x16',['packHalf4x16',['../a00298.html#gafe2f7b39caf8f5ec555e1c059ec530e6',1,'glm']]], - ['packi3x10_5f1x2',['packI3x10_1x2',['../a00298.html#ga06ecb6afb902dba45419008171db9023',1,'glm']]], - ['packint2x16',['packInt2x16',['../a00298.html#ga3644163cf3a47bf1d4af1f4b03013a7e',1,'glm']]], - ['packint2x32',['packInt2x32',['../a00298.html#gad1e4c8a9e67d86b61a6eec86703a827a',1,'glm']]], - ['packint2x8',['packInt2x8',['../a00298.html#ga8884b1f2292414f36d59ef3be5d62914',1,'glm']]], - ['packint4x16',['packInt4x16',['../a00298.html#ga1989f093a27ae69cf9207145be48b3d7',1,'glm']]], - ['packint4x8',['packInt4x8',['../a00298.html#gaf2238401d5ce2aaade1a44ba19709072',1,'glm']]], - ['packrgbm',['packRGBM',['../a00298.html#ga0466daf4c90f76cc64b3f105ce727295',1,'glm']]], - ['packsnorm',['packSnorm',['../a00298.html#gaa54b5855a750d6aeb12c1c902f5939b8',1,'glm']]], - ['packsnorm1x16',['packSnorm1x16',['../a00298.html#gab22f8bcfdb5fc65af4701b25f143c1af',1,'glm']]], - ['packsnorm1x8',['packSnorm1x8',['../a00298.html#gae3592e0795e62aaa1865b3a10496a7a1',1,'glm']]], - ['packsnorm2x16',['packSnorm2x16',['../a00372.html#ga977ab172da5494e5ac63e952afacfbe2',1,'glm']]], - ['packsnorm2x8',['packSnorm2x8',['../a00298.html#ga6be3cfb2cce3702f03e91bbeb5286d7e',1,'glm']]], - ['packsnorm3x10_5f1x2',['packSnorm3x10_1x2',['../a00298.html#gab997545661877d2c7362a5084d3897d3',1,'glm']]], - ['packsnorm4x16',['packSnorm4x16',['../a00298.html#ga358943934d21da947d5bcc88c2ab7832',1,'glm']]], - ['packsnorm4x8',['packSnorm4x8',['../a00372.html#ga85e8f17627516445026ab7a9c2e3531a',1,'glm']]], - ['packu3x10_5f1x2',['packU3x10_1x2',['../a00298.html#gada3d88d59f0f458f9c51a9fd359a4bc0',1,'glm']]], - ['packuint2x16',['packUint2x16',['../a00298.html#ga5eecc9e8cbaf51ac6cf57501e670ee19',1,'glm']]], - ['packuint2x32',['packUint2x32',['../a00298.html#gaa864081097b86e83d8e4a4d79c382b22',1,'glm']]], - ['packuint2x8',['packUint2x8',['../a00298.html#ga3c3c9fb53ae7823b10fa083909357590',1,'glm']]], - ['packuint4x16',['packUint4x16',['../a00298.html#ga2ceb62cca347d8ace42ee90317a3f1f9',1,'glm']]], - ['packuint4x8',['packUint4x8',['../a00298.html#gaa0fe2f09aeb403cd66c1a062f58861ab',1,'glm']]], - ['packunorm',['packUnorm',['../a00298.html#gaccd3f27e6ba5163eb7aa9bc8ff96251a',1,'glm']]], - ['packunorm1x16',['packUnorm1x16',['../a00298.html#ga9f82737bf2a44bedff1d286b76837886',1,'glm']]], - ['packunorm1x5_5f1x6_5f1x5',['packUnorm1x5_1x6_1x5',['../a00298.html#ga768e0337dd6246773f14aa0a421fe9a8',1,'glm']]], - ['packunorm1x8',['packUnorm1x8',['../a00298.html#ga4b2fa60df3460403817d28b082ee0736',1,'glm']]], - ['packunorm2x16',['packUnorm2x16',['../a00372.html#ga0e2d107039fe608a209497af867b85fb',1,'glm']]], - ['packunorm2x3_5f1x2',['packUnorm2x3_1x2',['../a00298.html#ga7f9abdb50f9be1aa1c14912504a0d98d',1,'glm']]], - ['packunorm2x4',['packUnorm2x4',['../a00298.html#gab6bbd5be3b8e6db538ecb33a7844481c',1,'glm']]], - ['packunorm2x8',['packUnorm2x8',['../a00298.html#ga9a666b1c688ab54100061ed06526de6e',1,'glm']]], - ['packunorm3x10_5f1x2',['packUnorm3x10_1x2',['../a00298.html#ga8a1ee625d2707c60530fb3fca2980b19',1,'glm']]], - ['packunorm3x5_5f1x1',['packUnorm3x5_1x1',['../a00298.html#gaec4112086d7fb133bea104a7c237de52',1,'glm']]], - ['packunorm4x16',['packUnorm4x16',['../a00298.html#ga1f63c264e7ab63264e2b2a99fd393897',1,'glm']]], - ['packunorm4x4',['packUnorm4x4',['../a00298.html#gad3e7e3ce521513584a53aedc5f9765c1',1,'glm']]], - ['packunorm4x8',['packUnorm4x8',['../a00372.html#gaf7d2f7341a9eeb4a436929d6f9ad08f2',1,'glm']]], - ['perlin',['perlin',['../a00297.html#ga1e043ce3b51510e9bc4469227cefc38a',1,'glm::perlin(vec< L, T, Q > const &p)'],['../a00297.html#gac270edc54c5fc52f5985a45f940bb103',1,'glm::perlin(vec< L, T, Q > const &p, vec< L, T, Q > const &rep)']]], - ['perp',['perp',['../a00349.html#ga264cfc4e180cf9b852e943b35089003c',1,'glm']]], - ['perspective',['perspective',['../a00243.html#ga747c8cf99458663dd7ad1bb3a2f07787',1,'glm']]], - ['perspectivefov',['perspectiveFov',['../a00243.html#gaebd02240fd36e85ad754f02ddd9a560d',1,'glm']]], - ['perspectivefovlh',['perspectiveFovLH',['../a00243.html#ga6aebe16c164bd8e52554cbe0304ef4aa',1,'glm']]], - ['perspectivefovlh_5fno',['perspectiveFovLH_NO',['../a00243.html#gad18a4495b77530317327e8d466488c1a',1,'glm']]], - ['perspectivefovlh_5fzo',['perspectiveFovLH_ZO',['../a00243.html#gabdd37014f529e25b2fa1b3ba06c10d5c',1,'glm']]], - ['perspectivefovno',['perspectiveFovNO',['../a00243.html#gaf30e7bd3b1387a6776433dd5383e6633',1,'glm']]], - ['perspectivefovrh',['perspectiveFovRH',['../a00243.html#gaf32bf563f28379c68554a44ee60c6a85',1,'glm']]], - ['perspectivefovrh_5fno',['perspectiveFovRH_NO',['../a00243.html#ga257b733ff883c9a065801023cf243eb2',1,'glm']]], - ['perspectivefovrh_5fzo',['perspectiveFovRH_ZO',['../a00243.html#ga7dcbb25331676f5b0795aced1a905c44',1,'glm']]], - ['perspectivefovzo',['perspectiveFovZO',['../a00243.html#ga4bc69fa1d1f95128430aa3d2a712390b',1,'glm']]], - ['perspectivelh',['perspectiveLH',['../a00243.html#ga9bd34951dc7022ac256fcb51d7f6fc2f',1,'glm']]], - ['perspectivelh_5fno',['perspectiveLH_NO',['../a00243.html#gaead4d049d1feab463b700b5641aa590e',1,'glm']]], - ['perspectivelh_5fzo',['perspectiveLH_ZO',['../a00243.html#gaca32af88c2719005c02817ad1142986c',1,'glm']]], - ['perspectiveno',['perspectiveNO',['../a00243.html#gaf497e6bca61e7c87088370b126a93758',1,'glm']]], - ['perspectiverh',['perspectiveRH',['../a00243.html#ga26b88757fbd90601b80768a7e1ad3aa1',1,'glm']]], - ['perspectiverh_5fno',['perspectiveRH_NO',['../a00243.html#gad1526cb2cbe796095284e8f34b01c582',1,'glm']]], - ['perspectiverh_5fzo',['perspectiveRH_ZO',['../a00243.html#ga4da358d6e1b8e5b9ae35d1f3f2dc3b9a',1,'glm']]], - ['perspectivezo',['perspectiveZO',['../a00243.html#gaa9dfba5c2322da54f72b1eb7c7c11b47',1,'glm']]], - ['pi',['pi',['../a00259.html#ga94bafeb2a0f23ab6450fed1f98ee4e45',1,'glm']]], - ['pickmatrix',['pickMatrix',['../a00245.html#gaf6b21eadb7ac2ecbbe258a9a233b4c82',1,'glm']]], - ['pitch',['pitch',['../a00299.html#ga7603e81477b46ddb448896909bc04928',1,'glm']]], - ['polar',['polar',['../a00350.html#gab83ac2c0e55b684b06b6c46c28b1590d',1,'glm']]], - ['pow',['pow',['../a00242.html#ga2254981952d4f333b900a6bf5167a6c4',1,'glm::pow(vec< L, T, Q > const &base, vec< L, T, Q > const &exponent)'],['../a00256.html#ga4975ffcacd312a8c0bbd046a76c5607e',1,'glm::pow(qua< T, Q > const &q, T y)'],['../a00330.html#ga465016030a81d513fa2fac881ebdaa83',1,'glm::pow(int x, uint y)'],['../a00330.html#ga998e5ee915d3769255519e2fbaa2bbf0',1,'glm::pow(uint x, uint y)']]], - ['pow2',['pow2',['../a00347.html#ga19aaff3213bf23bdec3ef124ace237e9',1,'glm::gtx']]], - ['pow3',['pow3',['../a00347.html#ga35689d03cd434d6ea819f1942d3bf82e',1,'glm::gtx']]], - ['pow4',['pow4',['../a00347.html#gacef0968763026e180e53e735007dbf5a',1,'glm::gtx']]], - ['poweroftwoabove',['powerOfTwoAbove',['../a00309.html#ga8cda2459871f574a0aecbe702ac93291',1,'glm::powerOfTwoAbove(genIUType Value)'],['../a00309.html#ga2bbded187c5febfefc1e524ba31b3fab',1,'glm::powerOfTwoAbove(vec< L, T, Q > const &value)']]], - ['poweroftwobelow',['powerOfTwoBelow',['../a00309.html#ga3de7df63c589325101a2817a56f8e29d',1,'glm::powerOfTwoBelow(genIUType Value)'],['../a00309.html#gaf78ddcc4152c051b2a21e68fecb10980',1,'glm::powerOfTwoBelow(vec< L, T, Q > const &value)']]], - ['poweroftwonearest',['powerOfTwoNearest',['../a00309.html#ga5f65973a5d2ea38c719e6a663149ead9',1,'glm::powerOfTwoNearest(genIUType Value)'],['../a00309.html#gac87e65d11e16c3d6b91c3bcfaef7da0b',1,'glm::powerOfTwoNearest(vec< L, T, Q > const &value)']]], - ['prevmultiple',['prevMultiple',['../a00261.html#gada3bdd871ffe31f2d484aa668362f636',1,'glm::prevMultiple(genIUType v, genIUType Multiple)'],['../a00274.html#ga7b3915a7cd3d50ff4976ab7a75a6880a',1,'glm::prevMultiple(vec< L, T, Q > const &v, T Multiple)'],['../a00274.html#ga51e04379e8aebbf83e2e5ab094578ee9',1,'glm::prevMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], - ['prevpoweroftwo',['prevPowerOfTwo',['../a00261.html#gab21902a0e7e5a8451a7ad80333618727',1,'glm::prevPowerOfTwo(genIUType v)'],['../a00274.html#ga759db73f14d79f63612bd2398b577e7a',1,'glm::prevPowerOfTwo(vec< L, T, Q > const &v)']]], - ['proj',['proj',['../a00351.html#ga58384b7170801dd513de46f87c7fb00e',1,'glm']]], - ['proj2d',['proj2D',['../a00363.html#ga5b992a0cdc8298054edb68e228f0d93e',1,'glm']]], - ['proj3d',['proj3D',['../a00363.html#gaa2b7f4f15b98f697caede11bef50509e',1,'glm']]], - ['project',['project',['../a00245.html#gaf36e96033f456659e6705472a06b6e11',1,'glm']]], - ['projectno',['projectNO',['../a00245.html#ga05249751f48d14cb282e4979802b8111',1,'glm']]], - ['projectzo',['projectZO',['../a00245.html#ga77d157525063dec83a557186873ee080',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_e.html b/tests/OpenGL/package/glm/doc/api/search/functions_e.html deleted file mode 100644 index b44e5c5f..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_e.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_e.js b/tests/OpenGL/package/glm/doc/api/search/functions_e.js deleted file mode 100644 index abcb9987..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_e.js +++ /dev/null @@ -1,19 +0,0 @@ -var searchData= -[ - ['qr_5fdecompose',['qr_decompose',['../a00336.html#gac62d7bfc8dc661e616620d70552cd566',1,'glm']]], - ['quadraticeasein',['quadraticEaseIn',['../a00318.html#gaf42089d35855695132d217cd902304a0',1,'glm']]], - ['quadraticeaseinout',['quadraticEaseInOut',['../a00318.html#ga03e8fc2d7945a4e63ee33b2159c14cea',1,'glm']]], - ['quadraticeaseout',['quadraticEaseOut',['../a00318.html#ga283717bc2d937547ad34ec0472234ee3',1,'glm']]], - ['quarter_5fpi',['quarter_pi',['../a00290.html#ga3c9df42bd73c519a995c43f0f99e77e0',1,'glm']]], - ['quarticeasein',['quarticEaseIn',['../a00318.html#ga808b41f14514f47dad5dcc69eb924afd',1,'glm']]], - ['quarticeaseinout',['quarticEaseInOut',['../a00318.html#ga6d000f852de12b197e154f234b20c505',1,'glm']]], - ['quarticeaseout',['quarticEaseOut',['../a00318.html#ga4dfb33fa7664aa888eb647999d329b98',1,'glm']]], - ['quat_5fcast',['quat_cast',['../a00299.html#ga1108a4ab88ca87bac321454eea7702f8',1,'glm::quat_cast(mat< 3, 3, T, Q > const &x)'],['../a00299.html#ga4524810f07f72e8c7bdc7764fa11cb58',1,'glm::quat_cast(mat< 4, 4, T, Q > const &x)']]], - ['quat_5fidentity',['quat_identity',['../a00352.html#ga5ee8332600b2aca3a77622a28d857b55',1,'glm']]], - ['quatlookat',['quatLookAt',['../a00299.html#gabe7fc5ec5feb41ab234d5d2b6254697f',1,'glm']]], - ['quatlookatlh',['quatLookAtLH',['../a00299.html#ga2da350c73411be3bb19441b226b81a74',1,'glm']]], - ['quatlookatrh',['quatLookAtRH',['../a00299.html#gaf6529ac8c04a57fcc35865b5c9437cc8',1,'glm']]], - ['quinticeasein',['quinticEaseIn',['../a00318.html#ga097579d8e087dcf48037588140a21640',1,'glm']]], - ['quinticeaseinout',['quinticEaseInOut',['../a00318.html#ga2a82d5c46df7e2d21cc0108eb7b83934',1,'glm']]], - ['quinticeaseout',['quinticEaseOut',['../a00318.html#ga7dbd4d5c8da3f5353121f615e7b591d7',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_f.html b/tests/OpenGL/package/glm/doc/api/search/functions_f.html deleted file mode 100644 index db9a07c0..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_f.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/functions_f.js b/tests/OpenGL/package/glm/doc/api/search/functions_f.js deleted file mode 100644 index a48bd4f5..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/functions_f.js +++ /dev/null @@ -1,35 +0,0 @@ -var searchData= -[ - ['radialgradient',['radialGradient',['../a00327.html#gaaecb1e93de4cbe0758b882812d4da294',1,'glm']]], - ['radians',['radians',['../a00373.html#ga6e1db4862c5e25afd553930e2fdd6a68',1,'glm']]], - ['reflect',['reflect',['../a00279.html#ga5631dd1d5618de5450b1ea3cf3e94905',1,'glm']]], - ['refract',['refract',['../a00279.html#ga01da3dff9e2ef6b9d4915c3047e22b74',1,'glm']]], - ['repeat',['repeat',['../a00369.html#ga809650c6310ea7c42666e918c117fb6f',1,'glm']]], - ['rgb2ycocg',['rgb2YCoCg',['../a00313.html#ga0606353ec2a9b9eaa84f1b02ec391bc5',1,'glm']]], - ['rgb2ycocgr',['rgb2YCoCgR',['../a00313.html#ga0389772e44ca0fd2ba4a79bdd8efe898',1,'glm']]], - ['rgbcolor',['rgbColor',['../a00312.html#ga5f9193be46f45f0655c05a0cdca006db',1,'glm']]], - ['righthanded',['rightHanded',['../a00328.html#ga99386a5ab5491871b947076e21699cc8',1,'glm']]], - ['roll',['roll',['../a00299.html#ga0cc5ad970d0b00829b139fe0fe5a1e13',1,'glm']]], - ['root_5ffive',['root_five',['../a00290.html#gae9ebbded75b53d4faeb1e4ef8b3347a2',1,'glm']]], - ['root_5fhalf_5fpi',['root_half_pi',['../a00290.html#ga4e276cb823cc5e612d4f89ed99c75039',1,'glm']]], - ['root_5fln_5ffour',['root_ln_four',['../a00290.html#ga4129412e96b33707a77c1a07652e23e2',1,'glm']]], - ['root_5fpi',['root_pi',['../a00290.html#ga261380796b2cd496f68d2cf1d08b8eb9',1,'glm']]], - ['root_5fthree',['root_three',['../a00290.html#ga4f286be4abe88be1eed7d2a9f6cb193e',1,'glm']]], - ['root_5ftwo',['root_two',['../a00290.html#ga74e607d29020f100c0d0dc46ce2ca950',1,'glm']]], - ['root_5ftwo_5fpi',['root_two_pi',['../a00290.html#ga2bcedc575039fe0cd765742f8bbb0bd3',1,'glm']]], - ['rotate',['rotate',['../a00247.html#gaee9e865eaa9776370996da2940873fd4',1,'glm::rotate(mat< 4, 4, T, Q > const &m, T angle, vec< 3, T, Q > const &axis)'],['../a00256.html#gabfc57de6d4d2e11970f54119c5ccf0f5',1,'glm::rotate(qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)'],['../a00341.html#gad5c84a4932a758f385a87098ce1b1660',1,'glm::rotate(mat< 3, 3, T, Q > const &m, T angle)'],['../a00352.html#ga07da6ef58646442efe93b0c273d73776',1,'glm::rotate(qua< T, Q > const &q, vec< 3, T, Q > const &v)'],['../a00352.html#gafcb78dfff45fbf19a7fcb2bd03fbf196',1,'glm::rotate(qua< T, Q > const &q, vec< 4, T, Q > const &v)'],['../a00356.html#gab64a67b52ff4f86c3ba16595a5a25af6',1,'glm::rotate(vec< 2, T, Q > const &v, T const &angle)'],['../a00356.html#ga1ba501ef83d1a009a17ac774cc560f21',1,'glm::rotate(vec< 3, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)'],['../a00356.html#ga1005f1267ed9c57faa3f24cf6873b961',1,'glm::rotate(vec< 4, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)'],['../a00362.html#gaf599be4c0e9d99be1f9cddba79b6018b',1,'glm::rotate(T angle, vec< 3, T, Q > const &v)']]], - ['rotatenormalizedaxis',['rotateNormalizedAxis',['../a00355.html#ga50efd7ebca0f7a603bb3cc11e34c708d',1,'glm::rotateNormalizedAxis(mat< 4, 4, T, Q > const &m, T const &angle, vec< 3, T, Q > const &axis)'],['../a00355.html#ga08f9c5411437d528019a25bfc01473d1',1,'glm::rotateNormalizedAxis(qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)']]], - ['rotatex',['rotateX',['../a00356.html#ga059fdbdba4cca35cdff172a9d0d0afc9',1,'glm::rotateX(vec< 3, T, Q > const &v, T const &angle)'],['../a00356.html#ga4333b1ea8ebf1bd52bc3801a7617398a',1,'glm::rotateX(vec< 4, T, Q > const &v, T const &angle)']]], - ['rotatey',['rotateY',['../a00356.html#gaebdc8b054ace27d9f62e054531c6f44d',1,'glm::rotateY(vec< 3, T, Q > const &v, T const &angle)'],['../a00356.html#ga3ce3db0867b7f8efd878ee34f95a623b',1,'glm::rotateY(vec< 4, T, Q > const &v, T const &angle)']]], - ['rotatez',['rotateZ',['../a00356.html#ga5a048838a03f6249acbacb4dbacf79c4',1,'glm::rotateZ(vec< 3, T, Q > const &v, T const &angle)'],['../a00356.html#ga923b75c6448161053768822d880702e6',1,'glm::rotateZ(vec< 4, T, Q > const &v, T const &angle)']]], - ['rotation',['rotation',['../a00352.html#ga03e61282831cc3f52cc76f72f52ad2c5',1,'glm']]], - ['round',['round',['../a00241.html#gafa03aca8c4713e1cc892aa92ca135a7e',1,'glm']]], - ['roundeven',['roundEven',['../a00241.html#ga76b81785045a057989a84d99aeeb1578',1,'glm']]], - ['roundmultiple',['roundMultiple',['../a00302.html#gab892defcc9c0b0618df7251253dc0fbb',1,'glm::roundMultiple(genType v, genType Multiple)'],['../a00302.html#ga2f1a68332d761804c054460a612e3a4b',1,'glm::roundMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], - ['roundpoweroftwo',['roundPowerOfTwo',['../a00302.html#gae4e1bf5d1cd179f59261a7342bdcafca',1,'glm::roundPowerOfTwo(genIUType v)'],['../a00302.html#ga258802a7d55c03c918f28cf4d241c4d0',1,'glm::roundPowerOfTwo(vec< L, T, Q > const &v)']]], - ['row',['row',['../a00293.html#ga259e5ebd0f31ec3f83440f8cae7f5dba',1,'glm::row(genType const &m, length_t index)'],['../a00293.html#gaadcc64829aadf4103477679e48c7594f',1,'glm::row(genType const &m, length_t index, typename genType::row_type const &x)']]], - ['rowmajor2',['rowMajor2',['../a00338.html#gaf5b1aee9e3eb1acf9d6c3c8be1e73bb8',1,'glm::rowMajor2(vec< 2, T, Q > const &v1, vec< 2, T, Q > const &v2)'],['../a00338.html#gaf66c75ed69ca9e87462550708c2c6726',1,'glm::rowMajor2(mat< 2, 2, T, Q > const &m)']]], - ['rowmajor3',['rowMajor3',['../a00338.html#ga2ae46497493339f745754e40f438442e',1,'glm::rowMajor3(vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)'],['../a00338.html#gad8a3a50ab47bbe8d36cdb81d90dfcf77',1,'glm::rowMajor3(mat< 3, 3, T, Q > const &m)']]], - ['rowmajor4',['rowMajor4',['../a00338.html#ga9636cd6bbe2c32a8d0c03ffb8b1ef284',1,'glm::rowMajor4(vec< 4, T, Q > const &v1, vec< 4, T, Q > const &v2, vec< 4, T, Q > const &v3, vec< 4, T, Q > const &v4)'],['../a00338.html#gac92ad1c2acdf18d3eb7be45a32f9566b',1,'glm::rowMajor4(mat< 4, 4, T, Q > const &m)']]], - ['rq_5fdecompose',['rq_decompose',['../a00336.html#ga82874e2ebe891ba35ac21d9993873758',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_0.html b/tests/OpenGL/package/glm/doc/api/search/groups_0.html deleted file mode 100644 index aaba07e5..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_0.js b/tests/OpenGL/package/glm/doc/api/search/groups_0.js deleted file mode 100644 index 73fd73e4..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['angle_20and_20trigonometry_20functions',['Angle and Trigonometry Functions',['../a00373.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_1.html b/tests/OpenGL/package/glm/doc/api/search/groups_1.html deleted file mode 100644 index d287bfa3..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_1.js b/tests/OpenGL/package/glm/doc/api/search/groups_1.js deleted file mode 100644 index 8ff844ab..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['core_20features',['Core features',['../a00280.html',1,'']]], - ['common_20functions',['Common functions',['../a00241.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_2.html b/tests/OpenGL/package/glm/doc/api/search/groups_2.html deleted file mode 100644 index 29681b20..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_2.js b/tests/OpenGL/package/glm/doc/api/search/groups_2.js deleted file mode 100644 index f2535119..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_2.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['exponential_20functions',['Exponential functions',['../a00242.html',1,'']]], - ['experimental_20extensions',['Experimental extensions',['../a00287.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_3.html b/tests/OpenGL/package/glm/doc/api/search/groups_3.html deleted file mode 100644 index b51e57ff..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_3.js b/tests/OpenGL/package/glm/doc/api/search/groups_3.js deleted file mode 100644 index 4ae9ff3e..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['floating_2dpoint_20pack_20and_20unpack_20functions',['Floating-Point Pack and Unpack Functions',['../a00372.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_4.html b/tests/OpenGL/package/glm/doc/api/search/groups_4.html deleted file mode 100644 index 987621be..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_4.js b/tests/OpenGL/package/glm/doc/api/search/groups_4.js deleted file mode 100644 index 8bb9f41f..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_4.js +++ /dev/null @@ -1,122 +0,0 @@ -var searchData= -[ - ['geometric_20functions',['Geometric functions',['../a00279.html',1,'']]], - ['glm_5fext_5fmatrix_5fclip_5fspace',['GLM_EXT_matrix_clip_space',['../a00243.html',1,'']]], - ['glm_5fext_5fmatrix_5fcommon',['GLM_EXT_matrix_common',['../a00244.html',1,'']]], - ['glm_5fext_5fmatrix_5fprojection',['GLM_EXT_matrix_projection',['../a00245.html',1,'']]], - ['glm_5fext_5fmatrix_5frelational',['GLM_EXT_matrix_relational',['../a00246.html',1,'']]], - ['glm_5fext_5fmatrix_5ftransform',['GLM_EXT_matrix_transform',['../a00247.html',1,'']]], - ['glm_5fext_5fquaternion_5fcommon',['GLM_EXT_quaternion_common',['../a00248.html',1,'']]], - ['glm_5fext_5fquaternion_5fdouble',['GLM_EXT_quaternion_double',['../a00249.html',1,'']]], - ['glm_5fext_5fquaternion_5fdouble_5fprecision',['GLM_EXT_quaternion_double_precision',['../a00250.html',1,'']]], - ['glm_5fext_5fquaternion_5fexponential',['GLM_EXT_quaternion_exponential',['../a00251.html',1,'']]], - ['glm_5fext_5fquaternion_5ffloat',['GLM_EXT_quaternion_float',['../a00252.html',1,'']]], - ['glm_5fext_5fquaternion_5ffloat_5fprecision',['GLM_EXT_quaternion_float_precision',['../a00253.html',1,'']]], - ['glm_5fext_5fquaternion_5fgeometric',['GLM_EXT_quaternion_geometric',['../a00254.html',1,'']]], - ['glm_5fext_5fquaternion_5frelational',['GLM_EXT_quaternion_relational',['../a00255.html',1,'']]], - ['glm_5fext_5fquaternion_5ftransform',['GLM_EXT_quaternion_transform',['../a00256.html',1,'']]], - ['glm_5fext_5fquaternion_5ftrigonometric',['GLM_EXT_quaternion_trigonometric',['../a00257.html',1,'']]], - ['glm_5fext_5fscalar_5fcommon',['GLM_EXT_scalar_common',['../a00258.html',1,'']]], - ['glm_5fext_5fscalar_5fconstants',['GLM_EXT_scalar_constants',['../a00259.html',1,'']]], - ['glm_5fext_5fscalar_5fint_5fsized',['GLM_EXT_scalar_int_sized',['../a00260.html',1,'']]], - ['glm_5fext_5fscalar_5finteger',['GLM_EXT_scalar_integer',['../a00261.html',1,'']]], - ['glm_5fext_5fscalar_5frelational',['GLM_EXT_scalar_relational',['../a00262.html',1,'']]], - ['glm_5fext_5fscalar_5fuint_5fsized',['GLM_EXT_scalar_uint_sized',['../a00263.html',1,'']]], - ['glm_5fext_5fscalar_5fulp',['GLM_EXT_scalar_ulp',['../a00264.html',1,'']]], - ['glm_5fext_5fvector_5fbool1',['GLM_EXT_vector_bool1',['../a00265.html',1,'']]], - ['glm_5fext_5fvector_5fbool1_5fprecision',['GLM_EXT_vector_bool1_precision',['../a00266.html',1,'']]], - ['glm_5fext_5fvector_5fcommon',['GLM_EXT_vector_common',['../a00267.html',1,'']]], - ['glm_5fext_5fvector_5fdouble1',['GLM_EXT_vector_double1',['../a00268.html',1,'']]], - ['glm_5fext_5fvector_5fdouble1_5fprecision',['GLM_EXT_vector_double1_precision',['../a00269.html',1,'']]], - ['glm_5fext_5fvector_5ffloat1',['GLM_EXT_vector_float1',['../a00270.html',1,'']]], - ['glm_5fext_5fvector_5ffloat1_5fprecision',['GLM_EXT_vector_float1_precision',['../a00271.html',1,'']]], - ['glm_5fext_5fvector_5fint1',['GLM_EXT_vector_int1',['../a00272.html',1,'']]], - ['glm_5fext_5fvector_5fint1_5fprecision',['GLM_EXT_vector_int1_precision',['../a00273.html',1,'']]], - ['glm_5fext_5fvector_5finteger',['GLM_EXT_vector_integer',['../a00274.html',1,'']]], - ['glm_5fext_5fvector_5frelational',['GLM_EXT_vector_relational',['../a00275.html',1,'']]], - ['glm_5fext_5fvector_5fuint1',['GLM_EXT_vector_uint1',['../a00276.html',1,'']]], - ['glm_5fext_5fvector_5fuint1_5fprecision',['GLM_EXT_vector_uint1_precision',['../a00277.html',1,'']]], - ['glm_5fext_5fvector_5fulp',['GLM_EXT_vector_ulp',['../a00278.html',1,'']]], - ['glm_5fgtc_5fbitfield',['GLM_GTC_bitfield',['../a00288.html',1,'']]], - ['glm_5fgtc_5fcolor_5fspace',['GLM_GTC_color_space',['../a00289.html',1,'']]], - ['glm_5fgtc_5fconstants',['GLM_GTC_constants',['../a00290.html',1,'']]], - ['glm_5fgtc_5fepsilon',['GLM_GTC_epsilon',['../a00291.html',1,'']]], - ['glm_5fgtc_5finteger',['GLM_GTC_integer',['../a00292.html',1,'']]], - ['glm_5fgtc_5fmatrix_5faccess',['GLM_GTC_matrix_access',['../a00293.html',1,'']]], - ['glm_5fgtc_5fmatrix_5finteger',['GLM_GTC_matrix_integer',['../a00294.html',1,'']]], - ['glm_5fgtc_5fmatrix_5finverse',['GLM_GTC_matrix_inverse',['../a00295.html',1,'']]], - ['glm_5fgtc_5fmatrix_5ftransform',['GLM_GTC_matrix_transform',['../a00296.html',1,'']]], - ['glm_5fgtc_5fnoise',['GLM_GTC_noise',['../a00297.html',1,'']]], - ['glm_5fgtc_5fpacking',['GLM_GTC_packing',['../a00298.html',1,'']]], - ['glm_5fgtc_5fquaternion',['GLM_GTC_quaternion',['../a00299.html',1,'']]], - ['glm_5fgtc_5frandom',['GLM_GTC_random',['../a00300.html',1,'']]], - ['glm_5fgtc_5freciprocal',['GLM_GTC_reciprocal',['../a00301.html',1,'']]], - ['glm_5fgtc_5fround',['GLM_GTC_round',['../a00302.html',1,'']]], - ['glm_5fgtc_5ftype_5faligned',['GLM_GTC_type_aligned',['../a00303.html',1,'']]], - ['glm_5fgtc_5ftype_5fprecision',['GLM_GTC_type_precision',['../a00304.html',1,'']]], - ['glm_5fgtc_5ftype_5fptr',['GLM_GTC_type_ptr',['../a00305.html',1,'']]], - ['glm_5fgtc_5fulp',['GLM_GTC_ulp',['../a00306.html',1,'']]], - ['glm_5fgtc_5fvec1',['GLM_GTC_vec1',['../a00307.html',1,'']]], - ['glm_5fgtx_5fassociated_5fmin_5fmax',['GLM_GTX_associated_min_max',['../a00308.html',1,'']]], - ['glm_5fgtx_5fbit',['GLM_GTX_bit',['../a00309.html',1,'']]], - ['glm_5fgtx_5fclosest_5fpoint',['GLM_GTX_closest_point',['../a00310.html',1,'']]], - ['glm_5fgtx_5fcolor_5fencoding',['GLM_GTX_color_encoding',['../a00311.html',1,'']]], - ['glm_5fgtx_5fcolor_5fspace',['GLM_GTX_color_space',['../a00312.html',1,'']]], - ['glm_5fgtx_5fcolor_5fspace_5fycocg',['GLM_GTX_color_space_YCoCg',['../a00313.html',1,'']]], - ['glm_5fgtx_5fcommon',['GLM_GTX_common',['../a00314.html',1,'']]], - ['glm_5fgtx_5fcompatibility',['GLM_GTX_compatibility',['../a00315.html',1,'']]], - ['glm_5fgtx_5fcomponent_5fwise',['GLM_GTX_component_wise',['../a00316.html',1,'']]], - ['glm_5fgtx_5fdual_5fquaternion',['GLM_GTX_dual_quaternion',['../a00317.html',1,'']]], - ['glm_5fgtx_5feasing',['GLM_GTX_easing',['../a00318.html',1,'']]], - ['glm_5fgtx_5feuler_5fangles',['GLM_GTX_euler_angles',['../a00319.html',1,'']]], - ['glm_5fgtx_5fextend',['GLM_GTX_extend',['../a00320.html',1,'']]], - ['glm_5fgtx_5fextented_5fmin_5fmax',['GLM_GTX_extented_min_max',['../a00321.html',1,'']]], - ['glm_5fgtx_5fexterior_5fproduct',['GLM_GTX_exterior_product',['../a00322.html',1,'']]], - ['glm_5fgtx_5ffast_5fexponential',['GLM_GTX_fast_exponential',['../a00323.html',1,'']]], - ['glm_5fgtx_5ffast_5fsquare_5froot',['GLM_GTX_fast_square_root',['../a00324.html',1,'']]], - ['glm_5fgtx_5ffast_5ftrigonometry',['GLM_GTX_fast_trigonometry',['../a00325.html',1,'']]], - ['glm_5fgtx_5ffunctions',['GLM_GTX_functions',['../a00326.html',1,'']]], - ['glm_5fgtx_5fgradient_5fpaint',['GLM_GTX_gradient_paint',['../a00327.html',1,'']]], - ['glm_5fgtx_5fhanded_5fcoordinate_5fspace',['GLM_GTX_handed_coordinate_space',['../a00328.html',1,'']]], - ['glm_5fgtx_5fhash',['GLM_GTX_hash',['../a00329.html',1,'']]], - ['glm_5fgtx_5finteger',['GLM_GTX_integer',['../a00330.html',1,'']]], - ['glm_5fgtx_5fintersect',['GLM_GTX_intersect',['../a00331.html',1,'']]], - ['glm_5fgtx_5fio',['GLM_GTX_io',['../a00332.html',1,'']]], - ['glm_5fgtx_5flog_5fbase',['GLM_GTX_log_base',['../a00333.html',1,'']]], - ['glm_5fgtx_5fmatrix_5fcross_5fproduct',['GLM_GTX_matrix_cross_product',['../a00334.html',1,'']]], - ['glm_5fgtx_5fmatrix_5fdecompose',['GLM_GTX_matrix_decompose',['../a00335.html',1,'']]], - ['glm_5fgtx_5fmatrix_5ffactorisation',['GLM_GTX_matrix_factorisation',['../a00336.html',1,'']]], - ['glm_5fgtx_5fmatrix_5finterpolation',['GLM_GTX_matrix_interpolation',['../a00337.html',1,'']]], - ['glm_5fgtx_5fmatrix_5fmajor_5fstorage',['GLM_GTX_matrix_major_storage',['../a00338.html',1,'']]], - ['glm_5fgtx_5fmatrix_5foperation',['GLM_GTX_matrix_operation',['../a00339.html',1,'']]], - ['glm_5fgtx_5fmatrix_5fquery',['GLM_GTX_matrix_query',['../a00340.html',1,'']]], - ['glm_5fgtx_5fmatrix_5ftransform_5f2d',['GLM_GTX_matrix_transform_2d',['../a00341.html',1,'']]], - ['glm_5fgtx_5fmixed_5fproducte',['GLM_GTX_mixed_producte',['../a00342.html',1,'']]], - ['glm_5fgtx_5fnorm',['GLM_GTX_norm',['../a00343.html',1,'']]], - ['glm_5fgtx_5fnormal',['GLM_GTX_normal',['../a00344.html',1,'']]], - ['glm_5fgtx_5fnormalize_5fdot',['GLM_GTX_normalize_dot',['../a00345.html',1,'']]], - ['glm_5fgtx_5fnumber_5fprecision',['GLM_GTX_number_precision',['../a00346.html',1,'']]], - ['glm_5fgtx_5foptimum_5fpow',['GLM_GTX_optimum_pow',['../a00347.html',1,'']]], - ['glm_5fgtx_5forthonormalize',['GLM_GTX_orthonormalize',['../a00348.html',1,'']]], - ['glm_5fgtx_5fperpendicular',['GLM_GTX_perpendicular',['../a00349.html',1,'']]], - ['glm_5fgtx_5fpolar_5fcoordinates',['GLM_GTX_polar_coordinates',['../a00350.html',1,'']]], - ['glm_5fgtx_5fprojection',['GLM_GTX_projection',['../a00351.html',1,'']]], - ['glm_5fgtx_5fquaternion',['GLM_GTX_quaternion',['../a00352.html',1,'']]], - ['glm_5fgtx_5frange',['GLM_GTX_range',['../a00353.html',1,'']]], - ['glm_5fgtx_5fraw_5fdata',['GLM_GTX_raw_data',['../a00354.html',1,'']]], - ['glm_5fgtx_5frotate_5fnormalized_5faxis',['GLM_GTX_rotate_normalized_axis',['../a00355.html',1,'']]], - ['glm_5fgtx_5frotate_5fvector',['GLM_GTX_rotate_vector',['../a00356.html',1,'']]], - ['glm_5fgtx_5fscalar_5frelational',['GLM_GTX_scalar_relational',['../a00357.html',1,'']]], - ['glm_5fgtx_5fspline',['GLM_GTX_spline',['../a00358.html',1,'']]], - ['glm_5fgtx_5fstd_5fbased_5ftype',['GLM_GTX_std_based_type',['../a00359.html',1,'']]], - ['glm_5fgtx_5fstring_5fcast',['GLM_GTX_string_cast',['../a00360.html',1,'']]], - ['glm_5fgtx_5ftexture',['GLM_GTX_texture',['../a00361.html',1,'']]], - ['glm_5fgtx_5ftransform',['GLM_GTX_transform',['../a00362.html',1,'']]], - ['glm_5fgtx_5ftransform2',['GLM_GTX_transform2',['../a00363.html',1,'']]], - ['glm_5fgtx_5ftype_5faligned',['GLM_GTX_type_aligned',['../a00364.html',1,'']]], - ['glm_5fgtx_5ftype_5ftrait',['GLM_GTX_type_trait',['../a00365.html',1,'']]], - ['glm_5fgtx_5fvec_5fswizzle',['GLM_GTX_vec_swizzle',['../a00366.html',1,'']]], - ['glm_5fgtx_5fvector_5fangle',['GLM_GTX_vector_angle',['../a00367.html',1,'']]], - ['glm_5fgtx_5fvector_5fquery',['GLM_GTX_vector_query',['../a00368.html',1,'']]], - ['glm_5fgtx_5fwrap',['GLM_GTX_wrap',['../a00369.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_5.html b/tests/OpenGL/package/glm/doc/api/search/groups_5.html deleted file mode 100644 index 2ccec277..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_5.js b/tests/OpenGL/package/glm/doc/api/search/groups_5.js deleted file mode 100644 index daa0eab4..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['integer_20functions',['Integer functions',['../a00370.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_6.html b/tests/OpenGL/package/glm/doc/api/search/groups_6.html deleted file mode 100644 index ed69c070..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_6.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_6.js b/tests/OpenGL/package/glm/doc/api/search/groups_6.js deleted file mode 100644 index 818cd91e..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_6.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['matrix_20functions',['Matrix functions',['../a00371.html',1,'']]], - ['matrix_20types',['Matrix types',['../a00283.html',1,'']]], - ['matrix_20types_20with_20precision_20qualifiers',['Matrix types with precision qualifiers',['../a00284.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_7.html b/tests/OpenGL/package/glm/doc/api/search/groups_7.html deleted file mode 100644 index 027daaa1..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_7.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_7.js b/tests/OpenGL/package/glm/doc/api/search/groups_7.js deleted file mode 100644 index a0c18227..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['recommended_20extensions',['Recommended extensions',['../a00286.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_8.html b/tests/OpenGL/package/glm/doc/api/search/groups_8.html deleted file mode 100644 index 936f141d..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_8.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_8.js b/tests/OpenGL/package/glm/doc/api/search/groups_8.js deleted file mode 100644 index b98bb0f0..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_8.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['stable_20extensions',['Stable extensions',['../a00285.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_9.html b/tests/OpenGL/package/glm/doc/api/search/groups_9.html deleted file mode 100644 index c66e6a67..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_9.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/groups_9.js b/tests/OpenGL/package/glm/doc/api/search/groups_9.js deleted file mode 100644 index ceff484b..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/groups_9.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['vector_20relational_20functions',['Vector Relational Functions',['../a00374.html',1,'']]], - ['vector_20types',['Vector types',['../a00281.html',1,'']]], - ['vector_20types_20with_20precision_20qualifiers',['Vector types with precision qualifiers',['../a00282.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/mag_sel.png b/tests/OpenGL/package/glm/doc/api/search/mag_sel.png deleted file mode 100644 index 81f6040a..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/search/mag_sel.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/search/nomatches.html b/tests/OpenGL/package/glm/doc/api/search/nomatches.html deleted file mode 100644 index b1ded27e..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/nomatches.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - -
-
No Matches
-
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/pages_0.html b/tests/OpenGL/package/glm/doc/api/search/pages_0.html deleted file mode 100644 index 75d203dc..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/pages_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/pages_0.js b/tests/OpenGL/package/glm/doc/api/search/pages_0.js deleted file mode 100644 index 5d97ea16..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/pages_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['opengl_20mathematics_20_28glm_29',['OpenGL Mathematics (GLM)',['../index.html',1,'']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/search.css b/tests/OpenGL/package/glm/doc/api/search/search.css deleted file mode 100644 index 4d7612ff..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/search.css +++ /dev/null @@ -1,271 +0,0 @@ -/*---------------- Search Box */ - -#FSearchBox { - float: left; -} - -#MSearchBox { - white-space : nowrap; - position: absolute; - float: none; - display: inline; - margin-top: 8px; - right: 0px; - width: 170px; - z-index: 102; - background-color: white; -} - -#MSearchBox .left -{ - display:block; - position:absolute; - left:10px; - width:20px; - height:19px; - background:url('search_l.png') no-repeat; - background-position:right; -} - -#MSearchSelect { - display:block; - position:absolute; - width:20px; - height:19px; -} - -.left #MSearchSelect { - left:4px; -} - -.right #MSearchSelect { - right:5px; -} - -#MSearchField { - display:block; - position:absolute; - height:19px; - background:url('search_m.png') repeat-x; - border:none; - width:111px; - margin-left:20px; - padding-left:4px; - color: #909090; - outline: none; - font: 9pt Arial, Verdana, sans-serif; -} - -#FSearchBox #MSearchField { - margin-left:15px; -} - -#MSearchBox .right { - display:block; - position:absolute; - right:10px; - top:0px; - width:20px; - height:19px; - background:url('search_r.png') no-repeat; - background-position:left; -} - -#MSearchClose { - display: none; - position: absolute; - top: 4px; - background : none; - border: none; - margin: 0px 4px 0px 0px; - padding: 0px 0px; - outline: none; -} - -.left #MSearchClose { - left: 6px; -} - -.right #MSearchClose { - right: 2px; -} - -.MSearchBoxActive #MSearchField { - color: #000000; -} - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #90A5CE; - background-color: #F9FAFC; - z-index: 1; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt Arial, Verdana, sans-serif; - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: monospace; - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: #000000; - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: #000000; - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: #FFFFFF; - background-color: #3D578C; - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - width: 60ex; - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #000; - background-color: #EEF1F7; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; - padding-bottom: 15px; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -body.SRPage { - margin: 5px 2px; -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; -} - -.SRResult { - display: none; -} - -DIV.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.searchresult { - background-color: #F0F3F8; -} - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: url("../tab_a.png"); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/tests/OpenGL/package/glm/doc/api/search/search.js b/tests/OpenGL/package/glm/doc/api/search/search.js deleted file mode 100644 index dedce3bf..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/search.js +++ /dev/null @@ -1,791 +0,0 @@ -function convertToId(search) -{ - var result = ''; - for (i=0;i do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var resultsPage; - var resultsPageWithSearch; - var hasResultsPage; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; - resultsPageWithSearch = resultsPage+'?'+escape(searchValue); - hasResultsPage = true; - } - else // nothing available for this search term - { - resultsPage = this.resultsPath + '/nomatches.html'; - resultsPageWithSearch = resultsPage; - hasResultsPage = false; - } - - window.frames.MSearchResults.location = resultsPageWithSearch; - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - - if (domPopupSearchResultsWindow.style.display!='block') - { - var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline'; - if (this.insideFrame) - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - domPopupSearchResultsWindow.style.position = 'relative'; - domPopupSearchResultsWindow.style.display = 'block'; - var width = document.body.clientWidth - 8; // the -8 is for IE :-( - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResults.style.width = width + 'px'; - } - else - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - } - } - - this.lastSearchValue = searchValue; - this.lastResultsPage = resultsPage; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - - var searchField = this.DOMSearchField(); - - if (searchField.value == this.searchLabel) // clear "Search" term upon entry - { - searchField.value = ''; - this.searchActive = true; - } - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.DOMSearchField().value = this.searchLabel; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName == 'DIV' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName == 'DIV' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - parent.document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults() -{ - var results = document.getElementById("SRResults"); - for (var e=0; e - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_0.js b/tests/OpenGL/package/glm/doc/api/search/typedefs_0.js deleted file mode 100644 index 88324995..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_0.js +++ /dev/null @@ -1,179 +0,0 @@ -var searchData= -[ - ['aligned_5fbvec1',['aligned_bvec1',['../a00303.html#ga780a35f764020f553a9601a3fcdcd059',1,'glm']]], - ['aligned_5fbvec2',['aligned_bvec2',['../a00303.html#gae766b317c5afec852bfb3d74a3c54bc8',1,'glm']]], - ['aligned_5fbvec3',['aligned_bvec3',['../a00303.html#gae1964ba70d15915e5b710926decbb3cb',1,'glm']]], - ['aligned_5fbvec4',['aligned_bvec4',['../a00303.html#gae164a1f7879f828bc35e50b79d786b05',1,'glm']]], - ['aligned_5fdmat2',['aligned_dmat2',['../a00303.html#ga6783859382677d35fcd5dac7dcbefdbd',1,'glm']]], - ['aligned_5fdmat2x2',['aligned_dmat2x2',['../a00303.html#ga449a3ec2dde6b6bb4bb94c49a6aad388',1,'glm']]], - ['aligned_5fdmat2x3',['aligned_dmat2x3',['../a00303.html#ga53d519a7b1bfb69076b3ec206a6b3bd1',1,'glm']]], - ['aligned_5fdmat2x4',['aligned_dmat2x4',['../a00303.html#ga5ccb2baeb0ab57b818c24e0d486c59d0',1,'glm']]], - ['aligned_5fdmat3',['aligned_dmat3',['../a00303.html#ga19aa695ffdb45ce29f7ea0b5029627de',1,'glm']]], - ['aligned_5fdmat3x2',['aligned_dmat3x2',['../a00303.html#ga5f5123d834bd1170edf8c386834e112c',1,'glm']]], - ['aligned_5fdmat3x3',['aligned_dmat3x3',['../a00303.html#ga635bf3732281a2c2ca54d8f9d33d178f',1,'glm']]], - ['aligned_5fdmat3x4',['aligned_dmat3x4',['../a00303.html#gaf488c6ad88c185054595d4d5c7ba5b9d',1,'glm']]], - ['aligned_5fdmat4',['aligned_dmat4',['../a00303.html#ga001bb387ae8192fa94dbd8b23b600439',1,'glm']]], - ['aligned_5fdmat4x2',['aligned_dmat4x2',['../a00303.html#gaa409cfb737bd59b68dc683e9b03930cc',1,'glm']]], - ['aligned_5fdmat4x3',['aligned_dmat4x3',['../a00303.html#ga621e89ca1dbdcb7b5a3e7de237c44121',1,'glm']]], - ['aligned_5fdmat4x4',['aligned_dmat4x4',['../a00303.html#gac9bda778d0b7ad82f656dab99b71857a',1,'glm']]], - ['aligned_5fdvec1',['aligned_dvec1',['../a00303.html#ga4974f46ae5a19415d91316960a53617a',1,'glm']]], - ['aligned_5fdvec2',['aligned_dvec2',['../a00303.html#ga18d859f87122b2b3b2992ffe86dbebc0',1,'glm']]], - ['aligned_5fdvec3',['aligned_dvec3',['../a00303.html#gaa37869eea77d28419b2fb0ff70b69bf0',1,'glm']]], - ['aligned_5fdvec4',['aligned_dvec4',['../a00303.html#ga8a9f0a4795ccc442fa9901845026f9f5',1,'glm']]], - ['aligned_5fhighp_5fbvec1',['aligned_highp_bvec1',['../a00303.html#ga862843a45b01c35ffe4d44c47ea774ad',1,'glm']]], - ['aligned_5fhighp_5fbvec2',['aligned_highp_bvec2',['../a00303.html#ga0731b593c5e33559954c80f8687e76c6',1,'glm']]], - ['aligned_5fhighp_5fbvec3',['aligned_highp_bvec3',['../a00303.html#ga0913bdf048d0cb74af1d2512aec675bc',1,'glm']]], - ['aligned_5fhighp_5fbvec4',['aligned_highp_bvec4',['../a00303.html#ga9df1d0c425852cf63a57e533b7a83f4f',1,'glm']]], - ['aligned_5fhighp_5fdmat2',['aligned_highp_dmat2',['../a00303.html#ga3a7eeae43cb7673e14cc89bf02f7dd45',1,'glm']]], - ['aligned_5fhighp_5fdmat2x2',['aligned_highp_dmat2x2',['../a00303.html#gaef26dfe3855a91644665b55c9096a8c8',1,'glm']]], - ['aligned_5fhighp_5fdmat2x3',['aligned_highp_dmat2x3',['../a00303.html#gaa7c9d4ab7ab651cdf8001fe7843e238b',1,'glm']]], - ['aligned_5fhighp_5fdmat2x4',['aligned_highp_dmat2x4',['../a00303.html#gaa0d2b8a75f1908dcf32c27f8524bdced',1,'glm']]], - ['aligned_5fhighp_5fdmat3',['aligned_highp_dmat3',['../a00303.html#gad8f6abb2c9994850b5d5c04a5f979ed8',1,'glm']]], - ['aligned_5fhighp_5fdmat3x2',['aligned_highp_dmat3x2',['../a00303.html#gab069b2fc2ec785fc4e193cf26c022679',1,'glm']]], - ['aligned_5fhighp_5fdmat3x3',['aligned_highp_dmat3x3',['../a00303.html#ga66073b1ddef34b681741f572338ddb8e',1,'glm']]], - ['aligned_5fhighp_5fdmat3x4',['aligned_highp_dmat3x4',['../a00303.html#ga683c8ca66de323ea533a760abedd0efc',1,'glm']]], - ['aligned_5fhighp_5fdmat4',['aligned_highp_dmat4',['../a00303.html#gacaa7407ea00ffdd322ce86a57adb547e',1,'glm']]], - ['aligned_5fhighp_5fdmat4x2',['aligned_highp_dmat4x2',['../a00303.html#ga93a23ca3d42818d56e0702213c66354b',1,'glm']]], - ['aligned_5fhighp_5fdmat4x3',['aligned_highp_dmat4x3',['../a00303.html#gacab7374b560745cb1d0a306a90353f58',1,'glm']]], - ['aligned_5fhighp_5fdmat4x4',['aligned_highp_dmat4x4',['../a00303.html#ga1fbfba14368b742972d3b58a0a303682',1,'glm']]], - ['aligned_5fhighp_5fdvec1',['aligned_highp_dvec1',['../a00303.html#gaf0448b0f7ceb8273f7eda3a92205eefc',1,'glm']]], - ['aligned_5fhighp_5fdvec2',['aligned_highp_dvec2',['../a00303.html#gab173a333e6b7ce153ceba66ac4a321cf',1,'glm']]], - ['aligned_5fhighp_5fdvec3',['aligned_highp_dvec3',['../a00303.html#gae94ef61edfa047d05bc69b6065fc42ba',1,'glm']]], - ['aligned_5fhighp_5fdvec4',['aligned_highp_dvec4',['../a00303.html#ga8fad35c5677f228e261fe541f15363a4',1,'glm']]], - ['aligned_5fhighp_5fivec1',['aligned_highp_ivec1',['../a00303.html#gad63b8c5b4dc0500d54d7414ef555178f',1,'glm']]], - ['aligned_5fhighp_5fivec2',['aligned_highp_ivec2',['../a00303.html#ga41563650f36cb7f479e080de21e08418',1,'glm']]], - ['aligned_5fhighp_5fivec3',['aligned_highp_ivec3',['../a00303.html#ga6eca5170bb35eac90b4972590fd31a06',1,'glm']]], - ['aligned_5fhighp_5fivec4',['aligned_highp_ivec4',['../a00303.html#ga31bfa801e1579fdba752ec3f7a45ec91',1,'glm']]], - ['aligned_5fhighp_5fmat2',['aligned_highp_mat2',['../a00303.html#gaf9db5e8a929c317da5aa12cc53741b63',1,'glm']]], - ['aligned_5fhighp_5fmat2x2',['aligned_highp_mat2x2',['../a00303.html#gab559d943abf92bc588bcd3f4c0e4664b',1,'glm']]], - ['aligned_5fhighp_5fmat2x3',['aligned_highp_mat2x3',['../a00303.html#ga50c9af5aa3a848956d625fc64dc8488e',1,'glm']]], - ['aligned_5fhighp_5fmat2x4',['aligned_highp_mat2x4',['../a00303.html#ga0edcfdd179f8a158342eead48a4d0c2a',1,'glm']]], - ['aligned_5fhighp_5fmat3',['aligned_highp_mat3',['../a00303.html#gabab3afcc04459c7b123604ae5dc663f6',1,'glm']]], - ['aligned_5fhighp_5fmat3x2',['aligned_highp_mat3x2',['../a00303.html#ga9fc2167b47c9be9295f2d8eea7f0ca75',1,'glm']]], - ['aligned_5fhighp_5fmat3x3',['aligned_highp_mat3x3',['../a00303.html#ga2f7b8c99ba6f2d07c73a195a8143c259',1,'glm']]], - ['aligned_5fhighp_5fmat3x4',['aligned_highp_mat3x4',['../a00303.html#ga52e00afd0eb181e6738f40cf41787049',1,'glm']]], - ['aligned_5fhighp_5fmat4',['aligned_highp_mat4',['../a00303.html#ga058ae939bfdbcbb80521dd4a3b01afba',1,'glm']]], - ['aligned_5fhighp_5fmat4x2',['aligned_highp_mat4x2',['../a00303.html#ga84e1f5e0718952a079b748825c03f956',1,'glm']]], - ['aligned_5fhighp_5fmat4x3',['aligned_highp_mat4x3',['../a00303.html#gafff1684c4ff19b4a818138ccacc1e78d',1,'glm']]], - ['aligned_5fhighp_5fmat4x4',['aligned_highp_mat4x4',['../a00303.html#ga40d49648083a0498a12a4bb41ae6ece8',1,'glm']]], - ['aligned_5fhighp_5fuvec1',['aligned_highp_uvec1',['../a00303.html#ga5b80e28396c6ef7d32c6fd18df498451',1,'glm']]], - ['aligned_5fhighp_5fuvec2',['aligned_highp_uvec2',['../a00303.html#ga04db692662a4908beeaf5a5ba6e19483',1,'glm']]], - ['aligned_5fhighp_5fuvec3',['aligned_highp_uvec3',['../a00303.html#ga073fd6e8b241afade6d8afbd676b2667',1,'glm']]], - ['aligned_5fhighp_5fuvec4',['aligned_highp_uvec4',['../a00303.html#gabdd60462042859f876c17c7346c732a5',1,'glm']]], - ['aligned_5fhighp_5fvec1',['aligned_highp_vec1',['../a00303.html#ga4d0bd70d5fac49b800546d608b707513',1,'glm']]], - ['aligned_5fhighp_5fvec2',['aligned_highp_vec2',['../a00303.html#gac9f8482dde741fb6bab7248b81a45465',1,'glm']]], - ['aligned_5fhighp_5fvec3',['aligned_highp_vec3',['../a00303.html#ga65415d2d68c9cc0ca554524a8f5510b2',1,'glm']]], - ['aligned_5fhighp_5fvec4',['aligned_highp_vec4',['../a00303.html#ga7cb26d354dd69d23849c34c4fba88da9',1,'glm']]], - ['aligned_5fivec1',['aligned_ivec1',['../a00303.html#ga76298aed82a439063c3d55980c84aa0b',1,'glm']]], - ['aligned_5fivec2',['aligned_ivec2',['../a00303.html#gae4f38fd2c86cee6940986197777b3ca4',1,'glm']]], - ['aligned_5fivec3',['aligned_ivec3',['../a00303.html#ga32794322d294e5ace7fed4a61896f270',1,'glm']]], - ['aligned_5fivec4',['aligned_ivec4',['../a00303.html#ga7f79eae5927c9033d84617e49f6f34e4',1,'glm']]], - ['aligned_5flowp_5fbvec1',['aligned_lowp_bvec1',['../a00303.html#gac6036449ab1c4abf8efe1ea00fcdd1c9',1,'glm']]], - ['aligned_5flowp_5fbvec2',['aligned_lowp_bvec2',['../a00303.html#ga59fadcd3835646e419372ae8b43c5d37',1,'glm']]], - ['aligned_5flowp_5fbvec3',['aligned_lowp_bvec3',['../a00303.html#ga83aab4d191053f169c93a3e364f2e118',1,'glm']]], - ['aligned_5flowp_5fbvec4',['aligned_lowp_bvec4',['../a00303.html#gaa7a76555ee4853614e5755181a8dd54e',1,'glm']]], - ['aligned_5flowp_5fdmat2',['aligned_lowp_dmat2',['../a00303.html#ga79a90173d8faa9816dc852ce447d66ca',1,'glm']]], - ['aligned_5flowp_5fdmat2x2',['aligned_lowp_dmat2x2',['../a00303.html#ga07cb8e846666cbf56045b064fb553d2e',1,'glm']]], - ['aligned_5flowp_5fdmat2x3',['aligned_lowp_dmat2x3',['../a00303.html#ga7a4536b6e1f2ebb690f63816b5d7e48b',1,'glm']]], - ['aligned_5flowp_5fdmat2x4',['aligned_lowp_dmat2x4',['../a00303.html#gab0cf4f7c9a264941519acad286e055ea',1,'glm']]], - ['aligned_5flowp_5fdmat3',['aligned_lowp_dmat3',['../a00303.html#gac00e15efded8a57c9dec3aed0fb547e7',1,'glm']]], - ['aligned_5flowp_5fdmat3x2',['aligned_lowp_dmat3x2',['../a00303.html#gaa281a47d5d627313984d0f8df993b648',1,'glm']]], - ['aligned_5flowp_5fdmat3x3',['aligned_lowp_dmat3x3',['../a00303.html#ga7f3148a72355e39932d6855baca42ebc',1,'glm']]], - ['aligned_5flowp_5fdmat3x4',['aligned_lowp_dmat3x4',['../a00303.html#gaea3ccc5ef5b178e6e49b4fa1427605d3',1,'glm']]], - ['aligned_5flowp_5fdmat4',['aligned_lowp_dmat4',['../a00303.html#gab92c6d7d58d43dfb8147e9aedfe8351b',1,'glm']]], - ['aligned_5flowp_5fdmat4x2',['aligned_lowp_dmat4x2',['../a00303.html#gaf806dfdaffb2e9f7681b1cd2825898ce',1,'glm']]], - ['aligned_5flowp_5fdmat4x3',['aligned_lowp_dmat4x3',['../a00303.html#gab0931ac7807fa1428c7bbf249efcdf0d',1,'glm']]], - ['aligned_5flowp_5fdmat4x4',['aligned_lowp_dmat4x4',['../a00303.html#gad8220a93d2fca2dd707821b4ab6f809e',1,'glm']]], - ['aligned_5flowp_5fdvec1',['aligned_lowp_dvec1',['../a00303.html#ga7f8a2cc5a686e52b1615761f4978ca62',1,'glm']]], - ['aligned_5flowp_5fdvec2',['aligned_lowp_dvec2',['../a00303.html#ga0e37cff4a43cca866101f0a35f01db6d',1,'glm']]], - ['aligned_5flowp_5fdvec3',['aligned_lowp_dvec3',['../a00303.html#gab9e669c4efd52d3347fc6d5f6b20fd59',1,'glm']]], - ['aligned_5flowp_5fdvec4',['aligned_lowp_dvec4',['../a00303.html#ga226f5ec7a953cea559c16fe3aff9924f',1,'glm']]], - ['aligned_5flowp_5fivec1',['aligned_lowp_ivec1',['../a00303.html#ga1101d3a82b2e3f5f8828bd8f3adab3e1',1,'glm']]], - ['aligned_5flowp_5fivec2',['aligned_lowp_ivec2',['../a00303.html#ga44c4accad582cfbd7226a19b83b0cadc',1,'glm']]], - ['aligned_5flowp_5fivec3',['aligned_lowp_ivec3',['../a00303.html#ga65663f10a02e52cedcddbcfe36ddf38d',1,'glm']]], - ['aligned_5flowp_5fivec4',['aligned_lowp_ivec4',['../a00303.html#gaae92fcec8b2e0328ffbeac31cc4fc419',1,'glm']]], - ['aligned_5flowp_5fmat2',['aligned_lowp_mat2',['../a00303.html#ga17c424412207b00dba1cf587b099eea3',1,'glm']]], - ['aligned_5flowp_5fmat2x2',['aligned_lowp_mat2x2',['../a00303.html#ga0e44aeb930a47f9cbf2db15b56433b0f',1,'glm']]], - ['aligned_5flowp_5fmat2x3',['aligned_lowp_mat2x3',['../a00303.html#ga7dec6d96bc61312b1e56d137c9c74030',1,'glm']]], - ['aligned_5flowp_5fmat2x4',['aligned_lowp_mat2x4',['../a00303.html#gaa694fab1f8df5f658846573ba8ffc563',1,'glm']]], - ['aligned_5flowp_5fmat3',['aligned_lowp_mat3',['../a00303.html#ga1eb9076cc28ead5020fd3029fd0472c5',1,'glm']]], - ['aligned_5flowp_5fmat3x2',['aligned_lowp_mat3x2',['../a00303.html#ga2d6639f0bd777bae1ee0eba71cd7bfdc',1,'glm']]], - ['aligned_5flowp_5fmat3x3',['aligned_lowp_mat3x3',['../a00303.html#gaeaab04e378a90956eec8d68a99d777ed',1,'glm']]], - ['aligned_5flowp_5fmat3x4',['aligned_lowp_mat3x4',['../a00303.html#ga1f03696ab066572c6c044e63edf635a2',1,'glm']]], - ['aligned_5flowp_5fmat4',['aligned_lowp_mat4',['../a00303.html#ga25ea2f684e36aa5e978b4f2f86593824',1,'glm']]], - ['aligned_5flowp_5fmat4x2',['aligned_lowp_mat4x2',['../a00303.html#ga2cb16c3fdfb15e0719d942ee3b548bc4',1,'glm']]], - ['aligned_5flowp_5fmat4x3',['aligned_lowp_mat4x3',['../a00303.html#ga7e96981e872f17a780d9f1c22dc1f512',1,'glm']]], - ['aligned_5flowp_5fmat4x4',['aligned_lowp_mat4x4',['../a00303.html#gadae3dcfc22d28c64d0548cbfd9d08719',1,'glm']]], - ['aligned_5flowp_5fuvec1',['aligned_lowp_uvec1',['../a00303.html#gad09b93acc43c43423408d17a64f6d7ca',1,'glm']]], - ['aligned_5flowp_5fuvec2',['aligned_lowp_uvec2',['../a00303.html#ga6f94fcd28dde906fc6cad5f742b55c1a',1,'glm']]], - ['aligned_5flowp_5fuvec3',['aligned_lowp_uvec3',['../a00303.html#ga9e9f006970b1a00862e3e6e599eedd4c',1,'glm']]], - ['aligned_5flowp_5fuvec4',['aligned_lowp_uvec4',['../a00303.html#ga46b1b0b9eb8625a5d69137bd66cd13dc',1,'glm']]], - ['aligned_5flowp_5fvec1',['aligned_lowp_vec1',['../a00303.html#gab34aee3d5e121c543fea11d2c50ecc43',1,'glm']]], - ['aligned_5flowp_5fvec2',['aligned_lowp_vec2',['../a00303.html#ga53ac5d252317f1fa43c2ef921857bf13',1,'glm']]], - ['aligned_5flowp_5fvec3',['aligned_lowp_vec3',['../a00303.html#ga98f0b5cd65fce164ff1367c2a3b3aa1e',1,'glm']]], - ['aligned_5flowp_5fvec4',['aligned_lowp_vec4',['../a00303.html#ga82f7275d6102593a69ce38cdad680409',1,'glm']]], - ['aligned_5fmat2',['aligned_mat2',['../a00303.html#ga5a8a5f8c47cd7d5502dd9932f83472b9',1,'glm']]], - ['aligned_5fmat2x2',['aligned_mat2x2',['../a00303.html#gabb04f459d81d753d278b2072e2375e8e',1,'glm']]], - ['aligned_5fmat2x3',['aligned_mat2x3',['../a00303.html#ga832476bb1c59ef673db37433ff34e399',1,'glm']]], - ['aligned_5fmat2x4',['aligned_mat2x4',['../a00303.html#gadab11a7504430825b648ff7c7e36b725',1,'glm']]], - ['aligned_5fmat3',['aligned_mat3',['../a00303.html#ga43a92a24ca863e0e0f3b65834b3cf714',1,'glm']]], - ['aligned_5fmat3x2',['aligned_mat3x2',['../a00303.html#ga5c0df24ba85eafafc0eb0c90690510ed',1,'glm']]], - ['aligned_5fmat3x3',['aligned_mat3x3',['../a00303.html#gadb065dbe5c11271fef8cf2ea8608f187',1,'glm']]], - ['aligned_5fmat3x4',['aligned_mat3x4',['../a00303.html#ga88061c72c997b94c420f2b0a60d9df26',1,'glm']]], - ['aligned_5fmat4',['aligned_mat4',['../a00303.html#gab0fddcf95dd51cbcbf624ea7c40dfeb8',1,'glm']]], - ['aligned_5fmat4x2',['aligned_mat4x2',['../a00303.html#gac9a2d0fb815fd5c2bd58b869c55e32d3',1,'glm']]], - ['aligned_5fmat4x3',['aligned_mat4x3',['../a00303.html#ga452bbbfd26e244de216e4d004d50bb74',1,'glm']]], - ['aligned_5fmat4x4',['aligned_mat4x4',['../a00303.html#ga8b8fb86973a0b768c5bd802c92fac1a1',1,'glm']]], - ['aligned_5fmediump_5fbvec1',['aligned_mediump_bvec1',['../a00303.html#gadd3b8bd71a758f7fb0da8e525156f34e',1,'glm']]], - ['aligned_5fmediump_5fbvec2',['aligned_mediump_bvec2',['../a00303.html#gacb183eb5e67ec0d0ea5a016cba962810',1,'glm']]], - ['aligned_5fmediump_5fbvec3',['aligned_mediump_bvec3',['../a00303.html#gacfa4a542f1b20a5b63ad702dfb6fd587',1,'glm']]], - ['aligned_5fmediump_5fbvec4',['aligned_mediump_bvec4',['../a00303.html#ga91bc1f513bb9b0fd60281d57ded9a48c',1,'glm']]], - ['aligned_5fmediump_5fdmat2',['aligned_mediump_dmat2',['../a00303.html#ga62a2dfd668c91072b72c3109fc6cda28',1,'glm']]], - ['aligned_5fmediump_5fdmat2x2',['aligned_mediump_dmat2x2',['../a00303.html#ga9b7feec247d378dd407ba81f56ea96c8',1,'glm']]], - ['aligned_5fmediump_5fdmat2x3',['aligned_mediump_dmat2x3',['../a00303.html#gafcb189f4f93648fe7ca802ca4aca2eb8',1,'glm']]], - ['aligned_5fmediump_5fdmat2x4',['aligned_mediump_dmat2x4',['../a00303.html#ga92f8873e3bbd5ca1323c8bbe5725cc5e',1,'glm']]], - ['aligned_5fmediump_5fdmat3',['aligned_mediump_dmat3',['../a00303.html#ga6dc2832b747c00e0a0df621aba196960',1,'glm']]], - ['aligned_5fmediump_5fdmat3x2',['aligned_mediump_dmat3x2',['../a00303.html#ga5a97f0355d801de3444d42c1d5b40438',1,'glm']]], - ['aligned_5fmediump_5fdmat3x3',['aligned_mediump_dmat3x3',['../a00303.html#ga649d0acf01054b17e679cf00e150e025',1,'glm']]], - ['aligned_5fmediump_5fdmat3x4',['aligned_mediump_dmat3x4',['../a00303.html#ga45e155a4840f69b2fa4ed8047a676860',1,'glm']]], - ['aligned_5fmediump_5fdmat4',['aligned_mediump_dmat4',['../a00303.html#ga8a9376d82f0e946e25137eb55543e6ce',1,'glm']]], - ['aligned_5fmediump_5fdmat4x2',['aligned_mediump_dmat4x2',['../a00303.html#gabc25e547f4de4af62403492532cd1b6d',1,'glm']]], - ['aligned_5fmediump_5fdmat4x3',['aligned_mediump_dmat4x3',['../a00303.html#gae84f4763ecdc7457ecb7930bad12057c',1,'glm']]], - ['aligned_5fmediump_5fdmat4x4',['aligned_mediump_dmat4x4',['../a00303.html#gaa292ebaa907afdecb2d5967fb4fb1247',1,'glm']]], - ['aligned_5fmediump_5fdvec1',['aligned_mediump_dvec1',['../a00303.html#ga7180b685c581adb224406a7f831608e3',1,'glm']]], - ['aligned_5fmediump_5fdvec2',['aligned_mediump_dvec2',['../a00303.html#ga9af1eabe22f569e70d9893be72eda0f5',1,'glm']]], - ['aligned_5fmediump_5fdvec3',['aligned_mediump_dvec3',['../a00303.html#ga058e7ddab1428e47f2197bdd3a5a6953',1,'glm']]], - ['aligned_5fmediump_5fdvec4',['aligned_mediump_dvec4',['../a00303.html#gaffd747ea2aea1e69c2ecb04e68521b21',1,'glm']]], - ['aligned_5fmediump_5fivec1',['aligned_mediump_ivec1',['../a00303.html#ga20e63dd980b81af10cadbbe219316650',1,'glm']]], - ['aligned_5fmediump_5fivec2',['aligned_mediump_ivec2',['../a00303.html#gaea13d89d49daca2c796aeaa82fc2c2f2',1,'glm']]], - ['aligned_5fmediump_5fivec3',['aligned_mediump_ivec3',['../a00303.html#gabbf0f15e9c3d9868e43241ad018f82bd',1,'glm']]], - ['aligned_5fmediump_5fivec4',['aligned_mediump_ivec4',['../a00303.html#ga6099dd7878d0a78101a4250d8cd2d736',1,'glm']]], - ['aligned_5fmediump_5fmat2',['aligned_mediump_mat2',['../a00303.html#gaf6f041b212c57664d88bc6aefb7e36f3',1,'glm']]], - ['aligned_5fmediump_5fmat2x2',['aligned_mediump_mat2x2',['../a00303.html#ga04bf49316ee777d42fcfe681ee37d7be',1,'glm']]], - ['aligned_5fmediump_5fmat2x3',['aligned_mediump_mat2x3',['../a00303.html#ga26a0b61e444a51a37b9737cf4d84291b',1,'glm']]], - ['aligned_5fmediump_5fmat2x4',['aligned_mediump_mat2x4',['../a00303.html#ga163facc9ed2692ea1300ed57c5d12b17',1,'glm']]], - ['aligned_5fmediump_5fmat3',['aligned_mediump_mat3',['../a00303.html#ga3b76ba17ae5d53debeb6f7e55919a57c',1,'glm']]], - ['aligned_5fmediump_5fmat3x2',['aligned_mediump_mat3x2',['../a00303.html#ga80dee705d714300378e0847f45059097',1,'glm']]], - ['aligned_5fmediump_5fmat3x3',['aligned_mediump_mat3x3',['../a00303.html#ga721f5404caf40d68962dcc0529de71d9',1,'glm']]], - ['aligned_5fmediump_5fmat3x4',['aligned_mediump_mat3x4',['../a00303.html#ga98f4dc6722a2541a990918c074075359',1,'glm']]], - ['aligned_5fmediump_5fmat4',['aligned_mediump_mat4',['../a00303.html#gaeefee8317192174596852ce19b602720',1,'glm']]], - ['aligned_5fmediump_5fmat4x2',['aligned_mediump_mat4x2',['../a00303.html#ga46f372a006345c252a41267657cc22c0',1,'glm']]], - ['aligned_5fmediump_5fmat4x3',['aligned_mediump_mat4x3',['../a00303.html#ga0effece4545acdebdc2a5512a303110e',1,'glm']]], - ['aligned_5fmediump_5fmat4x4',['aligned_mediump_mat4x4',['../a00303.html#ga312864244cae4e8f10f478cffd0f76de',1,'glm']]], - ['aligned_5fmediump_5fuvec1',['aligned_mediump_uvec1',['../a00303.html#gacb78126ea2eb779b41c7511128ff1283',1,'glm']]], - ['aligned_5fmediump_5fuvec2',['aligned_mediump_uvec2',['../a00303.html#ga081d53e0a71443d0b68ea61c870f9adc',1,'glm']]], - ['aligned_5fmediump_5fuvec3',['aligned_mediump_uvec3',['../a00303.html#gad6fc921bdde2bdbc7e09b028e1e9b379',1,'glm']]], - ['aligned_5fmediump_5fuvec4',['aligned_mediump_uvec4',['../a00303.html#ga73ea0c1ba31580e107d21270883f51fc',1,'glm']]], - ['aligned_5fmediump_5fvec1',['aligned_mediump_vec1',['../a00303.html#ga6b797eec76fa471e300158f3453b3b2e',1,'glm']]], - ['aligned_5fmediump_5fvec2',['aligned_mediump_vec2',['../a00303.html#ga026a55ddbf2bafb1432f1157a2708616',1,'glm']]], - ['aligned_5fmediump_5fvec3',['aligned_mediump_vec3',['../a00303.html#ga3a25e494173f6a64637b08a1b50a2132',1,'glm']]], - ['aligned_5fmediump_5fvec4',['aligned_mediump_vec4',['../a00303.html#ga320d1c661cff2ef214eb50241f2928b2',1,'glm']]], - ['aligned_5fuvec1',['aligned_uvec1',['../a00303.html#ga1ff8ed402c93d280ff0597c1c5e7c548',1,'glm']]], - ['aligned_5fuvec2',['aligned_uvec2',['../a00303.html#ga074137e3be58528d67041c223d49f398',1,'glm']]], - ['aligned_5fuvec3',['aligned_uvec3',['../a00303.html#ga2a8d9c3046f89d854eb758adfa0811c0',1,'glm']]], - ['aligned_5fuvec4',['aligned_uvec4',['../a00303.html#gabf842c45eea186170c267a328e3f3b7d',1,'glm']]], - ['aligned_5fvec1',['aligned_vec1',['../a00303.html#ga05e6d4c908965d04191c2070a8d0a65e',1,'glm']]], - ['aligned_5fvec2',['aligned_vec2',['../a00303.html#ga0682462f8096a226773e20fac993cde5',1,'glm']]], - ['aligned_5fvec3',['aligned_vec3',['../a00303.html#ga7cf643b66664e0cd3c48759ae66c2bd0',1,'glm']]], - ['aligned_5fvec4',['aligned_vec4',['../a00303.html#ga85d89e83cb8137e1be1446de8c3b643a',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_1.html b/tests/OpenGL/package/glm/doc/api/search/typedefs_1.html deleted file mode 100644 index c44c36f9..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_1.js b/tests/OpenGL/package/glm/doc/api/search/typedefs_1.js deleted file mode 100644 index 45d4b645..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_1.js +++ /dev/null @@ -1,22 +0,0 @@ -var searchData= -[ - ['bool1',['bool1',['../a00315.html#gaddcd7aa2e30e61af5b38660613d3979e',1,'glm']]], - ['bool1x1',['bool1x1',['../a00315.html#ga7f895c936f0c29c8729afbbf22806090',1,'glm']]], - ['bool2',['bool2',['../a00315.html#gaa09ab65ec9c3c54305ff502e2b1fe6d9',1,'glm']]], - ['bool2x2',['bool2x2',['../a00315.html#gadb3703955e513632f98ba12fe051ba3e',1,'glm']]], - ['bool2x3',['bool2x3',['../a00315.html#ga9ae6ee155d0f90cb1ae5b6c4546738a0',1,'glm']]], - ['bool2x4',['bool2x4',['../a00315.html#ga4d7fa65be8e8e4ad6d920b45c44e471f',1,'glm']]], - ['bool3',['bool3',['../a00315.html#ga99629f818737f342204071ef8296b2ed',1,'glm']]], - ['bool3x2',['bool3x2',['../a00315.html#gac7d7311f7e0fa8b6163d96dab033a755',1,'glm']]], - ['bool3x3',['bool3x3',['../a00315.html#ga6c97b99aac3e302053ffb58aace9033c',1,'glm']]], - ['bool3x4',['bool3x4',['../a00315.html#gae7d6b679463d37d6c527d478fb470fdf',1,'glm']]], - ['bool4',['bool4',['../a00315.html#ga13c3200b82708f73faac6d7f09ec91a3',1,'glm']]], - ['bool4x2',['bool4x2',['../a00315.html#ga9ed830f52408b2f83c085063a3eaf1d0',1,'glm']]], - ['bool4x3',['bool4x3',['../a00315.html#gad0f5dc7f22c2065b1b06d57f1c0658fe',1,'glm']]], - ['bool4x4',['bool4x4',['../a00315.html#ga7d2a7d13986602ae2896bfaa394235d4',1,'glm']]], - ['bvec1',['bvec1',['../a00265.html#ga067af382616d93f8e850baae5154cdcc',1,'glm']]], - ['bvec2',['bvec2',['../a00281.html#ga0b6123e03653cc1bbe366fc55238a934',1,'glm']]], - ['bvec3',['bvec3',['../a00281.html#ga197151b72dfaf289daf98b361760ffe7',1,'glm']]], - ['bvec4',['bvec4',['../a00281.html#ga9f7b9712373ff4342d9114619b55f5e3',1,'glm']]], - ['byte',['byte',['../a00354.html#ga3005cb0d839d546c616becfa6602c607',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_2.html b/tests/OpenGL/package/glm/doc/api/search/typedefs_2.html deleted file mode 100644 index d64bac3c..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_2.js b/tests/OpenGL/package/glm/doc/api/search/typedefs_2.js deleted file mode 100644 index ad938367..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_2.js +++ /dev/null @@ -1,37 +0,0 @@ -var searchData= -[ - ['ddualquat',['ddualquat',['../a00317.html#ga3d71f98d84ba59dfe4e369fde4714cd6',1,'glm']]], - ['dmat2',['dmat2',['../a00283.html#ga21dbd1f987775d7cc7607c139531c7e6',1,'glm']]], - ['dmat2x2',['dmat2x2',['../a00283.html#ga66b6a9af787e468a46dfe24189e87f9b',1,'glm']]], - ['dmat2x3',['dmat2x3',['../a00283.html#ga92cd388753d48e20de69ea2dbedf826a',1,'glm']]], - ['dmat2x4',['dmat2x4',['../a00283.html#gaef2198807e937072803ae0ae45e1965e',1,'glm']]], - ['dmat3',['dmat3',['../a00283.html#ga6f40aa56265b4b0ccad41b86802efe33',1,'glm']]], - ['dmat3x2',['dmat3x2',['../a00283.html#ga001e3e0638fbf8719788fc64c5b8cf39',1,'glm']]], - ['dmat3x3',['dmat3x3',['../a00283.html#ga970cb3306be25a5ca5db5a9456831228',1,'glm']]], - ['dmat3x4',['dmat3x4',['../a00283.html#ga0412a634d183587e6188e9b11869f8f4',1,'glm']]], - ['dmat4',['dmat4',['../a00283.html#ga0f34486bb7fec8e5a5b3830b6a6cbeca',1,'glm']]], - ['dmat4x2',['dmat4x2',['../a00283.html#ga9bc0b3ab8b6ba2cb6782e179ad7ad156',1,'glm']]], - ['dmat4x3',['dmat4x3',['../a00283.html#gacd18864049f8c83799babe7e596ca05b',1,'glm']]], - ['dmat4x4',['dmat4x4',['../a00283.html#gad5a6484b983b74f9d801cab8bc4e6a10',1,'glm']]], - ['double1',['double1',['../a00315.html#ga20b861a9b6e2a300323671c57a02525b',1,'glm']]], - ['double1x1',['double1x1',['../a00315.html#ga45f16a4dd0db1f199afaed9fd12fe9a8',1,'glm']]], - ['double2',['double2',['../a00315.html#ga31b729b04facccda73f07ed26958b3c2',1,'glm']]], - ['double2x2',['double2x2',['../a00315.html#gae57d0201096834d25f2b91b319e7cdbd',1,'glm']]], - ['double2x3',['double2x3',['../a00315.html#ga3655bc324008553ca61f39952d0b2d08',1,'glm']]], - ['double2x4',['double2x4',['../a00315.html#gacd33061fc64a7b2dcfd7322c49d9557a',1,'glm']]], - ['double3',['double3',['../a00315.html#ga3d8b9028a1053a44a98902cd1c389472',1,'glm']]], - ['double3x2',['double3x2',['../a00315.html#ga5ec08fc39c9d783dfcc488be240fe975',1,'glm']]], - ['double3x3',['double3x3',['../a00315.html#ga4bad5bb20c6ddaecfe4006c93841d180',1,'glm']]], - ['double3x4',['double3x4',['../a00315.html#ga2ef022e453d663d70aec414b2a80f756',1,'glm']]], - ['double4',['double4',['../a00315.html#gaf92f58af24f35617518aeb3d4f63fda6',1,'glm']]], - ['double4x2',['double4x2',['../a00315.html#gabca29ccceea53669618b751aae0ba83d',1,'glm']]], - ['double4x3',['double4x3',['../a00315.html#gafad66a02ccd360c86d6ab9ff9cfbc19c',1,'glm']]], - ['double4x4',['double4x4',['../a00315.html#gaab541bed2e788e4537852a2492860806',1,'glm']]], - ['dquat',['dquat',['../a00249.html#ga1181459aa5d640a3ea43861b118f3f0b',1,'glm']]], - ['dualquat',['dualquat',['../a00317.html#gae93abee0c979902fbec6a7bee0f6fae1',1,'glm']]], - ['dvec1',['dvec1',['../a00268.html#ga6221af17edc2d4477a4583d2cd53e569',1,'glm']]], - ['dvec2',['dvec2',['../a00281.html#ga8b09c71aaac7da7867ae58377fe219a8',1,'glm']]], - ['dvec3',['dvec3',['../a00281.html#ga5b83ae3d0fdec519c038e4d2cf967cf0',1,'glm']]], - ['dvec4',['dvec4',['../a00281.html#ga57debab5d98ce618f7b2a97fe26eb3ac',1,'glm']]], - ['dword',['dword',['../a00354.html#ga86e46fff9f80ae33893d8d697f2ca98a',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_3.html b/tests/OpenGL/package/glm/doc/api/search/typedefs_3.html deleted file mode 100644 index 10b9917f..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_3.js b/tests/OpenGL/package/glm/doc/api/search/typedefs_3.js deleted file mode 100644 index a64f1295..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_3.js +++ /dev/null @@ -1,78 +0,0 @@ -var searchData= -[ - ['f32',['f32',['../a00304.html#gabe6a542dd6c1d5ffd847f1b9b4c9c9b7',1,'glm']]], - ['f32mat1',['f32mat1',['../a00346.html#ga145ad477a2a3e152855511c3b52469a6',1,'glm::gtx']]], - ['f32mat1x1',['f32mat1x1',['../a00346.html#gac88c6a4dbfc380aa26e3adbbade36348',1,'glm::gtx']]], - ['f32mat2',['f32mat2',['../a00304.html#gab12383ed6ac7595ed6fde4d266c58425',1,'glm']]], - ['f32mat2x2',['f32mat2x2',['../a00304.html#ga04100c76f7d55a0dd0983ccf05142bff',1,'glm']]], - ['f32mat2x3',['f32mat2x3',['../a00304.html#gab256cdab5eb582e426d749ae77b5b566',1,'glm']]], - ['f32mat2x4',['f32mat2x4',['../a00304.html#gaf512b74c4400b68f9fdf9388b3d6aac8',1,'glm']]], - ['f32mat3',['f32mat3',['../a00304.html#ga856f3905ee7cc2e4890a8a1d56c150be',1,'glm']]], - ['f32mat3x2',['f32mat3x2',['../a00304.html#ga1320a08e14fdff3821241eefab6947e9',1,'glm']]], - ['f32mat3x3',['f32mat3x3',['../a00304.html#ga65261fa8a21045c8646ddff114a56174',1,'glm']]], - ['f32mat3x4',['f32mat3x4',['../a00304.html#gab90ade28222f8b861d5ceaf81a3a7f5d',1,'glm']]], - ['f32mat4',['f32mat4',['../a00304.html#ga99d1b85ff99956b33da7e9992aad129a',1,'glm']]], - ['f32mat4x2',['f32mat4x2',['../a00304.html#ga3b32ca1e57a4ef91babbc3d35a34ea20',1,'glm']]], - ['f32mat4x3',['f32mat4x3',['../a00304.html#ga239b96198771b7add8eea7e6b59840c0',1,'glm']]], - ['f32mat4x4',['f32mat4x4',['../a00304.html#gaee4da0e9fbd8cfa2f89cb80889719dc3',1,'glm']]], - ['f32quat',['f32quat',['../a00304.html#ga38e674196ba411d642be40c47bf33939',1,'glm']]], - ['f32vec1',['f32vec1',['../a00304.html#ga701f32ab5b3fb06996b41f5c0d643805',1,'glm::f32vec1()'],['../a00346.html#ga07f8d7348eb7ae059a84c118fdfeb943',1,'glm::gtx::f32vec1()']]], - ['f32vec2',['f32vec2',['../a00304.html#ga5d6c70e080409a76a257dc55bd8ea2c8',1,'glm']]], - ['f32vec3',['f32vec3',['../a00304.html#gaea5c4518e175162e306d2c2b5ef5ac79',1,'glm']]], - ['f32vec4',['f32vec4',['../a00304.html#ga31c6ca0e074a44007f49a9a3720b18c8',1,'glm']]], - ['f64',['f64',['../a00304.html#ga1d794d240091678f602e8de225b8d8c9',1,'glm']]], - ['f64mat1',['f64mat1',['../a00346.html#ga59bfa589419b5265d01314fcecd33435',1,'glm::gtx']]], - ['f64mat1x1',['f64mat1x1',['../a00346.html#ga448eeb08d0b7d8c43a8b292c981955fd',1,'glm::gtx']]], - ['f64mat2',['f64mat2',['../a00304.html#gad9771450a54785d13080cdde0fe20c1d',1,'glm']]], - ['f64mat2x2',['f64mat2x2',['../a00304.html#ga9ec7c4c79e303c053e30729a95fb2c37',1,'glm']]], - ['f64mat2x3',['f64mat2x3',['../a00304.html#gae3ab5719fc4c1e966631dbbcba8d412a',1,'glm']]], - ['f64mat2x4',['f64mat2x4',['../a00304.html#gac87278e0c702ba8afff76316d4eeb769',1,'glm']]], - ['f64mat3',['f64mat3',['../a00304.html#ga9b69181efbf8f37ae934f135137b29c0',1,'glm']]], - ['f64mat3x2',['f64mat3x2',['../a00304.html#ga2473d8bf3f4abf967c4d0e18175be6f7',1,'glm']]], - ['f64mat3x3',['f64mat3x3',['../a00304.html#ga916c1aed91cf91f7b41399ebe7c6e185',1,'glm']]], - ['f64mat3x4',['f64mat3x4',['../a00304.html#gaab239fa9e35b65a67cbaa6ac082f3675',1,'glm']]], - ['f64mat4',['f64mat4',['../a00304.html#ga0ecd3f4952536e5ef12702b44d2626fc',1,'glm']]], - ['f64mat4x2',['f64mat4x2',['../a00304.html#gab7daf79d6bc06a68bea1c6f5e11b5512',1,'glm']]], - ['f64mat4x3',['f64mat4x3',['../a00304.html#ga3e2e66ffbe341a80bc005ba2b9552110',1,'glm']]], - ['f64mat4x4',['f64mat4x4',['../a00304.html#gae52e2b7077a9ff928a06ab5ce600b81e',1,'glm']]], - ['f64quat',['f64quat',['../a00304.html#ga2b114a2f2af0fe1dfeb569c767822940',1,'glm']]], - ['f64vec1',['f64vec1',['../a00304.html#gade502df1ce14f837fae7f60a03ddb9b0',1,'glm::f64vec1()'],['../a00346.html#gae5987a61b8c03d5c432a9e62f0b3efe1',1,'glm::gtx::f64vec1()']]], - ['f64vec2',['f64vec2',['../a00304.html#gadc4e1594f9555d919131ee02b17822a2',1,'glm']]], - ['f64vec3',['f64vec3',['../a00304.html#gaa7a1ddca75c5f629173bf4772db7a635',1,'glm']]], - ['f64vec4',['f64vec4',['../a00304.html#ga66e92e57260bdb910609b9a56bf83e97',1,'glm']]], - ['fdualquat',['fdualquat',['../a00317.html#ga237c2b9b42c9a930e49de5840ae0f930',1,'glm']]], - ['float1',['float1',['../a00315.html#gaf5208d01f6c6fbcb7bb55d610b9c0ead',1,'glm']]], - ['float1x1',['float1x1',['../a00315.html#ga73720b8dc4620835b17f74d428f98c0c',1,'glm']]], - ['float2',['float2',['../a00315.html#ga02d3c013982c183906c61d74aa3166ce',1,'glm']]], - ['float2x2',['float2x2',['../a00315.html#ga33d43ecbb60a85a1366ff83f8a0ec85f',1,'glm']]], - ['float2x3',['float2x3',['../a00315.html#ga939b0cff15cee3030f75c1b2e36f89fe',1,'glm']]], - ['float2x4',['float2x4',['../a00315.html#gafec3cfd901ab334a92e0242b8f2269b4',1,'glm']]], - ['float3',['float3',['../a00315.html#ga821ff110fc8533a053cbfcc93e078cc0',1,'glm']]], - ['float32',['float32',['../a00304.html#gaacdc525d6f7bddb3ae95d5c311bd06a1',1,'glm']]], - ['float32_5ft',['float32_t',['../a00304.html#gaa4947bc8b47c72fceea9bda730ecf603',1,'glm']]], - ['float3x2',['float3x2',['../a00315.html#gaa6c69f04ba95f3faedf95dae874de576',1,'glm']]], - ['float3x3',['float3x3',['../a00315.html#ga6ceb5d38a58becdf420026e12a6562f3',1,'glm']]], - ['float3x4',['float3x4',['../a00315.html#ga4d2679c321b793ca3784fe0315bb5332',1,'glm']]], - ['float4',['float4',['../a00315.html#gae2da7345087db3815a25d8837a727ef1',1,'glm']]], - ['float4x2',['float4x2',['../a00315.html#ga308b9af0c221145bcfe9bfc129d9098e',1,'glm']]], - ['float4x3',['float4x3',['../a00315.html#gac0a51b4812038aa81d73ffcc37f741ac',1,'glm']]], - ['float4x4',['float4x4',['../a00315.html#gad3051649b3715d828a4ab92cdae7c3bf',1,'glm']]], - ['float64',['float64',['../a00304.html#ga232fad1b0d6dcc7c16aabde98b2e2a80',1,'glm']]], - ['float64_5ft',['float64_t',['../a00304.html#ga728366fef72cd96f0a5fa6429f05469e',1,'glm']]], - ['fmat2',['fmat2',['../a00304.html#ga4541dc2feb2a31d6ecb5a303f3dd3280',1,'glm']]], - ['fmat2x2',['fmat2x2',['../a00304.html#ga3350c93c3275298f940a42875388e4b4',1,'glm']]], - ['fmat2x3',['fmat2x3',['../a00304.html#ga55a2d2a8eb09b5633668257eb3cad453',1,'glm']]], - ['fmat2x4',['fmat2x4',['../a00304.html#ga681381f19f11c9e5ee45cda2c56937ff',1,'glm']]], - ['fmat3',['fmat3',['../a00304.html#ga253d453c20e037730023fea0215cb6f6',1,'glm']]], - ['fmat3x2',['fmat3x2',['../a00304.html#ga6af54d70d9beb0a7ef992a879e86b04f',1,'glm']]], - ['fmat3x3',['fmat3x3',['../a00304.html#gaa07c86650253672a19dbfb898f3265b8',1,'glm']]], - ['fmat3x4',['fmat3x4',['../a00304.html#ga44e158af77a670ee1b58c03cda9e1619',1,'glm']]], - ['fmat4',['fmat4',['../a00304.html#ga8cb400c0f4438f2640035d7b9824a0ca',1,'glm']]], - ['fmat4x2',['fmat4x2',['../a00304.html#ga8c8aa45aafcc23238edb1d5aeb801774',1,'glm']]], - ['fmat4x3',['fmat4x3',['../a00304.html#ga4295048a78bdf46b8a7de77ec665b497',1,'glm']]], - ['fmat4x4',['fmat4x4',['../a00304.html#gad01cc6479bde1fd1870f13d3ed9530b3',1,'glm']]], - ['fvec1',['fvec1',['../a00304.html#ga98b9ed43cf8c5cf1d354b23c7df9119f',1,'glm']]], - ['fvec2',['fvec2',['../a00304.html#ga24273aa02abaecaab7f160bac437a339',1,'glm']]], - ['fvec3',['fvec3',['../a00304.html#ga89930533646b30d021759298aa6bf04a',1,'glm']]], - ['fvec4',['fvec4',['../a00304.html#ga713c796c54875cf4092d42ff9d9096b0',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_4.html b/tests/OpenGL/package/glm/doc/api/search/typedefs_4.html deleted file mode 100644 index c1ff64d1..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_4.js b/tests/OpenGL/package/glm/doc/api/search/typedefs_4.js deleted file mode 100644 index acc35736..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_4.js +++ /dev/null @@ -1,188 +0,0 @@ -var searchData= -[ - ['highp_5fbvec1',['highp_bvec1',['../a00266.html#gae8a1e14abae1387274f57741750c06a2',1,'glm']]], - ['highp_5fbvec2',['highp_bvec2',['../a00282.html#gac6c781a85f012d77a75310a3058702c2',1,'glm']]], - ['highp_5fbvec3',['highp_bvec3',['../a00282.html#gaedb70027d89a0a405046aefda4eabaa6',1,'glm']]], - ['highp_5fbvec4',['highp_bvec4',['../a00282.html#gaee663ff64429443ab07a5327074192f6',1,'glm']]], - ['highp_5fddualquat',['highp_ddualquat',['../a00317.html#ga8f67eafa7197d7a668dad5105a463d2a',1,'glm']]], - ['highp_5fdmat2',['highp_dmat2',['../a00284.html#ga369b447bb1b312449b679ea1f90f3cea',1,'glm']]], - ['highp_5fdmat2x2',['highp_dmat2x2',['../a00284.html#gae27ac20302c2e39b6c78e7fe18e62ef7',1,'glm']]], - ['highp_5fdmat2x3',['highp_dmat2x3',['../a00284.html#gad4689ec33bc2c26e10132b174b49001a',1,'glm']]], - ['highp_5fdmat2x4',['highp_dmat2x4',['../a00284.html#ga5ceeb46670fdc000a0701910cc5061c9',1,'glm']]], - ['highp_5fdmat3',['highp_dmat3',['../a00284.html#ga86d6d4dbad92ffdcc759773340e15a97',1,'glm']]], - ['highp_5fdmat3x2',['highp_dmat3x2',['../a00284.html#ga3647309010a2160e9ec89bc6f7c95c35',1,'glm']]], - ['highp_5fdmat3x3',['highp_dmat3x3',['../a00284.html#gae367ea93c4ad8a7c101dd27b8b2b04ce',1,'glm']]], - ['highp_5fdmat3x4',['highp_dmat3x4',['../a00284.html#ga6543eeeb64f48d79a0b96484308c50f0',1,'glm']]], - ['highp_5fdmat4',['highp_dmat4',['../a00284.html#ga945254f459860741138bceb74da496b9',1,'glm']]], - ['highp_5fdmat4x2',['highp_dmat4x2',['../a00284.html#gaeda1f474c668eaecc443bea85a4a4eca',1,'glm']]], - ['highp_5fdmat4x3',['highp_dmat4x3',['../a00284.html#gacf237c2d8832fe8db2d7e187585d34bd',1,'glm']]], - ['highp_5fdmat4x4',['highp_dmat4x4',['../a00284.html#ga118d24a3d12c034e7cccef7bf2f01b8a',1,'glm']]], - ['highp_5fdquat',['highp_dquat',['../a00250.html#gaf13a25f41afc03480b40fc71bd249cec',1,'glm']]], - ['highp_5fdualquat',['highp_dualquat',['../a00317.html#ga9ef5bf1da52a9d4932335a517086ceaf',1,'glm']]], - ['highp_5fdvec1',['highp_dvec1',['../a00269.html#ga77c22c4426da3a6865c88d3fc907e3fe',1,'glm']]], - ['highp_5fdvec2',['highp_dvec2',['../a00282.html#gab98d77cca255914f5e29697fcbc2d975',1,'glm']]], - ['highp_5fdvec3',['highp_dvec3',['../a00282.html#gab24dc20dcdc5b71282634bdbf6b70105',1,'glm']]], - ['highp_5fdvec4',['highp_dvec4',['../a00282.html#gab654f4ed4a99d64a6cfc65320c2a7590',1,'glm']]], - ['highp_5ff32',['highp_f32',['../a00304.html#ga6906e1ef0b34064b4b675489c5c38725',1,'glm']]], - ['highp_5ff32mat2',['highp_f32mat2',['../a00304.html#ga298f7d4d273678d0282812368da27fda',1,'glm']]], - ['highp_5ff32mat2x2',['highp_f32mat2x2',['../a00304.html#gae5eb02d92b7d4605a4b7f37ae5cb2968',1,'glm']]], - ['highp_5ff32mat2x3',['highp_f32mat2x3',['../a00304.html#ga0aeb5cb001473b08c88175012708a379',1,'glm']]], - ['highp_5ff32mat2x4',['highp_f32mat2x4',['../a00304.html#ga88938ee1e7981fa3402e88da6ad74531',1,'glm']]], - ['highp_5ff32mat3',['highp_f32mat3',['../a00304.html#ga24f9ef3263b1638564713892cc37981f',1,'glm']]], - ['highp_5ff32mat3x2',['highp_f32mat3x2',['../a00304.html#ga36537e701456f12c20e73f469cac4967',1,'glm']]], - ['highp_5ff32mat3x3',['highp_f32mat3x3',['../a00304.html#gaab691ae40c37976d268d8cac0096e0e1',1,'glm']]], - ['highp_5ff32mat3x4',['highp_f32mat3x4',['../a00304.html#gaa5086dbd6efb272d13fc88829330861d',1,'glm']]], - ['highp_5ff32mat4',['highp_f32mat4',['../a00304.html#ga14c90ca49885723f51d06e295587236f',1,'glm']]], - ['highp_5ff32mat4x2',['highp_f32mat4x2',['../a00304.html#ga602e119c6b246b4f6edcf66845f2aa0f',1,'glm']]], - ['highp_5ff32mat4x3',['highp_f32mat4x3',['../a00304.html#ga66bffdd8e5c0d3ef9958bbab9ca1ba59',1,'glm']]], - ['highp_5ff32mat4x4',['highp_f32mat4x4',['../a00304.html#gaf1b712b97b2322685fbbed28febe5f84',1,'glm']]], - ['highp_5ff32quat',['highp_f32quat',['../a00304.html#ga4252cf7f5b0e3cd47c3d3badf0ef43b3',1,'glm']]], - ['highp_5ff32vec1',['highp_f32vec1',['../a00304.html#gab1b1c9e8667902b78b2c330e4d383a61',1,'glm']]], - ['highp_5ff32vec2',['highp_f32vec2',['../a00304.html#ga0b8ebd4262331e139ff257d7cf2a4b77',1,'glm']]], - ['highp_5ff32vec3',['highp_f32vec3',['../a00304.html#ga522775dbcc6d96246a1c5cf02344fd8c',1,'glm']]], - ['highp_5ff32vec4',['highp_f32vec4',['../a00304.html#ga0f038d4e09862a74f03d102c59eda73e',1,'glm']]], - ['highp_5ff64',['highp_f64',['../a00304.html#ga51d5266017d88f62737c1973923a7cf4',1,'glm']]], - ['highp_5ff64mat2',['highp_f64mat2',['../a00304.html#gaf7adb92ce8de0afaff01436b039fd924',1,'glm']]], - ['highp_5ff64mat2x2',['highp_f64mat2x2',['../a00304.html#ga773ea237a051827cfc20de960bc73ff0',1,'glm']]], - ['highp_5ff64mat2x3',['highp_f64mat2x3',['../a00304.html#ga8342c7469384c6d769cacc9e309278d9',1,'glm']]], - ['highp_5ff64mat2x4',['highp_f64mat2x4',['../a00304.html#ga5a67a7440b9c0d1538533540f99036a5',1,'glm']]], - ['highp_5ff64mat3',['highp_f64mat3',['../a00304.html#ga609bf0ace941d6ab1bb2f9522a04e546',1,'glm']]], - ['highp_5ff64mat3x2',['highp_f64mat3x2',['../a00304.html#ga5bdbfb4ce7d05ce1e1b663f50be17e8a',1,'glm']]], - ['highp_5ff64mat3x3',['highp_f64mat3x3',['../a00304.html#ga7c2cadb9b85cc7e0d125db21ca19dea4',1,'glm']]], - ['highp_5ff64mat3x4',['highp_f64mat3x4',['../a00304.html#gad310b1dddeec9ec837a104e7db8de580',1,'glm']]], - ['highp_5ff64mat4',['highp_f64mat4',['../a00304.html#gad308e0ed27d64daa4213fb257fcbd5a5',1,'glm']]], - ['highp_5ff64mat4x2',['highp_f64mat4x2',['../a00304.html#ga58c4631421e323e252fc716b6103e38c',1,'glm']]], - ['highp_5ff64mat4x3',['highp_f64mat4x3',['../a00304.html#gae94823d65648e44d972863c6caa13103',1,'glm']]], - ['highp_5ff64mat4x4',['highp_f64mat4x4',['../a00304.html#ga09a2374b725c4246d263ee36fb66434c',1,'glm']]], - ['highp_5ff64quat',['highp_f64quat',['../a00304.html#gafcfdd74a115163af2ce1093551747352',1,'glm']]], - ['highp_5ff64vec1',['highp_f64vec1',['../a00304.html#ga62c31b133ceee9984fbee05ac4c434a9',1,'glm']]], - ['highp_5ff64vec2',['highp_f64vec2',['../a00304.html#ga670ea1b0a1172bc73b1d7c1e0c26cce2',1,'glm']]], - ['highp_5ff64vec3',['highp_f64vec3',['../a00304.html#gacd1196090ece7a69fb5c3e43a7d4d851',1,'glm']]], - ['highp_5ff64vec4',['highp_f64vec4',['../a00304.html#ga61185c44c8cc0b25d9a0f67d8a267444',1,'glm']]], - ['highp_5ffdualquat',['highp_fdualquat',['../a00317.html#ga4c4e55e9c99dc57b299ed590968da564',1,'glm']]], - ['highp_5ffloat32',['highp_float32',['../a00304.html#gac5a7f21136e0a78d0a1b9f60ef2f8aea',1,'glm']]], - ['highp_5ffloat32_5ft',['highp_float32_t',['../a00304.html#ga5376ef18dca9d248897c3363ef5a06b2',1,'glm']]], - ['highp_5ffloat64',['highp_float64',['../a00304.html#gadbb198a4d7aad82a0f4dc466ef6f6215',1,'glm']]], - ['highp_5ffloat64_5ft',['highp_float64_t',['../a00304.html#gaaeeb0077198cff40e3f48b1108ece139',1,'glm']]], - ['highp_5ffmat2',['highp_fmat2',['../a00304.html#gae98c88d9a7befa9b5877f49176225535',1,'glm']]], - ['highp_5ffmat2x2',['highp_fmat2x2',['../a00304.html#ga28635abcddb2f3e92c33c3f0fcc682ad',1,'glm']]], - ['highp_5ffmat2x3',['highp_fmat2x3',['../a00304.html#gacf111095594996fef29067b2454fccad',1,'glm']]], - ['highp_5ffmat2x4',['highp_fmat2x4',['../a00304.html#ga4920a1536f161f7ded1d6909b7fef0d2',1,'glm']]], - ['highp_5ffmat3',['highp_fmat3',['../a00304.html#gaed2dc69e0d507d4191092dbd44b3eb75',1,'glm']]], - ['highp_5ffmat3x2',['highp_fmat3x2',['../a00304.html#gae54e4d1aeb5a0f0c64822e6f1b299e19',1,'glm']]], - ['highp_5ffmat3x3',['highp_fmat3x3',['../a00304.html#gaa5b44d3ef6efcf33f44876673a7a936e',1,'glm']]], - ['highp_5ffmat3x4',['highp_fmat3x4',['../a00304.html#ga961fac2a885907ffcf4d40daac6615c5',1,'glm']]], - ['highp_5ffmat4',['highp_fmat4',['../a00304.html#gabf28443ce0cc0959077ec39b21f32c39',1,'glm']]], - ['highp_5ffmat4x2',['highp_fmat4x2',['../a00304.html#ga076961cf2d120c7168b957cb2ed107b3',1,'glm']]], - ['highp_5ffmat4x3',['highp_fmat4x3',['../a00304.html#gae406ec670f64170a7437b5e302eeb2cb',1,'glm']]], - ['highp_5ffmat4x4',['highp_fmat4x4',['../a00304.html#gaee80c7cd3caa0f2635058656755f6f69',1,'glm']]], - ['highp_5ffvec1',['highp_fvec1',['../a00304.html#gaa1040342c4efdedc8f90e6267db8d41c',1,'glm']]], - ['highp_5ffvec2',['highp_fvec2',['../a00304.html#ga7c0d196f5fa79f7e892a2f323a0be1ae',1,'glm']]], - ['highp_5ffvec3',['highp_fvec3',['../a00304.html#ga6ef77413883f48d6b53b4169b25edbd0',1,'glm']]], - ['highp_5ffvec4',['highp_fvec4',['../a00304.html#ga8b839abbb44f5102609eed89f6ed61f7',1,'glm']]], - ['highp_5fi16',['highp_i16',['../a00304.html#ga0336abc2604dd2c20c30e036454b64f8',1,'glm']]], - ['highp_5fi16vec1',['highp_i16vec1',['../a00304.html#ga70fdfcc1fd38084bde83c3f06a8b9f19',1,'glm']]], - ['highp_5fi16vec2',['highp_i16vec2',['../a00304.html#gaa7db3ad10947cf70cae6474d05ebd227',1,'glm']]], - ['highp_5fi16vec3',['highp_i16vec3',['../a00304.html#ga5609c8fa2b7eac3dec337d321cb0ca96',1,'glm']]], - ['highp_5fi16vec4',['highp_i16vec4',['../a00304.html#ga7a18659438828f91ccca28f1a1e067b4',1,'glm']]], - ['highp_5fi32',['highp_i32',['../a00304.html#ga727675ac6b5d2fc699520e0059735e25',1,'glm']]], - ['highp_5fi32vec1',['highp_i32vec1',['../a00304.html#ga6a9d71cc62745302f70422b7dc98755c',1,'glm']]], - ['highp_5fi32vec2',['highp_i32vec2',['../a00304.html#gaa9b4579f8e6f3d9b649a965bcb785530',1,'glm']]], - ['highp_5fi32vec3',['highp_i32vec3',['../a00304.html#ga31e070ea3bdee623e6e18a61ba5718b1',1,'glm']]], - ['highp_5fi32vec4',['highp_i32vec4',['../a00304.html#gadf70eaaa230aeed5a4c9f4c9c5c55902',1,'glm']]], - ['highp_5fi64',['highp_i64',['../a00304.html#gac25db6d2b1e2a0f351b77ba3409ac4cd',1,'glm']]], - ['highp_5fi64vec1',['highp_i64vec1',['../a00304.html#gabd2fda3cd208acf5a370ec9b5b3c58d4',1,'glm']]], - ['highp_5fi64vec2',['highp_i64vec2',['../a00304.html#gad9d1903cb20899966e8ebe0670889a5f',1,'glm']]], - ['highp_5fi64vec3',['highp_i64vec3',['../a00304.html#ga62324224b9c6cce9c6b4db96bb704a8a',1,'glm']]], - ['highp_5fi64vec4',['highp_i64vec4',['../a00304.html#gad23b1be9b3bf20352089a6b738f0ebba',1,'glm']]], - ['highp_5fi8',['highp_i8',['../a00304.html#gacb88796f2d08ef253d0345aff20c3aee',1,'glm']]], - ['highp_5fi8vec1',['highp_i8vec1',['../a00304.html#ga1d8c10949691b0fd990253476f47beb3',1,'glm']]], - ['highp_5fi8vec2',['highp_i8vec2',['../a00304.html#ga50542e4cb9b2f9bec213b66e06145d07',1,'glm']]], - ['highp_5fi8vec3',['highp_i8vec3',['../a00304.html#ga8396bfdc081d9113190d0c39c9f67084',1,'glm']]], - ['highp_5fi8vec4',['highp_i8vec4',['../a00304.html#ga4824e3ddf6e608117dfe4809430737b4',1,'glm']]], - ['highp_5fimat2',['highp_imat2',['../a00294.html#ga8499cc3b016003f835314c1c756e9db9',1,'glm']]], - ['highp_5fimat2x2',['highp_imat2x2',['../a00294.html#gaa389e2d1c3b10941cae870bc0aeba5b3',1,'glm']]], - ['highp_5fimat2x3',['highp_imat2x3',['../a00294.html#gaba49d890e06c9444795f5a133fbf1336',1,'glm']]], - ['highp_5fimat2x4',['highp_imat2x4',['../a00294.html#ga05a970fd4366dad6c8a0be676b1eae5b',1,'glm']]], - ['highp_5fimat3',['highp_imat3',['../a00294.html#gaca4506a3efa679eff7c006d9826291fd',1,'glm']]], - ['highp_5fimat3x2',['highp_imat3x2',['../a00294.html#ga91c671c3ff9706c2393e78b22fd84bcb',1,'glm']]], - ['highp_5fimat3x3',['highp_imat3x3',['../a00294.html#ga07d7b7173e2a6f843ff5f1c615a95b41',1,'glm']]], - ['highp_5fimat3x4',['highp_imat3x4',['../a00294.html#ga53008f580be99018a17b357b5a4ffc0d',1,'glm']]], - ['highp_5fimat4',['highp_imat4',['../a00294.html#ga7cfb09b34e0fcf73eaf6512d6483ef56',1,'glm']]], - ['highp_5fimat4x2',['highp_imat4x2',['../a00294.html#ga1858820fb292cae396408b2034407f72',1,'glm']]], - ['highp_5fimat4x3',['highp_imat4x3',['../a00294.html#ga6be0b80ae74bb309bc5b964d93d68fc5',1,'glm']]], - ['highp_5fimat4x4',['highp_imat4x4',['../a00294.html#ga2c783ee6f8f040ab37df2f70392c8b44',1,'glm']]], - ['highp_5fint16',['highp_int16',['../a00304.html#ga5fde0fa4a3852a9dd5d637a92ee74718',1,'glm']]], - ['highp_5fint16_5ft',['highp_int16_t',['../a00304.html#gacaea06d0a79ef3172e887a7a6ba434ff',1,'glm']]], - ['highp_5fint32',['highp_int32',['../a00304.html#ga84ed04b4e0de18c977e932d617e7c223',1,'glm']]], - ['highp_5fint32_5ft',['highp_int32_t',['../a00304.html#ga2c71c8bd9e2fe7d2e93ca250d8b6157f',1,'glm']]], - ['highp_5fint64',['highp_int64',['../a00304.html#ga226a8d52b4e3f77aaa6231135e886aac',1,'glm']]], - ['highp_5fint64_5ft',['highp_int64_t',['../a00304.html#ga73c6abb280a45feeff60f9accaee91f3',1,'glm']]], - ['highp_5fint8',['highp_int8',['../a00304.html#gad0549c902a96a7164e4ac858d5f39dbf',1,'glm']]], - ['highp_5fint8_5ft',['highp_int8_t',['../a00304.html#ga1085c50dd8fbeb5e7e609b1c127492a5',1,'glm']]], - ['highp_5fivec1',['highp_ivec1',['../a00273.html#ga7e02566f2bd2caa68e61be45a477c77e',1,'glm']]], - ['highp_5fivec2',['highp_ivec2',['../a00282.html#gaa18f6b80b41c214f10666948539c1f93',1,'glm']]], - ['highp_5fivec3',['highp_ivec3',['../a00282.html#ga7dd782c3ef5719bc6d5c3ca826b8ad18',1,'glm']]], - ['highp_5fivec4',['highp_ivec4',['../a00282.html#gafb84dccdf5d82443df3ffc8428dcaf3e',1,'glm']]], - ['highp_5fmat2',['highp_mat2',['../a00284.html#ga4d5a0055544a516237dcdace049b143d',1,'glm']]], - ['highp_5fmat2x2',['highp_mat2x2',['../a00284.html#ga2352ae43b284c9f71446674c0208c05d',1,'glm']]], - ['highp_5fmat2x3',['highp_mat2x3',['../a00284.html#ga7a0e3fe41512b0494e598f5c58722f19',1,'glm']]], - ['highp_5fmat2x4',['highp_mat2x4',['../a00284.html#ga61f36a81f2ed1b5f9fc8bc3b26faec8f',1,'glm']]], - ['highp_5fmat3',['highp_mat3',['../a00284.html#ga3fd9849f3da5ed6e3decc3fb10a20b3e',1,'glm']]], - ['highp_5fmat3x2',['highp_mat3x2',['../a00284.html#ga1eda47a00027ec440eac05d63739c71b',1,'glm']]], - ['highp_5fmat3x3',['highp_mat3x3',['../a00284.html#ga2ea82e12f4d7afcfce8f59894d400230',1,'glm']]], - ['highp_5fmat3x4',['highp_mat3x4',['../a00284.html#ga6454b3a26ea30f69de8e44c08a63d1b7',1,'glm']]], - ['highp_5fmat4',['highp_mat4',['../a00284.html#gad72e13d669d039f12ae5afa23148adc1',1,'glm']]], - ['highp_5fmat4x2',['highp_mat4x2',['../a00284.html#gab68b66e6d2c37b804d0baf970fa4f0e5',1,'glm']]], - ['highp_5fmat4x3',['highp_mat4x3',['../a00284.html#ga8d5a4e65fb976e4553b84995b95ecb38',1,'glm']]], - ['highp_5fmat4x4',['highp_mat4x4',['../a00284.html#ga58cc504be0e3b61c48bc91554a767b9f',1,'glm']]], - ['highp_5fquat',['highp_quat',['../a00253.html#gaa2fd8085774376310aeb80588e0eab6e',1,'glm']]], - ['highp_5fu16',['highp_u16',['../a00304.html#ga8e62c883d13f47015f3b70ed88751369',1,'glm']]], - ['highp_5fu16vec1',['highp_u16vec1',['../a00304.html#gad064202b4cf9a2972475c03de657cb39',1,'glm']]], - ['highp_5fu16vec2',['highp_u16vec2',['../a00304.html#ga791b15ceb3f1e09d1a0ec6f3057ca159',1,'glm']]], - ['highp_5fu16vec3',['highp_u16vec3',['../a00304.html#gacfd806749008f0ade6ac4bb9dd91082f',1,'glm']]], - ['highp_5fu16vec4',['highp_u16vec4',['../a00304.html#ga8a85a3d54a8a9e14fe7a1f96196c4f61',1,'glm']]], - ['highp_5fu32',['highp_u32',['../a00304.html#ga7a6f1929464dcc680b16381a4ee5f2cf',1,'glm']]], - ['highp_5fu32vec1',['highp_u32vec1',['../a00304.html#ga0e35a565b9036bfc3989f5e23a0792e3',1,'glm']]], - ['highp_5fu32vec2',['highp_u32vec2',['../a00304.html#ga2f256334f83fba4c2d219e414b51df6c',1,'glm']]], - ['highp_5fu32vec3',['highp_u32vec3',['../a00304.html#gaf14d7a50502464e7cbfa074f24684cb1',1,'glm']]], - ['highp_5fu32vec4',['highp_u32vec4',['../a00304.html#ga22166f0da65038b447f3c5e534fff1c2',1,'glm']]], - ['highp_5fu64',['highp_u64',['../a00304.html#ga0c181fdf06a309691999926b6690c969',1,'glm']]], - ['highp_5fu64vec1',['highp_u64vec1',['../a00304.html#gae4fe774744852c4d7d069be2e05257ab',1,'glm']]], - ['highp_5fu64vec2',['highp_u64vec2',['../a00304.html#ga78f77b8b2d17b431ac5a68c0b5d7050d',1,'glm']]], - ['highp_5fu64vec3',['highp_u64vec3',['../a00304.html#ga41bdabea6e589029659331ba47eb78c1',1,'glm']]], - ['highp_5fu64vec4',['highp_u64vec4',['../a00304.html#ga4f15b41aa24b11cc42ad5798c04a2325',1,'glm']]], - ['highp_5fu8',['highp_u8',['../a00304.html#gacd1259f3a9e8d2a9df5be2d74322ef9c',1,'glm']]], - ['highp_5fu8vec1',['highp_u8vec1',['../a00304.html#ga8408cb76b6550ff01fa0a3024e7b68d2',1,'glm']]], - ['highp_5fu8vec2',['highp_u8vec2',['../a00304.html#ga27585b7c3ab300059f11fcba465f6fd2',1,'glm']]], - ['highp_5fu8vec3',['highp_u8vec3',['../a00304.html#ga45721c13b956eb691cbd6c6c1429167a',1,'glm']]], - ['highp_5fu8vec4',['highp_u8vec4',['../a00304.html#gae0b75ad0fed8c00ddc0b5ce335d31060',1,'glm']]], - ['highp_5fuint16',['highp_uint16',['../a00304.html#ga746dc6da204f5622e395f492997dbf57',1,'glm']]], - ['highp_5fuint16_5ft',['highp_uint16_t',['../a00304.html#gacf54c3330ef60aa3d16cb676c7bcb8c7',1,'glm']]], - ['highp_5fuint32',['highp_uint32',['../a00304.html#ga256b12b650c3f2fb86878fd1c5db8bc3',1,'glm']]], - ['highp_5fuint32_5ft',['highp_uint32_t',['../a00304.html#gae978599c9711ac263ba732d4ac225b0e',1,'glm']]], - ['highp_5fuint64',['highp_uint64',['../a00304.html#gaa38d732f5d4a7bc42a1b43b9d3c141ce',1,'glm']]], - ['highp_5fuint64_5ft',['highp_uint64_t',['../a00304.html#gaa46172d7dc1c7ffe3e78107ff88adf08',1,'glm']]], - ['highp_5fuint8',['highp_uint8',['../a00304.html#ga97432f9979e73e66567361fd01e4cffb',1,'glm']]], - ['highp_5fuint8_5ft',['highp_uint8_t',['../a00304.html#gac4e00a26a2adb5f2c0a7096810df29e5',1,'glm']]], - ['highp_5fumat2',['highp_umat2',['../a00294.html#ga42cbce64c4c1cd121b8437daa6e110de',1,'glm']]], - ['highp_5fumat2x2',['highp_umat2x2',['../a00294.html#ga5337b7bc95f9cbac08a0c00b3f936b28',1,'glm']]], - ['highp_5fumat2x3',['highp_umat2x3',['../a00294.html#ga90718c7128320b24b52f9ea70e643ad4',1,'glm']]], - ['highp_5fumat2x4',['highp_umat2x4',['../a00294.html#gadca0a4724b4a6f56a2355b6f6e19248b',1,'glm']]], - ['highp_5fumat3',['highp_umat3',['../a00294.html#gaa1143120339b7d2d469d327662e8a172',1,'glm']]], - ['highp_5fumat3x2',['highp_umat3x2',['../a00294.html#ga844a5da2e7fc03fc7cccc7f1b70809c4',1,'glm']]], - ['highp_5fumat3x3',['highp_umat3x3',['../a00294.html#ga1f7d41c36b980774a4d2e7c1647fb4b2',1,'glm']]], - ['highp_5fumat3x4',['highp_umat3x4',['../a00294.html#ga25ee15c323924f2d0fe9896d329e5086',1,'glm']]], - ['highp_5fumat4',['highp_umat4',['../a00294.html#gaf665e4e78c2cc32a54ab40325738f9c9',1,'glm']]], - ['highp_5fumat4x2',['highp_umat4x2',['../a00294.html#gae69eb82ec08b0dc9bf2ead2a339ff801',1,'glm']]], - ['highp_5fumat4x3',['highp_umat4x3',['../a00294.html#ga45a8163d02c43216252056b0c120f3a5',1,'glm']]], - ['highp_5fumat4x4',['highp_umat4x4',['../a00294.html#ga6a56cbb769aed334c95241664415f9ba',1,'glm']]], - ['highp_5fuvec1',['highp_uvec1',['../a00277.html#gacda57dd8c2bff4934c7f09ddd87c0f39',1,'glm']]], - ['highp_5fuvec2',['highp_uvec2',['../a00282.html#gad5dd50da9e37387ca6b4e6f9c80fe6f8',1,'glm']]], - ['highp_5fuvec3',['highp_uvec3',['../a00282.html#gaef61508dd40ec523416697982f9ceaae',1,'glm']]], - ['highp_5fuvec4',['highp_uvec4',['../a00282.html#gaeebd7dd9f3e678691f8620241e5f9221',1,'glm']]], - ['highp_5fvec1',['highp_vec1',['../a00271.html#ga9e8ed21862a897c156c0b2abca70b1e9',1,'glm']]], - ['highp_5fvec2',['highp_vec2',['../a00282.html#gaa92c1954d71b1e7914874bd787b43d1c',1,'glm']]], - ['highp_5fvec3',['highp_vec3',['../a00282.html#gaca61dfaccbf2f58f2d8063a4e76b44a9',1,'glm']]], - ['highp_5fvec4',['highp_vec4',['../a00282.html#gad281decae52948b82feb3a9db8f63a7b',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_5.html b/tests/OpenGL/package/glm/doc/api/search/typedefs_5.html deleted file mode 100644 index 14adc8ed..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_5.js b/tests/OpenGL/package/glm/doc/api/search/typedefs_5.js deleted file mode 100644 index 39c29f28..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_5.js +++ /dev/null @@ -1,61 +0,0 @@ -var searchData= -[ - ['i16',['i16',['../a00304.html#ga3ab5fe184343d394fb6c2723c3ee3699',1,'glm']]], - ['i16vec1',['i16vec1',['../a00304.html#gafe730798732aa7b0647096a004db1b1c',1,'glm']]], - ['i16vec2',['i16vec2',['../a00304.html#ga2996630ba7b10535af8e065cf326f761',1,'glm']]], - ['i16vec3',['i16vec3',['../a00304.html#gae9c90a867a6026b1f6eab00456f3fb8b',1,'glm']]], - ['i16vec4',['i16vec4',['../a00304.html#ga550831bfc26d1e0101c1cb3d79938c06',1,'glm']]], - ['i32',['i32',['../a00304.html#ga96faea43ac5f875d2d3ffbf8d213e3eb',1,'glm']]], - ['i32vec1',['i32vec1',['../a00304.html#ga54b8a4e0f5a7203a821bf8e9c1265bcf',1,'glm']]], - ['i32vec2',['i32vec2',['../a00304.html#ga8b44026374982dcd1e52d22bac99247e',1,'glm']]], - ['i32vec3',['i32vec3',['../a00304.html#ga7f526b5cccef126a2ebcf9bdd890394e',1,'glm']]], - ['i32vec4',['i32vec4',['../a00304.html#ga866a05905c49912309ed1fa5f5980e61',1,'glm']]], - ['i64',['i64',['../a00304.html#gadb997e409103d4da18abd837e636a496',1,'glm']]], - ['i64vec1',['i64vec1',['../a00304.html#ga2b65767f8b5aed1bd1cf86c541662b50',1,'glm']]], - ['i64vec2',['i64vec2',['../a00304.html#ga48310188e1d0c616bf8d78c92447523b',1,'glm']]], - ['i64vec3',['i64vec3',['../a00304.html#ga667948cfe6fb3d6606c750729ec49f77',1,'glm']]], - ['i64vec4',['i64vec4',['../a00304.html#gaa4e31c3d9de067029efeb161a44b0232',1,'glm']]], - ['i8',['i8',['../a00304.html#ga302ec977b0c0c3ea245b6c9275495355',1,'glm']]], - ['i8vec1',['i8vec1',['../a00304.html#ga7e80d927ff0a3861ced68dfff8a4020b',1,'glm']]], - ['i8vec2',['i8vec2',['../a00304.html#gad06935764d78f43f9d542c784c2212ec',1,'glm']]], - ['i8vec3',['i8vec3',['../a00304.html#ga5a08d36cf7917cd19d081a603d0eae3e',1,'glm']]], - ['i8vec4',['i8vec4',['../a00304.html#ga4177a44206121dabc8c4ff1c0f544574',1,'glm']]], - ['imat2',['imat2',['../a00294.html#gaabe04f9948d4a213bb1c20137de03e01',1,'glm']]], - ['imat2x2',['imat2x2',['../a00294.html#gaa4732a240522ad9bc28144fda2fc14ec',1,'glm']]], - ['imat2x3',['imat2x3',['../a00294.html#ga3f42dd3d5d94a0fd5706f7ec8dd0c605',1,'glm']]], - ['imat2x4',['imat2x4',['../a00294.html#ga9d8faafdca42583d67e792dd038fc668',1,'glm']]], - ['imat3',['imat3',['../a00294.html#ga038f68437155ffa3c2583a15264a8195',1,'glm']]], - ['imat3x2',['imat3x2',['../a00294.html#ga7b33bbe4f12c060892bd3cc8d4cd737f',1,'glm']]], - ['imat3x3',['imat3x3',['../a00294.html#ga6aacc960f62e8f7d2fe9d32d5050e7a4',1,'glm']]], - ['imat3x4',['imat3x4',['../a00294.html#ga6e9ce23496d8b08dfc302d4039694b58',1,'glm']]], - ['imat4',['imat4',['../a00294.html#ga96b0d26a33b81bb6a60ca0f39682f7eb',1,'glm']]], - ['imat4x2',['imat4x2',['../a00294.html#ga8ce7ef51d8b2c1901fa5414deccbc3fa',1,'glm']]], - ['imat4x3',['imat4x3',['../a00294.html#ga705ee0bf49d6c3de4404ce2481bf0df5',1,'glm']]], - ['imat4x4',['imat4x4',['../a00294.html#ga43ed5e4f475b6f4cad7cba78f29c405b',1,'glm']]], - ['int1',['int1',['../a00315.html#ga0670a2111b5e4a6410bd027fa0232fc3',1,'glm']]], - ['int16',['int16',['../a00260.html#ga259fa4834387bd68627ddf37bb3ebdb9',1,'glm']]], - ['int16_5ft',['int16_t',['../a00304.html#gae8f5e3e964ca2ae240adc2c0d74adede',1,'glm']]], - ['int1x1',['int1x1',['../a00315.html#ga056ffe02d3a45af626f8e62221881c7a',1,'glm']]], - ['int2',['int2',['../a00315.html#gafe3a8fd56354caafe24bfe1b1e3ad22a',1,'glm']]], - ['int2x2',['int2x2',['../a00315.html#ga4e5ce477c15836b21e3c42daac68554d',1,'glm']]], - ['int2x3',['int2x3',['../a00315.html#ga197ded5ad8354f6b6fb91189d7a269b3',1,'glm']]], - ['int2x4',['int2x4',['../a00315.html#ga2749d59a7fddbac44f34ba78e57ef807',1,'glm']]], - ['int3',['int3',['../a00315.html#ga909c38a425f215a50c847145d7da09f0',1,'glm']]], - ['int32',['int32',['../a00260.html#ga43d43196463bde49cb067f5c20ab8481',1,'glm']]], - ['int32_5ft',['int32_t',['../a00304.html#ga042ef09ff2f0cb24a36f541bcb3a3710',1,'glm']]], - ['int3x2',['int3x2',['../a00315.html#gaa4cbe16a92cf3664376c7a2fc5126aa8',1,'glm']]], - ['int3x3',['int3x3',['../a00315.html#ga15c9649286f0bf431bdf9b3509580048',1,'glm']]], - ['int3x4',['int3x4',['../a00315.html#gaacac46ddc7d15d0f9529d05c92946a0f',1,'glm']]], - ['int4',['int4',['../a00315.html#gaecdef18c819c205aeee9f94dc93de56a',1,'glm']]], - ['int4x2',['int4x2',['../a00315.html#ga97a39dd9bc7d572810d80b8467cbffa1',1,'glm']]], - ['int4x3',['int4x3',['../a00315.html#gae4a2c53f14aeec9a17c2b81142b7e82d',1,'glm']]], - ['int4x4',['int4x4',['../a00315.html#ga04dee1552424198b8f58b377c2ee00d8',1,'glm']]], - ['int64',['int64',['../a00260.html#gaff5189f97f9e842d9636a0f240001b2e',1,'glm']]], - ['int64_5ft',['int64_t',['../a00304.html#ga322a7d7d2c2c68994dc872a33de63c61',1,'glm']]], - ['int8',['int8',['../a00260.html#ga1b956fe1df85f3c132b21edb4e116458',1,'glm']]], - ['int8_5ft',['int8_t',['../a00304.html#ga4bf09d8838a86866b39ee6e109341645',1,'glm']]], - ['ivec1',['ivec1',['../a00272.html#gaedd0562c2e77714929d7723a7e2e0dba',1,'glm']]], - ['ivec2',['ivec2',['../a00281.html#ga6f9269106d91b2d2b91bcf27cd5f5560',1,'glm']]], - ['ivec3',['ivec3',['../a00281.html#gad0d784d8eee201aca362484d2daee46c',1,'glm']]], - ['ivec4',['ivec4',['../a00281.html#ga5abb4603dae0ce58c595e66d9123d812',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_6.html b/tests/OpenGL/package/glm/doc/api/search/typedefs_6.html deleted file mode 100644 index 742e92b5..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_6.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_6.js b/tests/OpenGL/package/glm/doc/api/search/typedefs_6.js deleted file mode 100644 index f6a4f567..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_6.js +++ /dev/null @@ -1,188 +0,0 @@ -var searchData= -[ - ['lowp_5fbvec1',['lowp_bvec1',['../a00266.html#ga24a3d364e2ddd444f5b9e7975bbef8f9',1,'glm']]], - ['lowp_5fbvec2',['lowp_bvec2',['../a00282.html#ga5a5452140650988b94d5716e4d872465',1,'glm']]], - ['lowp_5fbvec3',['lowp_bvec3',['../a00282.html#ga79e0922a977662a8fd39d7829be3908b',1,'glm']]], - ['lowp_5fbvec4',['lowp_bvec4',['../a00282.html#ga15ac87724048ab7169bb5d3572939dd3',1,'glm']]], - ['lowp_5fddualquat',['lowp_ddualquat',['../a00317.html#gab4c5103338af3dac7e0fbc86895a3f1a',1,'glm']]], - ['lowp_5fdmat2',['lowp_dmat2',['../a00284.html#gad8e2727a6e7aa68280245bb0022118e1',1,'glm']]], - ['lowp_5fdmat2x2',['lowp_dmat2x2',['../a00284.html#gac61b94f5d9775f83f321bac899322fe2',1,'glm']]], - ['lowp_5fdmat2x3',['lowp_dmat2x3',['../a00284.html#gaf6bf2f5bde7ad5b9c289f777b93094af',1,'glm']]], - ['lowp_5fdmat2x4',['lowp_dmat2x4',['../a00284.html#ga97507a31ecee8609887d0f23bbde92c7',1,'glm']]], - ['lowp_5fdmat3',['lowp_dmat3',['../a00284.html#ga0cab80beee64a5f8d2ae4e823983063a',1,'glm']]], - ['lowp_5fdmat3x2',['lowp_dmat3x2',['../a00284.html#ga1e0ea3fba496bc7c6f620d2590acb66b',1,'glm']]], - ['lowp_5fdmat3x3',['lowp_dmat3x3',['../a00284.html#gac017848a9df570f60916a21a297b1e8e',1,'glm']]], - ['lowp_5fdmat3x4',['lowp_dmat3x4',['../a00284.html#ga93add35d2a44c5830978b827e8c295e8',1,'glm']]], - ['lowp_5fdmat4',['lowp_dmat4',['../a00284.html#ga708bc5b91bbfedd21debac8dcf2a64cd',1,'glm']]], - ['lowp_5fdmat4x2',['lowp_dmat4x2',['../a00284.html#ga382dc5295cead78766239a8457abfa98',1,'glm']]], - ['lowp_5fdmat4x3',['lowp_dmat4x3',['../a00284.html#ga3d7ea07da7c6e5c81a3f4c8b3d44056e',1,'glm']]], - ['lowp_5fdmat4x4',['lowp_dmat4x4',['../a00284.html#ga5b0413198b7e9f061f7534a221c9dac9',1,'glm']]], - ['lowp_5fdquat',['lowp_dquat',['../a00250.html#ga9e6e5f42e67dd5877350ba485c191f1c',1,'glm']]], - ['lowp_5fdualquat',['lowp_dualquat',['../a00317.html#gade05d29ebd4deea0f883d0e1bb4169aa',1,'glm']]], - ['lowp_5fdvec1',['lowp_dvec1',['../a00269.html#gaf906eb86b6e96c35138d0e4928e1435a',1,'glm']]], - ['lowp_5fdvec2',['lowp_dvec2',['../a00282.html#ga108086730d086b7f6f7a033955dfb9c3',1,'glm']]], - ['lowp_5fdvec3',['lowp_dvec3',['../a00282.html#ga42c518b2917e19ce6946a84c64a3a4b2',1,'glm']]], - ['lowp_5fdvec4',['lowp_dvec4',['../a00282.html#ga0b4432cb8d910e406576d10d802e190d',1,'glm']]], - ['lowp_5ff32',['lowp_f32',['../a00304.html#gaeea53879fc327293cf3352a409b7867b',1,'glm']]], - ['lowp_5ff32mat2',['lowp_f32mat2',['../a00304.html#ga52409bc6d4a2ce3421526c069220d685',1,'glm']]], - ['lowp_5ff32mat2x2',['lowp_f32mat2x2',['../a00304.html#ga1d091b6abfba1772450e1745a06525bc',1,'glm']]], - ['lowp_5ff32mat2x3',['lowp_f32mat2x3',['../a00304.html#ga961ccb34cd1a5654c772c8709e001dc5',1,'glm']]], - ['lowp_5ff32mat2x4',['lowp_f32mat2x4',['../a00304.html#gacc6bf0209dda0c7c14851a646071c974',1,'glm']]], - ['lowp_5ff32mat3',['lowp_f32mat3',['../a00304.html#ga4187f89f196505b40e63f516139511e5',1,'glm']]], - ['lowp_5ff32mat3x2',['lowp_f32mat3x2',['../a00304.html#gac53f9d7ab04eace67adad026092fb1e8',1,'glm']]], - ['lowp_5ff32mat3x3',['lowp_f32mat3x3',['../a00304.html#ga841211b641cff1fcf861bdb14e5e4abc',1,'glm']]], - ['lowp_5ff32mat3x4',['lowp_f32mat3x4',['../a00304.html#ga21b1b22dec013a72656e3644baf8a1e1',1,'glm']]], - ['lowp_5ff32mat4',['lowp_f32mat4',['../a00304.html#ga766aed2871e6173a81011a877f398f04',1,'glm']]], - ['lowp_5ff32mat4x2',['lowp_f32mat4x2',['../a00304.html#gae6f3fcb702a666de07650c149cfa845a',1,'glm']]], - ['lowp_5ff32mat4x3',['lowp_f32mat4x3',['../a00304.html#gac21eda58a1475449a5709b412ebd776c',1,'glm']]], - ['lowp_5ff32mat4x4',['lowp_f32mat4x4',['../a00304.html#ga4143d129898f91545948c46859adce44',1,'glm']]], - ['lowp_5ff32quat',['lowp_f32quat',['../a00304.html#gaa3ba60ef8f69c6aeb1629594eaa95347',1,'glm']]], - ['lowp_5ff32vec1',['lowp_f32vec1',['../a00304.html#ga43e5b41c834fcaf4db5a831c0e28128e',1,'glm']]], - ['lowp_5ff32vec2',['lowp_f32vec2',['../a00304.html#gaf3b694b2b8ded7e0b9f07b061917e1a0',1,'glm']]], - ['lowp_5ff32vec3',['lowp_f32vec3',['../a00304.html#gaf739a2cd7b81783a43148b53e40d983b',1,'glm']]], - ['lowp_5ff32vec4',['lowp_f32vec4',['../a00304.html#ga4e2e1debe022074ab224c9faf856d374',1,'glm']]], - ['lowp_5ff64',['lowp_f64',['../a00304.html#gabc7a97c07cbfac8e35eb5e63beb4b679',1,'glm']]], - ['lowp_5ff64mat2',['lowp_f64mat2',['../a00304.html#gafc730f6b4242763b0eda0ffa25150292',1,'glm']]], - ['lowp_5ff64mat2x2',['lowp_f64mat2x2',['../a00304.html#ga771fda9109933db34f808d92b9b84d7e',1,'glm']]], - ['lowp_5ff64mat2x3',['lowp_f64mat2x3',['../a00304.html#ga39e90adcffe33264bd608fa9c6bd184b',1,'glm']]], - ['lowp_5ff64mat2x4',['lowp_f64mat2x4',['../a00304.html#ga50265a202fbfe0a25fc70066c31d9336',1,'glm']]], - ['lowp_5ff64mat3',['lowp_f64mat3',['../a00304.html#ga58119a41d143ebaea0df70fe882e8a40',1,'glm']]], - ['lowp_5ff64mat3x2',['lowp_f64mat3x2',['../a00304.html#gab0eb2d65514ee3e49905aa2caad8c0ad',1,'glm']]], - ['lowp_5ff64mat3x3',['lowp_f64mat3x3',['../a00304.html#gac8f8a12ee03105ef8861dc652434e3b7',1,'glm']]], - ['lowp_5ff64mat3x4',['lowp_f64mat3x4',['../a00304.html#gade8d1edfb23996ab6c622e65e3893271',1,'glm']]], - ['lowp_5ff64mat4',['lowp_f64mat4',['../a00304.html#ga7451266e67794bd1125163502bc4a570',1,'glm']]], - ['lowp_5ff64mat4x2',['lowp_f64mat4x2',['../a00304.html#gab0cecb80fd106bc369b9e46a165815ce',1,'glm']]], - ['lowp_5ff64mat4x3',['lowp_f64mat4x3',['../a00304.html#gae731613b25db3a5ef5a05d21e57a57d3',1,'glm']]], - ['lowp_5ff64mat4x4',['lowp_f64mat4x4',['../a00304.html#ga8c9cd734e03cd49674f3e287aa4a6f95',1,'glm']]], - ['lowp_5ff64quat',['lowp_f64quat',['../a00304.html#gaa3ee2bc4af03cc06578b66b3e3f878ae',1,'glm']]], - ['lowp_5ff64vec1',['lowp_f64vec1',['../a00304.html#gaf2d02c5f4d59135b9bc524fe317fd26b',1,'glm']]], - ['lowp_5ff64vec2',['lowp_f64vec2',['../a00304.html#ga4e641a54d70c81eabf56c25c966d04bd',1,'glm']]], - ['lowp_5ff64vec3',['lowp_f64vec3',['../a00304.html#gae7a4711107b7d078fc5f03ce2227b90b',1,'glm']]], - ['lowp_5ff64vec4',['lowp_f64vec4',['../a00304.html#gaa666bb9e6d204d3bea0b3a39a3a335f4',1,'glm']]], - ['lowp_5ffdualquat',['lowp_fdualquat',['../a00317.html#gaa38f671be25a7f3b136a452a8bb42860',1,'glm']]], - ['lowp_5ffloat32',['lowp_float32',['../a00304.html#ga41b0d390bd8cc827323b1b3816ff4bf8',1,'glm']]], - ['lowp_5ffloat32_5ft',['lowp_float32_t',['../a00304.html#gaea881cae4ddc6c0fbf7cc5b08177ca5b',1,'glm']]], - ['lowp_5ffloat64',['lowp_float64',['../a00304.html#ga3714dab2c16a6545a405cb0c3b3aaa6f',1,'glm']]], - ['lowp_5ffloat64_5ft',['lowp_float64_t',['../a00304.html#ga7286a37076a09da140df18bfa75d4e38',1,'glm']]], - ['lowp_5ffmat2',['lowp_fmat2',['../a00304.html#ga5bba0ce31210e274f73efacd3364c03f',1,'glm']]], - ['lowp_5ffmat2x2',['lowp_fmat2x2',['../a00304.html#gab0feb11edd0d3ab3e8ed996d349a5066',1,'glm']]], - ['lowp_5ffmat2x3',['lowp_fmat2x3',['../a00304.html#ga71cdb53801ed4c3aadb3603c04723210',1,'glm']]], - ['lowp_5ffmat2x4',['lowp_fmat2x4',['../a00304.html#gaab217601c74974a84acbca428123ecf7',1,'glm']]], - ['lowp_5ffmat3',['lowp_fmat3',['../a00304.html#ga83079315e230e8f39728f4bf0d2f9a9b',1,'glm']]], - ['lowp_5ffmat3x2',['lowp_fmat3x2',['../a00304.html#ga49b98e7d71804af45d86886a489e633c',1,'glm']]], - ['lowp_5ffmat3x3',['lowp_fmat3x3',['../a00304.html#gaba56275dd04a7a61560b0e8fa5d365b4',1,'glm']]], - ['lowp_5ffmat3x4',['lowp_fmat3x4',['../a00304.html#ga28733aec7288191b314d42154fd0b690',1,'glm']]], - ['lowp_5ffmat4',['lowp_fmat4',['../a00304.html#ga5803cb9ae26399762d8bba9e0b2fc09f',1,'glm']]], - ['lowp_5ffmat4x2',['lowp_fmat4x2',['../a00304.html#ga5868c2dcce41cc3ea5edcaeae239f62c',1,'glm']]], - ['lowp_5ffmat4x3',['lowp_fmat4x3',['../a00304.html#ga5e649bbdb135fbcb4bfe950f4c73a444',1,'glm']]], - ['lowp_5ffmat4x4',['lowp_fmat4x4',['../a00304.html#gac2f5263708ac847b361a9841e74ddf9f',1,'glm']]], - ['lowp_5ffvec1',['lowp_fvec1',['../a00304.html#ga346b2336fff168a7e0df1583aae3e5a5',1,'glm']]], - ['lowp_5ffvec2',['lowp_fvec2',['../a00304.html#ga62a32c31f4e2e8ca859663b6e3289a2d',1,'glm']]], - ['lowp_5ffvec3',['lowp_fvec3',['../a00304.html#ga40b5c557efebb5bb99d6b9aa81095afa',1,'glm']]], - ['lowp_5ffvec4',['lowp_fvec4',['../a00304.html#ga755484ffbe39ae3db2875953ed04e7b7',1,'glm']]], - ['lowp_5fi16',['lowp_i16',['../a00304.html#ga392b673fd10847bfb78fb808c6cf8ff7',1,'glm']]], - ['lowp_5fi16vec1',['lowp_i16vec1',['../a00304.html#ga501a2f313f1c220eef4ab02bdabdc3c6',1,'glm']]], - ['lowp_5fi16vec2',['lowp_i16vec2',['../a00304.html#ga7cac84b520a6b57f2fbd880d3d63c51b',1,'glm']]], - ['lowp_5fi16vec3',['lowp_i16vec3',['../a00304.html#gab69ef9cbc2a9214bf5596c528c801b72',1,'glm']]], - ['lowp_5fi16vec4',['lowp_i16vec4',['../a00304.html#ga1d47d94d17c2406abdd1f087a816e387',1,'glm']]], - ['lowp_5fi32',['lowp_i32',['../a00304.html#ga7ff73a45cea9613ebf1a9fad0b9f82ac',1,'glm']]], - ['lowp_5fi32vec1',['lowp_i32vec1',['../a00304.html#gae31ac3608cf643ceffd6554874bec4a0',1,'glm']]], - ['lowp_5fi32vec2',['lowp_i32vec2',['../a00304.html#ga867a3c2d99ab369a454167d2c0a24dbd',1,'glm']]], - ['lowp_5fi32vec3',['lowp_i32vec3',['../a00304.html#ga5fe17c87ede1b1b4d92454cff4da076d',1,'glm']]], - ['lowp_5fi32vec4',['lowp_i32vec4',['../a00304.html#gac9b2eb4296ffe50a32eacca9ed932c08',1,'glm']]], - ['lowp_5fi64',['lowp_i64',['../a00304.html#ga354736e0c645099cd44c42fb2f87c2b8',1,'glm']]], - ['lowp_5fi64vec1',['lowp_i64vec1',['../a00304.html#gab0f7d875db5f3cc9f3168c5a0ed56437',1,'glm']]], - ['lowp_5fi64vec2',['lowp_i64vec2',['../a00304.html#gab485c48f06a4fdd6b8d58d343bb49f3c',1,'glm']]], - ['lowp_5fi64vec3',['lowp_i64vec3',['../a00304.html#ga5cb1dc9e8d300c2cdb0d7ff2308fa36c',1,'glm']]], - ['lowp_5fi64vec4',['lowp_i64vec4',['../a00304.html#gabb4229a4c1488bf063eed0c45355bb9c',1,'glm']]], - ['lowp_5fi8',['lowp_i8',['../a00304.html#ga552a6bde5e75984efb0f863278da2e54',1,'glm']]], - ['lowp_5fi8vec1',['lowp_i8vec1',['../a00304.html#ga036d6c7ca9fbbdc5f3871bfcb937c85c',1,'glm']]], - ['lowp_5fi8vec2',['lowp_i8vec2',['../a00304.html#gac03e5099d27eeaa74b6016ea435a1df2',1,'glm']]], - ['lowp_5fi8vec3',['lowp_i8vec3',['../a00304.html#gae2f43ace6b5b33ab49516d9e40af1845',1,'glm']]], - ['lowp_5fi8vec4',['lowp_i8vec4',['../a00304.html#ga6d388e9b9aa1b389f0672d9c7dfc61c5',1,'glm']]], - ['lowp_5fimat2',['lowp_imat2',['../a00294.html#gaa0bff0be804142bb16d441aec0a7962e',1,'glm']]], - ['lowp_5fimat2x2',['lowp_imat2x2',['../a00294.html#ga92b95b679975d408645547ab45a8dcd8',1,'glm']]], - ['lowp_5fimat2x3',['lowp_imat2x3',['../a00294.html#ga8c9e7a388f8e7c52f1e6857dee8afb65',1,'glm']]], - ['lowp_5fimat2x4',['lowp_imat2x4',['../a00294.html#ga9cc13bd1f8dd2933e9fa31fe3f70e16e',1,'glm']]], - ['lowp_5fimat3',['lowp_imat3',['../a00294.html#ga69bfe668f4170379fc1f35d82b060c43',1,'glm']]], - ['lowp_5fimat3x2',['lowp_imat3x2',['../a00294.html#ga33db8f27491d30906cd37c0d86b3f432',1,'glm']]], - ['lowp_5fimat3x3',['lowp_imat3x3',['../a00294.html#ga664f061df00020048c3f8530329ace45',1,'glm']]], - ['lowp_5fimat3x4',['lowp_imat3x4',['../a00294.html#ga9273faab33623d944af4080befbb2c80',1,'glm']]], - ['lowp_5fimat4',['lowp_imat4',['../a00294.html#gad1e77f7270cad461ca4fcb4c3ec2e98c',1,'glm']]], - ['lowp_5fimat4x2',['lowp_imat4x2',['../a00294.html#ga26ec1a2ba08a1488f5f05336858a0f09',1,'glm']]], - ['lowp_5fimat4x3',['lowp_imat4x3',['../a00294.html#ga8f40483a3ae634ead8ad22272c543a33',1,'glm']]], - ['lowp_5fimat4x4',['lowp_imat4x4',['../a00294.html#gaf65677e53ac8e31a107399340d5e2451',1,'glm']]], - ['lowp_5fint16',['lowp_int16',['../a00304.html#ga698e36b01167fc0f037889334dce8def',1,'glm']]], - ['lowp_5fint16_5ft',['lowp_int16_t',['../a00304.html#ga8b2cd8d31eb345b2d641d9261c38db1a',1,'glm']]], - ['lowp_5fint32',['lowp_int32',['../a00304.html#ga864aabca5f3296e176e0c3ed9cc16b02',1,'glm']]], - ['lowp_5fint32_5ft',['lowp_int32_t',['../a00304.html#ga0350631d35ff800e6133ac6243b13cbc',1,'glm']]], - ['lowp_5fint64',['lowp_int64',['../a00304.html#gaf645b1a60203b39c0207baff5e3d8c3c',1,'glm']]], - ['lowp_5fint64_5ft',['lowp_int64_t',['../a00304.html#gaebf341fc4a5be233f7dde962c2e33847',1,'glm']]], - ['lowp_5fint8',['lowp_int8',['../a00304.html#ga760bcf26fdb23a2c3ecad3c928a19ae6',1,'glm']]], - ['lowp_5fint8_5ft',['lowp_int8_t',['../a00304.html#ga119c41d73fe9977358174eb3ac1035a3',1,'glm']]], - ['lowp_5fivec1',['lowp_ivec1',['../a00273.html#ga836dbb1dc516c233b7f5fe9763bc15dc',1,'glm']]], - ['lowp_5fivec2',['lowp_ivec2',['../a00282.html#ga8433c6c1fdd80c0a83941d94aff73fa0',1,'glm']]], - ['lowp_5fivec3',['lowp_ivec3',['../a00282.html#gac1a86a75b3c68ebb704d7094043669d6',1,'glm']]], - ['lowp_5fivec4',['lowp_ivec4',['../a00282.html#ga27fc23da61859cd6356326c5f1c796de',1,'glm']]], - ['lowp_5fmat2',['lowp_mat2',['../a00284.html#gae400c4ce1f5f3e1fa12861b2baed331a',1,'glm']]], - ['lowp_5fmat2x2',['lowp_mat2x2',['../a00284.html#ga2df7cdaf9a571ce7a1b09435f502c694',1,'glm']]], - ['lowp_5fmat2x3',['lowp_mat2x3',['../a00284.html#ga3eee3a74d0f1de8635d846dfb29ec4bb',1,'glm']]], - ['lowp_5fmat2x4',['lowp_mat2x4',['../a00284.html#gade27f8324a16626cbce5d3e7da66b070',1,'glm']]], - ['lowp_5fmat3',['lowp_mat3',['../a00284.html#ga6271ebc85ed778ccc15458c3d86fc854',1,'glm']]], - ['lowp_5fmat3x2',['lowp_mat3x2',['../a00284.html#gaabf6cf90fd31efe25c94965507e98390',1,'glm']]], - ['lowp_5fmat3x3',['lowp_mat3x3',['../a00284.html#ga63362cb4a63fc1be7d2e49cd5d574c84',1,'glm']]], - ['lowp_5fmat3x4',['lowp_mat3x4',['../a00284.html#gac5fc6786688eff02904ca5e7d6960092',1,'glm']]], - ['lowp_5fmat4',['lowp_mat4',['../a00284.html#ga2dedee030500865267cd5851c00c139d',1,'glm']]], - ['lowp_5fmat4x2',['lowp_mat4x2',['../a00284.html#gafa3cdb8f24d09d761ec9ae2a4c7e5e21',1,'glm']]], - ['lowp_5fmat4x3',['lowp_mat4x3',['../a00284.html#ga534c3ef5c3b8fdd8656b6afc205b4b77',1,'glm']]], - ['lowp_5fmat4x4',['lowp_mat4x4',['../a00284.html#ga686468a9a815bd4db8cddae42a6d6b87',1,'glm']]], - ['lowp_5fquat',['lowp_quat',['../a00253.html#gade62c5316c1c11a79c34c00c189558eb',1,'glm']]], - ['lowp_5fu16',['lowp_u16',['../a00304.html#ga504ce1631cb2ac02fcf1d44d8c2aa126',1,'glm']]], - ['lowp_5fu16vec1',['lowp_u16vec1',['../a00304.html#gaa6aab4ee7189b86716f5d7015d43021d',1,'glm']]], - ['lowp_5fu16vec2',['lowp_u16vec2',['../a00304.html#ga2a7d997da9ac29cb931e35bd399f58df',1,'glm']]], - ['lowp_5fu16vec3',['lowp_u16vec3',['../a00304.html#gac0253db6c3d3bae1f591676307a9dd8c',1,'glm']]], - ['lowp_5fu16vec4',['lowp_u16vec4',['../a00304.html#gaa7f00459b9a2e5b2757e70afc0c189e1',1,'glm']]], - ['lowp_5fu32',['lowp_u32',['../a00304.html#ga4f072ada9552e1e480bbb3b1acde5250',1,'glm']]], - ['lowp_5fu32vec1',['lowp_u32vec1',['../a00304.html#gabed3be8dfdc4a0df4bf3271dbd7344c4',1,'glm']]], - ['lowp_5fu32vec2',['lowp_u32vec2',['../a00304.html#gaf7e286e81347011e257ee779524e73b9',1,'glm']]], - ['lowp_5fu32vec3',['lowp_u32vec3',['../a00304.html#gad3ad390560a671b1f676fbf03cd3aa15',1,'glm']]], - ['lowp_5fu32vec4',['lowp_u32vec4',['../a00304.html#ga4502885718742aa238c36a312c3f3f20',1,'glm']]], - ['lowp_5fu64',['lowp_u64',['../a00304.html#ga30069d1f02b19599cbfadf98c23ac6ed',1,'glm']]], - ['lowp_5fu64vec1',['lowp_u64vec1',['../a00304.html#ga859be7b9d3a3765c1cafc14dbcf249a6',1,'glm']]], - ['lowp_5fu64vec2',['lowp_u64vec2',['../a00304.html#ga581485db4ba6ddb501505ee711fd8e42',1,'glm']]], - ['lowp_5fu64vec3',['lowp_u64vec3',['../a00304.html#gaa4a8682bec7ec8af666ef87fae38d5d1',1,'glm']]], - ['lowp_5fu64vec4',['lowp_u64vec4',['../a00304.html#ga6fccc89c34045c86339f6fa781ce96de',1,'glm']]], - ['lowp_5fu8',['lowp_u8',['../a00304.html#ga1b09f03da7ac43055c68a349d5445083',1,'glm']]], - ['lowp_5fu8vec1',['lowp_u8vec1',['../a00304.html#ga4b2e0e10d8d154fec9cab50e216588ec',1,'glm']]], - ['lowp_5fu8vec2',['lowp_u8vec2',['../a00304.html#gae6f63fa38635431e51a8f2602f15c566',1,'glm']]], - ['lowp_5fu8vec3',['lowp_u8vec3',['../a00304.html#ga150dc47e31c6b8cf8461803c8d56f7bd',1,'glm']]], - ['lowp_5fu8vec4',['lowp_u8vec4',['../a00304.html#ga9910927f3a4d1addb3da6a82542a8287',1,'glm']]], - ['lowp_5fuint16',['lowp_uint16',['../a00304.html#gad68bfd9f881856fc863a6ebca0b67f78',1,'glm']]], - ['lowp_5fuint16_5ft',['lowp_uint16_t',['../a00304.html#ga91c4815f93177eb423362fd296a87e9f',1,'glm']]], - ['lowp_5fuint32',['lowp_uint32',['../a00304.html#gaa6a5b461bbf5fe20982472aa51896d4b',1,'glm']]], - ['lowp_5fuint32_5ft',['lowp_uint32_t',['../a00304.html#gaf1b735b4b1145174f4e4167d13778f9b',1,'glm']]], - ['lowp_5fuint64',['lowp_uint64',['../a00304.html#gaa212b805736a759998e312cbdd550fae',1,'glm']]], - ['lowp_5fuint64_5ft',['lowp_uint64_t',['../a00304.html#ga8dd3a3281ae5c970ffe0c41d538aa153',1,'glm']]], - ['lowp_5fuint8',['lowp_uint8',['../a00304.html#gaf49470869e9be2c059629b250619804e',1,'glm']]], - ['lowp_5fuint8_5ft',['lowp_uint8_t',['../a00304.html#ga667b2ece2b258be898812dc2177995d1',1,'glm']]], - ['lowp_5fumat2',['lowp_umat2',['../a00294.html#gaf2fba702d990437fc88ff3f3a76846ee',1,'glm']]], - ['lowp_5fumat2x2',['lowp_umat2x2',['../a00294.html#ga7b2e9d89745f7175051284e54c81d81c',1,'glm']]], - ['lowp_5fumat2x3',['lowp_umat2x3',['../a00294.html#ga3072f90fd86f17a862e21589fbb14c0f',1,'glm']]], - ['lowp_5fumat2x4',['lowp_umat2x4',['../a00294.html#ga8bb45fec4bd77bd81b4ae7eb961a270d',1,'glm']]], - ['lowp_5fumat3',['lowp_umat3',['../a00294.html#gaf1145f72bcdd590f5808c4bc170c2924',1,'glm']]], - ['lowp_5fumat3x2',['lowp_umat3x2',['../a00294.html#ga56ea68c6a6cba8d8c21d17bb14e69c6b',1,'glm']]], - ['lowp_5fumat3x3',['lowp_umat3x3',['../a00294.html#ga4f660a39a395cc14f018f985e7dfbeb5',1,'glm']]], - ['lowp_5fumat3x4',['lowp_umat3x4',['../a00294.html#gaec3d624306bd59649f021864709d56b5',1,'glm']]], - ['lowp_5fumat4',['lowp_umat4',['../a00294.html#gac092c6105827bf9ea080db38074b78eb',1,'glm']]], - ['lowp_5fumat4x2',['lowp_umat4x2',['../a00294.html#ga7716c2b210d141846f1ac4e774adef5e',1,'glm']]], - ['lowp_5fumat4x3',['lowp_umat4x3',['../a00294.html#ga09ab33a2636f5f43f7fae29cfbc20fff',1,'glm']]], - ['lowp_5fumat4x4',['lowp_umat4x4',['../a00294.html#ga10aafc66cf1a0ece336b1c5ae13d0cc0',1,'glm']]], - ['lowp_5fuvec1',['lowp_uvec1',['../a00277.html#ga8bf3fc8a7863d140f48b29341c750402',1,'glm']]], - ['lowp_5fuvec2',['lowp_uvec2',['../a00282.html#ga752ee45136011301b64afd8c310c47a4',1,'glm']]], - ['lowp_5fuvec3',['lowp_uvec3',['../a00282.html#ga7b2efbdd6bdc2f8250c57f3e5dc9a292',1,'glm']]], - ['lowp_5fuvec4',['lowp_uvec4',['../a00282.html#ga5e6a632ec1165cf9f54ceeaa5e9b2b1e',1,'glm']]], - ['lowp_5fvec1',['lowp_vec1',['../a00271.html#ga0a57630f03031706b1d26a7d70d9184c',1,'glm']]], - ['lowp_5fvec2',['lowp_vec2',['../a00282.html#ga30e8baef5d56d5c166872a2bc00f36e9',1,'glm']]], - ['lowp_5fvec3',['lowp_vec3',['../a00282.html#ga868e8e4470a3ef97c7ee3032bf90dc79',1,'glm']]], - ['lowp_5fvec4',['lowp_vec4',['../a00282.html#gace3acb313c800552a9411953eb8b2ed7',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_7.html b/tests/OpenGL/package/glm/doc/api/search/typedefs_7.html deleted file mode 100644 index ad03564b..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_7.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_7.js b/tests/OpenGL/package/glm/doc/api/search/typedefs_7.js deleted file mode 100644 index 1df66ce9..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_7.js +++ /dev/null @@ -1,200 +0,0 @@ -var searchData= -[ - ['mat2',['mat2',['../a00283.html#ga8dd59e7fc6913ac5d61b86553e9148ba',1,'glm']]], - ['mat2x2',['mat2x2',['../a00283.html#gaaa17ef6bfa4e4f2692348b1460c8efcb',1,'glm']]], - ['mat2x3',['mat2x3',['../a00283.html#ga493ab21243abe564b3f7d381e677d29a',1,'glm']]], - ['mat2x4',['mat2x4',['../a00283.html#ga8e879b57ddd81e5bf5a88929844e8b40',1,'glm']]], - ['mat3',['mat3',['../a00283.html#gaefb0fc7a4960b782c18708bb6b655262',1,'glm']]], - ['mat3x2',['mat3x2',['../a00280.html#ga2c27aea32de57d58aec8e92d5d2181e2',1,'glm']]], - ['mat3x3',['mat3x3',['../a00283.html#gab91887d7565059dac640e3a1921c914a',1,'glm']]], - ['mat3x4',['mat3x4',['../a00283.html#gaf991cad0b34f64e33af186326dbc4d66',1,'glm']]], - ['mat4',['mat4',['../a00283.html#ga0db98d836c5549d31cf64ecd043b7af7',1,'glm']]], - ['mat4x2',['mat4x2',['../a00283.html#gad941c947ad6cdd117a0e8554a4754983',1,'glm']]], - ['mat4x3',['mat4x3',['../a00283.html#gac7574544bb94777bdbd2eb224eb72fd0',1,'glm']]], - ['mat4x4',['mat4x4',['../a00283.html#gab2d35cc2655f44d60958d60a1de34e81',1,'glm']]], - ['mediump_5fbvec1',['mediump_bvec1',['../a00266.html#ga7b4ccb989ba179fa44f7b0879c782621',1,'glm']]], - ['mediump_5fbvec2',['mediump_bvec2',['../a00282.html#ga1e743764869efa9223c2bcefccedaddc',1,'glm']]], - ['mediump_5fbvec3',['mediump_bvec3',['../a00282.html#ga50c783c25082882ef00fe2e5cddba4aa',1,'glm']]], - ['mediump_5fbvec4',['mediump_bvec4',['../a00282.html#ga0be2c682258604a35004f088782a9645',1,'glm']]], - ['mediump_5fddualquat',['mediump_ddualquat',['../a00317.html#ga0fb11e48e2d16348ccb06a25213641b4',1,'glm']]], - ['mediump_5fdmat2',['mediump_dmat2',['../a00284.html#ga6205fd19be355600334edef6af0b27cb',1,'glm']]], - ['mediump_5fdmat2x2',['mediump_dmat2x2',['../a00284.html#ga51dc36a7719cb458fa5114831c20d64f',1,'glm']]], - ['mediump_5fdmat2x3',['mediump_dmat2x3',['../a00284.html#ga741e05adf1f12d5d913f67088db1009a',1,'glm']]], - ['mediump_5fdmat2x4',['mediump_dmat2x4',['../a00284.html#ga685bda24922d112786af385deb4deb43',1,'glm']]], - ['mediump_5fdmat3',['mediump_dmat3',['../a00284.html#ga939fbf9c53008a8e84c7dd7cf8de29e2',1,'glm']]], - ['mediump_5fdmat3x2',['mediump_dmat3x2',['../a00284.html#ga2076157df85e49b8c021e03e46a376c1',1,'glm']]], - ['mediump_5fdmat3x3',['mediump_dmat3x3',['../a00284.html#ga47bd2aae4701ee2fc865674a9df3d7a6',1,'glm']]], - ['mediump_5fdmat3x4',['mediump_dmat3x4',['../a00284.html#ga3a132bd05675c2e46556f67cf738600b',1,'glm']]], - ['mediump_5fdmat4',['mediump_dmat4',['../a00284.html#gaf650bc667bf2a0e496b5a9182bc8d378',1,'glm']]], - ['mediump_5fdmat4x2',['mediump_dmat4x2',['../a00284.html#gae220fa4c5a7b13ef2ab0420340de645c',1,'glm']]], - ['mediump_5fdmat4x3',['mediump_dmat4x3',['../a00284.html#ga43ef60e4d996db15c9c8f069a96ff763',1,'glm']]], - ['mediump_5fdmat4x4',['mediump_dmat4x4',['../a00284.html#ga5389b3ab32dc0d72bea00057ab6d1dd3',1,'glm']]], - ['mediump_5fdquat',['mediump_dquat',['../a00250.html#gacdf73b1f7fd8f5a0c79a3934e99c1a14',1,'glm']]], - ['mediump_5fdualquat',['mediump_dualquat',['../a00317.html#gaa7aeb54c167712b38f2178a1be2360ad',1,'glm']]], - ['mediump_5fdvec1',['mediump_dvec1',['../a00269.html#ga79a789ebb176b37a45848f7ccdd3b3dd',1,'glm']]], - ['mediump_5fdvec2',['mediump_dvec2',['../a00282.html#ga2f4f6e9a69a0281d06940fd0990cafc3',1,'glm']]], - ['mediump_5fdvec3',['mediump_dvec3',['../a00282.html#ga61c3b1dff4ec7c878af80503141b9f37',1,'glm']]], - ['mediump_5fdvec4',['mediump_dvec4',['../a00282.html#ga23a8bca00914a51542bfea13a4778186',1,'glm']]], - ['mediump_5ff32',['mediump_f32',['../a00304.html#ga3b27fcd9eaa2757f0aaf6b0ce0d85c80',1,'glm']]], - ['mediump_5ff32mat2',['mediump_f32mat2',['../a00304.html#gaf9020c6176a75bc84828ab01ea7dac25',1,'glm']]], - ['mediump_5ff32mat2x2',['mediump_f32mat2x2',['../a00304.html#gaa3ca74a44102035b3ffb5c9c52dfdd3f',1,'glm']]], - ['mediump_5ff32mat2x3',['mediump_f32mat2x3',['../a00304.html#gad4cc829ab1ad3e05ac0a24828a3c95cf',1,'glm']]], - ['mediump_5ff32mat2x4',['mediump_f32mat2x4',['../a00304.html#gae71445ac6cd0b9fba3e5c905cd030fb1',1,'glm']]], - ['mediump_5ff32mat3',['mediump_f32mat3',['../a00304.html#gaaaf878d0d7bfc0aac054fe269a886ca8',1,'glm']]], - ['mediump_5ff32mat3x2',['mediump_f32mat3x2',['../a00304.html#gaaab39454f56cf9fc6d940358ce5e6a0f',1,'glm']]], - ['mediump_5ff32mat3x3',['mediump_f32mat3x3',['../a00304.html#gacd80ad7640e9e32f2edcb8330b1ffe4f',1,'glm']]], - ['mediump_5ff32mat3x4',['mediump_f32mat3x4',['../a00304.html#ga8df705d775b776f5ae6b39e2ab892899',1,'glm']]], - ['mediump_5ff32mat4',['mediump_f32mat4',['../a00304.html#ga4491baaebbc46a20f1cb5da985576bf4',1,'glm']]], - ['mediump_5ff32mat4x2',['mediump_f32mat4x2',['../a00304.html#gab005efe0fa4de1a928e8ddec4bc2c43f',1,'glm']]], - ['mediump_5ff32mat4x3',['mediump_f32mat4x3',['../a00304.html#gade108f16633cf95fa500b5b8c36c8b00',1,'glm']]], - ['mediump_5ff32mat4x4',['mediump_f32mat4x4',['../a00304.html#ga936e95b881ecd2d109459ca41913fa99',1,'glm']]], - ['mediump_5ff32quat',['mediump_f32quat',['../a00304.html#gaa40c03d52dbfbfaf03e75773b9606ff3',1,'glm']]], - ['mediump_5ff32vec1',['mediump_f32vec1',['../a00304.html#gabb33cab7d7c74cc14aa95455d0690865',1,'glm']]], - ['mediump_5ff32vec2',['mediump_f32vec2',['../a00304.html#gad6eb11412a3161ca8dc1d63b2a307c4b',1,'glm']]], - ['mediump_5ff32vec3',['mediump_f32vec3',['../a00304.html#ga062ffef2973bd8241df993c3b30b327c',1,'glm']]], - ['mediump_5ff32vec4',['mediump_f32vec4',['../a00304.html#gad80c84bcd5f585840faa6179f6fd446c',1,'glm']]], - ['mediump_5ff64',['mediump_f64',['../a00304.html#ga6d40381d78472553f878f66e443feeef',1,'glm']]], - ['mediump_5ff64mat2',['mediump_f64mat2',['../a00304.html#gac1281da5ded55047e8892b0e1f1ae965',1,'glm']]], - ['mediump_5ff64mat2x2',['mediump_f64mat2x2',['../a00304.html#ga4fd527644cccbca4cb205320eab026f3',1,'glm']]], - ['mediump_5ff64mat2x3',['mediump_f64mat2x3',['../a00304.html#gafd9a6ebc0c7b95f5c581d00d16a17c54',1,'glm']]], - ['mediump_5ff64mat2x4',['mediump_f64mat2x4',['../a00304.html#gaf306dd69e53633636aee38cea79d4cb7',1,'glm']]], - ['mediump_5ff64mat3',['mediump_f64mat3',['../a00304.html#gad35fb67eb1d03c5a514f0bd7aed1c776',1,'glm']]], - ['mediump_5ff64mat3x2',['mediump_f64mat3x2',['../a00304.html#gacd926d36a72433f6cac51dd60fa13107',1,'glm']]], - ['mediump_5ff64mat3x3',['mediump_f64mat3x3',['../a00304.html#ga84d88a6e3a54ccd2b67e195af4a4c23e',1,'glm']]], - ['mediump_5ff64mat3x4',['mediump_f64mat3x4',['../a00304.html#gad38c544d332b8c4bd0b70b1bd9feccc2',1,'glm']]], - ['mediump_5ff64mat4',['mediump_f64mat4',['../a00304.html#gaa805ef691c711dc41e2776cfb67f5cf5',1,'glm']]], - ['mediump_5ff64mat4x2',['mediump_f64mat4x2',['../a00304.html#ga17d36f0ea22314117e1cec9594b33945',1,'glm']]], - ['mediump_5ff64mat4x3',['mediump_f64mat4x3',['../a00304.html#ga54697a78f9a4643af6a57fc2e626ec0d',1,'glm']]], - ['mediump_5ff64mat4x4',['mediump_f64mat4x4',['../a00304.html#ga66edb8de17b9235029472f043ae107e9',1,'glm']]], - ['mediump_5ff64quat',['mediump_f64quat',['../a00304.html#ga5e52f485059ce6e3010c590b882602c9',1,'glm']]], - ['mediump_5ff64vec1',['mediump_f64vec1',['../a00304.html#gac30fdf8afa489400053275b6a3350127',1,'glm']]], - ['mediump_5ff64vec2',['mediump_f64vec2',['../a00304.html#ga8ebc04ecf6440c4ee24718a16600ce6b',1,'glm']]], - ['mediump_5ff64vec3',['mediump_f64vec3',['../a00304.html#ga461c4c7d0757404dd0dba931760b25cf',1,'glm']]], - ['mediump_5ff64vec4',['mediump_f64vec4',['../a00304.html#gacfea053bd6bb3eddb996a4f94de22a3e',1,'glm']]], - ['mediump_5ffdualquat',['mediump_fdualquat',['../a00317.html#ga4a6b594ff7e81150d8143001367a9431',1,'glm']]], - ['mediump_5ffloat32',['mediump_float32',['../a00304.html#ga7812bf00676fb1a86dcd62cca354d2c7',1,'glm']]], - ['mediump_5ffloat32_5ft',['mediump_float32_t',['../a00304.html#gae4dee61f8fe1caccec309fbed02faf12',1,'glm']]], - ['mediump_5ffloat64',['mediump_float64',['../a00304.html#gab83d8aae6e4f115e97a785e8574a115f',1,'glm']]], - ['mediump_5ffloat64_5ft',['mediump_float64_t',['../a00304.html#gac61843e4fa96c1f4e9d8316454f32a8e',1,'glm']]], - ['mediump_5ffmat2',['mediump_fmat2',['../a00304.html#ga74e9133378fd0b4da8ac0bc0876702ff',1,'glm']]], - ['mediump_5ffmat2x2',['mediump_fmat2x2',['../a00304.html#ga98a687c17b174ea316b5f397b64f44bc',1,'glm']]], - ['mediump_5ffmat2x3',['mediump_fmat2x3',['../a00304.html#gaa03f939d90d5ef157df957d93f0b9a64',1,'glm']]], - ['mediump_5ffmat2x4',['mediump_fmat2x4',['../a00304.html#ga35223623e9ccebd8a281873b71b7d213',1,'glm']]], - ['mediump_5ffmat3',['mediump_fmat3',['../a00304.html#ga80823dfad5dba98512c76af498343847',1,'glm']]], - ['mediump_5ffmat3x2',['mediump_fmat3x2',['../a00304.html#ga42569e5b92f8635cedeadb1457ee1467',1,'glm']]], - ['mediump_5ffmat3x3',['mediump_fmat3x3',['../a00304.html#gaa6f526388c74a66b3d52315a14d434ae',1,'glm']]], - ['mediump_5ffmat3x4',['mediump_fmat3x4',['../a00304.html#gaefe8ef520c6cb78590ebbefe648da4d4',1,'glm']]], - ['mediump_5ffmat4',['mediump_fmat4',['../a00304.html#gac1c38778c0b5a1263f07753c05a4f7b9',1,'glm']]], - ['mediump_5ffmat4x2',['mediump_fmat4x2',['../a00304.html#gacea38a85893e17e6834b6cb09a9ad0cf',1,'glm']]], - ['mediump_5ffmat4x3',['mediump_fmat4x3',['../a00304.html#ga41ad497f7eae211556aefd783cb02b90',1,'glm']]], - ['mediump_5ffmat4x4',['mediump_fmat4x4',['../a00304.html#ga22e27beead07bff4d5ce9d6065a57279',1,'glm']]], - ['mediump_5ffvec1',['mediump_fvec1',['../a00304.html#ga367964fc2133d3f1b5b3755ff9cf6c9b',1,'glm']]], - ['mediump_5ffvec2',['mediump_fvec2',['../a00304.html#ga44bfa55cda5dbf53f24a1fb7610393d6',1,'glm']]], - ['mediump_5ffvec3',['mediump_fvec3',['../a00304.html#ga999dc6703ad16e3d3c26b74ea8083f07',1,'glm']]], - ['mediump_5ffvec4',['mediump_fvec4',['../a00304.html#ga1bed890513c0f50b7e7ba4f7f359dbfb',1,'glm']]], - ['mediump_5fi16',['mediump_i16',['../a00304.html#ga62a17cddeb4dffb4e18fe3aea23f051a',1,'glm']]], - ['mediump_5fi16vec1',['mediump_i16vec1',['../a00304.html#gacc44265ed440bf5e6e566782570de842',1,'glm']]], - ['mediump_5fi16vec2',['mediump_i16vec2',['../a00304.html#ga4b5e2c9aaa5d7717bf71179aefa12e88',1,'glm']]], - ['mediump_5fi16vec3',['mediump_i16vec3',['../a00304.html#ga3be6c7fc5fe08fa2274bdb001d5f2633',1,'glm']]], - ['mediump_5fi16vec4',['mediump_i16vec4',['../a00304.html#gaf52982bb23e3a3772649b2c5bb84b107',1,'glm']]], - ['mediump_5fi32',['mediump_i32',['../a00304.html#gaf5e94bf2a20af7601787c154751dc2e1',1,'glm']]], - ['mediump_5fi32vec1',['mediump_i32vec1',['../a00304.html#ga46a57f71e430637559097a732b550a7e',1,'glm']]], - ['mediump_5fi32vec2',['mediump_i32vec2',['../a00304.html#ga20bf224bd4f8a24ecc4ed2004a40c219',1,'glm']]], - ['mediump_5fi32vec3',['mediump_i32vec3',['../a00304.html#ga13a221b910aa9eb1b04ca1c86e81015a',1,'glm']]], - ['mediump_5fi32vec4',['mediump_i32vec4',['../a00304.html#ga6addd4dfee87fc09ab9525e3d07db4c8',1,'glm']]], - ['mediump_5fi64',['mediump_i64',['../a00304.html#ga3ebcb1f6d8d8387253de8bccb058d77f',1,'glm']]], - ['mediump_5fi64vec1',['mediump_i64vec1',['../a00304.html#ga8343e9d244fb17a5bbf0d94d36b3695e',1,'glm']]], - ['mediump_5fi64vec2',['mediump_i64vec2',['../a00304.html#ga2c94aeae3457325944ca1059b0b68330',1,'glm']]], - ['mediump_5fi64vec3',['mediump_i64vec3',['../a00304.html#ga8089722ffdf868cdfe721dea1fb6a90e',1,'glm']]], - ['mediump_5fi64vec4',['mediump_i64vec4',['../a00304.html#gabf1f16c5ab8cb0484bd1e846ae4368f1',1,'glm']]], - ['mediump_5fi8',['mediump_i8',['../a00304.html#gacf1ded173e1e2d049c511d095b259e21',1,'glm']]], - ['mediump_5fi8vec1',['mediump_i8vec1',['../a00304.html#ga85e8893f4ae3630065690a9000c0c483',1,'glm']]], - ['mediump_5fi8vec2',['mediump_i8vec2',['../a00304.html#ga2a8bdc32184ea0a522ef7bd90640cf67',1,'glm']]], - ['mediump_5fi8vec3',['mediump_i8vec3',['../a00304.html#ga6dd1c1618378c6f94d522a61c28773c9',1,'glm']]], - ['mediump_5fi8vec4',['mediump_i8vec4',['../a00304.html#gac7bb04fb857ef7b520e49f6c381432be',1,'glm']]], - ['mediump_5fimat2',['mediump_imat2',['../a00294.html#ga20f4cc7ab23e2aa1f4db9fdb5496d378',1,'glm']]], - ['mediump_5fimat2x2',['mediump_imat2x2',['../a00294.html#ga4b2aeb11a329940721dda9583e71f856',1,'glm']]], - ['mediump_5fimat2x3',['mediump_imat2x3',['../a00294.html#ga74362470ba99843ac70aee5ac38cc674',1,'glm']]], - ['mediump_5fimat2x4',['mediump_imat2x4',['../a00294.html#ga8da25cd380ba30fc5b68a4687deb3e09',1,'glm']]], - ['mediump_5fimat3',['mediump_imat3',['../a00294.html#ga6c63bdc736efd3466e0730de0251cb71',1,'glm']]], - ['mediump_5fimat3x2',['mediump_imat3x2',['../a00294.html#gac0b4e42d648fb3eaf4bb88da82ecc809',1,'glm']]], - ['mediump_5fimat3x3',['mediump_imat3x3',['../a00294.html#gad99cc2aad8fc57f068cfa7719dbbea12',1,'glm']]], - ['mediump_5fimat3x4',['mediump_imat3x4',['../a00294.html#ga67689a518b181a26540bc44a163525cd',1,'glm']]], - ['mediump_5fimat4',['mediump_imat4',['../a00294.html#gaf348552978553630d2a00b78eb887ced',1,'glm']]], - ['mediump_5fimat4x2',['mediump_imat4x2',['../a00294.html#ga8b2d35816f7103f0f4c82dd2f27571fc',1,'glm']]], - ['mediump_5fimat4x3',['mediump_imat4x3',['../a00294.html#ga5b10acc696759e03f6ab918f4467e94c',1,'glm']]], - ['mediump_5fimat4x4',['mediump_imat4x4',['../a00294.html#ga2596869d154dec1180beadbb9df80501',1,'glm']]], - ['mediump_5fint16',['mediump_int16',['../a00304.html#gadff3608baa4b5bd3ed28f95c1c2c345d',1,'glm']]], - ['mediump_5fint16_5ft',['mediump_int16_t',['../a00304.html#ga80e72fe94c88498537e8158ba7591c54',1,'glm']]], - ['mediump_5fint32',['mediump_int32',['../a00304.html#ga5244cef85d6e870e240c76428a262ae8',1,'glm']]], - ['mediump_5fint32_5ft',['mediump_int32_t',['../a00304.html#ga26fc7ced1ad7ca5024f1c973c8dc9180',1,'glm']]], - ['mediump_5fint64',['mediump_int64',['../a00304.html#ga7b968f2b86a0442a89c7359171e1d866',1,'glm']]], - ['mediump_5fint64_5ft',['mediump_int64_t',['../a00304.html#gac3bc41bcac61d1ba8f02a6f68ce23f64',1,'glm']]], - ['mediump_5fint8',['mediump_int8',['../a00304.html#ga6fbd69cbdaa44345bff923a2cf63de7e',1,'glm']]], - ['mediump_5fint8_5ft',['mediump_int8_t',['../a00304.html#ga6d7b3789ecb932c26430009478cac7ae',1,'glm']]], - ['mediump_5fivec1',['mediump_ivec1',['../a00273.html#gad628c608970b3d0aa6cfb63ce6e53e56',1,'glm']]], - ['mediump_5fivec2',['mediump_ivec2',['../a00282.html#gac57496299d276ed97044074097bd5e2c',1,'glm']]], - ['mediump_5fivec3',['mediump_ivec3',['../a00282.html#ga27cfb51e0dbe15bba27a14a8590e8466',1,'glm']]], - ['mediump_5fivec4',['mediump_ivec4',['../a00282.html#ga92a204c37e66ac6c1dc7ae91142f2ea5',1,'glm']]], - ['mediump_5fmat2',['mediump_mat2',['../a00284.html#ga745452bd9c89f5ad948203e4fb4b4ea3',1,'glm']]], - ['mediump_5fmat2x2',['mediump_mat2x2',['../a00284.html#ga0cdf57d29f9448864237b2fb3e39aa1d',1,'glm']]], - ['mediump_5fmat2x3',['mediump_mat2x3',['../a00284.html#ga497d513d552d927537d61fa11e3701ab',1,'glm']]], - ['mediump_5fmat2x4',['mediump_mat2x4',['../a00284.html#gae7b75ea2e09fa686a79bbe9b6ca68ee5',1,'glm']]], - ['mediump_5fmat3',['mediump_mat3',['../a00284.html#ga5aae49834d02732942f44e61d7bce136',1,'glm']]], - ['mediump_5fmat3x2',['mediump_mat3x2',['../a00284.html#ga9e1c9ee65fef547bde793e69723e24eb',1,'glm']]], - ['mediump_5fmat3x3',['mediump_mat3x3',['../a00284.html#gabc0f2f4ad21c90b341881cf056f8650e',1,'glm']]], - ['mediump_5fmat3x4',['mediump_mat3x4',['../a00284.html#gaa669c6675c3405f76c0b14020d1c0d61',1,'glm']]], - ['mediump_5fmat4',['mediump_mat4',['../a00284.html#gab8531bc3f269aa45835cd6e1972b7fc7',1,'glm']]], - ['mediump_5fmat4x2',['mediump_mat4x2',['../a00284.html#gad75706b70545412ba9ac27d5ee210f66',1,'glm']]], - ['mediump_5fmat4x3',['mediump_mat4x3',['../a00284.html#ga4a1440b5ea3cf84d5b06c79b534bd770',1,'glm']]], - ['mediump_5fmat4x4',['mediump_mat4x4',['../a00284.html#ga15bca2b70917d9752231160d9da74b01',1,'glm']]], - ['mediump_5fquat',['mediump_quat',['../a00253.html#gad2a59409de1bb12ccb6eb692ee7e9d8d',1,'glm']]], - ['mediump_5fu16',['mediump_u16',['../a00304.html#ga9df98857be695d5a30cb30f5bfa38a80',1,'glm']]], - ['mediump_5fu16vec1',['mediump_u16vec1',['../a00304.html#ga400ce8cc566de093a9b28e59e220d6e4',1,'glm']]], - ['mediump_5fu16vec2',['mediump_u16vec2',['../a00304.html#ga429c201b3e92c90b4ef4356f2be52ee1',1,'glm']]], - ['mediump_5fu16vec3',['mediump_u16vec3',['../a00304.html#gac9ba20234b0c3751d45ce575fc71e551',1,'glm']]], - ['mediump_5fu16vec4',['mediump_u16vec4',['../a00304.html#ga5793393686ce5bd2d5968ff9144762b8',1,'glm']]], - ['mediump_5fu32',['mediump_u32',['../a00304.html#ga1bd0e914158bf03135f8a317de6debe9',1,'glm']]], - ['mediump_5fu32vec1',['mediump_u32vec1',['../a00304.html#ga8a11ccd2e38f674bbf3c2d1afc232aee',1,'glm']]], - ['mediump_5fu32vec2',['mediump_u32vec2',['../a00304.html#ga94f74851fce338549c705b5f0d601c4f',1,'glm']]], - ['mediump_5fu32vec3',['mediump_u32vec3',['../a00304.html#ga012c24c8fc69707b90260474c70275a2',1,'glm']]], - ['mediump_5fu32vec4',['mediump_u32vec4',['../a00304.html#ga5d43ee8b5dbaa06c327b03b83682598a',1,'glm']]], - ['mediump_5fu64',['mediump_u64',['../a00304.html#ga2af9490085ae3bdf36a544e9dd073610',1,'glm']]], - ['mediump_5fu64vec1',['mediump_u64vec1',['../a00304.html#ga659f372ccb8307d5db5beca942cde5e8',1,'glm']]], - ['mediump_5fu64vec2',['mediump_u64vec2',['../a00304.html#ga73a08ef5a74798f3a1a99250b5f86a7d',1,'glm']]], - ['mediump_5fu64vec3',['mediump_u64vec3',['../a00304.html#ga1900c6ab74acd392809425953359ef52',1,'glm']]], - ['mediump_5fu64vec4',['mediump_u64vec4',['../a00304.html#gaec7ee455cb379ec2993e81482123e1cc',1,'glm']]], - ['mediump_5fu8',['mediump_u8',['../a00304.html#gad1213a22bbb9e4107f07eaa4956f8281',1,'glm']]], - ['mediump_5fu8vec1',['mediump_u8vec1',['../a00304.html#ga4a43050843b141bdc7e85437faef6f55',1,'glm']]], - ['mediump_5fu8vec2',['mediump_u8vec2',['../a00304.html#ga907f85d4a0eac3d8aaf571e5c2647194',1,'glm']]], - ['mediump_5fu8vec3',['mediump_u8vec3',['../a00304.html#gaddc6f7748b699254942c5216b68f8f7f',1,'glm']]], - ['mediump_5fu8vec4',['mediump_u8vec4',['../a00304.html#gaaf4ee3b76d43d98da02ec399b99bda4b',1,'glm']]], - ['mediump_5fuint16',['mediump_uint16',['../a00304.html#ga2885a6c89916911e418c06bb76b9bdbb',1,'glm']]], - ['mediump_5fuint16_5ft',['mediump_uint16_t',['../a00304.html#ga3963b1050fc65a383ee28e3f827b6e3e',1,'glm']]], - ['mediump_5fuint32',['mediump_uint32',['../a00304.html#ga34dd5ec1988c443bae80f1b20a8ade5f',1,'glm']]], - ['mediump_5fuint32_5ft',['mediump_uint32_t',['../a00304.html#gaf4dae276fd29623950de14a6ca2586b5',1,'glm']]], - ['mediump_5fuint64',['mediump_uint64',['../a00304.html#ga30652709815ad9404272a31957daa59e',1,'glm']]], - ['mediump_5fuint64_5ft',['mediump_uint64_t',['../a00304.html#ga9b170dd4a8f38448a2dc93987c7875e9',1,'glm']]], - ['mediump_5fuint8',['mediump_uint8',['../a00304.html#ga1fa92a233b9110861cdbc8c2ccf0b5a3',1,'glm']]], - ['mediump_5fuint8_5ft',['mediump_uint8_t',['../a00304.html#gadfe65c78231039e90507770db50c98c7',1,'glm']]], - ['mediump_5fumat2',['mediump_umat2',['../a00294.html#ga43041378b3410ea951b7de0dfd2bc7ee',1,'glm']]], - ['mediump_5fumat2x2',['mediump_umat2x2',['../a00294.html#ga3b209b1b751f041422137e3c065dfa98',1,'glm']]], - ['mediump_5fumat2x3',['mediump_umat2x3',['../a00294.html#gaee2c1f13b41f4c92ea5b3efe367a1306',1,'glm']]], - ['mediump_5fumat2x4',['mediump_umat2x4',['../a00294.html#gae1317ddca16d01e119a40b7f0ee85f95',1,'glm']]], - ['mediump_5fumat3',['mediump_umat3',['../a00294.html#ga1730dbe3c67801f53520b06d1aa0a34a',1,'glm']]], - ['mediump_5fumat3x2',['mediump_umat3x2',['../a00294.html#gaadc28bfdc8ebca81ae85121b11994970',1,'glm']]], - ['mediump_5fumat3x3',['mediump_umat3x3',['../a00294.html#ga48f2fc38d3f7fab3cfbc961278ced53d',1,'glm']]], - ['mediump_5fumat3x4',['mediump_umat3x4',['../a00294.html#ga78009a1e4ca64217e46b418535e52546',1,'glm']]], - ['mediump_5fumat4',['mediump_umat4',['../a00294.html#ga5087c2beb26a11d9af87432e554cf9d1',1,'glm']]], - ['mediump_5fumat4x2',['mediump_umat4x2',['../a00294.html#gaf35aefd81cc13718f6b059623f7425fa',1,'glm']]], - ['mediump_5fumat4x3',['mediump_umat4x3',['../a00294.html#ga4e1bed14fbc7f4b376aaed064f89f0fb',1,'glm']]], - ['mediump_5fumat4x4',['mediump_umat4x4',['../a00294.html#gaa9428fc8430dc552aad920653f822ef3',1,'glm']]], - ['mediump_5fuvec1',['mediump_uvec1',['../a00277.html#ga38fde73aaf1420175ece8d4882558a3f',1,'glm']]], - ['mediump_5fuvec2',['mediump_uvec2',['../a00282.html#gaa3b4f7806dad03d83bb3da0baa1e3b9b',1,'glm']]], - ['mediump_5fuvec3',['mediump_uvec3',['../a00282.html#ga83b7df38feefbb357f3673d950fafef7',1,'glm']]], - ['mediump_5fuvec4',['mediump_uvec4',['../a00282.html#ga64ed0deb6573375b7016daf82ffd53a7',1,'glm']]], - ['mediump_5fvec1',['mediump_vec1',['../a00271.html#ga645f53e6b8056609023a894b4e2beef4',1,'glm']]], - ['mediump_5fvec2',['mediump_vec2',['../a00282.html#gabc61976261c406520c7a8e4d946dc3f0',1,'glm']]], - ['mediump_5fvec3',['mediump_vec3',['../a00282.html#ga2384e263df19f1404b733016eff78fca',1,'glm']]], - ['mediump_5fvec4',['mediump_vec4',['../a00282.html#ga5c6978d3ffba06738416a33083853fc0',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_8.html b/tests/OpenGL/package/glm/doc/api/search/typedefs_8.html deleted file mode 100644 index 4e9ac73d..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_8.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_8.js b/tests/OpenGL/package/glm/doc/api/search/typedefs_8.js deleted file mode 100644 index 4f7da519..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_8.js +++ /dev/null @@ -1,179 +0,0 @@ -var searchData= -[ - ['packed_5fbvec1',['packed_bvec1',['../a00303.html#ga88632cea9008ac0ac1388e94e804a53c',1,'glm']]], - ['packed_5fbvec2',['packed_bvec2',['../a00303.html#gab85245913eaa40ab82adabcae37086cb',1,'glm']]], - ['packed_5fbvec3',['packed_bvec3',['../a00303.html#ga0c48f9417f649e27f3fb0c9f733a18bd',1,'glm']]], - ['packed_5fbvec4',['packed_bvec4',['../a00303.html#ga3180d7db84a74c402157df3bbc0ae3ed',1,'glm']]], - ['packed_5fdmat2',['packed_dmat2',['../a00303.html#gad87408a8350918711f845f071bbe43fb',1,'glm']]], - ['packed_5fdmat2x2',['packed_dmat2x2',['../a00303.html#gaaa33d8e06657a777efb0c72c44ce87a9',1,'glm']]], - ['packed_5fdmat2x3',['packed_dmat2x3',['../a00303.html#gac3a5315f588ba04ad255188071ec4e22',1,'glm']]], - ['packed_5fdmat2x4',['packed_dmat2x4',['../a00303.html#gae398fc3156f51d3684b08f62c1a5a6d4',1,'glm']]], - ['packed_5fdmat3',['packed_dmat3',['../a00303.html#ga03dfc90d539cc87ea3a15a9caa5d2245',1,'glm']]], - ['packed_5fdmat3x2',['packed_dmat3x2',['../a00303.html#gae36de20a4c0e0b1444b7903ae811d94e',1,'glm']]], - ['packed_5fdmat3x3',['packed_dmat3x3',['../a00303.html#gab9b909f1392d86854334350efcae85f5',1,'glm']]], - ['packed_5fdmat3x4',['packed_dmat3x4',['../a00303.html#ga199131fd279c92c2ac12df6d978f1dd6',1,'glm']]], - ['packed_5fdmat4',['packed_dmat4',['../a00303.html#gada980a3485640aa8151f368f17ad3086',1,'glm']]], - ['packed_5fdmat4x2',['packed_dmat4x2',['../a00303.html#ga6dc65249730698d3cc9ac5d7e1bc4d72',1,'glm']]], - ['packed_5fdmat4x3',['packed_dmat4x3',['../a00303.html#gadf202aaa9ed71c09f9bbe347e43f8764',1,'glm']]], - ['packed_5fdmat4x4',['packed_dmat4x4',['../a00303.html#gae20617435a6d042d7c38da2badd64a09',1,'glm']]], - ['packed_5fdvec1',['packed_dvec1',['../a00303.html#ga532f0c940649b1ee303acd572fc35531',1,'glm']]], - ['packed_5fdvec2',['packed_dvec2',['../a00303.html#ga5c194b11fbda636f2ab20c3bd0079196',1,'glm']]], - ['packed_5fdvec3',['packed_dvec3',['../a00303.html#ga0581ea552d86b2b5de7a2804bed80e72',1,'glm']]], - ['packed_5fdvec4',['packed_dvec4',['../a00303.html#gae8a9b181f9dc813ad6e125a52b14b935',1,'glm']]], - ['packed_5fhighp_5fbvec1',['packed_highp_bvec1',['../a00303.html#ga439e97795314b81cd15abd4e5c2e6e7a',1,'glm']]], - ['packed_5fhighp_5fbvec2',['packed_highp_bvec2',['../a00303.html#gad791d671f4fcf1ed1ea41f752916b70a',1,'glm']]], - ['packed_5fhighp_5fbvec3',['packed_highp_bvec3',['../a00303.html#ga6a5a3250b57dfadc66735bc72911437f',1,'glm']]], - ['packed_5fhighp_5fbvec4',['packed_highp_bvec4',['../a00303.html#ga09f517d88b996ef1b2f42fd54222b82d',1,'glm']]], - ['packed_5fhighp_5fdmat2',['packed_highp_dmat2',['../a00303.html#gae29686632fd05efac0675d9a6370d77b',1,'glm']]], - ['packed_5fhighp_5fdmat2x2',['packed_highp_dmat2x2',['../a00303.html#ga22bd6382b16052e301edbfc031b9f37a',1,'glm']]], - ['packed_5fhighp_5fdmat2x3',['packed_highp_dmat2x3',['../a00303.html#ga999d82719696d4c59f4d236dd08f273d',1,'glm']]], - ['packed_5fhighp_5fdmat2x4',['packed_highp_dmat2x4',['../a00303.html#ga6998ac2a8d7fe456b651a6336ed26bb0',1,'glm']]], - ['packed_5fhighp_5fdmat3',['packed_highp_dmat3',['../a00303.html#gadac7c040c4810dd52b36fcd09d097400',1,'glm']]], - ['packed_5fhighp_5fdmat3x2',['packed_highp_dmat3x2',['../a00303.html#gab462744977beb85fb5c782bc2eea7b15',1,'glm']]], - ['packed_5fhighp_5fdmat3x3',['packed_highp_dmat3x3',['../a00303.html#ga49e5a709d098523823b2f824e48672a6',1,'glm']]], - ['packed_5fhighp_5fdmat3x4',['packed_highp_dmat3x4',['../a00303.html#ga2c67b3b0adab71c8680c3d819f1fa9b7',1,'glm']]], - ['packed_5fhighp_5fdmat4',['packed_highp_dmat4',['../a00303.html#ga6718822cd7af005a9b5bd6ee282f6ba6',1,'glm']]], - ['packed_5fhighp_5fdmat4x2',['packed_highp_dmat4x2',['../a00303.html#ga12e39e797fb724a5b51fcbea2513a7da',1,'glm']]], - ['packed_5fhighp_5fdmat4x3',['packed_highp_dmat4x3',['../a00303.html#ga79c2e9f82e67963c1ecad0ad6d0ec72e',1,'glm']]], - ['packed_5fhighp_5fdmat4x4',['packed_highp_dmat4x4',['../a00303.html#ga2df58e03e5afded28707b4f7d077afb4',1,'glm']]], - ['packed_5fhighp_5fdvec1',['packed_highp_dvec1',['../a00303.html#gab472b2d917b5e6efd76e8c7dbfbbf9f1',1,'glm']]], - ['packed_5fhighp_5fdvec2',['packed_highp_dvec2',['../a00303.html#ga5b2dc48fa19b684d207d69c6b145eb63',1,'glm']]], - ['packed_5fhighp_5fdvec3',['packed_highp_dvec3',['../a00303.html#gaaac6b356ef00154da41aaae7d1549193',1,'glm']]], - ['packed_5fhighp_5fdvec4',['packed_highp_dvec4',['../a00303.html#ga81b5368fe485e2630aa9b44832d592e7',1,'glm']]], - ['packed_5fhighp_5fivec1',['packed_highp_ivec1',['../a00303.html#ga7245acc887a5438f46fd85fdf076bb3b',1,'glm']]], - ['packed_5fhighp_5fivec2',['packed_highp_ivec2',['../a00303.html#ga54f368ec6b514a5aa4f28d40e6f93ef7',1,'glm']]], - ['packed_5fhighp_5fivec3',['packed_highp_ivec3',['../a00303.html#ga865a9c7bb22434b1b8c5ac31e164b628',1,'glm']]], - ['packed_5fhighp_5fivec4',['packed_highp_ivec4',['../a00303.html#gad6f1b4e3a51c2c051814b60d5d1b8895',1,'glm']]], - ['packed_5fhighp_5fmat2',['packed_highp_mat2',['../a00303.html#ga2f2d913d8cca2f935b2522964408c0b2',1,'glm']]], - ['packed_5fhighp_5fmat2x2',['packed_highp_mat2x2',['../a00303.html#ga245c12d2daf67feecaa2d3277c8f6661',1,'glm']]], - ['packed_5fhighp_5fmat2x3',['packed_highp_mat2x3',['../a00303.html#ga069cc8892aadae144c00f35297617d44',1,'glm']]], - ['packed_5fhighp_5fmat2x4',['packed_highp_mat2x4',['../a00303.html#ga6904d09b62141d09712b76983892f95b',1,'glm']]], - ['packed_5fhighp_5fmat3',['packed_highp_mat3',['../a00303.html#gabdd5fbffe8b8b8a7b33523f25b120dbe',1,'glm']]], - ['packed_5fhighp_5fmat3x2',['packed_highp_mat3x2',['../a00303.html#ga2624719cb251d8de8cad1beaefc3a3f9',1,'glm']]], - ['packed_5fhighp_5fmat3x3',['packed_highp_mat3x3',['../a00303.html#gaf2e07527d678440bf0c20adbeb9177c5',1,'glm']]], - ['packed_5fhighp_5fmat3x4',['packed_highp_mat3x4',['../a00303.html#ga72102fa6ac2445aa3bb203128ad52449',1,'glm']]], - ['packed_5fhighp_5fmat4',['packed_highp_mat4',['../a00303.html#ga253e8379b08d2dc6fe2800b2fb913203',1,'glm']]], - ['packed_5fhighp_5fmat4x2',['packed_highp_mat4x2',['../a00303.html#gae389c2071cf3cdb33e7812c6fd156710',1,'glm']]], - ['packed_5fhighp_5fmat4x3',['packed_highp_mat4x3',['../a00303.html#ga4584f64394bd7123b7a8534741e4916c',1,'glm']]], - ['packed_5fhighp_5fmat4x4',['packed_highp_mat4x4',['../a00303.html#ga0149fe15668925147e07c94fd2c2d6ae',1,'glm']]], - ['packed_5fhighp_5fuvec1',['packed_highp_uvec1',['../a00303.html#ga8c32b53f628a3616aa5061e58d66fe74',1,'glm']]], - ['packed_5fhighp_5fuvec2',['packed_highp_uvec2',['../a00303.html#gab704d4fb15f6f96d70e363d5db7060cd',1,'glm']]], - ['packed_5fhighp_5fuvec3',['packed_highp_uvec3',['../a00303.html#ga0b570da473fec4619db5aa0dce5133b0',1,'glm']]], - ['packed_5fhighp_5fuvec4',['packed_highp_uvec4',['../a00303.html#gaa582f38c82aef61dea7aaedf15bb06a6',1,'glm']]], - ['packed_5fhighp_5fvec1',['packed_highp_vec1',['../a00303.html#ga56473759d2702ee19ab7f91d0017fa70',1,'glm']]], - ['packed_5fhighp_5fvec2',['packed_highp_vec2',['../a00303.html#ga6b8b9475e7c3b16aed13edbc460bbc4d',1,'glm']]], - ['packed_5fhighp_5fvec3',['packed_highp_vec3',['../a00303.html#ga3815661df0e2de79beff8168c09adf1e',1,'glm']]], - ['packed_5fhighp_5fvec4',['packed_highp_vec4',['../a00303.html#ga4015f36bf5a5adb6ac5d45beed959867',1,'glm']]], - ['packed_5fivec1',['packed_ivec1',['../a00303.html#ga11581a06fc7bf941fa4d4b6aca29812c',1,'glm']]], - ['packed_5fivec2',['packed_ivec2',['../a00303.html#ga1fe4c5f56b8087d773aa90dc88a257a7',1,'glm']]], - ['packed_5fivec3',['packed_ivec3',['../a00303.html#gae157682a7847161787951ba1db4cf325',1,'glm']]], - ['packed_5fivec4',['packed_ivec4',['../a00303.html#gac228b70372abd561340d5f926a7c1778',1,'glm']]], - ['packed_5flowp_5fbvec1',['packed_lowp_bvec1',['../a00303.html#gae3c8750f53259ece334d3aa3b3649a40',1,'glm']]], - ['packed_5flowp_5fbvec2',['packed_lowp_bvec2',['../a00303.html#gac969befedbda69eb78d4e23f751fdbee',1,'glm']]], - ['packed_5flowp_5fbvec3',['packed_lowp_bvec3',['../a00303.html#ga7c20adbe1409e3fe4544677a7f6fe954',1,'glm']]], - ['packed_5flowp_5fbvec4',['packed_lowp_bvec4',['../a00303.html#gae473587cff3092edc0877fc691c26a0b',1,'glm']]], - ['packed_5flowp_5fdmat2',['packed_lowp_dmat2',['../a00303.html#gac93f9b1a35b9de4f456b9f2dfeaf1097',1,'glm']]], - ['packed_5flowp_5fdmat2x2',['packed_lowp_dmat2x2',['../a00303.html#gaeeaff6c132ec91ebd21da3a2399548ea',1,'glm']]], - ['packed_5flowp_5fdmat2x3',['packed_lowp_dmat2x3',['../a00303.html#ga2ccdcd4846775cbe4f9d12e71d55b5d2',1,'glm']]], - ['packed_5flowp_5fdmat2x4',['packed_lowp_dmat2x4',['../a00303.html#gac870c47d2d9d48503f6c9ee3baec8ce1',1,'glm']]], - ['packed_5flowp_5fdmat3',['packed_lowp_dmat3',['../a00303.html#ga3894a059eeaacec8791c25de398d9955',1,'glm']]], - ['packed_5flowp_5fdmat3x2',['packed_lowp_dmat3x2',['../a00303.html#ga23ec236950f5859f59197663266b535d',1,'glm']]], - ['packed_5flowp_5fdmat3x3',['packed_lowp_dmat3x3',['../a00303.html#ga4a7c7d8c3a663d0ec2a858cbfa14e54c',1,'glm']]], - ['packed_5flowp_5fdmat3x4',['packed_lowp_dmat3x4',['../a00303.html#ga8fc0e66da83599071b7ec17510686cd9',1,'glm']]], - ['packed_5flowp_5fdmat4',['packed_lowp_dmat4',['../a00303.html#ga03e1edf5666c40affe39aee35c87956f',1,'glm']]], - ['packed_5flowp_5fdmat4x2',['packed_lowp_dmat4x2',['../a00303.html#ga39658fb13369db869d363684bd8399c0',1,'glm']]], - ['packed_5flowp_5fdmat4x3',['packed_lowp_dmat4x3',['../a00303.html#ga30b0351eebc18c6056101359bdd3a359',1,'glm']]], - ['packed_5flowp_5fdmat4x4',['packed_lowp_dmat4x4',['../a00303.html#ga0294d4c45151425c86a11deee7693c0e',1,'glm']]], - ['packed_5flowp_5fdvec1',['packed_lowp_dvec1',['../a00303.html#ga054050e9d4e78d81db0e6d1573b1c624',1,'glm']]], - ['packed_5flowp_5fdvec2',['packed_lowp_dvec2',['../a00303.html#gadc19938ddb204bfcb4d9ef35b1e2bf93',1,'glm']]], - ['packed_5flowp_5fdvec3',['packed_lowp_dvec3',['../a00303.html#ga9189210cabd6651a5e14a4c46fb20598',1,'glm']]], - ['packed_5flowp_5fdvec4',['packed_lowp_dvec4',['../a00303.html#ga262dafd0c001c3a38d1cc91d024ca738',1,'glm']]], - ['packed_5flowp_5fivec1',['packed_lowp_ivec1',['../a00303.html#gaf22b77f1cf3e73b8b1dddfe7f959357c',1,'glm']]], - ['packed_5flowp_5fivec2',['packed_lowp_ivec2',['../a00303.html#ga52635859f5ef660ab999d22c11b7867f',1,'glm']]], - ['packed_5flowp_5fivec3',['packed_lowp_ivec3',['../a00303.html#ga98c9d122a959e9f3ce10a5623c310f5d',1,'glm']]], - ['packed_5flowp_5fivec4',['packed_lowp_ivec4',['../a00303.html#ga931731b8ae3b54c7ecc221509dae96bc',1,'glm']]], - ['packed_5flowp_5fmat2',['packed_lowp_mat2',['../a00303.html#ga70dcb9ef0b24e832772a7405efa9669a',1,'glm']]], - ['packed_5flowp_5fmat2x2',['packed_lowp_mat2x2',['../a00303.html#gac70667c7642ec8d50245e6e6936a3927',1,'glm']]], - ['packed_5flowp_5fmat2x3',['packed_lowp_mat2x3',['../a00303.html#ga3e7df5a11e1be27bc29a4c0d3956f234',1,'glm']]], - ['packed_5flowp_5fmat2x4',['packed_lowp_mat2x4',['../a00303.html#gaea9c555e669dc56c45d95dcc75d59bf3',1,'glm']]], - ['packed_5flowp_5fmat3',['packed_lowp_mat3',['../a00303.html#ga0d22400969dd223465b2900fecfb4f53',1,'glm']]], - ['packed_5flowp_5fmat3x2',['packed_lowp_mat3x2',['../a00303.html#ga128cd52649621861635fab746df91735',1,'glm']]], - ['packed_5flowp_5fmat3x3',['packed_lowp_mat3x3',['../a00303.html#ga5adf1802c5375a9dfb1729691bedd94e',1,'glm']]], - ['packed_5flowp_5fmat3x4',['packed_lowp_mat3x4',['../a00303.html#ga92247ca09fa03c4013ba364f3a0fca7f',1,'glm']]], - ['packed_5flowp_5fmat4',['packed_lowp_mat4',['../a00303.html#ga2a1dd2387725a335413d4c4fee8609c4',1,'glm']]], - ['packed_5flowp_5fmat4x2',['packed_lowp_mat4x2',['../a00303.html#ga8f22607dcd090cd280071ccc689f4079',1,'glm']]], - ['packed_5flowp_5fmat4x3',['packed_lowp_mat4x3',['../a00303.html#ga7661d759d6ad218e132e3d051e7b2c6c',1,'glm']]], - ['packed_5flowp_5fmat4x4',['packed_lowp_mat4x4',['../a00303.html#ga776f18d1a6e7d399f05d386167dc60f5',1,'glm']]], - ['packed_5flowp_5fuvec1',['packed_lowp_uvec1',['../a00303.html#gaf111fed760ecce16cb1988807569bee5',1,'glm']]], - ['packed_5flowp_5fuvec2',['packed_lowp_uvec2',['../a00303.html#ga958210fe245a75b058325d367c951132',1,'glm']]], - ['packed_5flowp_5fuvec3',['packed_lowp_uvec3',['../a00303.html#ga576a3f8372197a56a79dee1c8280f485',1,'glm']]], - ['packed_5flowp_5fuvec4',['packed_lowp_uvec4',['../a00303.html#gafdd97922b4a2a42cd0c99a13877ff4da',1,'glm']]], - ['packed_5flowp_5fvec1',['packed_lowp_vec1',['../a00303.html#ga0a6198fe64166a6a61084d43c71518a9',1,'glm']]], - ['packed_5flowp_5fvec2',['packed_lowp_vec2',['../a00303.html#gafbf1c2cce307c5594b165819ed83bf5d',1,'glm']]], - ['packed_5flowp_5fvec3',['packed_lowp_vec3',['../a00303.html#ga3a30c137c1f8cce478c28eab0427a570',1,'glm']]], - ['packed_5flowp_5fvec4',['packed_lowp_vec4',['../a00303.html#ga3cc94fb8de80bbd8a4aa7a5b206d304a',1,'glm']]], - ['packed_5fmat2',['packed_mat2',['../a00303.html#gadd019b43fcf42e1590d45dddaa504a1a',1,'glm']]], - ['packed_5fmat2x2',['packed_mat2x2',['../a00303.html#ga51eaadcdc292c8750f746a5dc3e6c517',1,'glm']]], - ['packed_5fmat2x3',['packed_mat2x3',['../a00303.html#ga301b76a89b8a9625501ca58815017f20',1,'glm']]], - ['packed_5fmat2x4',['packed_mat2x4',['../a00303.html#gac401da1dd9177ad81d7618a2a5541e23',1,'glm']]], - ['packed_5fmat3',['packed_mat3',['../a00303.html#ga9bc12b0ab7be8448836711b77cc7b83a',1,'glm']]], - ['packed_5fmat3x2',['packed_mat3x2',['../a00303.html#ga134f0d99fbd2459c13cd9ebd056509fa',1,'glm']]], - ['packed_5fmat3x3',['packed_mat3x3',['../a00303.html#ga6c1dbe8cde9fbb231284b01f8aeaaa99',1,'glm']]], - ['packed_5fmat3x4',['packed_mat3x4',['../a00303.html#gad63515526cccfe88ffa8fe5ed64f95f8',1,'glm']]], - ['packed_5fmat4',['packed_mat4',['../a00303.html#ga2c139854e5b04cf08a957dee3b510441',1,'glm']]], - ['packed_5fmat4x2',['packed_mat4x2',['../a00303.html#ga379c1153f1339bdeaefd592bebf538e8',1,'glm']]], - ['packed_5fmat4x3',['packed_mat4x3',['../a00303.html#gab286466e19f7399c8d25089da9400d43',1,'glm']]], - ['packed_5fmat4x4',['packed_mat4x4',['../a00303.html#ga67e7102557d6067bb6ac00d4ad0e1374',1,'glm']]], - ['packed_5fmediump_5fbvec1',['packed_mediump_bvec1',['../a00303.html#ga5546d828d63010a8f9cf81161ad0275a',1,'glm']]], - ['packed_5fmediump_5fbvec2',['packed_mediump_bvec2',['../a00303.html#gab4c6414a59539e66a242ad4cf4b476b4',1,'glm']]], - ['packed_5fmediump_5fbvec3',['packed_mediump_bvec3',['../a00303.html#ga70147763edff3fe96b03a0b98d6339a2',1,'glm']]], - ['packed_5fmediump_5fbvec4',['packed_mediump_bvec4',['../a00303.html#ga7b1620f259595b9da47a6374fc44588a',1,'glm']]], - ['packed_5fmediump_5fdmat2',['packed_mediump_dmat2',['../a00303.html#ga9d60e32d3fcb51f817046cd881fdbf57',1,'glm']]], - ['packed_5fmediump_5fdmat2x2',['packed_mediump_dmat2x2',['../a00303.html#ga39e8bb9b70e5694964e8266a21ba534e',1,'glm']]], - ['packed_5fmediump_5fdmat2x3',['packed_mediump_dmat2x3',['../a00303.html#ga8897c6d9adb4140b1c3b0a07b8f0a430',1,'glm']]], - ['packed_5fmediump_5fdmat2x4',['packed_mediump_dmat2x4',['../a00303.html#gaaa4126969c765e7faa2ebf6951c22ffb',1,'glm']]], - ['packed_5fmediump_5fdmat3',['packed_mediump_dmat3',['../a00303.html#gaf969eb879c76a5f4576e4a1e10095cf6',1,'glm']]], - ['packed_5fmediump_5fdmat3x2',['packed_mediump_dmat3x2',['../a00303.html#ga86efe91cdaa2864c828a5d6d46356c6a',1,'glm']]], - ['packed_5fmediump_5fdmat3x3',['packed_mediump_dmat3x3',['../a00303.html#gaf85877d38d8cfbc21d59d939afd72375',1,'glm']]], - ['packed_5fmediump_5fdmat3x4',['packed_mediump_dmat3x4',['../a00303.html#gad5dcaf93df267bc3029174e430e0907f',1,'glm']]], - ['packed_5fmediump_5fdmat4',['packed_mediump_dmat4',['../a00303.html#ga4b0ee7996651ddd04eaa0c4cdbb66332',1,'glm']]], - ['packed_5fmediump_5fdmat4x2',['packed_mediump_dmat4x2',['../a00303.html#ga9a15514a0631f700de6312b9d5db3a73',1,'glm']]], - ['packed_5fmediump_5fdmat4x3',['packed_mediump_dmat4x3',['../a00303.html#gab5b36cc9caee1bb1c5178fe191bf5713',1,'glm']]], - ['packed_5fmediump_5fdmat4x4',['packed_mediump_dmat4x4',['../a00303.html#ga21e86cf2f6c126bacf31b8985db06bd4',1,'glm']]], - ['packed_5fmediump_5fdvec1',['packed_mediump_dvec1',['../a00303.html#ga8920e90ea9c01d9c97e604a938ce2cbd',1,'glm']]], - ['packed_5fmediump_5fdvec2',['packed_mediump_dvec2',['../a00303.html#ga0c754a783b6fcf80374c013371c4dae9',1,'glm']]], - ['packed_5fmediump_5fdvec3',['packed_mediump_dvec3',['../a00303.html#ga1f18ada6f7cdd8c46db33ba987280fc4',1,'glm']]], - ['packed_5fmediump_5fdvec4',['packed_mediump_dvec4',['../a00303.html#ga568b850f1116b667043533cf77826968',1,'glm']]], - ['packed_5fmediump_5fivec1',['packed_mediump_ivec1',['../a00303.html#ga09507ef020a49517a7bcd50438f05056',1,'glm']]], - ['packed_5fmediump_5fivec2',['packed_mediump_ivec2',['../a00303.html#gaaa891048dddef4627df33809ec726219',1,'glm']]], - ['packed_5fmediump_5fivec3',['packed_mediump_ivec3',['../a00303.html#ga06f26d54dca30994eb1fdadb8e69f4a2',1,'glm']]], - ['packed_5fmediump_5fivec4',['packed_mediump_ivec4',['../a00303.html#ga70130dc8ed9c966ec2a221ce586d45d8',1,'glm']]], - ['packed_5fmediump_5fmat2',['packed_mediump_mat2',['../a00303.html#ga43cd36d430c5187bfdca34a23cb41581',1,'glm']]], - ['packed_5fmediump_5fmat2x2',['packed_mediump_mat2x2',['../a00303.html#ga2d2a73e662759e301c22b8931ff6a526',1,'glm']]], - ['packed_5fmediump_5fmat2x3',['packed_mediump_mat2x3',['../a00303.html#ga99049db01faf1e95ed9fb875a47dffe2',1,'glm']]], - ['packed_5fmediump_5fmat2x4',['packed_mediump_mat2x4',['../a00303.html#gad43a240533f388ce0504b495d9df3d52',1,'glm']]], - ['packed_5fmediump_5fmat3',['packed_mediump_mat3',['../a00303.html#ga13a75c6cbd0a411f694bc82486cd1e55',1,'glm']]], - ['packed_5fmediump_5fmat3x2',['packed_mediump_mat3x2',['../a00303.html#ga04cfaf1421284df3c24ea0985dab24e7',1,'glm']]], - ['packed_5fmediump_5fmat3x3',['packed_mediump_mat3x3',['../a00303.html#gaaa9cea174d342dd9650e3436823cab23',1,'glm']]], - ['packed_5fmediump_5fmat3x4',['packed_mediump_mat3x4',['../a00303.html#gabc93a9560593bd32e099c908531305f5',1,'glm']]], - ['packed_5fmediump_5fmat4',['packed_mediump_mat4',['../a00303.html#gae89d72ffc149147f61df701bbc8755bf',1,'glm']]], - ['packed_5fmediump_5fmat4x2',['packed_mediump_mat4x2',['../a00303.html#gaa458f9d9e0934bae3097e2a373b24707',1,'glm']]], - ['packed_5fmediump_5fmat4x3',['packed_mediump_mat4x3',['../a00303.html#ga02ca6255394aa778abaeb0f733c4d2b6',1,'glm']]], - ['packed_5fmediump_5fmat4x4',['packed_mediump_mat4x4',['../a00303.html#gaf304f64c06743c1571401504d3f50259',1,'glm']]], - ['packed_5fmediump_5fuvec1',['packed_mediump_uvec1',['../a00303.html#ga2c29fb42bab9a4f9b66bc60b2e514a34',1,'glm']]], - ['packed_5fmediump_5fuvec2',['packed_mediump_uvec2',['../a00303.html#gaa1f95690a78dc12e39da32943243aeef',1,'glm']]], - ['packed_5fmediump_5fuvec3',['packed_mediump_uvec3',['../a00303.html#ga1ea2bbdbcb0a69242f6d884663c1b0ab',1,'glm']]], - ['packed_5fmediump_5fuvec4',['packed_mediump_uvec4',['../a00303.html#ga63a73be86a4f07ea7a7499ab0bfebe45',1,'glm']]], - ['packed_5fmediump_5fvec1',['packed_mediump_vec1',['../a00303.html#ga71d63cead1e113fca0bcdaaa33aad050',1,'glm']]], - ['packed_5fmediump_5fvec2',['packed_mediump_vec2',['../a00303.html#ga6844c6f4691d1bf67673240850430948',1,'glm']]], - ['packed_5fmediump_5fvec3',['packed_mediump_vec3',['../a00303.html#gab0eb771b708c5b2205d9b14dd1434fd8',1,'glm']]], - ['packed_5fmediump_5fvec4',['packed_mediump_vec4',['../a00303.html#ga68c9bb24f387b312bae6a0a68e74d95e',1,'glm']]], - ['packed_5fuvec1',['packed_uvec1',['../a00303.html#ga5621493caac01bdd22ab6be4416b0314',1,'glm']]], - ['packed_5fuvec2',['packed_uvec2',['../a00303.html#gabcc33efb4d5e83b8fe4706360e75b932',1,'glm']]], - ['packed_5fuvec3',['packed_uvec3',['../a00303.html#gab96804e99e3a72a35740fec690c79617',1,'glm']]], - ['packed_5fuvec4',['packed_uvec4',['../a00303.html#ga8e5d92e84ebdbe2480cf96bc17d6e2f2',1,'glm']]], - ['packed_5fvec1',['packed_vec1',['../a00303.html#ga14741e3d9da9ae83765389927f837331',1,'glm']]], - ['packed_5fvec2',['packed_vec2',['../a00303.html#ga3254defa5a8f0ae4b02b45fedba84a66',1,'glm']]], - ['packed_5fvec3',['packed_vec3',['../a00303.html#gaccccd090e185450caa28b5b63ad4e8f0',1,'glm']]], - ['packed_5fvec4',['packed_vec4',['../a00303.html#ga37a0e0bf653169b581c5eea3d547fa5d',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_9.html b/tests/OpenGL/package/glm/doc/api/search/typedefs_9.html deleted file mode 100644 index b07ee409..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_9.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_9.js b/tests/OpenGL/package/glm/doc/api/search/typedefs_9.js deleted file mode 100644 index 12213dc7..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_9.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['quat',['quat',['../a00252.html#gab0b441adb4509bc58d2946c2239a8942',1,'glm']]], - ['qword',['qword',['../a00354.html#ga4021754ffb8e5ef14c75802b15657714',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_a.html b/tests/OpenGL/package/glm/doc/api/search/typedefs_a.html deleted file mode 100644 index b1a32661..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_a.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_a.js b/tests/OpenGL/package/glm/doc/api/search/typedefs_a.js deleted file mode 100644 index 47df88c5..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_a.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['sint',['sint',['../a00330.html#gada7e83fdfe943aba4f1d5bf80cb66f40',1,'glm']]], - ['size1',['size1',['../a00359.html#gaeb877ac8f9a3703961736c1c5072cf68',1,'glm']]], - ['size1_5ft',['size1_t',['../a00359.html#gaaf6accc57f5aa50447ba7310ce3f0d6f',1,'glm']]], - ['size2',['size2',['../a00359.html#ga1bfe8c4975ff282bce41be2bacd524fe',1,'glm']]], - ['size2_5ft',['size2_t',['../a00359.html#ga5976c25657d4e2b5f73f39364c3845d6',1,'glm']]], - ['size3',['size3',['../a00359.html#gae1c72956d0359b0db332c6c8774d3b04',1,'glm']]], - ['size3_5ft',['size3_t',['../a00359.html#gaf2654983c60d641fd3808e65a8dfad8d',1,'glm']]], - ['size4',['size4',['../a00359.html#ga3a19dde617beaf8ce3cfc2ac5064e9aa',1,'glm']]], - ['size4_5ft',['size4_t',['../a00359.html#gaa423efcea63675a2df26990dbcb58656',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_b.html b/tests/OpenGL/package/glm/doc/api/search/typedefs_b.html deleted file mode 100644 index eded260d..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_b.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_b.js b/tests/OpenGL/package/glm/doc/api/search/typedefs_b.js deleted file mode 100644 index e2eadd53..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_b.js +++ /dev/null @@ -1,47 +0,0 @@ -var searchData= -[ - ['u16',['u16',['../a00304.html#gaa2d7acc0adb536fab71fe261232a40ff',1,'glm']]], - ['u16vec1',['u16vec1',['../a00304.html#ga08c05ba8ffb19f5d14ab584e1e9e9ee5',1,'glm::u16vec1()'],['../a00346.html#ga52cc069a92e126c3a8dcde93424d2ef0',1,'glm::gtx::u16vec1()']]], - ['u16vec2',['u16vec2',['../a00304.html#ga2a78447eb9d66a114b193f4a25899c16',1,'glm']]], - ['u16vec3',['u16vec3',['../a00304.html#ga1c522ca821c27b862fe51cf4024b064b',1,'glm']]], - ['u16vec4',['u16vec4',['../a00304.html#ga529496d75775fb656a07993ea9af2450',1,'glm']]], - ['u32',['u32',['../a00304.html#ga8165913e068444f7842302d40ba897b9',1,'glm']]], - ['u32vec1',['u32vec1',['../a00304.html#gae627372cfd5f20dd87db490387b71195',1,'glm::u32vec1()'],['../a00346.html#ga9bbc1e14aea65cba5e2dcfef6a67d9f3',1,'glm::gtx::u32vec1()']]], - ['u32vec2',['u32vec2',['../a00304.html#ga2a266e46ee218d0c680f12b35c500cc0',1,'glm']]], - ['u32vec3',['u32vec3',['../a00304.html#gae267358ff2a41d156d97f5762630235a',1,'glm']]], - ['u32vec4',['u32vec4',['../a00304.html#ga31cef34e4cd04840c54741ff2f7005f0',1,'glm']]], - ['u64',['u64',['../a00304.html#gaf3f312156984c365e9f65620354da70b',1,'glm']]], - ['u64vec1',['u64vec1',['../a00304.html#gaf09f3ca4b671a4a4f84505eb4cc865fd',1,'glm::u64vec1()'],['../a00346.html#ga818de170e2584ab037130f2881925974',1,'glm::gtx::u64vec1()']]], - ['u64vec2',['u64vec2',['../a00304.html#gaef3824ed4fe435a019c5b9dddf53fec5',1,'glm']]], - ['u64vec3',['u64vec3',['../a00304.html#ga489b89ba93d4f7b3934df78debc52276',1,'glm']]], - ['u64vec4',['u64vec4',['../a00304.html#ga3945dd6515d4498cb603e65ff867ab03',1,'glm']]], - ['u8',['u8',['../a00304.html#gaecc7082561fc9028b844b6cf3d305d36',1,'glm']]], - ['u8vec1',['u8vec1',['../a00304.html#ga29b349e037f0b24320b4548a143daee2',1,'glm::u8vec1()'],['../a00346.html#ga5853fe457f4c8a6bc09343d0e9833980',1,'glm::gtx::u8vec1()']]], - ['u8vec2',['u8vec2',['../a00304.html#ga518b8d948a6b4ddb72f84d5c3b7b6611',1,'glm']]], - ['u8vec3',['u8vec3',['../a00304.html#ga7c5706f6bbe5282e5598acf7e7b377e2',1,'glm']]], - ['u8vec4',['u8vec4',['../a00304.html#ga20779a61de2fd526a17f12fe53ec46b1',1,'glm']]], - ['uint16',['uint16',['../a00263.html#ga05f6b0ae8f6a6e135b0e290c25fe0e4e',1,'glm']]], - ['uint16_5ft',['uint16_t',['../a00304.html#ga91f91f411080c37730856ff5887f5bcf',1,'glm']]], - ['uint32',['uint32',['../a00263.html#ga1134b580f8da4de94ca6b1de4d37975e',1,'glm']]], - ['uint32_5ft',['uint32_t',['../a00304.html#ga2171d9dc1fefb1c82e2817f45b622eac',1,'glm']]], - ['uint64',['uint64',['../a00263.html#gab630f76c26b50298187f7889104d4b9c',1,'glm']]], - ['uint64_5ft',['uint64_t',['../a00304.html#ga3999d3e7ff22025c16ddb601e14dfdee',1,'glm']]], - ['uint8',['uint8',['../a00263.html#gadde6aaee8457bee49c2a92621fe22b79',1,'glm']]], - ['uint8_5ft',['uint8_t',['../a00304.html#ga28d97808322d3c92186e4a0c067d7e8e',1,'glm']]], - ['umat2',['umat2',['../a00294.html#ga4cae85566f900debf930c41944b64691',1,'glm']]], - ['umat2x2',['umat2x2',['../a00294.html#gabf8acdd33ce8951051edbca5200898aa',1,'glm']]], - ['umat2x3',['umat2x3',['../a00294.html#ga1870da7578d5022b973a83155d386ab3',1,'glm']]], - ['umat2x4',['umat2x4',['../a00294.html#ga57936a3998e992370e59a223e0ee4fd4',1,'glm']]], - ['umat3',['umat3',['../a00294.html#ga5085e3ff02abbac5e537eb7b89ab63b6',1,'glm']]], - ['umat3x2',['umat3x2',['../a00294.html#ga9cd7fa637a4a6788337f45231fad9e1a',1,'glm']]], - ['umat3x3',['umat3x3',['../a00294.html#ga1f2cfcf3357db0cdf31fcb15e3c6bafb',1,'glm']]], - ['umat3x4',['umat3x4',['../a00294.html#gae7c78ff3fc4309605ab0fa186c8d48ba',1,'glm']]], - ['umat4',['umat4',['../a00294.html#ga38bc7bb6494e344185df596deeb4544c',1,'glm']]], - ['umat4x2',['umat4x2',['../a00294.html#ga70fa2d05896aa83cbc8c07672a429b53',1,'glm']]], - ['umat4x3',['umat4x3',['../a00294.html#ga87581417945411f75cb31dd6ca1dba98',1,'glm']]], - ['umat4x4',['umat4x4',['../a00294.html#gaf72e6d399c42985db6872c50f53d7eb8',1,'glm']]], - ['uvec1',['uvec1',['../a00276.html#gac3bdd96183d23876c58a1424585fefe7',1,'glm']]], - ['uvec2',['uvec2',['../a00281.html#ga2f6d9ec3ae14813ade37d6aee3715fdb',1,'glm']]], - ['uvec3',['uvec3',['../a00281.html#ga3d3e55874babd4bf93baa7bbc83ae418',1,'glm']]], - ['uvec4',['uvec4',['../a00281.html#gaa57e96bb337867329d5f43bcc27c1095',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_c.html b/tests/OpenGL/package/glm/doc/api/search/typedefs_c.html deleted file mode 100644 index 0ff00dda..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_c.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_c.js b/tests/OpenGL/package/glm/doc/api/search/typedefs_c.js deleted file mode 100644 index ff80f0db..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_c.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['vec1',['vec1',['../a00270.html#gadfc071d934d8dae7955a1d530a3cf656',1,'glm']]], - ['vec2',['vec2',['../a00281.html#gabe65c061834f61b4f7cb6037b19006a4',1,'glm']]], - ['vec3',['vec3',['../a00281.html#ga9c3019b13faf179e4ad3626ea66df334',1,'glm']]], - ['vec4',['vec4',['../a00281.html#gac215a35481a6597d1bf622a382e9d6e2',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_d.html b/tests/OpenGL/package/glm/doc/api/search/typedefs_d.html deleted file mode 100644 index 61e1cda8..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_d.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/tests/OpenGL/package/glm/doc/api/search/typedefs_d.js b/tests/OpenGL/package/glm/doc/api/search/typedefs_d.js deleted file mode 100644 index 5e9c6bf4..00000000 --- a/tests/OpenGL/package/glm/doc/api/search/typedefs_d.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['word',['word',['../a00354.html#ga16e9fea0ef1e6c4ef472d3d1731c49a5',1,'glm']]] -]; diff --git a/tests/OpenGL/package/glm/doc/api/splitbar.png b/tests/OpenGL/package/glm/doc/api/splitbar.png deleted file mode 100644 index d5bc78b2..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/splitbar.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/sync_off.png b/tests/OpenGL/package/glm/doc/api/sync_off.png deleted file mode 100644 index 9402c109..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/sync_off.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/sync_on.png b/tests/OpenGL/package/glm/doc/api/sync_on.png deleted file mode 100644 index 85d97547..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/sync_on.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/tab_a.png b/tests/OpenGL/package/glm/doc/api/tab_a.png deleted file mode 100644 index cd087e7d..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/tab_a.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/tab_b.png b/tests/OpenGL/package/glm/doc/api/tab_b.png deleted file mode 100644 index e14114dc..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/tab_b.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/tab_h.png b/tests/OpenGL/package/glm/doc/api/tab_h.png deleted file mode 100644 index eddb3f2d..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/tab_h.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/tab_s.png b/tests/OpenGL/package/glm/doc/api/tab_s.png deleted file mode 100644 index 8d36eef7..00000000 Binary files a/tests/OpenGL/package/glm/doc/api/tab_s.png and /dev/null differ diff --git a/tests/OpenGL/package/glm/doc/api/tabs.css b/tests/OpenGL/package/glm/doc/api/tabs.css deleted file mode 100644 index 9cf578f2..00000000 --- a/tests/OpenGL/package/glm/doc/api/tabs.css +++ /dev/null @@ -1,60 +0,0 @@ -.tabs, .tabs2, .tabs3 { - background-image: url('tab_b.png'); - width: 100%; - z-index: 101; - font-size: 13px; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; -} - -.tabs2 { - font-size: 10px; -} -.tabs3 { - font-size: 9px; -} - -.tablist { - margin: 0; - padding: 0; - display: table; -} - -.tablist li { - float: left; - display: table-cell; - background-image: url('tab_b.png'); - line-height: 36px; - list-style: none; -} - -.tablist a { - display: block; - padding: 0 20px; - font-weight: bold; - background-image:url('tab_s.png'); - background-repeat:no-repeat; - background-position:right; - color: #283A5D; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; - outline: none; -} - -.tabs3 .tablist a { - padding: 0 10px; -} - -.tablist a:hover { - background-image: url('tab_h.png'); - background-repeat:repeat-x; - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); - text-decoration: none; -} - -.tablist li.current a { - background-image: url('tab_a.png'); - background-repeat:repeat-x; - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); -} diff --git a/tests/OpenGL/package/glm/doc/man.doxy b/tests/OpenGL/package/glm/doc/man.doxy deleted file mode 100644 index 8eab2f64..00000000 --- a/tests/OpenGL/package/glm/doc/man.doxy +++ /dev/null @@ -1,2415 +0,0 @@ -# Doxyfile 1.8.10 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = "0.9.9 API documentation" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = theme/logo-mini.png - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = . - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = "The $name class " \ - "The $name widget " \ - "The $name file " \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = NO - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = "C:/Documents and Settings/Groove/ " - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = YES - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = YES - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# If one adds a struct or class to a group and this option is enabled, then also -# any nested class or struct is added to the same group. By default this option -# is disabled and one has to add nested compounds explicitly via \ingroup. -# The default value is: NO. - -GROUP_NESTED_COMPOUNDS = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = NO - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = NO - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = YES - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = YES - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO, these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = YES - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = YES - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = YES - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = NO - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = NO - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = YES - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = YES - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = NO - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING -# Note: If this tag is empty the current directory is searched. - -INPUT = ../glm \ - . - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. -# -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, -# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, -# *.vhdl, *.ucf, *.qsf, *.as and *.js. - -FILE_PATTERNS = *.hpp \ - *.doxy - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = * - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = YES - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the -# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the -# cost of reduced performance. This can be particularly helpful with template -# rich C++ code for which doxygen's built-in parser lacks the necessary type -# information. -# Note: The availability of this option depends on whether or not doxygen was -# compiled with the --with-libclang option. -# The default value is: NO. - -CLANG_ASSISTED_PARSING = NO - -# If clang assisted parsing is enabled you can provide the compiler with command -# line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by doxygen for the files and directories -# specified with INPUT and INCLUDE_PATH. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_OPTIONS = - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = NO - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = NO - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the master .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://www.mathjax.org/mathjax - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /