-
Notifications
You must be signed in to change notification settings - Fork 480
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Render below zero retrogen chunks again #2051
base: master
Are you sure you want to change the base?
Render below zero retrogen chunks again #2051
Conversation
This addressed the issue I was seeing in #2038 (comment) where chunks not visited since upgrading to 1.18 would cause the render process to either 1. throw exceptions and eventually stall out, or 2. render the entire region as empty black tiles. NOTE: the region being rendered here is Using latest Using 1c6babc: Update: I have some more investigating to do - I rendered part of the 1.19 version of this world and ended up with a lot of blank spots. Hopefully tomorrow I'll have some time to test and create 1 or 2 sample worlds that repro the bug. |
Repro would be much appreciated! I already have an idea what the issue might be - I might be too restrictive re: which chunks I select. Currently, only chunks with We do need to check the target status, as that allows us to exclude chunks that were proto-chunks before the upgrade. But perhaps an exclude list for statuses that are definitely border chunks makes more sense - even if some of them don't render properly, that is probably a lot better than them not rendering at all. Also, we should think about how to improve rendering in these cases anyway, if these cases aren't border chunks and not rendering isn't an option. |
@cliffmeyers I'd love to take a look at the issues you had and try to fix them - if putting together a sample world is too much work, just an affected region file should be enough for me to keep working? |
@ralokt sorry for the delay - hard to find time during the week sometimes. I appreciate your help. Below is a subset of the world files (~50 MB). Every version upgrade has been run with MCA selector shows all regions as fully generated: Output of render from the world using 1c6babc: The eastern edge correlates to the spawn in region 0/0. I haven't visited it since the 1.18 upgrade but am guessing there's some special handling to always render the spawn region? I have visited the western edge since the 1.18 upgrade and those are rendering normally. Let me know if 1.19 might be throwing a curve ball and I can retrieve one of my 1.18 backups and extract the same subset. |
Thanks! That will be invaluable for debugging :) I will probably only get to that in a few days, however:
|
A short update: Unfortunately, my laptop died, so I won't be able to work on this until end of next week. |
aacaff4
to
972a5be
Compare
Sorry for taking so long to get back to this - my new device took longer than expected to arrive... Seems like we need those statuses prefixed with Now, all chunks in the testworld render - however, they are still completely dark. Unfortunately, it seems like But for now, I'd argue that fullbrighting these chunks would be scope creep. Rendering all chunks that are supposed to be rendered is already a huge improvement, even if they don't look pretty - the output is technically not wrong, either. Also, I think reworking how dark chunks are detected and fullbrighted would be a good idea anyway. So I'd prefer to fix the lighting in a separate PR - if preferred, I can also add a fix to that problem to this branch, though! |
Pre-1.18 chunks that are loaded in 1.18+ are often saved in a transitional proto-chunk status. Currently, the Overviewer will ignore these chunks altogether, resulting in only part of the terrain being rendered. If the world is optimized with --forceUpgrade, only chunks that have been visited in 1.18+ will be rendered. With this change, the Overviewer detects these chunks and renders them again.
Thanks for all your hard work @ralokt investigating this. Probably good to keep each PR tight and focused on a single issue as you suggested. Would the 1.18 version of that test world still be helpful or has identifying the skylight issue obviated the need for that? |
You're welcome! I don't think the 1.18 version is necessary anymore :) In that case, I'll make another PR for the skylight change - it would probably make sense to merge that before this one. Is there anything else you need from me to get this PR accepted? |
Nothing from me - but I'm not a committer and not familiar with this part of the code. Perhaps @CounterPillow could give a quick review and merge? |
I turned this one into a draft for now! |
Pre-1.18 chunks that are loaded in 1.18+ are often saved in a
transitional proto-chunk status.
Currently, the Overviewer will ignore these chunks altogether,
resulting in only part of the terrain being rendered. If the world is
optimized with --forceUpgrade, only chunks that have been visited in
1.18+ will be rendered.
With this change, the Overviewer detects these chunks and renders them
again.
Before:
After:
Before
--forceUpgrade
:Before update to 1.18:
World for reference:
mcov-test-118chunks-118-forceupgrade.zip
I made the reference world by: