Bulk rendering API (To make the creation of 3D visual effects lighter)

As a Roblox developer, it is currently too hard to performantly render a lot of temporary visual effects from a template, like projectiles. Particularly effects which exist and cease to exist a lot, often many times per frame, and rarely require any real physical presence in the world.

This is because there is a big tax to creating a new part (or destroying an old one), strictly in the context of something like projectiles where this operation is happening many times each frame (unnecessarily).

If Roblox is able to address this issue, it would improve my development experience by allowing for much lighter and faster rendering of 3D effects which don’t require unique instances.

In other words, having something similar to BulkMoveTo which can render simple copies of a mesh, or a mesh made up of bone parts (e.g. for curving bullet arcs)

Typical workarounds (and why, imo, they don't cut it)

Common workarounds to performance for these sorts of visual-only things tend to involve reusing already created instances, but, this isn’t ideal to implement, doesn’t work in a lot of cases, can cause bugs, and aside from that, it’s only just a mitigation.

I have commonly seen the additional (small) cost of updating a part’s Size property being mitigated with Mesh instances.

This doesn’t work with some things, and breaks a lot of visual behaviours in various cases, like materials and textures. Plus, Mesh instances are not intended for this.

'Ideal' case

Ideally, this would be API(s) which could act on multiple things like Parts/Models (PVInstance), meshes & bones, Beams, or Trails and renders a “copy” of those things at different offsets, rotations, and/or scales, and even transparencies, colors, or other more complicated properties.


Thanks Hexcede – appreciate you sharing the workarounds use case too, this is helpful. We’ll pass this feedback to the rendering team.


This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.