Not a bug, bug design oversight.
Rendering library shapes which are hidden (set_visible false) still checked in main render loop, which is pointless, because it is clear that they won't even get drawn until getting un-hidden by scripts, and to me looks like nobody bothered or even thought doing this tiny optimisation.
This raise "Script render preparation" time with my mod: https://mods.factorio.com/mod/shield-generators, despite 99% of shapes are being invisible.
If you want to test against my mod, grab version 0.1.2, because 0.1.4 destroy rendering objects (and recreate them later) instead of hiding them to workaround this issue.
[1.1.x] Hidden script rendered shapes are still being checked in preparation loop
-
- Inserter
- Posts: 30
- Joined: Tue Mar 12, 2019 4:50 am
- Contact:
[1.1.x] Hidden script rendered shapes are still being checked in preparation loop
Last edited by DBotThePony on Tue May 11, 2021 12:21 pm, edited 2 times in total.
-
- Long Handed Inserter
- Posts: 77
- Joined: Tue Dec 01, 2020 6:57 pm
- Contact:
Re: [1.1.x] Hidden script rendered shapes are still being checked in preparation loop
same thing with alt-view;
if you go with a "custom grid",should you need a 3x3 one or something, I can give you the code, it is exactly as you say.
It does NOT change "script preparation" whether an alt view is enabled.
It is even more deadly if you have an alt view with a detail-augmented copy.
On a side note, this api is not ready for anything big anyways.
If you go for the said 3x3 or 2x2 grid charted on the ground, using lines is... somewhat fine. A bit costly but well still tolerable.
But should you want to have a void-padded rects that are a bit smaller than a 2x2/3x3 cell,
AND use "just" a lot of rectangles with an option "no fill"...
Welcome are all the lags.
And I am not even talking about per-player overlay level here, just a global fully static all-players one.
*Just* 256 rects per chunk (2x2 grid) is apparently enough to push the fps clock to its max and meet some first lags for my side.
((for a test, add a rendering.create_rect at x%2==0, y%2==0 to the on_chunk and you shall see how fast it degrades the fps))
And the worst part, it does not help to "clean" all the other part of the map player should no be able to see either.
if you go with a "custom grid",
It does NOT change "script preparation" whether an alt view is enabled.
It is even more deadly if you have an alt view with a detail-augmented copy.
On a side note, this api is not ready for anything big anyways.
If you go for the said 3x3 or 2x2 grid charted on the ground, using lines is... somewhat fine. A bit costly but well still tolerable.
But should you want to have a void-padded rects that are a bit smaller than a 2x2/3x3 cell,
AND use "just" a lot of rectangles with an option "no fill"...
Welcome are all the lags.
And I am not even talking about per-player overlay level here, just a global fully static all-players one.
*Just* 256 rects per chunk (2x2 grid) is apparently enough to push the fps clock to its max and meet some first lags for my side.
((for a test, add a rendering.create_rect at x%2==0, y%2==0 to the on_chunk and you shall see how fast it degrades the fps))
And the worst part, it does not help to "clean" all the other part of the map player should no be able to see either.
Re: [1.1.x] Hidden script rendered shapes are still being checked in preparation loop
Thanks for the report. This is known behavior and there's currently nothing we can do about it.
If you want to get ahold of me I'm almost always on Discord.