Skip to content

Releases: DmitriySalnikov/godot_debug_draw_3d

[4.4.1+] 1.7.2

15 Mar 09:20
fdb9417

Choose a tag to compare

There were no functional changes.

Windows Defender

Thanks to #98, it was discovered that the previous two releases were being flagged by antiviruses as Malicious/Trojan/Gen:Variant.Lazy. Version 1.7.0 was not flagged by Windows Defender, but the 1.7.1 archive was flagged as the Trojan Trojan:Win32/Suschil!rfn. Because of this, it was impossible to download the previous version via a browser or even through the Asset Library in the Godot editor.

And just yesterday, for some reason, Windows Defender no longer detects viruses when scanning the archive. It can be downloaded and used again, even though on March 6, Microsoft Support had already stated that they would not be removing the virus warning from this archive.

But anyway, if I leave everything as it was, antivirus programs would still detect some kind of threat from the old libraries, so in an attempt to solve the problem, I came to the conclusion that I needed to switch the Windows compiler from MSVC to MinGW + LLVM. At this point, I haven’t detected any further threats with different build settings; the Native API works flawlessly with all demo scenes, and it’s even possible to combine MinGW DD3D with a library linked via the Native API that was built using MSVC.

It's possible that switching to a different compiler might even improve performance:

image

Changes

  • On Windows, the compiler has been replaced with MinGW + LLVM instead of MSVC (as in Godot) #103
  • Added automatic uploading of new builds to VirusTotal.
  • Added ~*.TMP to .gitignore in the libraries folder. #100

Full Changelog: 1.7.1...1.7.2

🛡 VirusTotal GitHub Action analysis:

[4.4.1+] 1.7.1

08 Feb 07:34

Choose a tag to compare

Native API Fix

The native API in 1.7.0 was released with a bug that caused crashes when calling draw_box and draw_capsule from managed code (C#) on all platforms except Windows.
This update is intended to fix this bug.

Changes

  • Fixed a bug with Quaternions that were passed by reference rather than by value, which caused crashes. #96
    • There may be a slight decrease in performance for C# bindings for problematic methods, but it is still much higher than that of GDScript.
  • Fixed a rare error p_child->data.parent != this in clear_all.
  • Added static checking of argument types and return values in the C API and C++ bindings.
  • Added DebugDrawManager.get_addon_version_str and DebugDrawManager.get_addon_version.
  • Updated test project for CI. Now it will run GDScript and C# test scenes.
  • Updated description of scoped_config.

Note

For more information about update 1.7, check out Release 1.7.0

Full Changelog: 1.7.0...1.7.1

[4.4.1+] 1.7.0

02 Feb 17:53

Choose a tag to compare

Warning

This release contains a bug that can cause crashes when calling draw_box and draw_capsule in C# scripts.
Please upgrade to 1.7.1.

Native API

The main change in this update is the addition of a native API and bindings for it! 🎉

The request to add this feature (#56) was made quite a while ago, but finally everything is ready for release!

Starting with this update, you can use DebugDraw3D from your C++ code by simply including one file addons/debug_draw_3d/native_api/cpp/dd3d_cpp_api.hpp in your project.

#include "dd3d_cpp_api.hpp"

void DD3DTestCppApiNode::_process(double p_delta) {
 {
  auto test = DebugDraw3DScopeConfig();
  // DD3D GDExtension not loaded
  if (!test)
   return;
 }

 DebugDraw3D::draw_text(Vector3(1, 1, 1), String::utf8("Hello Привет こんにちは หวัดดี"));
 DebugDraw3D::draw_sphere(Vector3(1, 1, 1), 2, Color(1, 1, 0), 0);
}

DebugDraw3D has also supported C# for quite some time, but this support was implemented based on GodotObject.Call, which made DD3D even slower than GDScript when used with C#. Now C# uses the same native API as C++, which makes C# several times faster than GDScript. For example, an array of 7,500 boxes is now sent for rendering in 1 ms instead of 4.2 ms. Roughly 4 times faster on my PC, and 15-28 times faster than the old C# bindings!

image

The API should have remained unchanged, unless I missed something, except that DebugDraw2D.SetText now requires value to be explicitly converted to a string.

So now, instead of:

DebugDraw2D.SetText("FPS", Engine.GetFramesPerSecond());

You need to write:

DebugDraw2D.SetText("FPS", Engine.GetFramesPerSecond().ToString());

Also, both binding files for C# and C++ now contain the original doxygen documentation, but without images 😅.

image

Other changes

Core

  • Updated godot-cpp to 4.4.1
  • Added a dedicated extension_api_double.json for godot-cpp 4.4.1

New

  • Added draw_capsule and draw_capsule_ab. #92
    • DrawCapsule DrawCapsuleAb
  • Added a check for the distance between points a and b in *_ab methods to avoid console spam.
  • Added drawing of elements if a path of size 1 was passed to *_path.
    • Now the "path" will be displayed even if only one element is passed. But only in the form of a square or sphere.

Optimizations

  • Slightly optimized draw_lines_c and draw_grid_xf.
  • Increased the performance of draw_points_c by ~30+%.
    • In some places, raw memory is now used instead of initialized C++ arrays.
  • Reduced the number of initializations of new arrays.
  • Added manual AABB calculation for instances.
    • Now it should be more accurate and processed faster. ~33ms -> ~24ms (27% faster) with 1M boxes.

C#

  • Added converter from doxygen to C# documentation.
  • Added automatic removal of old bindings.
    • Added notification about deleting old files.
  • Warnings about non-cleared objects are hidden in non-verbose mode. This is because C# clears objects after GDExtensions are unloaded.
  • Removed Generate C# bindings from the menu.
  • Updated C# demo to support the new SetText.

Various fixes

  • Fixed crash when passing a zero-sized array to the draw_arrow_path method. #93
  • Fixed text flickering if it updates in the same frame when its time expires.
  • Fixed the position of Label3D when the root of the world in which it is located changes its position.
  • Fixed the size of the allocated space for the array for vertices and normals of the sphere.
  • Fixed interaction between scoped.transform and object position fixing for double builds.
    • Now the correction of the position occurs in one place, instead of each draw_* method.

Demo

  • Fixed the appearance of some demo scene elements when rotating the root node.
  • Changed the default brightness.
  • Replaced the pixel font.

Docs

  • Added NativeAPI.md.
  • Updated animations in the docs.
    • Used the latest version of ffmpeg. Removed some artifacts.
  • Added previews for set_transform.
    • SetTransform

Misc

  • Redesigned GeometryGenerator to support more accurate alignment of volumetric segments.
    • Also added the ability to locally enable or disable bevels on volumetric meshes.
  • image

Full Changelog: 1.6.0...1.7.0

[4.3+] 1.6.0

08 Nov 16:22

Choose a tag to compare

Changes

  • draw_text / Label3D fixed size flag in scoped config by @sievaxx in #76
    • Now you can use set_text_fixed_size to display text of a specified size regardless of the distance to it.
    • DrawTextFixedSize
  • Linux arm64 target by @PointerOffset in #78
    • This adds precompiled libraries for arm64 Linux.
  • Fix incorrect ProjectSettings usage by @Kaleb-Reid in #85 #83
    • Sorry for the long wait. There should be no more warnings from my add-on.
  • Added the ability to disable frustum culling. #79
    • Use DebugDraw3D.config.frustum_culling_mode for this.
  • Added .gitignore for temporary files in the libs folder. #86
  • Updated godot-cpp to 4.3
    • Now the minimum supported version is Godot 4.3.
  • Added generation and registration of godot docs.
    • At the moment, the documentation only has a link to the corresponding page in the online documentation. And I have no plans to fully migrate all the documentation to the engine itself.
  • Renamed demo scenes
  • Added the About window.
    • addon_version and addon_page were removed from ProjectSettings.
    • image

New Contributors

Full Changelog: 1.5.1...1.6.0

[4.2.2+] 1.5.1

24 May 04:32

Choose a tag to compare

Changes

  • Added the transform parameter to scoped_config. #75
    • Example of recursion using set_transform (available in the demo scene):
444885424-017f89f6-2504-44b3-951a-a38a6f00c7bc.mp4
  • Added the ability to change the C# API generation folder. #69
  • Fixed exporting for macOS. #74
  • Fixed odd character: c vs с(0x81) by @CommanderChuter. #73

Full Changelog: 1.5.0...1.5.1

[4.2.2+] 1.5.0

18 Mar 18:22

Choose a tag to compare

Changes

  • Added the DebugDraw3D.draw_text method for drawing 3D text. #53
    DrawText
    DrawTextFont
    DrawTextOutlineColor
    • This method uses Label3D nodes, so a large number of draw_text calls can lead to a significant decrease in performance.
  • Updated godot-cpp to Godot 4.2.2. #65
    • This also means that Godot versions below 4.2.2 are no longer supported.
  • Graphs have been deleted.
    • I've seen several addons that display more prettier graphs, and besides, my graphs were a bit buggy.
  • Fixed crash with a custom MainLoop or with --check-only #59
  • Fixed changing editor's theme. #62
  • Fixed some other crashes and slightly improved performance.
  • Fixed multithreading support.
    • Previously, attempts to call almost any method from a user threads in DebugDraw3D led to a lot of errors. There shouldn't be any problems with that now.
    • draw_text, which works with nodes, also supports calls from user threads.
threads.mp4

Note

I can't guarantee I'll be releasing major updates in the future, as I haven't actively used Godot for a while, so I'm not interested in improving the addon.
If you are interested in updates you can support me with money [Boosty, USDT, itch.io (no registration required, cards, Paypal)].

Full Changelog: 1.4.5...1.5.0

[4.1.4+] 1.4.5

06 Nov 07:26

Choose a tag to compare

Changes

In this update, in general, nothing has changed for regular users, except for some internal details.

  • Updated emscripten to 3.1.64.
  • The way releases are distributed has been changed. Now the Source code assets will provide the source code. To download the addon, download debug-draw-3d_[version].zip.
  • Added support for precision=double #57. For more information, see the documentation.

Full Changelog: 1.4.4...1.4.5

[4.1.4+] 1.4.4

11 Sep 09:24

Choose a tag to compare

Changes

  • Updated godot-cpp to 4.1.4 and emscripten to 3.1.63.
  • Fixed the library for the Web build of Godot 4.3 #46. Now the Web library is clearly being built with and without thread support.
  • Examples of working with scoped_config have been added to the Readme and documentation.
  • Update C# API File Naming Convention #50. Now the generated file will contain .generated suffix.

Note

The name of the libraries for macOS has been changed (the extension .dylib has been returned), it is advisable to clear the addon folder before updating.

[4.2+] 1.4.3

01 Jul 21:04

Choose a tag to compare

Changes

  • Added the rendering/disable_fog setting to change the effect of fog on the debug geometry #48. By default, the fog now has no effect on the geometry. This feature requires Godot 4.2+
  • Fixed definition of shader flags. Without this fix, it was impossible to combine no depth with other flags.

[4.1.3+] 1.4.2

15 Jun 21:24

Choose a tag to compare

Changes

  • Added the rendering/render_priority and rendering/render_mode settings to change the priority and mode of geometry rendering #44.
  • Static linking of standard libraries on Linux is enabled #45. This is necessary to run DebugDraw3D on some Linux distributions, such as NixOS. Unfortunately, this has led to an increase in the size of the libraries.