CanvasDraw - A powerful pixel-based graphics library (Draw pixels, lines, triangles, read/modify image data, and much more!)

Module and Plugin Update v4.3.0

Hey all, been a bit since an update has happened. I’ve added some small but very useful features to both the module and the image tools plugin!


  • Added Canvas:SetClearRGBA() to change the clearing colour and transparency

  • Added two new optional parameters to CanvasDraw.GetImageDataFromTextureId() to limit the image size while maintaining the aspect ratio: MaxWidth and MaxHeight

  • Added SetRGBA() and GetRGBA() to ‘ImageData’

  • Added two new filters to the CanvasDraw tools image editor plugin; Adjust Brightness and Colour Tint to help adjust colours and light levels.

2 Likes

It’s definitely possible to make a renderer within Roblox. I recently decided to make one, which offers good performance


The only thing I wonder, is how I can do z buffers or some culling occlusion method.

1 Like

I didn’t say it wasn’t possible. This graphics library can do real-time renderers really efficiently. Here’s two very powerful renderers I made with CanvasDraw:

Raycaster engine (runs above I think 160 FPS at 240x240)

Real-time raytracing with textures and unique rendering optimisation tricks to get above 120 FPS at 100x100

You should probably get back-face culling working first, as I dont think you’re doing that.

This video covers culling very well, and there’s a part 3 which covers clipping of triangles, which is kind of occlusion culling in a way, but it means you can have the camera close to the triangles without them going huge or running into divide by 0 issues.


Here’s a 3D OBJ renderer I made around a year ago that uses these implementations:

This was made before EditableImage

2 Likes

Module and Plugin Patch v4.3.1

Just fixed an error on the plugin and fixed and fixed an where the Canvas.FpsLimit property does not function quite right


Canvas Changes

  • Canvas.FpsLimit is now write safe!

  • Deprecated Canvas:SetFPSLimit() in favour of Canvas.FpsLimit no longer being read-only

Plugin Changes

  • Increased the speed of mass importing SaveObjects

  • Fixed a rare occasion where importing a specific formatted PNG may break the plugin causing the gui to get stuck on the screen.

1 Like

Hello! Did one of these updates effect 3.0? In Draw & Donate the canvases are showing strange blurry lines I’ve never seen before, I didn’t change anything in the game they randomly just showed up. Also accept my DC friend request if you’re able to, I have a few more questions about this module! I love this module and would like to learn more about it to improve my game. Thank you!

2 Likes

Hello. This is a roblox bug

CanvasDraw 3.0 hasn’t been updated since November 2023


I sure hope this gets fixed soon

3 Likes

This issue appears to be fixed!

4 Likes

Module Patch v4.3.2

Just made a quick fix on SetClearRGBA for canvas clearing


  • Fixed Canvas:SetClearRGBA() not working

I’m so glad to see the OP be so active on this , it just makes the product better haha!

5 Likes

Been active and constantly improving CanvasDraw since early 2022!

It’s been awesome to see what people have been able to come up with and make with this engine

3 Likes

I’ve personally used it a few times and i must say it is really nice.

Keep up the good work!

1 Like

Amazing module! I created some tests that used it. One even visualizes the Mandelbrot Set!

CanvasDrawTest.rbxm (63.6 KB)

4 Likes

I absolutely love that! It’s beautiful!

Would love to see what else you can come up with!

2 Likes

Image Optimisation Update - v4.4.0

Hey all! This update just adds some optimisations to all ImageData methods, and also a new version of the SaveObject which allows :GetImageData() to perform better without having big lag spikes for larger images.


  • Reworked and added a differently formatted SaveObject! Using this new SaveObject greatly improves performance for :GetImageData()
    NOTE: For backwards compatability reasons, You can still read and use SaveObjects created prior to this change!

  • Optimised and improved performance for all ImageData methods

  • Removed the InstantCreate parameter on both :CreateSaveObject() and :CreateSaveObjectFromPixels() as SaveObject creation is now much faster

2 Likes

Nice optimizations, I shall update my module. I wish that the FastCanvas object inherited the UICorners you put in the GuiObject it’s adorned to!

In the video you saw, there were supposed to be corners to those images, but they were ignored. I could implement this myself, but it would be good if it was built-in. Using a CanvasGroup to add the corners doesn’t work because the group doesn’t rerender when an EditableImage’s data changes.

2 Likes

Patch - v4.4.1

Ended up forgetting to fix something in the previous release as well as adding some more small optimisations for image-based methods


  • Added back the missing method Canvas:GetAlpha() which was accidentally removed in a previous version

  • Fixed, optimised and updated CanvasDraw.CompressImageData() and CanvasDraw.DecompressImageData() to use the new faster image format

  • Small optimisations for overall image compression and decompression. The CanvasDraw Tools plugin has also been affected by this

1 Like

Hello, I am new to scripting but I don’t know why this error appears when I try to make canvas or draw on canvas.

You have to turn the EditableImage beta feature on. File > Beta Features

Am I using Image Editor wrong or do painting tools do not work? Importing PNG files work just fine, but for some reason the painting tools themselves refuse to do anything (filters and effects work fine!)

List of Beta Features enabled which COULD be detrimental to functionality if needed:

  • Next Gen Studio Preview
  • New Studio Camera Controls
  • Updated Roblox Controls
  • UIListLayout Flex Features
  • Dragger QoL Improvements

that’s odd, any errors? If not, make sure the plugin is up-to-date, I was working on rewriting the plugin a little bit yesterday.

The EditableImage beta also needs to be enabled too