This is an add-on for debug drawing in 3D and for some 2D overlays, which is written in C++
and can be used with GDScript
or C#
.
Based on my previous addon, which was developed only for C#, and which was inspired by Zylann's GDScript addon
Your support adds motivation to develop my public projects.
USDT-TRC20 TEw934PrsffHsAn5M63SoHYRuZo984EF6v
3D:
- Arrow
- Billboard opaque square
- Box
- Camera Frustum
- Cylinder
- Gizmo
- Grid
- Line
- Line Path
- Line with Arrow
- Plane
- Points
- Position 3D (3 crossing axes)
- Sphere
2D:
- [Work in progress]
Overlay:
- Text (with grouping and coloring)
- FPS Graph
- Custom Graphs
Precompiled for:
- Windows
- Linux (built on Ubuntu 20.04)
- macOS (10.14+)
- Android (5.0+)
- Web (Firefox not supported)
Thanks to Nick Maltbie (nicholas-maltbie) (#24)
Warning
- Firefox most likely can't run this demo
To download, use the Godot Asset Library or download the archive by clicking the button at the top of the main repository page: Code -> Download ZIP
, then unzip it to your project folder. Or use one of the stable versions from the GitHub Releases page (just download one of the Source Codes
in assets).
- Close editor
- Copy
addons/debug_draw_3d
to youraddons
folder, create it if the folder doesn't exist - Launch editor
More examples can be found in the examples_dd3d/
folder.
Simple test:
func _process(delta: float) -> void:
var _time = Time.get_ticks_msec() / 1000.0
var box_pos = Vector3(0, sin(_time * 4), 0)
var line_begin = Vector3(-1, sin(_time * 4), 0)
var line_end = Vector3(1, cos(_time * 4), 0)
DebugDraw3D.draw_box(box_pos, Vector3(1, 2, 1), Color(0, 1, 0))
DebugDraw3D.draw_line(line_begin, line_end, Color(1, 1, 0))
DebugDraw2D.set_text("Time", _time)
DebugDraw2D.set_text("Frames drawn", Engine.get_frames_drawn())
DebugDraw2D.set_text("FPS", Engine.get_frames_per_second())
DebugDraw2D.set_text("delta", delta)
This project has a separate documentation page.
Also, a list of all functions is available in the documentation inside the editor (see DebugDraw3D
and DebugDraw2D
).
Enabling occlusion culing can lower fps instead of increasing it. At the moment I do not know how to speed up the calculation of the visibility of objects.
The text in the keys and values of a text group cannot contain multi-line strings.
The entire text overlay can only be placed in one corner, unlike DataGraphs
.
Frustum of Camera3D does not take into account the window size from ProjectSettings.
The version for Godot 4.0 requires explicitly specifying the exact data types, otherwise errors may occur.