[Dynamic Lights] Significant FPS drop when in the Nether
Luke616 opened this issue ยท 24 comments
I've been experiencing a significant FPS drop when in the nether I will go from a steady 100~ FPS in the overworld to 1-2 FPS in the nether, but as soon as I hit the key to disable dynamic lights, the FPS shoots back up to 100 or so.
I have tried to disable anything not related to the player in the configs (so, no mob lights, entity lights, dropped item lights) and I am still having this issue. Any help would be appreciated.
Minecraft 1.12.2
Forge 14.23.2.2624
Dynamic Lights 1.12.1
Thanks!
The "optimization" for light in minecraft revolve around sunlight, blocks being visible to the sky, and caching. In the nether, none of these really work. It's possible Dynamic Lights causes some kind of cascading light update across half the map. There's not really anything i could do about it. Does Optifine still support Dynamic Lights? Try that?
Perhaps an option to dynamically disable the mod when in the nether dimension / enable it when leaving?
I'll try optifines feature when I get home but I would really like to use this in my pack, and unfortunately optifine is not curse distributable. Your mod is also much more configurable in terms of which items/situations cause light, which is a big plus.
Thanks for investigating this. It seems like it only affects certain people. Here is a link to the most recent version of my pack which still has the mod. I've since removed it due to multiple players complaining that the nether was unplayable (it affects me as well)
However, I have other users who say they have not encountered the issue at all (like you), so it seems like it does not affect everyone equally. Perhaps it's a GPU / CPU specific issue?
It's worth noting that I also have this issue when Dynamic Lights is the only mod in the pack.
https://minecraft.curseforge.com/projects/magiculture-2/files/2541616
Looks like some other people have reported a similar issue - here is a link to a comment on curseforge of someone else requesting the ability to disable dynamic lights in certain dimensions via config. Definitely not just me but it doesn't seem to affect anyone.
https://minecraft.curseforge.com/projects/dynamic-lights#c41
I don't really think it is a CPU/GPU issue as it would affect me atleast SOME. 120 fps to 2 is not something i would miss, even it if was reduced on my PC. I glanced at your files but that doesn't appear to be an extract-and-run modpack, and i am definitely not bothering with research on how to setup these modpack installers.
If you wish to research this, google on how to use Java VisualVM, connect that to your running/lagging mc instance, and check out the methods abusing your CPU. It should be fairly obvious where the problem is.
Actually i just checked on my client and i could use Dynamic Lights just fine in the Nether. 120fps. Whatever problem you have must be on your end.
OK there's definitely some kind of bug happening. To work correctly (or rather, prevent crashes), Dynamic Lights needs to replace a collection in the MC render engine which holds the "blocks to update light next for". This collection has to be replaced every time the player world changes (overworld, nether, dimensions basically) as MC resets it.
For the "hack" method to show up in CPU usage at all - it should only run ONCE - there's something causing your "world" to change rapidly, atleast as far Dynamic Lights can tell. I will see if i can make an attempt at a fix when im home later today.
Alright, downloaded Java VisualVM and read up a bit how to use it. Profiled my CPU usage for 30 seconds of flying straight forward generating new chunks in both the overworld and in the nether. The ONLY mod installed was dynamic lights, and the version of forge used was 14.23.2.2624. Here's what I came up with:
This is the nether test - you can see that the overwhelming amount of CPU usage was from this method called by dynamic lights
This is the overworld test - the same method which was hogging all of the memory before is now only using a modest amount.
Am I interpreting this right? It certainly seems like this issue only affects some players but it is game breaking and it absolutely seems to be caused by dynamic lights.
Thank you very much! It's still very odd that only some people encounter this. Feel free to send test builds my way and I'll let you know if I experience the issue on them.
Indeed - the line does appear, and only once, when a world is started for the first time. I recorded a quick screen capture of the issue, so you can see what it looks like when it occurs.
Here is the link: https://youtu.be/LhBxzpx68-4
Here is the log file that corresponds with this test: https://pastebin.com/3Nthn6uQ
An interesting thing to note from the video is that sometimes, after a lot of initial slowdown, the framerate stabilizes and the nether seems to be working fine - but sometimes the slowdown does not seem to end and sometimes it comes back randomly. When playing with lots of other mods, the slowdown rarely ever seems to end.
Thank you again for taking the time to investigate this in detail
I've pushed Dynamic Lights 1.4.7 which should fix this particular problem or atleast make it less visible, if it does happen again. Give it a try.
Unfortunately I'm still having this issue with 1.4.7. EDIT: my framerate when holding a torch is fine, ignore previous comment. Here are some visualVM reports using 1.4.7:
Fly forward for 30 sec in the nether, no torch in hand (incredibly poor fps)
Fly forward for 30 sec in overworld, no torch in hand (framerate fine)
Fly forward for 30 sec in overworld, with torch in hand (slightly choppy)
Can you check your logfile / console immediatly after loading the savefile for the first time? I susped you have (a lot) of Dynamic Lights stacktraces in there showing some kind of issue
See if the following line appears:
Dynamic Lights successfully hacked Set RenderGlobal.setLightUpdates and replaced it with a ConcurrentSkipListSet
No, there's nothing of interest in that file sadly. I have actually experienced a huge stutter when entering the Nether ... for a couple of seconds the game basically freezes ... but the problem your VisualVM screenshots show would not "go away". I will have to think on this.
Still no chance you could add a config option that when =true disables dynamic lights whenever the player enters the nether and re-enables it when they leave? Would function as a sort of patchwork fix for the issue.
Yes. I've pushed Dynamic Lights 1.4.8 which implements a global dimension id list, in which you can ban dimension IDs from being used for dynamic lights. I've added the Nether (-1) to the default.
Try this one. It's officially the last thing i could think of.
https://github.com/AtomicStryker/github.io/blob/master/files/1.12.1/DynamicLights-1.12.1.jar
The link doesn't seem to work for me, just redirects to pages.github.com - thank you again for continuing to search for a fix.
Was able to find it by looking at your github profile (link is https://github.com/AtomicStryker/github.io/blob/master/files/1.12.1/DynamicLights-1.12.1.jar for anyone else watching this thread)
Whatever you did this time has absolutely fixed it for me! Thank you so much!
Still having the issue with the latest update. With dimension -1 banned in the configs, the frame drops are still occuring for me in the nether. However, pressing the "dynamic lights globally off" hotkey does still fix the issue. So whatever method the hotkey uses to disable the lights seems to fix things, but not the banned dimension setting.
As of v1.12.2 i notice and are impacted by this quite significantly to the point if playing in SSP my FPS tanks to 1-2 and standing still i can get at least into the 50+ range. SMP it causes movement and flying to be very very chunky and jittery with almost spikes of lag when trying to move.
Have you tried using the version linked above? I know it isn't uploaded to curse yet but it fixed the issue for me.