Meldexun / EntityCulling

Minecraft Mod: Skip rendering of hidden entities.
26 stars 2 forks source link

[1.12] Culling just doesn't work on old iGPU #80

Closed ghost closed 1 year ago

ghost commented 1 year ago

Describe the bug On my laptop, the mod does not work and even slightly reduces the FPS.

Reproducibility

To Reproduce Steps to reproduce the behavior. Please keep in mind that I most likely don't know how other mods involved in this issue work. Thus terms like "Go to dimension X" should be explained in more detail because I probably don't know how to do that.

  1. Install mod
  2. See culling info on debug screen

Screenshots/Videos https://youtu.be/h46XvfZiAJM

Versions Entity Culling: 6.2.5 Forge: 14.23.5.2860 Minecraft: 1.12.2 Other mods (necessary to reproduce the bug): Render Lib: 1.1.10 OptiFine: HD U G5

Hardware CPU: Intel Core i5 3230M RAM: 8Gb DDR3L-1600 (Dual channel) GPU: Intel HD Graphics 4000 VRAM: 1792Mb

Log File latest.log

Meldexun commented 1 year ago

I don't see anything unusual in that video. Can you explain more precisely why/when you think that something isn't working correctly?

Also keep in mind that frustum culling (culling of entities that are not inside the field of view) is part of vanilla. So whenever you are above ground in the video then EntityCulling won't do anything for you. Whenever you are underground you can also see that the Culled number in the debug screen goes up when an entity/tile entity is in your FoV (because they are hidden behind blocks when you are underground).

Another thing to note is that I can't take this video as an accurate performance measurement. Ideally you want to not move/rotate the camera at all between tests and it would also be helpful if the world wouldn't be changing between test. There are a lot of things that can affect FPS (chunk loading, chunk compiling, fov updates, etc.). So you will want to exclude as many factors as possible.

ghost commented 1 year ago

I don't see anything unusual in that video. Can you explain more precisely why/when you think that something isn't working correctly?

Also keep in mind that frustum culling (culling of entities that are not inside the field of view) is part of vanilla. So whenever you are above ground in the video then EntityCulling won't do anything for you. Whenever you are underground you can also see that the Culled number in the debug screen goes up when an entity/tile entity is in your FoV (because they are hidden behind blocks when you are underground).

Another thing to note is that I can't take this video as an accurate performance measurement. Ideally you want to not move/rotate the camera at all between tests and it would also be helpful if the world wouldn't be changing between test. There are a lot of things that can affect FPS (chunk loading, chunk compiling, fov updates, etc.). So you will want to exclude as many factors as possible.

After install Entity Culling, I expected that the FPS may not increase, but it will not drop, in fact for me the FPS is a little lower if Entity Culling is installed (on average by 10-20FPS), but what really bothers me is if the information on the debug screen displays entities that are culled or displayed, then I have zeros everywhere, and some values may appear if I turn off OpenGL based culling and turn on trace caching, but most importantly, on the debug screen, I have never seen the "Culled" field ever show NOT zero. I'm not sure how best to test this, but just tell me what I can provide and I'll do it.

ghost commented 1 year ago

Oh god, sorry! The culling seems to be working and I didn't notice any change in the values of the culled entities due to the jagged gray background overlay on the debug screen when Unicode is enforced. However, the question of reducing the FPS remains, could it be due to additional tasks for the culling?

Meldexun commented 1 year ago

There is a slight overhead but tbh I doubt that you are loosing 10-20 FPS when you only have ~60-70 FPS.

Since your GPU doesn't support OpenGL 4.4 it also doesn't matter whether you enable or disable openglBasedCulling in the config. But I recommend you to have enableRaytraceCache enabled because that should help you to reduce the overhead.

If you want to test the overhead of EntityCulling yourself you should do this:

Now you can compare the results.