This page documents the external libraries bundled under the thirdparty/ directory of the Godot Engine repository: their purposes, versions, licenses, and how they integrate into the engine. It does not cover Godot's own subsystems that consume these libraries; for that context, see the relevant system pages (e.g., Rendering System Text Shaping System Build System).
Godot bundles third-party libraries directly into the source tree rather than relying on system-provided packages. This ensures reproducible builds across all target platforms. Each library lives in its own subdirectory under thirdparty/, and the canonical inventory with upstream URLs, versions, and applied patches is maintained in thirdparty/README.md1-7
Licensing information for all bundled libraries is tracked in COPYRIGHT.txt1-37 using the Debian machine-readable copyright format.
Many libraries have Godot-specific patch files (.patch) stored alongside their source, applied to fix build issues or integrate the library more tightly with engine internals.
Each library occupies a named subdirectory. The naming convention matches the entries in thirdparty/README.md8-1130
thirdparty/
├── accesskit/
├── amd-fsr/
├── amd-fsr2/
├── angle/
├── astcenc/
├── basis_universal/
├── brotli/
├── certs/
├── clipper2/
├── cvtt/
├── d3d12ma/
├── directx_headers/
├── doctest/
├── dr_libs/
├── embree/
├── enet/
├── etcpak/
├── fonts/
├── freetype/
├── gamepadmotionhelpers/
├── glad/
├── glslang/
├── graphite/
├── grisu2/
├── harfbuzz/
├── icu4c/
├── jolt_physics/
├── libbacktrace/
├── libjpeg-turbo/
├── libktx/
├── libogg/
├── libpng/
├── libtheora/
├── libvorbis/
├── libwebp/
├── linuxbsd_headers/
├── manifold/
├── mbedtls/
├── meshoptimizer/
├── metal-cpp/
├── mingw-std-threads/
├── miniupnpc/
├── minizip/
├── misc/
├── msdfgen/
├── openxr/
├── pcre2/
├── re-spirv/
├── recastnavigation/
├── rvo2/
├── sdl/
├── smaa/
├── spirv-cross/
├── spirv-headers/
├── spirv-reflect/
├── swappy-frame-pacing/
├── thorvg/
├── tinyexr/
├── ufbx/
├── vhacd/
├── volk/
├── vulkan/
├── wayland/
├── wayland-protocols/
├── wslay/
├── xatlas/
├── zlib/
└── zstd/
Sources: thirdparty/README.md1-1130 COPYRIGHT.txt1-50
| Directory | Library | Version | License | Purpose |
|---|---|---|---|---|
amd-fsr | AMD FidelityFX Super Resolution 1 | 1.0.2 | MIT | Spatial upscaling (ffx_a.h, ffx_fsr1.h) thirdparty/README.md20-30 |
amd-fsr2 | AMD FidelityFX Super Resolution 2 | 2.2.1 | MIT | Temporal upscaling pipeline thirdparty/README.md32-48 |
angle | ANGLE | chromium/5907 | BSD-3-Clause | GLES header stubs thirdparty/README.md50-60 |
d3d12ma | D3D12 Memory Allocator | 3.1.0 | MIT | GPU memory allocation for Direct3D 12 thirdparty/README.md153-168 |
directx_headers | DirectX Headers | main | MIT | D3D12 API headers thirdparty/README.md170-185 |
glad | glad | 2.0.4 | CC0 1.0 + Apache 2.0 | OpenGL/EGL/GLX function loader |
glslang | glslang | vulkan-sdk-1.4.335.0 | glslang | GLSL→SPIR-V compiler |
metal-cpp | metal-cpp | 26.0 | Apache 2.0 | C++ bindings for Apple Metal |
re-spirv | re-spirv | git | MIT | SPIR-V specialization constant optimizer |
smaa | SMAA | git (2013) | MIT | Anti-aliasing lookup textures |
spirv-cross | SPIRV-Cross | git | Apache 2.0 | SPIR-V → GLSL/MSL cross-compiler |
spirv-headers | SPIRV-Headers | vulkan-sdk-1.4.335.0 | MIT | SPIR-V opcode/type definitions |
spirv-reflect | SPIRV-Reflect | vulkan-sdk-1.4.335.0 | Apache 2.0 | SPIR-V shader reflection |
volk | volk | vulkan-sdk-1.4.335.0 | MIT | Vulkan function pointer loader |
vulkan | Vulkan Headers + VMA | vulkan-sdk-1.4.335.0 | Apache 2.0 | Vulkan API headers |
Sources: thirdparty/README.md20-185 COPYRIGHT.txt153-178
| Directory | Library | Version | License | Purpose |
|---|---|---|---|---|
astcenc | Arm ASTC Encoder | 5.3.0 | Apache 2.0 | ASTC texture encode/decode thirdparty/README.md62-72 |
basis_universal | Basis Universal | git | Apache 2.0 | Supercompressed texture transcoding thirdparty/README.md74-94 |
cvtt | Convection Kernels | git | MIT | BC1–BC7 compression thirdparty/README.md137-151 |
libpng | libpng | 1.6.54 | libpng/zlib | PNG encode/decode |
tinyexr | TinyEXR | git | BSD-3-Clause | OpenEXR image load/save thirdparty/tinyexr/tinyexr.h1-28 |
ufbx | ufbx | 0.23.1 | MIT | FBX file parsing thirdparty/ufbx/ufbx.c1-8 |
thorvg | ThorVG | 1.0.3 | MIT | Vector graphics (SVG) rendering |
Sources: thirdparty/README.md62-151 thirdparty/tinyexr/tinyexr.h1-66 thirdparty/ufbx/ufbx.c1-100
| Directory | Library | Version | License | Purpose |
|---|---|---|---|---|
certs | Mozilla CA bundle | git | MPL 2.0 | TLS root certificate trust store thirdparty/README.md109-118 |
enet | ENet | 1.3.18 | MIT | Reliable UDP networking thirdparty/README.md243-250 |
mbedtls | Mbed TLS | 3.6.5 | Apache 2.0 | TLS/SSL, cryptography |
Sources: thirdparty/README.md109-250
| Directory | Library | Version | License | Purpose |
|---|---|---|---|---|
doctest | doctest | 2.4.12 | MIT | Unit test framework thirdparty/README.md188-201 |
meshoptimizer | meshoptimizer | 1.2 | MIT | Mesh compression and simplification thirdparty/meshoptimizer/meshoptimizer.h1-8 |
Sources: thirdparty/README.md188-201 thirdparty/meshoptimizer/meshoptimizer.h1-15
Some libraries are used directly by the engine's resource loaders or scene processing logic via wrapper classes.
Diagram: ufbx usage in FBXDocument
Details:
FBXDocument uses ufbx to parse FBX files modules/fbx/fbx_document.cpp61-62_file_access_read_fn and _file_access_skip_fn to ufbx to leverage Godot's FileAccess modules/fbx/fbx_document.cpp63-72ufbx structures (e.g., ufbx_vec3, ufbx_quat, ufbx_transform) to Godot types like Vector3, Quaternion, and Transform3D modules/fbx/fbx_document.cpp74-91Sources: modules/fbx/fbx_document.cpp61-91 thirdparty/ufbx/ufbx.c1-100
Godot utilizes specialized libraries for high-dynamic-range image formats like OpenEXR.
Diagram: TinyEXR Integration in Godot
Details:
TinyEXR is used within modules/tinyexr/image_loader_tinyexr.cpp to provide support for OpenEXR files modules/tinyexr/image_loader_tinyexr.cpp31-38ImageLoaderTinyEXR::load_image parses the EXR version and header from memory before loading the image data modules/tinyexr/image_loader_tinyexr.cpp54-73Image::Format (e.g., FORMAT_RGBAH, FORMAT_RGBF) modules/tinyexr/image_loader_tinyexr.cpp94-142Sources: thirdparty/tinyexr/tinyexr.h1-100 modules/tinyexr/image_loader_tinyexr.cpp39-142
Godot integrates meshoptimizer to provide mesh simplification and vertex cache optimization.
Diagram: Mesh Simplification Pipeline
Details:
meshoptimizer provides utilities for vertex remapping and mesh simplification thirdparty/meshoptimizer/meshoptimizer.h53-104simplifier.cpp implementation uses quadric error metrics for surface simplification thirdparty/meshoptimizer/simplifier.cpp23-31PositionHasher to identify binary equivalent vertices for remapping thirdparty/meshoptimizer/simplifier.cpp111-148Sources: thirdparty/meshoptimizer/meshoptimizer.h1-128 thirdparty/meshoptimizer/simplifier.cpp23-241 thirdparty/meshoptimizer/vertexcodec.cpp7-120 thirdparty/meshoptimizer/vertexfilter.cpp7-60
Many libraries carry .patch files to ensure they work correctly within the Godot ecosystem.
| Patch Purpose | Example Libraries |
|---|---|
| Disable exceptions | clipper2, embree thirdparty/README.md133-232 |
| External zlib/zstd redirection | basis_universal thirdparty/README.md88-89 |
| Build and Mingw support | amd-fsr2, d3d12ma, directx_headers thirdparty/README.md46-184 |
Sources: thirdparty/README.md44-238
Refresh this wiki
This wiki was recently refreshed. Please wait 3 days to refresh again.