Native billboarding runs at ridiculously slow speeds

Hi, I put this in building support because it’d probably get flagged in development discussion, and I figured it’s more building than coding.

I have been testing with a fake volumetric fog system that uses voxels + billboards to make a lot of smoke particles with random decals, orientations, and transparencies based off of perlin noise values of it’s position.

This done correctly on something like unity can run ridiculously fast. This is because we just get the perlin noise value, which is computationally expensive, but is only ever required once for our fog. Then, GPU instancing allows you to draw millions of billboards per frame with the game still running at 500+ fps. (The example provided is on the average GPU computer, as said many times throughout the video and other videos by Acerola)

That clearly isn’t what roblox does, because I have 343 billboards running at or below 15 fps inside studio (not testing).

Even if Roblox is less optimized because you have more control, there shouldn’t be that big of an issue assuming they’re smart and use GPU instancing for the native billboard implementation. If they don’t, they should definitely change that.

Do we know what technique Roblox actually implements or why it’s so slow? Is it something that ends up being super important?

2 Likes

Particle billboards arent the same as billboard GUI

This may not be true but id guess Billboard guis have to communicate with the CPU to get GUI data, even if the GUI data is minimal that is alot of little inefficiencies. In more technical terms im guessing the CPU has to initiate and manage a GUI instance which may get rendered on the gpu, cached and then rendered again within the billboard. A billboard particle like the type your referring too is much more performant since it can cache its data once and reuse it forever.

3 Likes

This summed it up very well, but what part of each billboard is actually preventing Roblox from caching the billboard’s data on the GPU, the fact that they can change? (if you know)

1 Like

Id guess it has something to do with the fact billboard GUI need to be realtime, If the UI lags or doesnt update properly because the gpu is only rendering the cached version it can break things like proximity prompts, chat bubbles, etc

2 Likes

Oooh, okay, thank you for explaining!

So I’m assuming particle emitters use their own type of billboards, the fast ones?
If so, could I get away with putting particle emitters and emitting 1 particle for it that lasts basically forever?

1 Like

thats the catch, particles have a max lifetime, I dont know the exact number but eventually they all go away. You could get away with using beams, the issue with them being they have to face up (assuming your doing grass)

2 Likes

I’m making (fake) volumetric smoke, I actually made what I think is a quite nice effect for the smoke using particles.
Instead of making the particles have a max lifetime, I just made them have a nice transition effect when appearing and disappearing, then set the lifetime and rate to 1 and 1.5 respectively.

1 Like

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