Skip to content

Third Party Libraries

External Dependencies

Here is a list of third party libraries used in Lagrange. Those external dependencies will be automatically downloaded by our CMake system depending on which Lagrange module is enabled.

Direct vs Indirect Dependencies

This table only lists direct dependencies of various Lagrange modules. Indirect dependencies are not listed there.

Library Name License Used By
Assimp1 BSD-3 IO
Boost2 Boost FS
CLI11 BSD-3 Examples3, Performance Tests (Core)
Catch2 Boost Testing
Dear ImGui MIT UI
Eigen MPL2 Core, UI
Embree Apache 2 Raycasting
EnTT MIT UI
Filesystem4 MIT FS
GLFW MIT UI
Happly MIT IO
ImGuizmo MIT UI
JSON for Modern C++ MIT Examples (Winding), UI
Libigl MPL2 BVH, IO
METIS Apache 2 Partitioning
MikkTSpace zlib Unit Tests (Core)
MshIO Apache 2 IO
Nanobind BSD-3 Python
OpenSubdiv Apache 2 Subdivision
OpenVDB MPL2 Volume
Portable File Dialogs WTFPL (public domain) UI
StackWalker BSD-2 Testing
Threading Building Blocks Apache 2 Core
Tracy5 BSD-3 Core
WindingNumber MIT Unit Tests (Winding), Winding
gl3w MIT UI
imgui fonts MIT UI
nanoflann BSD-2 BVH, UI
span-lite Boost Core
spdlog MIT Core
stb Public domain UI, Unit Tests (IO)
tinygltf MIT IO
tinyobjloader MIT IO

Bundled Dependencies

Lagrange integrates some third-party code directly into its codebase. Those files have usually been modified to work with Eigen, and their functions wrapped into the lagrange namespace. This table summarize the list of third-party code that is directly bundled into Lagrange, as well as the appropriate licenses and files that are affected.

Library Name License Used By Files
Boost.Functional/Hash Boost Core hash.h
Christer Ericson, Real-Time Collision Detection Software License Agreement Core segment_segment_squared_distance.h
CMake Scripts Apache 2 CMake Build System sanitizers.cmake, code-coverage.cmake
CPM MIT CMake Build System CPM.cmake
e-maxx.ru Public domain Core remove_duplicate_facets.cpp
Earcut ISC Core earcut.h
Embree Apache 2 Raycasting embree_closest_point.h
Floating-point exception handling example Public domain Core fpe.cpp
function_ref CC0 Core function_ref.h
Geogram BSD-3 Core point_triangle_squared_distance.h, point_segment_squared_distance.h
ImGui Progress Indicators MIT UI progress.h, progress.cpp
Libigl MPL-2.0 Core bfs_orient.h, doublearea.h, orientable_patches.h, unique_rows.h, vertex_components.h
scope_guard Public domain Core scope_guard.h
Shewchuk's predicates Public domain Core predicates.cpp
small_vector Unlicense Core SmallVector.h
smart_ptr MIT Core control_block.h, default_delete.h, ptr.h, shared_ptr.h, weak_ptr.h
valuable MIT Core value_ptr.h

  1. Assimp is an optional dependency of the IO module. 

  2. Boost::filesystem is an optional backend of the FS module. 

  3. CLI11 is used by the examples in the following modules: BVH, Core, IO, Partitioning, Raycasting, Subdivision, UI, Volume, Winding 

  4. gulrak/filesystem is only needed when the IO module is compiled in C++14 mode. In C++17 mode, the IO module will defaults to std::filesystem

  5. Tracy is an optional dependency of the core module.