Very poor performance with Future lighting technology

Reproduction Steps
Open the file I’ve privately attached to this bug report with the hardware specifications I’ve provided below to reproduce this bug.

System Information
2019 16-inch MacBook Pro Base Model
CPU: i7-9750H @ 2.60GHz
GPU: AMD Radeon Pro 5300M 4GB
RAM: 16GB
OS: Windows 10 Home via Boot Camp
OS: macOS Big Sur 11.0.1

This bug occurs both in Windows 10 via Boot Camp and in macOS.

I believe this is a bug and that my hardware should be sufficient enough to use the Future lighting technology in a performant manner as I can play both GTA 5 and COD: Cold War at 60 FPS on normal settings (in Boot Camp). I also think this has to do with my hardware as the performance issue occurs in both macOS and in Windows 10 through Boot Camp.

Expected Behavior
With the lighting technology set to Future, on graphics level 10, I should be expecting higher than 25 FPS.

Actual Behavior
With the lighting technology set to Future, on graphics level 10, I get 25 FPS or less with a constant lag spike as seen in the MicroProfiler.

Workaround
A possible but undesirable workaround is to set the lighting technology to Voxel or Shadowmap as the performance is as expected, maintaining a constant 60 FPS on graphics level 10.

Issue Area: Engine
Issue Type: Performance
Impact: High
Frequency: Constantly
A private message is associated with this bug report

29 Likes

Roblox mostly uses CPU, for well a lot of things and barely uses GPU, which is why the future lighting is slow.

4 Likes

That’s not how computers work, lol. Try pulling your GPU out and seeing how well even notepad runs. (Hint, it won’t, lol). Roblox does not “barely” use the GPU. It uses it to render everything on screen.

The CPU is responsible for sending data to the GPU to process (ie here is a list of assets on screen, please render them!) and handling things like physics, scripts, etc.

The GPU will render anything on screen. It doesn’t matter what your lighting setting is. Every last pixel on the screen was rasterized and processed for your monitor by the GPU.


As for OP, how many lights do you have in the place/areas the camera is? If it’s a lot then that would explain the problem. Running dozens of shadowmap computations with PBR lighting effects is not very performance friendly.

Your GPU is not superb but it’s also not that terrible, so if you have a lot of lights that may be the problem.

27 Likes

I can do that.
There are CPUs that have integrated graphics in them (which is what I have) and it’s able to display stuff on my monitor just fine.

But I get your point.

4 Likes

Yeah I meant to the point where windows uses Microsoft basic display adapter (and thus uses the CPU for all rendering), LOL! Even Intel Hd will trump that any day. Can’t even display notepad at 15 fps on a good CPU lol.

When I made this post, there were 274 lights in the game, with 32 of them constantly moving on every heartbeat. I noted down the FPS each time I removed lights to try to narrow down what the root cause could be and it seems to just be really unoptimized for my hardware.

13.2 FPS with 274 lights: 242 static, 32 moving

FPS with 274 lights, 32 moving

11.4 FPS with 150 lights: 118 static, 32 moving

FPS with 150 lights, 32 moving

15.9 FPS with 118 lights: 118 static, 0 moving

FPS with 118 lights, none moving

12.5 FPS with 32 lights: 0 static, 32 moving

FPS with 32 lights, all moving

36.6 FPS with 2 lights: 0 static, 2 moving

FPS with 2 lights, all moving

60 FPS with 0 lights: 0 static, 0 moving

FPS with 0 lights

Even with 2 total lights in the game, both moving, I get 36.6 FPS.

10 Likes

Hmm. That’s odd, something is definitely wrong.

2 Likes

your issue might as well just be the shadow property on the lights, they’re stupidly expensive on low or medium-end hardware

4 Likes

I disabled shadows on all the lights in my game and I still only got 35 FPS. The moving lights I have are sort of necessary for my type of game, as they are spotlights.

Each of the following tests have shadows disabled for all of the lights.

35 FPS with 150 lights, 118 static, 32 moving

FPS with 150 lights, 32 moving, no shadows

50.5 FPS with 134 lights, 118 static, 16 moving

FPS with 118 lights, 16 moving, no shadows

60 FPS with 118 lights, 118 static, 0 moving

FPS with 118 lights, 0 moving, no shadows

Shadow computation is very expensive by the looks of it, although so is whatever computation occurs when 32 lights are moving at the same time, even with all shadows turned off, considering that cuts my FPS in half.

At the same time though, shadows being enabled in a realistic environment, such as a building, should be a given, so I can’t see myself being able to turn them off without sacrificing all the visual benefits to the future lighting technology, since at that point, I may as well be using voxel. Even if I did turn all shadows off, I couldn’t have 32 moving lights, which matters more to my game than having shadows enabled would.

4 Likes

You might be running Roblox on the integrated GPU instead of your more powerful discrete GPU.

The dedicated GPU (Radeon Pro 5300M) ain’t the best but shouldn’t be struggling that bad with two lights. My only conclusion is that Roblox is running off of the power saving “GPU” they build into processors for people who don’t need dedicated graphics, which is intended to save power on laptops for low intensity tasks (ie using a web browser) where as dedicated/discrete is used for intensive tasks like gaming or video editing.

Since I am unfamiliar with MacOS I cannot help as much but you need to look up how to force use of the discrete GPU. Note that this will make your battery drain faster.

Select Discrete Only.

Make sure to reboot Roblox after doing this. You might even need to restart your mac.

3 Likes

I have special software to manually select which is being used, between my CPU’s integrated graphics or my discrete GPU.

The ability to manually set whether integrated graphics or discrete graphics is being used is not a native setting in macOS and the only way to do this is if a program requests that macOS use discrete graphics, i.e Photoshop, or another GPU intensive program, or if you download special software to change this manually, like I have. I don’t know if Roblox is programmed to ask macOS to use the discrete GPU or if it just uses integrated graphics.

I believe in the previous posts, I had the setting set to dynamic switching, but even when I manually set it to my discrete GPU, my FPS was still low. Just to be sure, I will redo the tests with various lighting configurations with discrete graphics as well as on Windows incase my software to manually set the GPU isn’t working.

38.8 FPS with 150 lights, 118 static, 32 moving (discrete graphics, no shadows)

Screen Shot 2021-08-28 at 11.28.20 PM

13.4 FPS with 150 lights, 118 static, 32 moving (discrete graphics, shadows enabled)

Screen Shot 2021-08-28 at 11.48.36 PM Discrete, shadows on

These FPS results align with my previous results that had the same lighting configuration when I believe I had my graphics set to dynamic switching. In both instances, the FPS was within 2 FPS of one another.

Regardless of being able to switch between integrated or discrete graphics on macOS, I specifically included how this was a problem even when on Windows 10 through Boot Camp, which only utilizes discrete graphics and never integrated graphics.

2 Likes

I’m honestly inclined to say this is either a problem with your computer or a problem with how Roblox interacts with your specific hardware and drivers. And make sure to reboot Roblox between switching GPU.

@zeuxcg might be able to provide further assistance but if you verify that Roblox is using your discrete GPU and that drivers are up to date then there’s nothing I can suggest.

4 Likes

Even some older cpu’s that don’t have integrated graphics just use the CPU to render frames

1 Like

This is normal. Future lighting is stupidly bad for performance to the point where it is borderline unusable. I am surprised you are even able to run the map with that many lights.

9 Likes

I really want roblox to make FiB3 actually not lag with a few lights on an empty baseplate

5 Likes

Exactly. Most people start to lag when there’s 5 lights in the map.

How can Roblox expect AAA games to pop up when the technology required cannot run on most devices?

Edit: @vrtblox

8 Likes

notepad runs fine on my igpu, wdym?

When I had my mac, it had way worse specs than @r_r and I couldn’t even use FIB because it would cause awful screen tearing on intel igpus. (which was still occuring as of early 2021 pre fire)

It was unusable.

My current setup (luckily) gives me access to a 1650 and a 3070 mobile.
Many games are very laggy on the 1650 and it’s a shame since it’s a nice budget friendly card that gives me 60-150 fps in most modern games.
Dare I need to explain the 3070? That runs without issue due to the fact it’s top of the line.

Not sure what happened within the few months FiB3 has been out, but I have noticed lots of issues from lower end / and apple products.

6 Likes

I’ve seen other better shaders perform well with hundreds of lights, such as in UE4.

How is it that our engine with much less features can get 10 fps with 10 pointlights on a baseplate on most devices?

3070 may be top of the range, but when will everyone have a 3070? Not to mention they plan to push this out to mobile soon.

4 Likes

Push out to mobile?! Is Roblox trying to blow phones up or something?

12 Likes

side point, the ryzen threadripper 3rd gen ran crysis decently all-cpu, just an interesting fact, but yeah future lighting is laggier than expected

2 Likes