Immediate Mode Draw (IMDraw) for Unity is an API which enables drawing of a variety of primitives and text labels at run time. Debug visualisation is a common requirement of many projects. This asset is geared towards developers who want debug rendering that is convenient and efficient. All for just 10 dollars! Features include: - Easy to use and trivial to set up. - Support for solid, wire frame, line and label primitives. - Options for culling and fading based on distance from camera. - Set limits on the maximum number of lines/vertices that can be rendered. - Gizmo API that provides extended functionality over the standard Unity gizmo class. - Optimized to reduce its impact on your project. - No garbage generation. - Includes full source code, examples and documentation. - Supported in Unity 5.0.0f4 and upwards. - Support for scriptable render pipeline (both LWRP and HDRP). - Intended for use on all platforms (desktop, mobile, web GL and more). - Dedicated support. Asset store page | WebGL demo | User guide | API reference | Latest release notes | Website _____________________________________________________________________ F.A.Q Q: What does this API offer over Unity Debug and Gizmo draw functions? A: Functions like Debug.DrawLine only draw in the editor scene view. Immediate Mode Draw brings similar but extended functionality for in-game usage. Please check out the API reference to get an idea of what is possible. Q: How can this asset be useful to my project? A: It is useful for situations where you want debug visualisation at run time. Some examples might include: - Drawing boxes or spheres in-game that represent trigger volumes. - Drawing the bounds for a renderer component such as a particle system or a mesh. - Visualising physics collision contact points (a premade script is included for this). - Displaying information for game objects in the world via labels. _____________________________________________________________________ Releases Version: 1.4.2 (Feb 26, 2020) [Fixed] Fixed issue where IMGizmo labels and images were incorrectly positioned/scaled when the editor UI has scaling applied. Version: 1.4.1 (Sept 24, 2019) [New] Added new Arc3D primitive to IMDraw and IMGizmos. Version: 1.4.0 (Jun 04, 2019) [New] Added new IMDraw and IMGizmos API draw functions. [New] Added support for scriptable render pipeline (LWRP and HDRP). See documentation for more information. [New] Added mesh-based line rendering as an alternative to GL line rendering. [Fixed] Changed the way screen space position was calculated in IMGizmos. [Fixed] Miscellaneous small bug fixes. Version: 1.3.2 (Jun 08, 2018) [New] Added ZTest options for drawing IMGizmos mesh primitives. [Fixed] Text mesh primitives changed to use camera world position instead of local position. Version: 1.3.1 (Oct 20, 2017) [Fixed] Changed material usage to use instantiated versions instead of modifying material assets. [Fixed] Fixed issue GL line primitive material pass wasn't being set. [Fixed] Fixed issue Version: 1.3.0 (Aug 16, 2017) [New] Text mesh based primitives. [New] 2D rectangle primitive. [New] Custom ZTest options for drawing of wire, mesh and text mesh primitives. [New] Rich text option for label rendering. [New] Optional font size parameter for labels. [Fixed] Fixed bug with WireCone3D variant where the orientation of the cone was incorrect. Version: 1.2.0 (Feb 15, 2017) [Changed] Complete overhaul of IMDrawManager and IMDrawCamera components. Registration of camera components with the manager is no longer necessary. This greatly simplifies the usage of IMDraw and makes it more robust against adding/removal of managers and cameras at runtime. [New] Tooltips for all IMDraw related inspector properties. [Fixed] Fixed a bug which caused the entire IMDraw API to be disabled in Unity 5.5 or later. This involved eliminating usage of the Conditional attribute since it no longer works. Version: 1.1.1 (July 1, 2016) [Fixed] Fixed IMGizmos errors when doing a build by ensuring editor specific code is properly stripped. [Changed] Added a troubleshooting section to the documentation. Version: 1.1.0 (Jun 20, 2016) [New] Added new IMGizmos API that provides extended functionality over the standard Unity gizmo class [Fixed] Fixed rendering issue with IMDraw 3D grid Version: 1.0.1 (Apr 27, 2016) [New] Added IMDraw.WirePyramid3D. [New] Added IMDraw.Pyramid3D. [New] Added IMDraw.WireRhombus3D. [New] Added IMDraw.Rhombus3D. [New] Added IMDraw.WireCone3D. [New] Added IMDraw.Cone3D. [New] Added IMDraw.Spotlight for drawing spot light coverage area. [New] Added IMDraw.Frustum for drawing camera view frustums. [New] Added button to IMDrawManager to assign missing meshes as default if one or more mesh reference is missing. _____________________________________________________________________ Feature roadmap Note: all items are subject to change. - Deprecate usage of GL API for line rendering. - IMDraw helper for drawing primitives via a game object component instead of script code. - Playmaker support with a custom action for drawing primitives. - Helper for visualisation of mesh normals and tangents. - Screen space 2D primitives such as lines and polygons. - Performance optimisation using either multi-threading or the job system. _____________________________________________________________________ Please leave any comments, suggestions, feature requests or issues you have with the asset in this thread. Thank you for your interest!