godotengine/godot
Dependencies
Every external library Godot uses is vendored under thirdparty/. There are no git submodules and no system-library dependencies (except for the OS itself and the platform's compiler/SDK). This keeps the build hermetic and reproducible.
Vendored libraries
| Directory | Library | Used for |
|---|---|---|
accesskit/ |
AccessKit | Cross-platform accessibility tree |
amd-fsr/, amd-fsr2/ |
AMD FSR 1 + FSR 2 | Spatial + temporal upscaling for the renderer |
angle/ |
Google ANGLE | OpenGL ES → D3D translation on Windows (compatibility renderer) |
astcenc/ |
ARM ASTC encoder | High-quality ASTC compression |
basis_universal/ |
Binomial Basis Universal | Universal GPU texture compression |
brotli/ |
Brotli | Compression for .tres and asset packs |
certs/ |
CA root certs | TLS trust store for mbedtls-backed connections |
clipper2/ |
Clipper2 | Polygon boolean ops (used by 2D navigation polygon ops, CSG-2D) |
cvtt/ |
Microsoft Convection Texture Tools | High-quality BC1/BC3/BC7 compressor |
d3d12ma/ |
D3D12 Memory Allocator | GPU memory allocation for the D3D12 driver |
directx_headers/ |
Microsoft DirectX-Headers | DXIL / D3D12 headers for non-Windows compiles |
doctest/ |
doctest | Unit test framework |
dr_libs/ |
dr_wav, dr_mp3 | WAV / MP3 single-file decoders |
embree/ |
Intel Embree | CPU ray tracing — used by the lightmap baker and nav baking |
enet/ |
ENet | Reliable + unreliable UDP transport |
etcpak/ |
etcpak | ETC1/ETC2/EAC compressors |
fonts/ |
DroidSans, JetBrainsMono, NotoSans, OpenMoji, Hack | Editor + sample fonts |
freetype/ |
FreeType | Font glyph rasterization |
gamepadmotionhelpers/ |
Gamepad Motion Helpers | Sensor fusion for gamepads with gyros |
glad/ |
glad | OpenGL function loader |
glslang/ |
Khronos glslang | GLSL → SPIR-V compilation |
graphite/ |
SIL Graphite (optional in text_server_adv) | Complex script shaping fallback |
grisu2/ |
Grisu2 | Float-to-string formatting |
harfbuzz/ |
HarfBuzz | Text shaping (text_server_adv) |
icu4c/ |
ICU4C | Unicode data, BiDi, line breaking, normalization |
jolt_physics/ |
Jolt Physics | Recommended 3D physics backend |
libbacktrace/ |
libbacktrace | Stack-trace symbolication on Linux |
libjpeg-turbo/ |
libjpeg-turbo | JPEG decode |
libktx/ |
KTX-Software | Khronos texture format |
libogg/, libvorbis/, libtheora/ |
Xiph libs | Ogg container, Vorbis audio, Theora video |
libpng/ |
libpng | PNG decode/encode |
libwebp/ |
libwebp | WebP decode/encode |
linuxbsd_headers/ |
minimal X11/Wayland headers | Build-time stand-ins so distros without -dev packages compile |
manifold/ |
Manifold | Boolean mesh ops (CSG3D) |
mbedtls/ |
Mbed TLS | TLS / crypto |
meshoptimizer/ |
meshoptimizer | Vertex/index optimization, LOD generation |
metal-cpp/ |
Apple metal-cpp | C++ wrapper around Metal (used by the Metal driver on non-mm files) |
mingw-std-threads/ |
mingw-std-threads | C++ thread shim for MinGW where MS STL threads are missing |
miniupnpc/ |
miniupnpc | UPnP NAT traversal (modules/upnp) |
minizip/ |
minizip-ng | Zip archive read/write (modules/zip + PCK) |
misc/ |
small one-file libs (fnmatch, polypartition, mikktspace, base85, kissfft, …) | Various utilities |
msdfgen/ |
Chlumsky/msdfgen + msdf-atlas-gen | MSDF font atlas generation |
openxr/ |
Khronos OpenXR SDK | OpenXR loader + headers |
pcre2/ |
PCRE2 | Regex (modules/regex) |
re-spirv/ |
re-spirv | SPIR-V reflection |
recastnavigation/ |
Recast & Detour | Navmesh baking + crowd / RVO |
rvo2/ |
RVO2 | Local avoidance (used by navigation) |
sdl/ |
SDL3 | Cross-platform joypad / haptics |
smaa/ |
SMAA | Anti-aliasing |
spirv-cross/, spirv-headers/, spirv-reflect/ |
Khronos SPIR-V tooling | Cross-compile SPIR-V to MSL/HLSL/GLSL; reflection |
swappy-frame-pacing/ |
Google Swappy | Android frame pacing |
thorvg/ |
thorvg | SVG rasterization (modules/svg) |
tinyexr/ |
tinyexr | OpenEXR HDR decode |
ufbx/ |
ufbx | FBX parser used by modules/fbx |
vhacd/ |
V-HACD | Convex decomposition |
volk/ |
volk | Vulkan function loader |
vulkan/ |
Vulkan-Loader, Vulkan-Headers, VMA | Vulkan ICD loader, headers, and the Vulkan Memory Allocator |
wayland/, wayland-protocols/ |
Wayland headers | Linux Wayland display server |
wslay/ |
wslay | WebSocket protocol |
xatlas/ |
xatlas | UV atlas generation (lightmap baking) |
zlib/, zstd/ |
zlib, zstd | Compression |
Dependency policy
The vendoring policy (documented in the Code style guidelines and the contributors' guide) is:
- Vendor only what's necessary; prefer minimal patch sets so updates remain straightforward.
- Patches against upstream are kept under the library directory in
patches/(where applicable) so they can be re-applied when the library is bumped. - License-compatible: every vendored library uses an MIT-, BSD-, Apache-, or Zlib-style license; copyleft libraries are not vendored.
- Versioned via the upstream tag/commit that was synced; the directory's README typically records the version.
COPYRIGHT.txt at the repo root lists every vendored library with its license text.
Updating a dependency
Typical workflow:
- Identify the upstream commit/tag to sync.
git diffthe existing vendored copy against upstream to enumerate Godot patches.- Replace the directory with the new version.
- Re-apply patches (often kept in the
patches/subdir). - Re-run the test suite + a representative project.
- Update
COPYRIGHT.txtand the directory README with the new version.
A submodule-free repo means there's no git submodule update step — every change is a normal commit.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.