A performant immediate and retained mode gizmo library.
Ceive was made in mind for both performance, immedate mode and retained mode, after I looked at the lack of good gizmo librarys on roblox I set out to create one that was not only more performant than other librarys. But was also easier to work with and had more capabilities.
(The name Ceive ImGizmo is derived from Perceive and Immediate Mode Gizmo)
Github
Demo
The demo place can be found here: Gizmos Demo - Roblox
Some performance stats can be seen in the bottom left of this video:
(Im using a library called Iris for the window to control the propertys)
Shapes
Boxes with or without triangles
Wedges with or without triangles
Spheres
Cylinders
Capsules
Custom Import OBJ Meshes
Usage
The demo place provides an example for every single shape including the custom mesh.
But heres a basic example on how you could create a cylinder
Gizmo.PushProperty("Color3", Color3.new(0.184314, 0.184314, 1))
Gizmo.Cylinder:Draw(CFrame.new(0, 10, 0) * CFrame.Angles(0, math.rad(25), 0), 2, 4, 20) -- Location: CFrame, Radius: number, Length: number, Subdivisions: number
Subdivisions just define how many segments should make up a shape it’s the same as blender when you define how many vertices should make up a cylinder for example.
How it works
Ceive ImGizmo is both an immediate and retained gizmo library, immediate mode means that instead of creating objects and them persisting over multiple frames, they are instead deleted after each render cycle and ready to be used next frame. This means you dont have to keep track of objects and destroy them. All of it is handled at the end of each frame (On heartbeat)
This means setup is so easy you can have gizmos visualising look directions, nav meshes, attack regions and hitboxes in just minutes.
Performance
Cieve uses a WireframeHandleAdornment, This means it is incredibly fast, being able to show 100k lines at 20fps you never have to worry about performance. All of the lines are rendered using 2 Adornments, one thats AlwaysOnTop and one that isn’t. You can be rest assured that there will be negligable performance impact when your gizmos are enabled.
Internally the retained mode just calls back to the immediate mode functions, so there is no performance difference between them.
If you’d wish to enable / disable all gizmos then you can call Gizmo.SetEnabled(value: boolean)
this will disable all rendering and clear any Rays / Adornments.