Skip to content

cfnptr/math

Repository files navigation

Math

A library providing common linear algebra math operations.

See the documentation.

Features

  • Vector (float2/3/4, int2/3/4, half)
  • Matrix (float2x2/3x3/4x4)
  • Quaternion (float4)
  • SIMD optimized (f32x4, f32x4x4, f16x4)
  • Euler angles/radians conversion
  • Matrix translate, scale, rotate
  • Perspective, orthographic projection
  • Ray, line, plane, triangle, sphere...
  • Axis aligned bounding box (AABB)
  • Frustum culling, matrix extraction
  • Bounding volume hierarchy (BVH)
  • Color conversion (RGBA, linear)
  • Version (major, minor, patch, build)
  • Hexadecimal string conversion
  • Packed vector (1bit container)
  • Tone mapping, gamma correction
  • Image based lighting (IBL, BRDF)
  • Spherical harmonics (SH)
  • Enum class flags declaration
  • Simplified integer types (int64, uint32, int8...)
  • Supports Windows, macOS and Linux

Build requirements

Use building instructions to install all required tools and libraries.

CMake options

Name Description Default value
MATH_BUILD_SHARED Build Math shared library ON
MATH_BUILD_TESTS Build Math library tests ON

CMake targets

Name Description Windows macOS Linux
math-static Static Math library .lib .a .a
math-shared Dynamic Math library .dll .dylib .so

Cloning

git clone https://github.com/cfnptr/math

Building CI

  • Windows: ./scripts/build-release.bat
  • macOS / Linux: ./scripts/build-release.sh

Inspired by

Packages

 
 
 

Contributors

Languages