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

When i use it it says in output: " DynamicImage is not yet enabled!"

So i think you can’t use it yet.

oh yeah I knew that from the beginning. I was just surprised it’s actually just sitting in the engine, meaning it’s coming pretty close to being enabled at some point

please add transparency feature, it would be so revolutionary. imagine what people will create… this on billboard? procedural fire animation, procedural blood scattering… etc

Ill see if DynamicImage will allow this when it comes out as that is the new system ill be migrating CanvasDraw to.

If it does end up supporting transparency, I will definitely add transparency support

DynamicImages seem to have RGBA colors, WritePixels takes an array with RGBA values, “{ r, g, b, a, r, g, b, a, r, g, b, a … }”.

5 Likes

if dynamic mesh comes out, will u still keep the current module as a legacy module? or will u delete it?

There’s no reason to delete it, dynamic images can just improve the library

2 Likes

I definitely don’t plan on full on deleting anything lol.

Once DynamicImage releases, CanvasDraw will just use that as it’s internal canvas handler rather than a complex UI Gradient based canvas.

All though I will probably release some sort of an archive or a thread containing old versions of CanvasDraw.

3 Likes

Sadly, dynamic mesh was removed a long time ago in a beta. We can no longer dent our mesh-based cars.

But I’m looking forward to dynamic images.

2 Likes

What are you talking about?

DynamicMesh has not been deleted at all, and will not be deleted for it was shown at the RDC23 Keynote, in fact the one shown was an upgraded version of DynamicMesh that can be run in real-time.

2 Likes

Yeah, but it requires bones to run. The older version did not.

No, it doesn’t require bones, I don’t know where you got that from.

Bone based deformation is called something with skin, which is an entirely different area of mesh editing, dynamic mesh allows us to edit anything about a mesh down to reach even vertices.

So, MeshDeformer was replaced by DynamicMesh for absolutely no reason?
https://devforum.roblox.com/t/why-was-the-meshdeformer-instance-removed/2219347

?

1 Like

Could you make a Tutorial on how to make 3D engines? Because I am kinda confused about how that works.

There heaps of tutorials online on how to make 3D engines from scratch.

I highly reccommend following along with this tutorial series. It’s simple and easy to follow along and port to CanvasDraw as the concept and code logic is exactly the same.

This is the tutorial I followed to make my own 3D rasterizer on roblox.

Should be easy enough to port to lua too if you understand any other programming language

2 Likes

Graphics/Image Update - v3.4.0

Hey all. Pretty big update regarding graphics and rendering with CanvasDraw and lots of bug fixes too.

Well, we have a bit to get through, so lets start from the top!

Two new methods - DrawTexturedTriangle and DrawDistortedImage

That’s right, you heard it. CanvasDraw now officially supports textured triangles and planes with basic transparency support!

These methods can be used for 3D rendering or custom 2D image manipulation!

DrawTexturedTriangle will also take UV coordinates too

These drawing methods also support automatic edge clipping! So don’t worry about script errors or issues from rendering outside the canvas!

Special thanks to @ZestyIsSour for contributing and helping out with this one!


Two new methods for ImageData

ImageData now has two new methods: Tint() and SetPixel()

The Tint() method is useful for shading or changing an image’s colour.

The SetPixel() method allows you to change the ImageData’s pixels directly. SetPixel accepts both a color3 and an alpha/transparency value too!


Automatically clipping for some drawing methods

The following methods have now been updated and will automatically clip with the canvas to avoid causing errors or issues with drawing outside the canvas.

Currently, only the following drawing methods will now have clipping:

  • DrawRectangle / DrawRectangleXY
  • DrawText / DrawTextXY
  • DrawImage / DrawImageXY
  • DrawTexturedTriangle / DrawTexturedTriangleXY
  • DrawDistortedImage / DrawDistortedImageXY

Rewritten FloodFIll()!

The FloodFill method has had a complete overall and now runs much faster and is now practical!

Special thanks to @Arevoir for this one!


Full change log:

  • Added DrawTexturedTriangle()

  • Added DrawDistortedImage()

  • Added two new ImageData methods:

    • ImageData:Tint()
    • ImageData:SetPixel()
  • Made text much more reliable and not error. Text will now clip
    to the canvas and properly wrap depending on text size and position

  • Gave the DrawRectangle method clipping

  • Gave the DrawText method clipping

  • Gave the DrawImage method clipping

  • Redone the API documentation thread and added a table of contents section for quick and easy searching

  • Rewritten FloodFill to be much faster than before (contributed by @Arevoir)

  • Fixed DrawRectangle not drawing correctly when coordinates were flipped for either axis

  • Fixed some wrapping issues with DrawText

9 Likes

this is actually so cool. Will defiently try later!

1 Like

Have you thought about using this method for optimizing even further The Powder Box - Roblox ?

Like, how the guy in the post makes almost NOTHING render in the background?

1 Like

That is probably a good idea. Would probably speed up the game a little bit. Thanks

1 Like