List of features¶
This page aims to list all features currently supported by Godot.
This page lists features supported by the current development version of Godot (4.0.alpha). Some of these features may not be available in the current stable release series (3.x).
Can run both the editor and exported projects:
Windows 7 and later (64-bit and 32-bit).
macOS 10.12 and later (64-bit, x86 and ARM).
Linux (64-bit, x86 and ARM).
Binaries are statically linked and can run on any distribution if compiled on an old enough base distribution.
Official binaries are compiled on Ubuntu 14.04.
32-bit binaries can be compiled from source.
Runs exported projects:
Android 4.4 and later.
iOS 10.0 and later.
Godot aims to be as platform-independent as possible and can be ported to new platforms with relative ease.
Scene tree editor.
Built-in script editor.
Support for external script editors such as Visual Studio Code or Vim.
No support for debugging in threads yet.
Visual profiler with CPU and GPU time indications for each step of the rendering pipeline.
Performance monitoring tools.
Live script reloading.
Live scene editing.
Changes will reflect in the editor and will be kept after closing the running project.
Changes won't reflect in the editor and won't be kept after closing the running project.
Live camera replication.
Move the in-editor camera and see the result in the running project.
Built-in offline class reference documentation.
Use the editor in dozens of languages contributed by the community.
Sprite, polygon and line rendering.
High-level tools to draw lines and polygons such as Polygon2D and Line2D.
AnimatedSprite2D as a helper for creating animated sprites.
Pseudo-3D support including preview in the editor.
2D lighting with normal maps and specular maps.
Point (omni/spot) and directional 2D lights.
Hard or soft shadows (adjustable on a per-light basis).
Custom shaders can access a real-time SDF representation of the 2D scene, which can be used for improved 2D lighting effects including 2D global illumination.
Font rendering using bitmaps, rasterization using FreeType or multi-channel signed distance fields (MSDF).
Bitmap fonts can be exported using tools like BMFont.
Dynamic fonts support monochrome fonts as well as colored fonts (e.g. for emoji). Supported formats are TTF, OTF, WOFF1 and WOFF2.
Dynamic fonts support optional font outlines with adjustable width and color.
Dynamic fonts support variable fonts and OpenType features including ligatures.
Dynamic fonts support simulated bold and italic when the font file lacks those styles.
Dynamic fonts support oversampling to keep fonts sharp at higher resolutions.
Dynamic fonts support subpixel positioning to make fonts crisper at low sizes.
Signed distance field fonts can be scaled at any resolution without requiring re-rasterization. Multi-channel usage makes SDF fonts scale down to lower sizes better compared to monochrome SDF fonts.
GPU-based particles with support for custom particle shaders.
2D camera with built-in smoothing and drag margins.
Path2D node to represent a path in 2D space.
Can be drawn in the editor or generated procedurally.
PathFollow2D node to make nodes follow a Path2D.
2D geometry helper class.
Line2D node to draw textured 2D lines.
Areas to detect bodies entering or leaving it.
Built-in shapes: line, box, circle, capsule.
Collision polygons (can be drawn manually or generated from a sprite in the editor).
Vulkan renderer compatible with desktop and mobile platforms. Requires full support for Vulkan 1.0, with Vulkan 1.1 and 1.2 features optionally used.
HDR rendering with sRGB.
Perspective, orthographic and frustum-offset cameras.
When using the Vulkan Clustered backend (default on desktop), a depth prepass is used to improve performance in complex scenes by reducing the cost of overdraw.
Support for rendering 3D at a lower resolution while keeping 2D rendering at the original scale. This can be used to improve performance on low-end systems or improve visuals on high-end systems.
3D rendering can be scaled with bilinear filtering or AMD FidelityFX Super Resolution 1.0.
If you need OpenGL support, use Godot 3.x which remains supported.
Physically-based rendering (built-in material features):
Follows the Disney PBR model.
Supports Lambert, Lambert Wrap (half-Lambert) and Toon diffuse shading modes.
Supports Schlick-GGX, Toon and Disabled specular shading modes.
Uses a roughness-metallic workflow with support for ORM textures.
Uses horizon specular occlusion (Filament model) to improve material appearance.
Parallax/relief mapping with automatic level of detail based on distance.
Detail mapping for the albedo and normal maps.
Sub-surface scattering and transmittance.
Refraction with support for material roughness (resulting in blurry refraction).
Proximity fade (soft particles) and distance fade.
Distance fade can use alpha blending or dithering to avoid going through the transparent pipeline.
Dithering can be determined on a per-pixel or per-object basis.
Directional lights (sun/moon). Up to 4 per scene.
Spot lights with adjustable cone angle and attenuation.
Specular energy can be adjusted on a per-light basis.
Adjustable light "size" for fake area lights (will also make shadows blurrier).
Optional distance fade system to fade distant lights and their shadows, improving performance.
When using the Vulkan Clustered backend (default on desktop), lights are rendered with clustered forward optimizations to decrease their individual cost. Clustered rendering also lifts any limits on the number of lights that can be used on a mesh.
When using the Vulkan Mobile backend, up to 8 omni lights and 8 spot lights can be displayed per mesh resource. Baked lighting can be used to overcome this limit if needed.
DirectionalLight: Orthogonal (fastest), PSSM 2-split and 4-split. Supports blending between splits.
OmniLight: Dual paraboloid (fast) or cubemap (slower but more accurate). Supports colored projector textures in the form of panoramas.
SpotLight: Single texture. Supports colored projector textures.
Shadow normal offset bias and shadow pancaking to decrease the amount of visible shadow acne and peter-panning.
PCSS-like shadow blur based on the light size and distance from the surface the shadow is cast on.
Adjustable shadow blur on a per-light basis.
Global illumination with indirect lighting:
Baked lightmaps (fast, but can't be updated at run-time).
Supports baking indirect light only or baking both direct and indirect lighting. The bake mode can be adjusted on a per-light basis to allow for hybrid light baking setups.
Supports lighting dynamic objects using automatic and manually placed probes.
Optionally supports directional lighting and rough reflections based on spherical harmonics.
Lightmaps are baked on the GPU using compute shaders (much faster compared to CPU lightmapping). Baking can only be performed from the editor, not in exported projects.
Voxel-based GI probes. Supports dynamic lights and dynamic occluders, while also supporting reflections. Requires a fast baking step which can be performed in the editor or at run-time (including from an exported project).
Signed-distance field GI designed for large open worlds. Supports dynamic lights, but not dynamic occluders. Supports reflections. No baking required.
Screen-space indirect lighting (SSIL) at half or full resolution. Fully real-time and supports any kind of emissive light source (including decals).
VoxelGI and SDFGI use a deferred pass to allow for rendering GI at half resolution to improve performance (while still having working MSAA support).
Voxel-based reflections (when using GI probes) and SDF-based reflections (when using signed distance field GI).
Fast baked reflections or slow real-time reflections using ReflectionProbe. Parallax box correction can optionally be enabled.
Screen-space reflections with support for material roughness.
Reflection techniques can be mixed together for greater accuracy or scalability.
When using the Vulkan Clustered backend (default on desktop), reflection probes are rendered with clustered forward optimizations to decrease their individual cost. Clustered rendering also lifts any limits on the number of reflection probes that can be used on a mesh.
When using the Vulkan Mobile backend, up to 8 reflection probes can be displayed per mesh resource.
Supports albedo, emissive, ORM and normal mapping.
Texture channels are smoothly overlaid on top of the underlying material, with support for normal/ORM-only decals.
Support for normal fade to fade the decal depending on its incidence angle.
Does not rely on run-time mesh generation. This means decals can be used on complex skinned meshes with no performance penalty, even if the decal moves every frame.
Support for nearest, bilinear, trilinear or anisotropic texture filtering (configured globally).
Optional distance fade system to fade distant lights and their shadows, improving performance.
When using the Vulkan Clustered backend (default on desktop), decals are rendered with clustered forward optimizations to decrease their individual cost. Clustered rendering also lifts any limits on the number of decals that can be used on a mesh.
When using the Vulkan Mobile backend, up to 8 decals can be displayed per mesh resource.
Panorama sky (using an HDRI).
Procedural sky and Physically-based sky that respond to the DirectionalLights in the scene.
Support for custom sky shaders, which can be animated.
The radiance map used for ambient and specular light can be updated in real-time depending on the quality settings chosen.
Exponential depth fog.
Exponential height fog.
Support for automatic fog color depending on the sky color (aerial perspective).
Support for sun scattering in the fog.
Global volumetric fog that reacts to lights and shadows.
Volumetric fog can take indirect light into account when using VoxelGI or SDFGI.
Fog volume nodes that can be placed to add fog to specific areas (or remove fog from specific areas).
Each fog volume can have its own custom shader.
Can be used together with traditional fog.
GPU-based particles with support for subemitters (2D + 3D), trails (2D + 3D), attractors (3D only) and collision (3D only).
Particle attractor shapes supported: box, sphere and 3D vector fields.
Particle collision shapes supported: box, sphere, baked signed distance field and real-time heightmap (suited for open world weather effects).
Trails can use the built-in ribbon trail and tube trail meshes, or custom meshes with skeletons.
Support for custom particle shaders with manual emission.
Tonemapping (Linear, Reinhard, Filmic, ACES).
Automatic exposure adjustments based on viewport brightness (and manual exposure override).
Near and far depth of field with adjustable bokeh simulation (box, hexagon, circle).
Screen-space ambient occlusion (SSAO) at half or full resolution.
Glow/bloom with optional bicubic upscaling and several blend modes available: Screen, Soft Light, Add, Replace, Mix.
Glow can have a colored dirt map texture, acting as a lens dirt effect.
Color correction using a one-dimensional ramp or a 3D LUT texture.
Roughness limiter to reduce the impact of specular aliasing.
Brightness, contrast and saturation adjustments.
Nearest, bilinear, trilinear or anisotropic filtering.
Filtering options are defined on a per-use basis, not a per-texture basis.
Basis Universal (slow, but results in smaller files).
BPTC for high-quality compression (not supported on macOS).
ETC2 (not supported on macOS).
S3TC (not supported on mobile/Web platforms).
Fast approximate antialiasing (FXAA).
Multi-sample antialiasing (MSAA).
Super-sample antialiasing (SSAA) using bilinear 3D scaling and a 3D resolution scale above 1.0.
Alpha antialiasing, alpha to coverage and alpha hashing on a per-material basis.
Most of these effects can be adjusted for better performance or to further improve quality. This can be helpful when using Godot for offline rendering.
Built-in meshes: cube, cylinder/cone, (hemi)sphere, prism, plane, quad, ribbon, tube.
Tools for procedural geometry generation.
Constructive solid geometry (intended for prototyping).
Path3D node to represent a path in 3D space.
Can be drawn in the editor or generated procedurally.
PathFollow3D node to make nodes follow a Path3D.
3D geometry helper class.
Support for exporting the current scene as a glTF 2.0 file, both from the editor and at run-time from an exported project.
Vehicle bodies (intended for arcade physics, not simulation).
Areas to detect bodies entering or leaving it.
Built-in shapes: cuboid, sphere, capsule, cylinder.
Generate triangle collision shapes for any mesh from the editor.
Generate one or several convex collision shapes for any mesh from the editor.
2D: Custom vertex, fragment, and light shaders.
3D: Custom vertex, fragment, light, and sky shaders.
Text-based shaders using a shader language inspired by GLSL.
Visual shader editor.
Support for visual shader plugins.
Object-oriented design pattern with scripts extending nodes.
Signals and groups for communicating between scripts.
Support for cross-language scripting.
Many 2D and 3D linear algebra data types such as vectors and transforms.
Syntax inspired by Python. However, GDScript is not based on Python.
Syntax highlighting is provided on GitHub.
Use threads to perform asynchronous actions or make use of multiple processor cores.
Packaged in a separate binary to keep file sizes and dependencies down.
Uses Mono 6.x.
Full support for the C# 8.0 syntax and features.
Supports all platforms.
Using an external editor is recommended to benefit from IDE functionality.
GDNative (C, C++, Rust, D, ...):
When you need it, link to native libraries for higher performance and third-party integrations.
For scripting game logic, GDScript or C# are recommended if their performance is suitable.
Official bindings for C and C++.
Use any build system and language features you wish.
Maintained D, Kotlin, Python, Nim, and Rust bindings provided by the community.
Mono, stereo, 5.1 and 7.1 output.
Non-positional and positional playback in 2D and 3D.
Optional Doppler effect in 2D and 3D.
Support for re-routable audio buses and effects with dozens of effects included.
Support for polyphony (playing several sounds from a single AudioStreamPlayer node).
Support for real-time pitch scaling and random pitch.
Support for sequential/random sample selection, including repetition prevention when using random sample selection.
Listener2D and Listener3D nodes to listen from a position different than the camera.
Audio input to record microphones.
No support for MIDI output yet.
Linux: PulseAudio or ALSA.
Support for custom import plugins.
Images: See Importing images.
WAV with optional IMA-ADPCM compression.
glTF 2.0 (recommended).
ESCN (direct export from Blender).
FBX (static meshes only).
Wavefront OBJ (static scenes only, can be loaded directly as a mesh).
Support for loading glTF 2.0 scenes at run-time, including from an exported project.
3D meshes use Mikktspace to generate tangents on import, which ensures consistency with other 3D applications such as Blender.
Input mapping system using hardcoded input events or remappable input actions.
Axis values can be mapped to two different actions with a configurable deadzone.
Use the same code to support both keyboards and gamepads.
Keys can be mapped in "physical" mode to be independent of the keyboard layout.
The mouse cursor can be visible, hidden, captured or confined within the window.
When captured, raw input will be used on Windows and Linux to sidestep the OS' mouse acceleration settings.
Gamepad input (up to 8 simultaneous controllers).
Pen/tablet input with pressure support.
Low-level TCP networking using StreamPeer and TCP_Server.
Low-level UDP networking using PacketPeer and UDPServer.
Low-level HTTP requests using HTTPClient.
High-level HTTP requests using HTTPRequest.
Supports HTTPS out of the box using bundled certificates.
High-level multiplayer API using UDP and ENet.
Automatic replication using remote procedure calls (RPCs).
Supports unreliable, reliable and ordered transfers.
WebSocket client and server, available on all platforms.
WebRTC client and server, available on all platforms.
Support for UPnP to sidestep the requirement to forward ports when hosting a server behind a NAT.
Full support for Unicode including emoji.
Support for generating gettext POT and PO files from the editor.
Use localized strings in your project automatically in GUI elements or by using the
Support for pluralization and translation contexts when using gettext translations.
Support for bidirectional typesetting, text shaping and OpenType localized forms.
Automatic UI mirroring for right-to-left locales.
Support for pseudolocalization to test your project for i18n-friendliness.
Windowing and OS integration¶
Move, resize, minimize, and maximize windows spawned by the project.
Change the window title and icon.
Request attention (will cause the title bar to blink on most platforms).
Doesn't use exclusive fullscreen, which allows for fast alt-tabbing. The downside is that the screen resolution can't be changed this way. For 3D resolution scaling, use the appropriate project settings or the equivalent Viewport property. For 2D resolution scaling, use a second Viewport node to render the game world with a different size.
Borderless windows (fullscreen or non-fullscreen).
Ability to keep a window always on top.
Global menu integration on macOS.
Execute commands in a blocking or non-blocking manner.
Open file paths and URLs using default or custom protocol handlers (if registered on the system).
Parse custom command line arguments.
Any Godot binary (editor or exported project) can be used as a headless server by starting it with the
--headlesscommand line argument. This allows running the engine without a GPU or display server.
In-app purchases on Android and iOS.
Support for advertisements using third-party modules.
XR support (AR and VR)¶
Out of the box support for OpenXR.
Including support for popular headsets like the Meta Quest and the Valve Index.
Support for ARKit on iOS out of the box.
Support for the OpenVR APIs.
Godot's GUI is built using the same Control nodes used to make games in Godot. The editor UI can easily be extended in many ways using add-ons.
Checkboxes, check buttons, radio buttons.
Text entry using LineEdit (single line) and TextEdit (multiple lines).
Dropdown menus using PopupMenu and OptionButton.
RichTextLabel for text formatted using BBCode.
Trees (can also be used to represent tables).
Color picker with RGB and HSV modes.
Containers (horizontal, vertical, grid, flow, center, margin, aspect ratio, draggable splitter, ...).
Controls can be rotated and scaled.
Anchors to keep GUI elements in a specific corner, edge or centered.
Containers to place GUI elements automatically following certain rules.
Scale to multiple resolutions using the
Support any aspect ratio using anchors and the
Built-in theme editor.
Generate a theme based on the current editor theme settings.
Procedural vector-based theming using StyleBoxFlat.
Supports rounded/beveled corners, drop shadows, per-border widths and antialiasing.
Texture-based theming using StyleBoxTexture.
Godot's small distribution size can make it a suitable alternative to frameworks like Electron or Qt.
Direct kinematics and inverse kinematics.
Support for animating any property with customizable interpolation.
Support for calling methods in animation tracks.
Support for playing sounds in animation tracks.
Support for Bézier curves in animation.
Scenes and resources can be saved in text-based or binary formats.
Text-based formats are human-readable and more friendly to version control.
Binary formats are faster to save/load for large scenes/resources.
Read and write text or binary files using File.
Can optionally be compressed or encrypted.
Read and write JSON files.
Read and write INI-style configuration files using ConfigFile.
Can (de)serialize any Godot datatype, including Vector2/3, Color, ...
Read XML files using XMLParser.
Pack game data into a PCK file (custom format optimized for fast seeking), into a ZIP archive, or directly into the executable for single-file distribution.
Export additional PCK files that can be read by the engine to support mods and DLCs.
Low-level access to servers which allows bypassing the scene tree's overhead when needed.
Command line interface for automation.
Export and deploy projects using continuous integration platforms.
Shell completion scripts are available for Bash, zsh and fish.
Support for C++ modules statically linked into the engine binary.
Engine and editor written in C++17.
Can be compiled using GCC, Clang and MSVC. MinGW is also supported.
Friendly towards packagers. In most cases, system libraries can be used instead of the ones provided by Godot. The build system doesn't download anything. Builds can be fully reproducible.
Licensed under the permissive MIT license.
Open development process with contributions welcome.
The Godot proposals repository lists features that have been requested by the community and may be implemented in future Godot releases.